Bridge Status
Bridge Status Ontario & Quebec

Built for commuters, not for waiting.

Open live map
Ontario and Quebec bridge crossings
Updated every 30 seconds
10,000+
Users helped
30s
Refresh interval
13
Bridge crossings tracked

1. Data collection

A Node.js scraper polls official bridge status sources using Cheerio. It parses bridge status for St. Catharines, Thorold, Port Colborne, Montreal South Shore, and Salaberry-de-Valleyfield, normalises the data, and caches it in memory to avoid hammering the source.

2. REST API

An Express server exposes /api/bridges, /api/closures, notification endpoints, and /api/bridges/:name/stats. The stats endpoint queries a PostgreSQL database that records every status transition, powering the duration histograms and confidence ranges in the app.

3. React frontend

A React 19 + Vite app fetches bridge data every 30 seconds and renders markers with Leaflet. Colours update smoothly as statuses change:

Open - vehicles can cross
Raising Soon - bridge closing in minutes
Closed - bridge is raised for ship traffic
Lowering - bridge returning to road level

Frontend

React 19, Vite, Tailwind CSS v4, Leaflet, PWA install support

Backend

Node.js, Express, Cheerio, PostgreSQL, Web Push

Architecture

Service layer pattern, REST API, Supabase-backed preferences and analytics

Deployment

Vercel (frontend), Oracle VM (backend + AIS)

I'm Saqib Khan, a software engineering student at McMaster University and a St. Catharines resident. Growing up here, I experienced firsthand how frustrating bridge delays can be, whether I was commuting to Laura Secord Secondary School, heading to work across the canal, or visiting my girlfriend. After my second year of university, I decided to do something about it and built BridgeStatus.ca as a side project. I'm still actively improving it, and knowing it has now helped over 10,000 people plan their commutes is something I'm genuinely proud of.

Have questions, suggestions, or want to collaborate? I'd love to hear from you.

GitHub: github.com/saqib-21/WellandCanalStatus

LinkedIn: linkedin.com/in/saqib-khan-aa127b275

Email: saqibmominkhan@gmail.com