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
Share this project:

Updates

Submission history