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>
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>
- 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>
- 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>
- 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>
Health check was using localhost which resolved to IPv6 [::1],
but the server binds to 0.0.0.0. Changed to 127.0.0.1.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added worldplay.art and www.worldplay.art to Traefik router
- Updated www redirect to point to worldplay.art
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>