Repository navigation
Add a public Events page with RSVPs, private until launch - #113
Merged
Merged
Conversation
- /[locale]/events: Upcoming / Past, one card per event (flyer that enlarges, tag, date and time in Pacific, online or address, host, description, optional RSVP count) and an RSVP form on the card. After RSVPing: "You're in!", Add to Google Calendar and an .ics download. - Private until EVENTS_PUBLIC is exactly "true": a 404 for the public, a "Private preview" banner for board admins of either hub, noindex, no nav link, home strip or sitemap entry, and the RSVP API refuses. Once public: "Events" in the header and the next-event strip on home. - RSVP confirmations and "Send reminder to everyone" go out like board invites (SMTP on 2525, Brevo API fallback, outbox for tests) from the chapter's sender, with a PUBLISH .ics. The meeting link is stored on the event and only appears in those emails. A repeat RSVP with the same email resends the confirmation instead of adding a second one. - Hub: an admin-only Events tab on both hubs to add, edit and delete events (flyers use the hub photo upload), with each event's RSVP list, Copy emails, Download CSV and the reminder (with a confirm step). Changes go in the change log and can be restored. - Seeds the first event (Negotiation Workshop with Emily Epstein, Nov 19, 6-7 PM, online), with the meeting link and flyer left for an admin to add. - Strings are in en.json for the other languages to fill in. - BOARD_SETUP.md explains how to launch and how to hide it again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a public Events page with RSVPs. It stays private until launch: nothing changes for visitors until
EVENTS_PUBLIC=trueis set in Railway. Don't merge yet.Private until launch
EVENTS_PUBLICmust be exactlytruefor the page to be public. Until then:/[locale]/eventsreturns the normal 404 to the public.<meta name="robots" content="noindex, nofollow">.When
EVENTS_PUBLIC=true: "Events" appears in the header between Team and Learning Resources, and the next-event strip appears under the home hero.BOARD_SETUP.mdhas a new "Public events" section explaining how to launch (setEVENTS_PUBLIC=trueand redeploy) and how to hide it again..env.examplelists the variable, blank.Events page
eventsPagesection ofen.json(plusnav.eventsand route metadata). The other languages fall back to English until the translation work fills them in.Emails
event.ics(METHOD:PUBLISH).deliver()inlib/board/invites.ts. Meeting invites still behave the same.meeting_link.Admin (both hubs)
Seed
Created once on first load, and editable by admins:
Tests (local Postgres, outbox mode)
EVENTS_PUBLICunset:/en/eventsand/es/events, and on the RSVP,next,icsandflyerAPIs.noindex, and can RSVP. A UCLA member session still gets the 404.EVENTS_PUBLIC=true:/eventsin all 10 languages..icsparses with theicalendarlibrary: METHOD:PUBLISH, 18:00–19:00 America/Los_Angeles, which is 02:00Z.ADA@example.comvsada@example.comkept one row and resent the confirmation./en,/en/events,/es/events,/api/events/next,/api/events/1/icsor any RSVP response.text/calendar; method=REQUESTpart./boardand/board/uclastill load.pnpm buildpasses with and withoutEVENTS_PUBLIC.Screenshots
Desktop and phone, side by side. The screenshots with RSVPs or a flyer use test data (example.com addresses and a placeholder flyer).
Before launch: the public sees a 404, and an admin sees the preview banner.
After launch: the header link, the home strip and the Events page.
RSVP: the form, then the success state.
A card with a flyer, the enlarged flyer, and the Past view:
Hub Events tab: the RSVP list with the reminder confirmation, and the edit form.
The screenshots are on the images-only
pr-screenshots-eventsbranch, which can be deleted after review.Generated by Claude Code