Bridge Status
Bridge Status Welland Canal

Built for commuters, not for waiting.

Open live map
Welland Canal, Ontario
Updated every 30 seconds
10,000+
Users helped
30s
Refresh interval
13
Bridges tracked

1. Data collection

A Node.js scraper polls the official St. Lawrence Seaway website every 20 seconds using Cheerio. It parses bridge status for St. Catharines / Thorold and Port Colborne regions, normalises the data, and caches it in memory to avoid hammering the source.

2. REST API

An Express server exposes /api/bridges and /api/bridges/:name/stats. The stats endpoint queries a PostgreSQL database that records every status transition — powering the duration histograms and CI ranges you see in the app.

3. React frontend

A React 19 + Vite app fetches bridge data every 30 seconds and renders markers on a Google Map. 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, Google Maps API

Backend

Node.js, Express, Cheerio, PostgreSQL

Architecture

Service layer pattern, OOP managers, REST API

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 the frustration of bridge delays, whether commuting to my high school of Laura Secord Secondary School or heading to work across the canal. After my second year of university, I decided to do something about it and built this as a side project. I'm still actively working on it, and knowing it's 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