Inspiration
Every major disaster exposes the same bottleneck: it's rarely a shortage of supplies, it's a shortage of coordination. Vehicles sit underused at depots while sites with the greatest need wait longest, simply because no one has a real-time view of where everything is. We wanted to build something that treats relief logistics as an optimization problem, not a spreadsheet problem.
What it does
ReliefRoute is a logistics platform for coordinating disaster relief:
- Responders register disaster sites with severity, resource needs, and affected population
- The system matches sites against available fleet vehicles based on capacity and location
- An optimization engine computes efficient delivery routes
- An interactive map visualizes sites, depots, and routes together
- A live fleet simulator shows vehicles moving along their assigned paths in real time
- An integrated AI dispatch agent lets coordinators query the system in plain language
How we built it
The frontend is a Next.js (App Router) and TypeScript application, talking to a Django REST Framework backend over an API layer built with Axios. PostgreSQL, hosted via Supabase, stores site, fleet, and route data. We deployed the whole project as a Vercel monorepo — the frontend builds normally, and the Django backend runs as Python serverless functions, so there's no separate server to manage.
A simplified version of the priority score used to rank sites for dispatch:
$$ \text{priority} = \frac{\text{severity} \times \text{affected_population}}{\text{distance}} $$
Where higher severity and larger affected population raise a site's priority, and distance from the depot lowers it.
Challenges we ran into
Getting a Django backend to run cleanly as Vercel serverless functions took real trial and error, especially around database connections and cold starts. Keeping the fleet simulator's real-time movement in sync with backend route data without hammering the API was another hurdle. Balancing the optimization algorithm so it didn't just minimize total distance, but actually prioritized high-severity sites, required rethinking the scoring function more than once.
Accomplishments that we're proud of
Getting three moving parts — an optimization engine, a live map, and an AI chat agent — to work together as one coherent tool rather than three disconnected features. The live fleet simulator in particular made an otherwise abstract routing algorithm feel tangible.
What we learned
We learned a lot about the practical constraints of serverless Python (cold starts, connection pooling with a hosted Postgres instance), and about how much design work goes into making an optimization result legible to a human dispatcher, not just correct on paper.
What's next for ReliefRoute
Next steps include multi-depot optimization, support for dynamically re-routing vehicles mid-delivery as new sites are reported, and richer historical analytics so organizations can see which regions are chronically under-resourced.
Built With
- axios
- django
- django-rest-framework
- langgraph
- leaflet.js
- next.js
- postgresql
- python
- react
- supabase
- typescript
- vercel


Log in or sign up for Devpost to join the conversation.