NOTE: The app used in the demonstration video and media uses local host. The link for the app testing uses Replit. There could be some alterations to color scheme, however the main functionality should be exactly the same.

Inspiration

Jakarta floods almost every rainy season, and the damage is not always because of excessive rainwater. A huge factor of it is preventable: a blocked drain nobody reported or a flooded lane nobody warned the next driver about. The city runs flood alerts, but by the time an official warning goes out, the water is already at your door. We wanted to close that gap with something simple. We let the people already standing next to the problem report it in seconds, and let everyone downstream of that report benefit from it instantly.

The name says the idea: flow, in this case: flow of water, being watched.

With FlowWatch, everything that users need related to flooding is ready, with features including:

  • Flood and drain blockage reports
  • Map routing to prevent hazards
  • Real time weather statistics
  • AI overview on conditions in the area

What it does

FlowWatch is a community-powered flood and drain-blockage map built around three actions:

  • Report a flooded road or blocked drain in seconds. Users can tap a spot on the map and it's automatically reverse-geocoded to a real place name, no account needed. This reading / report can be linked between different devices or users.

  • Warn users of hazards. The Home screen shows real-time information for user's selected city, generated from real weather forecasts, river discharge, tide data, elevation, and nearby reports, plus a color-coded map of active hazards and predicted risk zones. The map isn't Jakarta-only: it also syncs live global flood alerts from GDACS every 20 minutes.

  • Route before users drive, Check Route feature cross-references user path against every active hazard and, if it crosses one, it actively searches for and recommends a route that avoids it.

Every report is checked by users in real time: a "Still flooded/blocked" or "Cleared/Cleaned up" vote updates the map instantly for every other device looking at it, and cleared hazards vanish from the layer the moment they're resolved.

How we built it

  • The map and reporting flow: Leaflet with OpenStreetMap tiles renders flooded roads, blocked drains, and predicted risk zones live. Dropping a pin reverse-geocodes it through Nominatim on the spot.

  • The risk engine: live weather, GloFAS river discharge, tide, and elevation feed a transparent scoring formula alongside nearby report density, and a short template turns the result into brief information on Home.

  • Global data: GDACS's live disaster feed syncs every 20 minutes, so the map isn't Jakarta-only and it's self-healing: an alert the source stops listing as active disappears from the map on the next sync, the same way a community-disputed report does.

  • Route safety: OSRM handles routing, cross-checked against every active hazard's buffer.

  • Shared state: all of it is stored in one JSON file on the server, not per-browser — a vote on device A updates what device B sees on its next poll, no separate database needed.

  • Built with Claude Code throughout for implementation, testing each fix against a running preview browser

Accomplishments that we're proud of

We were able to make an impactful application that does not require much complexity, since it does not involve hardware, in a short timeframe.

Some features we are proud of in this app:

  • Real time weather data being linked to the app
  • Global alerts from GDACS being used in this app
  • Being able to link readings between different users / devices
  • AI overviews on hazards
  • Automatic routing through hazards that have been pinpointed on the map by user

Challenges

Initially, the app was aimed to have real-time data, from public sources, for floods and drain blockages as well to ensure more accurate snd consistent updates. However, under the time pressure, we were unable to do that. To maintain integrity, we did not use any seed data for the flooding and drain blockages with the intention of making readings on the map look "nicer" or "more spread out into different parts of the world" to prevent misleading users.

What we learned

We do not need very complex features for an application to be impactful. Although the app does not directly address the problems, since it mostly functions as a monitoring system to alert users, it will make an indirect impact in the long run when users perform the necessary actions or use the application to inform others on different hazards around the area.

What's next for FlowWatch

  • Verified partnerships with local disaster agencies (like Jakarta's BPBD)

  • Push notifications when a new hazard is reported on a route users travel often, or near a saved location.

  • Photo evidence of drain blockages to help other users judge a report's credibility. AI-powered classification can also be used.

  • Historical pattern analysis can be implemented with enough months of report and rainfall data that would let us flag predicted trouble spots before the rain even starts, not just react to what's already flooded.

  • A native app for faster access and offline-cached maps during an actual flood, when connectivity is much needed.

Built With

Share this project:

Updates

Submission history