Every role gets a purpose-built app. They all talk to the same cloud, so every swap, ticket, and inventory move stays in sync without a refresh.

Live revenue, fleet health, station status, KYC backlog. One tab open all day for the operations team. Activity Manager surfaces swaps, alerts, and KYC submissions in a single chronological feed.

Revenue, swap count, online stations, KYC backlog. Updates in real time as MQTT events arrive.

Every station on a single map, colour-coded by status. Click for full station drill-down.

Every battery in the network, filterable by status. SOC + health visible per row.

Riders scan, pay, and swap in under a minute. Live battery health, route to the nearest charged pack, in-app support with a 2-hour SLA.

Camera viewfinder + a fallback station picker if the QR is unreadable.

Sorted by distance. Live availability per pod. Tap a row to navigate.

Every swap, every payment. Filterable by month, exportable as a receipt.

Field agents onboard new riders, track every battery across the network, flag faults, and route tickets to the workshop. The manager view shows the entire battery inventory as a live, filterable list.

Pick a battery from the pre-filtered list, describe the fault in one line, submit. Workshop's POD App receives it the same moment.
Status header with totals (e.g. 17 Available / 5 Charging / 24 Deployed / 1 Fault). Search by BAT-ID or BMS device ID.

The workshop runs inspections, tracks every spare part, logs procurement, and chats with the field team : all in one app. Three roles (Admin, Manager, Mechanic) with role-gated views.

Current customer, last inspection, parts checklist, activity log. Start a new 49-part inspection in one tap.

Live spare-part count. Out-of-stock items roll into the To Buy queue. Log purchase auto-bumps stock.
All four apps talk to the same Postgres + TimescaleDB backend over a REST API and an MQTT event bus. A swap fires one MQTT event that updates the rider's history, the agent's inventory, the workshop's queue, and the admin dashboard simultaneously. No "wait for the database to settle." No "refresh to see the latest."
Relational backbone for users, batteries, swaps, tickets. TimescaleDB hypertable for BMS telemetry with auto-compression after 7 days.
Mosquitto broker. Cabinets publish BMS telemetry, status, and ACK messages. Server publishes unlock commands. End-to-end under 200ms.
Single API server, role-scoped JWTs. The User, Provider, POD, and Admin apps all hit the same endpoints with different scopes.