FLOTTE
IoT GPS Fleet Tracking Mobile App
Video Demonstration
FLOTTE IoT Telematics System
Flutter (Dart) • Riverpod • MapLibre GL • NestJS • Firebase • Render
1. GPS Telemetry
Connects existing third-party Winnou GPS trackers to the app — live vehicle position, trip timelines, and driving vs. stop speed analysis.
2. Cross-Platform App
Flutter app (Android/iOS/Web PWA) with Riverpod, go_router, MapLibre GL maps, driver tap-to-call, and Firebase push alerts across three platform surfaces.
3. Maintenance Intelligence
Data-driven vidange tracking with overdue/imminent detection — broken odometers fall back to time-based maintenance mode. NestJS backend on Render.
Screenshots & Interface
A real Tunisian bus fleet tracked oil changes ('vidange') on paper — managers had no live view of which vehicle needed servicing, where it was, or who was driving it.
Connected existing third-party GPS trackers (Winnou) to a Flutter app (Riverpod, go_router, MapLibre GL, Firebase push) with a NestJS backend on Render, turning maintenance into data: odometer thresholds, overdue/imminent servicing, driver assignment and tap-to-call.
Replaced manual fleet maintenance tracking for a live client — vehicles flagged by real distance-to-service, itineraries with driving vs. stop speed analysis, and push alerts across three platform surfaces.
Technical Deep Dive
A production fleet-management system (vehicles, drivers, GPS tracking, maintenance/vidange, alerts) built for a real Tunisian transport company, structured as a monorepo: Flutter client + backend (git submodule) + tooling scripts. The French-localized Flutter app ships to Android, iOS and web PWA — Riverpod state, go_router navigation, Dio with JWT/401-recovery interceptors, secure storage, and MapLibre GL maps. GPS telemetry is processed rather than just displayed: speed/idle computation and maintenance-threshold checks trigger vidange alerts over Firebase Cloud Messaging, with Mapbox road-snapping and response caching on the API. The TypeScript NestJS backend (JWT + bcrypt auth, Prisma ORM) runs on Render; iOS builds compile on GitHub Actions macOS runners while the API and PWA auto-deploy. A dedicated Node.js scraper fuses data from the existing Winnou tracker platform, and real-world messiness is handled in the product: broken odometers fall back to time-based maintenance and drivers are reached via tap-to-call.