Skip to content

feat: add an optional event location (meeting link or physical place) - #31

Merged
JamesmarkeyUK merged 4 commits into
mainfrom
feat/event-location
Jul 24, 2026
Merged

feat: add an optional event location (meeting link or physical place)#31
JamesmarkeyUK merged 4 commits into
mainfrom
feat/event-location

Conversation

@JamesmarkeyUK

Copy link
Copy Markdown
Contributor

What

Let the poll creator attach one event location (not per-slot): a Teams / Zoom / Google Meet link or a physical place ("Meeting room 5"). It's shown to respondents on the poll page and the confirmed banner, and carried into the Add-to-calendar export.

Changes

  • Migration supabase/migrations/0060_polls_location.sql — new nullable polls.location column. ⚠️ The poll schema is owned by backoffice/universal-platform; this file is here for review — renumber to that repo's next free index and apply to the hosted Supabase before this ships.
  • Poll/NewPoll gain location. createPoll includes it in the insert; the free-tier gated path sets it via a follow-up update (mirrors the notify-on-response opt-in), since create_poll_gated has no location arg.
  • CreatePoll: new "Location or meeting link" input.
  • PollPage: link-aware location line (anchor for http(s) URLs, plain text otherwise), in the header and the confirmed banner.
  • calendar.ts: CalendarEvent.location → ICS LOCATION, Google location, Outlook location.

Tests

  • New calendar tests (ICS LOCATION emit/omit + escaping, Google location param). npm test 38 pass, npm run build green.

Note

Until the column exists on the hosted DB, creating a poll with a location will error on insert — so merge/apply the migration first.

🤖 Generated with Claude Code

The poll creator can attach one location to the whole event (not
per-slot): a Teams / Zoom / Meet link or a physical place. It's shown to
respondents on the poll page and confirmed banner, and carried into the
Add-to-calendar export (ICS LOCATION + Google/Outlook deep-links).

- New nullable polls.location column (migration 0060_polls_location.sql;
  belongs in backoffice/universal-platform — renumber before applying).
- Poll/NewPoll gain a location field; createPoll includes it in the
  insert, and the gated RPC path sets it as a follow-up update (like the
  notify-on-response opt-in), since create_poll_gated has no location arg.
- CreatePoll: 'Location or meeting link' input.
- PollPage: link-aware location line (anchor for URLs, text otherwise).
- calendar.ts: CalendarEvent.location threaded into ICS/Google/Outlook,
  with unit tests.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 24, 2026

Copy link
Copy Markdown

Deploying universal-polling with  Cloudflare Pages  Cloudflare Pages

Latest commit: a1c6c8c
Status:⚡️  Build in progress...

View logs

@JamesmarkeyUK

Copy link
Copy Markdown
Contributor Author

⚠️ Do not merge until migration 0060 (or its renumbered equivalent) is applied to the hosted Supabase. Poll creation with a location will fail on insert until polls.location exists. Follow-up commit makes location-less creation safe regardless, but the feature itself needs the column live first.

@JamesmarkeyUK

Copy link
Copy Markdown
Contributor Author

Rebased onto main (picks up the timezone-switcher change from #32); the location line now shows in both the header and the confirmed banner alongside it. Conflict-free and merge-ready — still hold merge until migration 0060 (renumbered for backoffice/universal-platform) is applied to the hosted Supabase, since creating a poll with a location errors until polls.location exists.

@JamesmarkeyUK
JamesmarkeyUK merged commit bb55fd5 into main Jul 24, 2026
1 of 2 checks passed
@JamesmarkeyUK
JamesmarkeyUK deleted the feat/event-location branch July 24, 2026 11:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant