dare global-time page — clickable UTC dates resolve to meeting-time planner (LIVE 2026-05-16)

DARE.CO.UK · PARKED SKETCH · 2026-05-18

Mirrored from ~/.claude/.../memory/project_dare_global_time_page_parked.md. This is a design sketch parked for future build — read for context, not as a current deliverable.

SHIPPED 2026-05-16. dare-time-poc.pages.dev// renders a London/NYC/Tokyo working-hours grid for any date. Every UTC date stamp in dashboard.dare.co.uk AND devreports.dare.co.uk catalog now links to the corresponding day-grid. Generator at ~/bin/dare_time_page.py uses Python’s zoneinfo stdlib — no external API. Phase 2 backlog: ICS export, custom-city query string, co-locate URL under devreports.dare.co.uk/time/.


STATUS: LIVE. Sketched, shipped, and wired into production on the same day (2026-05-16). See “Live state” section at the bottom for what’s deployed and what’s queued for Phase 2.

Dan flagged 2026-05-16 morning: every UTC date stamp in the dev reports (catalog “Generated 6.01am” lines, session report headers, “fetched at” footers, etc.) sits in a single time zone — London/UTC — that’s invisible context to a New York or Tokyo collaborator. If those dates were links, they could resolve to a small page showing the same instant in multiple time zones, colour-coded by working-hours overlap.

Reference inspiration: timeanddate.com/worldclock/meetingtime.html?iso=20260516&p1=198&p2=136 — the colour-coded meeting-time grid. Hour rows × city columns, each cell tinted by working-hours fit:

That tri-state tinting is the lever. The whole grid is “is this hour green for everyone?” at a glance.

Why: scheduling meetings across countries is famously hard without a visual aid. Every Slack thread that ends “what time is that in Tokyo?” is friction we already know about. A clickable UTC date that resolves to a colour-coded meeting-time grid replaces the friction with a one-click answer. It also gives devreports a second axis of utility (catalog of work + scheduling lookup), which compounds the surface’s value without changing its primary purpose.

Why this fits the dare toolkit shape:

POC sketch (when resumed):

  1. Default city set: London / New York / Tokyo. Three regions: morning-Europe / morning-East-Coast-US / morning-East-Asia. Covers ~85% of dare’s meeting geography. User can add more later — but ship three first so the visual reads cleanly.
  2. URL shape: https://devreports.dare.co.uk/time/<YYYY-MM-DD>/ — clean, RESTful, cacheable.
  3. Generator: Python script (~/bin/dare_time_page.py) walks a date range, emits one static HTML per UTC date. 24 rows (UTC hours) × 3 columns (London / NYC / Tokyo). Each cell shows the local time-of-day + colour class from the working-hours map. No JS needed for v1 — pure server-rendered HTML.
  4. Link injection: the dev-reports publish script (dare_dev_reports_publish.py) or the augmented-session-report renderer learns about the URL pattern and rewrites bare UTC date stamps to <a href="/time/<date>/">. Hover-preview shows the meeting-time grid inline (per feedback_hover_preview_on_urls.md).
  5. City personalisation: v1 hard-codes London/NYC/Tokyo. v2 reads ?cities=london,nyc,tokyo,sydney query string and renders dynamically. v3 saves a per-visitor preference in localStorage. (Don’t pre-build v2/v3 — wait for the friction.)

Implementation candidates for the “global time API”:

The timeanddate.com page is HTML-only (no public API). Options for our generator:

Resume conditions:

Related memory:

Status: parked. Reference link Dan flagged: https://www.timeanddate.com/worldclock/meetingtime.html?iso=20260516&p1=198&p2=136


Live state (as of 2026-05-16)

Shipped:

Phase 2 backlog (in priority order):

  1. ICS export — click a Goldilocks row → copy as ICS / open in Google Calendar with the slot pre-filled. Trivial extension (ICS is just text); turns the page from “viewer” into “scheduler”.
  2. Co-locate the URL under devreports.dare.co.uk/time/ — currently a separate CDN, security layer, and DNS provider sitting in front of dare.co.uk.">CF Pages project (dare-time-poc). Co-locating means one less domain, cleaner sharing, drops the .pages.dev subdomain. Pattern: route /time/* to the time-page renderer in the devreports pipeline (Cloud Run can serve both).
  3. Custom cities via query string?cities=london,paris,berlin,sydney reads from CITY_PRESETS (already exists in the generator). Render dynamically when the query string is present.
  4. localStorage per-visitor preference — remember which cities each visitor wants. Cookie-free.
  5. “Best pair” suggestion when 3-way is empty — when no Goldilocks slot exists, suggest the best 2-of-3 overlap (e.g. “London+NYC have 3 core hours at UTC 14–17”). Common case for London+NYC+Tokyo, which almost never has a 3-way core slot.
  6. --rule strict|relaxed flag — flips whether fringe counts as overlap. Relaxed mode unlocks evening-Tokyo / morning-NYC slots.
  7. Hover-preview integration — when the date links are inside a dev report, the hover-preview helper (anchor_enricher.py) could render the mini-grid inline. Same mechanism used for link-with-thumb anchors.
  8. Portfolio fan-out — dogwood (NYC ↔ Hamptons pickup scheduling), audrey (international wholesale ops), client work. Generator already accepts any IANA tz, so each instance is just a --cities change + a separate CDN, security layer, and DNS provider sitting in front of dare.co.uk.">CF Pages project.

Counter-pattern noted: with London+NYC+Tokyo on strict-core rule, Goldilocks slots are usually empty — that’s a real-world finding, not a bug. The grid surfaces “no 3-way slot exists today” honestly. Phase-2 item #5 (best-pair suggestion) is the answer.

Source: parked_sketch_dare_global_time_page_2026-05-16.md · Rendered 2026-05-18 12:53