Chuyển tới nội dung chính
Trịnh Thị Mai
Đã hoàn thành

Biske

Lập trình viên Android cho Biske, một ứng dụng làm việc nhóm nội bộ — phát triển độc lập trong thời gian tham gia dự án, phụ trách các tính năng quản lý công việc, nhắn tin và xử lý tài liệu.

Vai trò
Android Developer — sole developer during my involvement
Nền tảng
Android
Khách hàng
Khách hàng bảo mật

Tổng quan dự án

Lĩnh vực
Công cụ nội bộ cho doanh nghiệp — quản lý công việc nhóm, lịch trình và nhắn tin, được xây dựng trên một mã nguồn duy nhất rồi đổi thương hiệu và phát hành riêng cho từng công ty khách hàng.
Sản phẩm
Biske là một ứng dụng Android nội bộ dùng cho làm việc nhóm: bảng công việc dạng Kanban với danh mục và bảng, hội thoại nhóm và cá nhân, cùng chia sẻ tài liệu/ảnh. Thay vì một ứng dụng multi-tenant dùng chung, cùng một mã nguồn được build và phát hành thành các ứng dụng riêng biệt, mang thương hiệu khác nhau cho từng công ty khách hàng, thông qua các product flavor của Android.
Người dùng
Nhân viên tại mỗi công ty khách hàng sử dụng Biske, dùng ứng dụng hàng ngày để lập kế hoạch và theo dõi công việc, trao đổi với đồng nghiệp, và chia sẻ tài liệu/ảnh liên quan đến công việc.
Lý do ra đời
Biske mang đến cho các công ty một công cụ làm việc nhóm nội bộ có sẵn — bảng công việc kết hợp nhắn tin nhóm — có thể đổi nhãn hiệu và triển khai theo thương hiệu riêng của từng khách hàng mà không cần xây dựng ứng dụng mới từ đầu cho mỗi công ty.
Vấn đề
Với những phần tôi phụ trách, vấn đề cần giải quyết là xây dựng trải nghiệm Android cốt lõi mà một nhóm làm việc dùng hàng ngày: đăng nhập, tạo và di chuyển công việc trên bảng dạng Kanban, trao đổi qua hội thoại nhóm và cá nhân, và chụp/chia sẻ tài liệu, ảnh trong quá trình làm việc.

Vai trò & đóng góp của tôi

Với vai trò lập trình viên Android duy nhất trong thời gian tôi tham gia Biske, tôi phụ trách phần xác thực người dùng, bảng công việc dạng Kanban (tạo và chỉnh sửa thẻ công việc, danh mục và bảng, với khả năng kéo-thả để sắp xếp lại công việc và cột), nhắn tin/hội thoại nhóm và cá nhân, cùng xử lý tài liệu và ảnh (chụp, cắt và nén ảnh để chia sẻ trong công việc và hội thoại). Tính năng lịch được một lập trình viên khác thêm vào ứng dụng sau khi tôi kết thúc tham gia dự án và không thuộc phần tôi thực hiện.

Thách thức & giải pháp

  1. Thách thức kỹ thuật

    Hai phần thực sự phức tạp trong những gì tôi phụ trách. Thứ nhất, bảng công việc cần chức năng kéo-thả để sắp xếp lại cả công việc và cột mà vẫn giữ nhất quán với dữ liệu — vị trí của một thẻ hoặc cột trên giao diện phải khớp với thứ tự đã lưu sau mỗi lần di chuyển. Thứ hai, ứng dụng kết hợp hai backend — một lớp dựa trên Firebase cho các tính năng thời gian thực như hội thoại, và một REST API riêng với cơ chế xác thực tự làm mới token — việc giữ đồng bộ cả hai từ lớp giao diện đòi hỏi sự cẩn thận.

    Cách tôi tiếp cận

    Với bảng công việc, chức năng kéo-thả được xây dựng trên một thành phần danh sách kéo-thả chuyên dụng, cùng với adapter và view model riêng của ứng dụng để giữ vị trí, danh mục và bảng của từng thẻ/cột nhất quán khi người dùng sắp xếp lại. Với cấu trúc hai backend, lớp dữ liệu của ứng dụng tách riêng các tính năng thời gian thực dựa trên Firebase (hội thoại, trạng thái hoạt động) khỏi các tính năng dựa trên REST, thông qua một pattern repository chung, để phần còn lại của ứng dụng có thể dùng chung lớp view model bất kể nguồn dữ liệu nào.

Kiến trúc & công nghệ

Biske là một ứng dụng Android Kotlin nhiều module (app chính, cùng các module thư viện riêng cho danh sách kéo-thả của bảng công việc và cho một view lịch), sử dụng Hilt để inject dependency, ViewBinding theo cấu trúc MVVM, và backend kết hợp giữa Firebase (Realtime Database, Firestore, Auth, Cloud Messaging) và một REST API riêng (Retrofit/OkHttp với xác thực tự làm mới token). Sản phẩm được phát hành riêng cho từng công ty khách hàng thông qua các product flavor của Android — mỗi công ty có applicationId, tên ứng dụng và tài nguyên thương hiệu riêng, được build từ cùng một mã nguồn và dùng chung một project Firebase, thay vì một ứng dụng multi-tenant duy nhất. Module lịch và các màn hình liên quan được thêm vào mã nguồn sau khi tôi kết thúc tham gia dự án.

Công nghệ

  • Kotlin
  • Hilt
  • Firebase Realtime Database
  • Firebase Firestore
  • Firebase Authentication
  • Firebase Cloud Messaging
  • Retrofit
  • OkHttp
  • Glide
  • Google Maps

Dự án này thể hiện

Dự án này thể hiện việc đảm nhận độc lập các chức năng cốt lõi hàng ngày của một ứng dụng Android — xác thực, bảng công việc kéo-thả, nhắn tin và xử lý tài liệu — trong một mã nguồn được xây dựng để đổi thương hiệu và triển khai lại cho từng công ty khách hàng, cùng với việc làm việc trên một backend kết hợp Firebase/REST.

  • Phát triển Android
  • Xác thực
  • Tích hợp bên thứ ba
  • Xử lý đa phương tiện
  • Bản đồ & Vị trí

Bạn có dự án tương tự?

Chia sẻ sản phẩm hoặc vấn đề bạn đang gặp. Tôi sẽ trao đổi để tìm hướng hỗ trợ phù hợp.

Làm việc cùng tôi