kariem.dev
← all work
mineproductshipped2023 – 2024

Taxiarab

A production ride-sharing platform — dual apps (rider + driver), Clean Architecture, real-time tracking via WebSockets.

Android systems developer

Two apps, one system

Taxiarab is a complete ride-sharing solution: separate Rider and Driver apps, five-module Clean Architecture (client, driver, core:data, core:domain, design_system), pure-Kotlin domain layer with no Android dependencies bleeding into business logic.

The coordination problem

A single LocationServiceManager coordinates three foreground services — location, WebSocket, and ride tracking — instead of letting each manage its own lifecycle independently, which is where most ride-hailing apps rot. Real-time ride events (invitation, acceptance, tracking, cancellation) run over Pusher presence channels with automatic reconnection and exponential backoff; location intervals adapt to context (5s foreground, 30s background) rather than draining the battery on a fixed timer.

Production details that matter

  • Sequential permission queue — one permission at a time, Android 13+ compliant, not a wall of dialogs on first launch
  • Boot recovery that restores service state after an Android 15+ reboot
  • Full Arabic/RTL localization, not bolted on afterward
  • Shipped: Rider app v4.4 (10K+ downloads), Driver app v2.6 (1K+ downloads), both live on Google Play
KotlinJetpack ComposeHiltPusherClean ArchitectureCoroutines