Inspiration

Kigali's roads change condition faster than any city survey can track, potholes form, traffic patterns shift, and by the time a complaint reaches the right office, the problem has often grown. At the same time, thousands of moto-taxis are already driving every road in the city, all day, every day. We asked: what if that motion was the sensor network?

What it does

MotoPulse simulates a fleet of moto-taxis, each carrying a low-cost sensor pack (accelerometer, microphone, GPS). As motos "drive" their routes, the backend aggregates readings per road segment into two live scores, road roughness and noise/congestion, and flags each segment as clear, congested, or repair needed on a live map dashboard.

How we built it

  • Backend (Python/Flask): a background thread simulates motos moving along fixed road-segment coordinates, generating sensor readings each tick. Readings are kept in a rolling window per segment and averaged, so a single spike doesn't falsely flag a road.
  • REST API: /api/segments and /api/motos serve live aggregated data.
  • Frontend (Leaflet.js): a dark, map-first dashboard polls the API every 2 seconds, color-coding road segments live and animating moto positions.

Challenges we faced

Getting the aggregation logic right was the core challenge, a naive "flag on any spike" approach produced constant false alarms, so we moved to rolling averages with thresholds tuned against simulated pothole events, which is much closer to how a real deployment would need to behave.

Accomplishments we're proud of

A genuinely working, live end-to-end prototype in a very short build window, not a slide-only concept, but a running simulator, API, and dashboard that update in real time.

What we learned

How much signal you can get from just three sensor types (motion, sound, GPS) if you aggregate carefully, and how important it is to design for privacy from the start rather than bolt it on later.

What's next

  • Replace the simulator with real ESP32 sensor packs on a small pilot fleet
  • Add anomaly detection (z-score) so each road's baseline adapts individually
  • Historical trend view per segment for city planners

Built With

Share this project:

Updates

Submission history