Thách thức kỹ thuật
Có hai loại thách thức. Thứ nhất là thiết lập một luồng xác thực đầy đủ (đăng nhập, đăng ký, xác minh OTP, đặt lại mật khẩu, đăng nhập Google) từ đầu đến cuối cho một ứng dụng hoàn toàn mới, cùng với kiến trúc phân lớp và cấu hình dependency injection mà phần còn lại của ứng dụng sẽ dựa vào. Thứ hai, và mang tính đặc trưng hơn, là ứng dụng không đơn thuần là một ứng dụng di động giao tiếp qua API thông thường: nó còn phải giao tiếp với một thiết bị kính thông minh vật lý qua hai phương thức truyền không dây khác nhau cho hai loại dữ liệu khác nhau — Bluetooth/BLE cho việc kết nối với kính và truyền dữ liệu âm thanh, và Wi-Fi để tải/truyền file từ kính.
Cách tôi tiếp cận
Luồng xác thực được xây dựng dựa trên cấu trúc phân tách domain/data/presentation ngay từ đầu, cùng với các module Koin cho networking và dispatcher được thiết lập song song, để các tính năng sau này có thể kết nối vào cùng kiến trúc đó thay vì mỗi màn hình tự khởi tạo dependency riêng. Đối với kính, ứng dụng kết nối và giao tiếp với kính qua Bluetooth/BLE cho việc kết nối thiết bị và trao đổi dữ liệu âm thanh, và sử dụng kết nối Wi-Fi riêng cho việc tải/truyền file từ kính — công việc có yêu cầu băng thông cao hơn — giữ cho đường kết nối/âm thanh và đường truyền file đi trên phương thức không dây phù hợp với từng loại, thay vì dồn tất cả qua một kết nối duy nhất.


