Commit Graph

11 Commits

Author SHA1 Message Date
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