Inspiration
After we moved to Ottawa, seeing people sleeping on Rideau Street sparked a question: how does someone find a warm bed before winter finds them? With nearly 3,000 people experiencing homelessness in Ottawa, we wanted to build a faster way for emergency services to coordinate.
What it does
Shelter-Mesh is a real-time platform connecting outreach workers, shelters, EMS, field observers, and City Ops. It matches clients to available shelters, syncs live capacity, reports emergencies, and works even when devices go offline.
How we built it
We built it with Next.js, React, TypeScript, Supabase Realtime, PostgreSQL, and PostGIS, using geospatial matching and offline-first synchronization for real-world reliability.
Challenges we ran into
Real-time coordination was our biggest challenge. We had to prevent duplicate bed reservations, safely expire holds, and ensure emergency reports synced after reconnecting.
Accomplishments that we're proud of
- Built five connected role-based dashboards.
- Created live shelter matching and bed reservations.
- Added offline emergency reporting.
- Enabled real-time capacity updates across all users.
What we learned
We learned how to build real-time, offline-first applications while designing technology that helps organizations work together during emergencies.
What's next for Cold Grid - Shelter Mesh
Next, we plan to add EMS incident claiming, shelter closures with automatic rerouting, response analytics, smarter alerts, and one-click demo controls.
Built With
- framer-motion
- indexeddb
- maplibre-gl
- next.js
- open-meteo
- osrm
- postgis
- postgresql
- progressive-web-app
- react
- supabase
- supabase-realtime
- tailwind-css
- typescript
Log in or sign up for Devpost to join the conversation.