Back to earlier work

Earlier project

Island Watch

A Vancouver Island public-status dashboard that brings scattered official updates into one calm, source-linked view.

Island Watch combines road, ferry, transit, weather, wildfire, evacuation, flood, air-quality, marine, parks, and other regional alerts so residents and travellers can quickly see what may affect their day.

What it is

Island Watch is a public-status surface for Vancouver Island. It helps people understand travel, access, weather, emergency awareness, and regional movement without opening a pile of separate source pages.

Who it is for

Residents, commuters, travellers, and Island communities who want a quick daily check before leaving home, planning a route, or watching changing conditions.

What I built

I built a Next.js map-and-list interface backed by Supabase ingestion jobs, normalized alert storage, source-health tracking, region filters, route checks, ferry-connected travel context, and source-linked detail panels.

Why it matters

Useful public updates are often scattered across agencies and formats. Island Watch makes them easier to scan while keeping official sources visible and close to every decision.

Key features

  • Map + list layout for active regional updates
  • Area and route checks for monitored regions, corridors, and ferry-connected travel
  • Region filters for Greater Victoria, Cowichan/Malahat, Nanaimo/Oceanside, West Coast, Comox Valley, Campbell River, North Island, and Gulf Islands
  • Detail panels with category, source, timestamp, freshness, relevance, and original links
  • Stale-data and source-health labels when upstream feeds degrade
  • Clear official-source handoff for safety, emergency, travel, and service decisions

Data sources

  • DriveBC Open511
  • BC Ferries
  • BC Transit GTFS/GTFS-RT
  • Environment and Climate Change Canada weather, marine, tsunami, and AQHI sources
  • BC Wildfire Service
  • EmergencyInfoBC
  • BC Evacuation Orders and Alerts
  • BC River Forecast Centre
  • BC Parks
  • Earthquakes Canada

How I built it

The product and source decisions behind the tool.

What I prioritized

The interface prioritizes regional relevance: map context first, then route, ferry, corridor, and area checks that reduce background noise.

How it works

Different providers publish data in incompatible formats. Supabase jobs normalize those feeds so the frontend can compare updates consistently.

Source clarity

Source names, timestamps, freshness labels, and original links stay close to each alert so people can confirm details without hunting.

Scope

Island Watch supports awareness. Official agencies, operators, and emergency services remain the source of record.

Technical notes

  • Next.js, React, TypeScript, Tailwind, Leaflet, Supabase, and Vercel
  • Provider adapters ingest incompatible public feeds and normalize them into a shared alert model
  • Source attribution, timestamps, severity, geography, route context, and freshness state are preserved through ingestion
  • Scheduled ingest and source-health handling surface stale or partial source data clearly in the UI

Scope

I built Island Watch for regional awareness, not as a replacement for official instructions, emergency services, ferry operators, transit providers, road authorities, or weather agencies.