Commit Graph

13 Commits

Author SHA1 Message Date
Ryan Chen d68a6629ac Gate admin routes behind auth and add copy guest link button
When auth is enabled, admin pages require the logged-in user to be
the event owner — unauthorized visitors get redirected to the guest
view, and admin actions return 403. Also adds a copy-to-clipboard
button in the admin bar and a Makefile for common commands.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-18 09:06:16 -04:00
Ryan Chen a0c4b28d1e Support both email and phone login
Auto-detect whether the user entered an email or phone number.
Email sends via Resend, phone sends via Twilio SMS. Users table
has nullable phone and email columns; verification_codes uses a
generic identifier field.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-18 08:53:29 -04:00
Ryan Chen 471cc3ad8c Switch to phone auth via Twilio SMS and add feature flag system
Replace email-based auth (Resend) with phone-based auth (Twilio SMS).
Add BBQ_FEATURES env var for toggling features at deploy time — when
auth is disabled, no login routes are registered and the app works
as before.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-18 08:45:15 -04:00
Ryan Chen b3203a7506 Include slot claimers in the Going list
The Going section now shows both RSVPs and people who claimed slots,
deduplicated by name (case-insensitive). Claim-only people don't get a
remove button—they unclaim from the slot card instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-17 08:12:09 -04:00
Ryan Chen 7b0efb3c45 Add markdown event descriptions for hosts to provide context
Hosts can now add a free-form description (with markdown rendering via
goldmark) when creating or editing events. Descriptions render safely
with no raw HTML passthrough. Includes ALTER TABLE migration for
existing databases.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-17 08:02:24 -04:00
Ryan Chen 4fc79d4491 Rename PORT to HOST_PORT in compose to avoid conflict with Go server
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-16 15:58:44 -04:00
Ryan Chen 26d1622f83 Support custom PORT in compose.yaml via .env
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-16 15:55:30 -04:00
Ryan Chen 53baf3a9c4 Add .env file support to compose.yaml
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-16 15:53:01 -04:00
Ryan Chen 6a70135a5d Add dynamic OG image generation for rich iMessage/social previews
Generates a branded 1200x630 PNG per event with title, date/time/location
using Go's image package and a custom bitmap font. Supports BBQ_BASE_URL
env var for absolute URLs required by link preview crawlers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-16 15:50:24 -04:00
Ryan Chen ef3aa3e9c3 Harden inputs: sanitize lengths, request size limits, caps on slots/rsvps
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-15 10:28:06 -04:00
Ryan Chen d51e7fe867 Add RSVP support and Open Graph meta tags
People can now RSVP without claiming a slot. OG tags show
event title, date/time/location, and headcount in link previews.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-15 10:18:36 -04:00
Ryan Chen 2b08f81c8d Add README with build and deploy instructions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-14 22:57:24 -04:00
Ryan Chen 8b32d98267 Initial commit: potluck signup app
Go + chi + SQLite + HTMX with SSE live updates.
Soft Brutalism design, emoji picker, Docker deploy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-14 22:55:54 -04:00