E-Scooter Sharing App with Geofencing
A micro-mobility app that lets riders find a nearby e-scooter, unlock it with a QR scan, ride within geofenced zones and pay per minute, with tools for the fleet team.

Project overview
We built the rider and operations software for a shared e-scooter operator. Riders find and reserve a scooter on a map, unlock it by scanning a QR code, ride and end the trip in an allowed parking zone; the fleet team charges, rebalances and repairs scooters using a separate operations app.
Our scope included the Flutter apps, a Node.js platform integrated with the scooters' connected IoT modules, PostGIS-based zone management and a fleet dashboard. It is closely related to our IoT app development and mobility work.
The client and the challenge
Scooters communicate over cellular modules that can be slow or briefly unreachable, yet riders expect the scooter to unlock the moment they scan. Trips must also be billed correctly if the connection drops mid-ride.
Local rules required no-ride zones, slow zones and designated parking areas that change over time, and the operator needed to keep scooters charged and spread across the service area without driving around blind. Support teams also lacked the ride data needed to handle complaints about incorrect charges or badly parked scooters.
Solution architecture & delivery
The rider app is built in Flutter. Scanning a QR code sends an unlock request to the Node.js API, which checks the rider's payment method and account status, then sends the command to the scooter's IoT module. The app shows the ride as started only when the scooter acknowledges; if it does not respond within a short window, the request is cancelled and the rider is pointed to another nearby scooter.
Zones are drawn by the operations team on the dashboard and stored as polygons in PostGIS. Scooters report position and battery regularly, and spatial queries determine whether a scooter is in a slow zone, a no-ride zone or a parking area. Speed limits for each zone are pushed to the scooter firmware, so limits still apply when connectivity is patchy. When a rider taps End ride, the API checks the last position against parking polygons and asks for a parking photo. Zone changes are versioned with start dates, so a temporary event closure can be scheduled in advance and removed automatically afterwards.
Billing is event-based: the trip starts from the unlock acknowledgement and ends from the lock event. If the scooter goes offline, the trip is closed from its next report or by an operator, and the rider can dispute the charge in the app. Riders can buy minute passes or pay per ride using stored card payments.
The operations app lists scooters needing a battery swap, repair or relocation, ordered by distance, and heatmaps on the dashboard show where demand outstrips supply. Similar route and vehicle-state logic powers our ride-hailing app.
Key features we built
- Live map of available scooters with battery range
- QR code unlock with scooter acknowledgement
- Geofenced no-ride, slow and parking zones
- Per-minute billing, ride passes and stored payment methods
- End-of-ride parking checks with photo confirmation
- Ride history, receipts and in-app issue reporting
- Operations app for battery swaps, repairs and rebalancing tasks
- Fleet dashboard with zone editor, demand heatmaps and alerts
How we delivered it
- Discovery. Workshops with the operations team and a review of the scooter manufacturer's IoT protocol, local zone rules and ride-to-billing edge cases.
- Hardware integration spike. An early prototype unlocking and locking real scooters, measuring command reliability before the rider experience was finalised.
- Build. Two-week sprints for the rider app, operations app, spatial services and dashboard, with a device simulator for automated tests.
- Pilot. A small fleet in one district to tune zone boundaries, parking checks and offline trip closing. Rider feedback from the pilot also simplified the parking photo step.
- Scale and support. Fleet expansion, new zones and ongoing releases, with platform monitoring and incident response.
Technology choices
- Flutter β one codebase for the rider and operations apps on iOS and Android, with performant maps and camera scanning.
- Node.js β handles many concurrent scooter telemetry messages, unlock commands and ride events with low overhead.
- PostGIS β spatial indexing and polygon queries for zones, parking checks, nearby-scooter searches and demand heatmaps.
Outcomes
- Riders unlock a scooter by scanning a code, with clear feedback when a scooter cannot respond
- Zone rules are edited on the dashboard and enforced on scooters without app updates
- Trips are billed from scooter events, with a defined path when connectivity drops
- Parking checks and photos help keep pavements clear and meet local rules
- Field staff work from a prioritised task list instead of searching for low-battery scooters
- Support resolves billing and parking complaints using a complete event history for each ride
FAQ
How does geofencing work in an e-scooter app?
Zones are stored as polygons in PostGIS. The platform checks each scooter's reported position against them and sends speed limits to the firmware, so slow and no-ride zones are enforced on the vehicle itself.
What happens if a scooter loses connection during a ride?
The scooter keeps its zone limits locally. The trip is closed from the next position and lock report, or by an operator, and riders can raise a dispute from their ride history. Support staff see the scooter's event timeline for the trip, which makes these disputes quick to settle.
Can the platform work with different scooter models?
Yes. Scooter communication sits behind an adapter layer, so new models or IoT modules can be added without changing the apps. Parking-related logic is shared with our smart parking app. Firmware differences, such as how speed limits are applied, are handled inside each adapter.
How much does an e-scooter sharing app cost?
It depends on the hardware integration, number of apps, billing models and operations tooling. Use our app development cost calculator for an early range before detailed scoping.
E-Scooter Sharing App with Geofencing screens
Build your next logistics & mobility product with Next Olive
Share your requirements β we will propose scope, timeline and stack within one business day.