Technical challenges
Two kinds of challenge were involved. The first was setting up a full authentication flow (sign-in, sign-up, OTP verification, password reset, Google Sign-In) end to end for a brand-new app, alongside the layered architecture and dependency-injection setup the rest of the app would build on. The second, and more distinctive, challenge was that the app was not simply a conventional API-driven mobile app: it also had to communicate with a physical smart-glasses device over two different wireless transports for two different kinds of data — Bluetooth/BLE for the connection to the glasses and for audio-data communication, and Wi-Fi for transferring and downloading files from the glasses.
How I approached it
The authentication flow was built against a domain/data/presentation split from the start, with Koin modules for networking and dispatchers set up alongside it, so later features could plug into the same architecture rather than each screen wiring its own dependencies. For the glasses themselves, the app connected to and communicated with them over Bluetooth/BLE for the device connection and audio-data exchange, and used Wi-Fi separately for the higher-throughput job of transferring and downloading files from the glasses — keeping the connection/audio path and the file-transfer path on the wireless transport each was suited to, rather than routing everything through one connection.


