Commit Graph

15 Commits

Author SHA1 Message Date
Jeff Emmett e155408d9c feat: add per-day attendance and per-night accommodation pricing
CI/CD / deploy (push) Failing after 1m19s Details
Users can now attend individual days at €10/day instead of full-week
only (€50). Partial-week attendees get Commons Hub accommodation at
per-night rates (€40 shared, €50 double). Villa restricted to
full-week. Booking sheet writes guest names only on selected days.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 15:07:54 -04:00
Jeff Emmett 657d0b50c2 feat: add /pay page for existing registrants to complete payment
CI/CD / deploy (push) Failing after 54s Details
Users who registered but didn't pay can now visit /pay, enter their
email, and go straight to accommodation selection + Mollie checkout
without re-registering.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 11:17:05 -04:00
Jeff Emmett dc95bf4819 feat: add Mollie payment pipeline with two-step registration flow
CI/CD / deploy (push) Failing after 1m12s Details
Convert single-step registration into a two-step flow:
- Step 1: Registration info → saves to JSON + Google Sheet with awaiting_payment status
- Step 2: Accommodation selection + price summary → creates Mollie checkout → redirects

On payment completion, Mollie webhook updates status, assigns bed on booking sheet,
sends confirmation email, and adds to Listmonk.

New files: api/booking-sheet.js, payment-success.html
New routes: /api/create-checkout-session, /api/mollie/webhook, /api/payment-status

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 14:36:40 -04:00
Jeff Emmett d1203dfed5 Update website content: hero date/place, footer, organizer info, email domain
- Add date (June 7–13, 2026) and location (Commons Hub, Austria) to hero section
- Remove floating cards from about section, switch to single-column layout
- Update Digital Publishing text to remove TBC partner names
- Update organizer team text with new orgs and CCA/Commons Hub collaboration
- Remove "Reality is a design space" tagline from all footers
- Add conveners, sponsors, and promotional partners sections to footer
- Update accommodation, food, and cost estimate text on financial transparency page
- Fix email domain: hello@worldplay.earthhello@worldplay.art
- Update confirmation email template with revised copy and bullet list
- Remove tagline from confirmation email

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 15:51:16 -08:00
Jeff Emmett bc70718976 fix: switch SMTP from noreply@jeffemmett.com to newsletter@worldplay.art
Update default SMTP_USER and EMAIL_FROM to use the domain-specific
newsletter mailbox instead of the shared noreply@jeffemmett.com address.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:58:45 -08:00
Jeff Emmett a4fadbb1c7 fix: enable Google Sheets with file-based credentials and fix SMTP TLS
Switch from GOOGLE_CREDENTIALS env var (JSON string) to file-based
service account loading via GOOGLE_SERVICE_ACCOUNT_FILE, with fallback
to the env var for backwards compatibility. Mount the service account
JSON as a read-only volume. Add tls.rejectUnauthorized=false for
Mailcow self-signed cert.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:49:00 -08:00
Jeff Emmett 95759d399e fix: migrate SMTP host from mx.jeffemmett.com to mail.rmail.online
All email sending now uses mail.rmail.online as the SMTP host,
replacing the legacy mx.jeffemmett.com hostname.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 23:37:54 -08:00
Jeff Emmett c3e67b9cae feat: replace Resend SDK with Mailcow SMTP (nodemailer)
Swap email sending from Resend API to self-hosted Mailcow at
mx.jeffemmett.com. Uses SMTP_PASS env var instead of RESEND_API_KEY.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 09:48:54 -07:00
Jeff Emmett c32070806a Switch Listmonk integration to direct PostgreSQL access
- Replaced HTTP API calls with direct database insertions
- More reliable than API auth which requires session tokens in Listmonk v5+
- Added pg package for PostgreSQL connectivity
- Handles both new subscribers and existing ones (updates attributes)
- Merges WORLDPLAY attributes with any existing subscriber data

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 20:15:07 +00:00
Jeff Emmett f0641cc04a Add Listmonk integration for newsletter subscriber sync
- New registrations with newsletter=yes are automatically added to WORLDPLAY list
- Stores registration metadata (role, interests, location) as subscriber attributes
- Handles existing subscribers by adding them to the list
- Connected to Listmonk via internal Docker network

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 19:15:08 +00:00
Jeff Emmett bd90f0c647 Add financial transparency page, fix gradient highlights
- Create dedicated financial-transparency.html page in worldplay theme
- Add route for /financial-transparency in server.js
- Fix gradient text highlight CSS (add color:transparent, display:inline)
- Add .highlight-text utility class for CTA section
- Update link to use local page instead of CCG25 external link

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 14:51:58 +00:00
Jeff Emmett b3dbc60324 Website updates round 3
- Add floating concepts: Parallel worlding, Guerrilla futuring
- Replace Speculative fiction with Economic sci-fi
- Fix all example URLs with correct links
- Update Digital Publishing description
- Convert Playing with Reality to bullet points
- Update Who should attend with comprehensive list
- Change contribution field to multi-select checkboxes
- Update Ready to Play? to Ready to Hijack Reality?
- Fix Location footer link
- Add organizing team info (Rok, Pekko, Carolina)
- Add website credit
- Add Maker Spaces & Equipment section
- Add Financial Transparency section with CCG25 link
- Update server.js for multi-select contribute handling

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 14:37:14 +00:00
Jeff Emmett ca3494a74b Website updates based on round 2 feedback
- Subtitle: removed colon, uppercase "(TO BE DEFINED)", larger font
- Floating concepts: Reality-bending, Speculative fiction, Games as organisations
- Shape the Programme: co-labs → "mycollabs"
- Game Prototyping: "Any collectively prototyped games..."
- Sustainable Models: shortened text, "Exploring...for sustaining the network"
- Eutopia track: added "Utopia on the Tabletop", removed "The Transition Year"
- When/Where: removed redundant "in the Austrian Alps", added Commons Hub photo
- Register interest: full sentence about 60 participant limit
- Form: "Other" role shows text input, updated thread names to match programme
- Added newsletter subscription checkbox
- Fixed Commons Hub link, removed duplicate Newsletter button
- Backend: captures otherRole and newsletter fields

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 17:31:58 +01:00
Jeff Emmett 196ca4589d Add Google Sheets and Resend email integration
- Registration data sent to Google Sheet (all fields)
- Confirmation email sent via Resend
- Beautiful HTML email template matching site design
- Both integrations are optional (gracefully disabled if not configured)

Environment variables needed:
- RESEND_API_KEY: Resend API key for emails
- GOOGLE_SHEET_ID: Google Sheet ID for registrations
- GOOGLE_CREDENTIALS: Service account JSON credentials

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 14:35:15 +01:00
Jeff Emmett 52000c0f5a Initial commit: WORLDPLAY event website
- Express server with health check
- Single-page HTML site
- Docker + docker-compose setup
- Traefik integration for worldplay.jeffemmett.com

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 11:50:14 +01:00