Glance
Type: Software Status: In Progress — M0 → M3 shipped Deadline: TBD (open-ended / exploratory) Created: 2026-06-30
What is this?
An iPhone-first app (product name working title: Glanceable) that normalizes public operational data — border waits, road conditions, weather alerts, AQHI, beach quality, transit real-time, parking, power outages — into compact “glance signals” that answer do I need to change what I’m about to do right now?
Users save real-world things (Highway 401 near Scarborough, Queenston-Lewiston crossing, Bluffer’s Park Beach), not feeds. The system maps those to underlying public data sources and produces one-sentence recommendations with explicit freshness and attribution. Apple Watch, Home/Lock Screen widgets, Live Activities, Dynamic Island, and CarPlay are companion surfaces once the iPhone model is validated.
Under the hood: a Supabase-backed pipeline (Postgres + Edge Functions + pg_cron
- Realtime) that ingests feeds, normalizes them into a shared current-state
model, and generates decision-ready
glance_signalsrows. Explicitly not a historical analytics warehouse — the product requirement is “surface current state accurately,” not “store everything forever.” A reusable Glance Feed SDK layer is the deeper opportunity behind the consumer app.
Ontario is the v0 jurisdiction. Recommended first adapters: Ontario 511 + border waits (CBSA / CBP).
Motivation
Public operational data is abundant, ugly, and usually one dashboard per provider. Nothing compresses it into one-second decisions on the surfaces where those decisions actually happen (wrist, glance widget, car). The insight worth testing: the smallest useful unit of public data is not a feed — it’s a normalized signal. If that primitive works, it powers Watch complications, widgets, CarPlay, voice, and AI agents on top of a single data plane.
Commercial-use posture is a first-class research field. Toronto’s OGL and Ontario 511’s terms look explicitly commercial-friendly; ECCC needs review.
What does success look like?
Users stop thinking about “public data sources” and start relying on Glance to answer questions like:
- Which border crossing should I use?
- Is my route clear?
- Can we swim today?
- Should I exercise outside?
- Is anything I care about worth my attention right now?
Concrete v0 UX acceptance bar: install → set home area → add 3 relevant favourites in under 2 minutes → understand current state in under 5 seconds on the dashboard.
Technical
- Stack: SwiftUI iOS 17+ client · Supabase (Postgres + Edge Functions + pg_cron + pg_net + Realtime) backend · Deno/TypeScript adapters
- Repo:
~/projects/glance/(planned) — TBD private GitHub, likelydjt53/glance - Bundle ID:
com.davidtingle.glance(proposed) - Deploy target: iOS App Store (TestFlight first), Supabase-hosted backend
- Intended users: Toronto-area residents to start (Ontario v0 jurisdiction); designed to generalize by jurisdiction
- No paid data sources in v0 — all feeds are public/semi-public
Milestones
Sliced as thin vertical slabs — the goal of each milestone is something
observable, not just infra. See decisions/001-milestone-spine.md for the
reasoning behind this ordering (border-first, not 511-first).
M0 — Repo & environments
Unblock everything. iOS project scaffolded, Supabase project provisioned, migrations/edge-functions directory laid out.
M1 — Thin vertical: border waits end-to-end
Prove the full pipeline with one signal. Core schema, scheduler, CBSA + CBP adapters, border comparison generator (“Queenston saves 24 min. Take Queenston now.”), read API, iOS shows a single hardcoded favourite card with freshness.
M2 — Second adapter: Ontario 511
Prove the adapter interface generalizes. 511 adapter, route viability signal, feed health tracking, ingestion-run retention.
M3 — iOS beyond hardcoded
Users can actually pick what they care about. Onboarding, favourites tab, add-favourite flow, real dashboard driven by user’s picks, detail page with trust block, freshness/stale/unknown states.
M4 — Source library + alerts
Discovery and notification. Source library tab, basic alert preferences, empty/error states.
M5 — Polish & ship v0
App Store metadata, TestFlight, first external testers.
Later
Map, widgets, Watch, Live Activities, CarPlay, ECCC AQHI, weather alerts, beach quality, transit real-time, parking, power outages, family sharing.
Source of truth
Living design docs live in Notion (djtingle@gmail.com workspace):
- Parent: Making Public Data Glanceable — Ontario Feed Index v0
- Product Spec — iPhone Experience (v0)
- UX Specification — Glanceable iPhone + Apple Surfaces
- Technical Spec — Near-Real-Time Public Data Pipeline on Supabase
- Ontario Glance Feed Index (database)
This project folder is the working substrate; Notion is the shareable spec
layer. Follow the pattern captured in ~/topaz/projects/notion/ (local = source
of truth for tasks/log/decisions, Notion = projection for design docs).
Open questions to resolve early
- First production adapter: Ontario 511 or border waits? (Tech spec leans toward starting with both.)
- Do clients subscribe to Supabase Realtime directly, or only through a read API?
- iOS project location / repo name (
~/projects/glance/? Bundle ID?). - Should the dashboard group by priority or by domain?
- ECCC commercial-use posture — need explicit review before productization.