Commit Graph

10 Commits

Author SHA1 Message Date
Jeff Emmett 24ffd8bd60 fix: use correct booking sheet tab name 'Occupancy' instead of 'Sheet1'
CI/CD / deploy (push) Failing after 1m59s Details
The CCG booking spreadsheet tab is named 'Occupancy', not 'Sheet1'.
Updated defaults in docker-compose, route, booking-sheet lib, and env example.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 12:02:15 -04:00
Jeff Emmett 45b94e4ed2 feat: auto-assign room bookings on payment and notify contact@
- Add booking-sheet.ts: parses booking spreadsheet, finds first available
  bed matching accommodation type, writes guest name across date columns
- Expand registration sheet to columns O-P (Accommodation Venue/Type)
- Webhook now assigns room booking (best-effort) on successful payment
- Send internal notification to contact@ with assignment details and flags
- Confirmation email shows assigned room; updated food/accommodation copy
- Add test script for end-to-end verification
- Add BOOKING_SHEET_ID/NAME to env and docker-compose configs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:04:23 -07:00
Jeff Emmett 8f59233918 feat: swap Stripe for Mollie payment integration
Replace Stripe checkout with Mollie payments API. Mollie handles
payment method selection on their hosted checkout (card, SEPA, iDEAL,
PayPal, etc). Simpler auth model — single API key, no webhook secrets.

- Rewrite /api/create-checkout-session for Mollie payment creation
- Rewrite /api/webhook for Mollie status verification flow
- Update google-sheets.ts: stripeSessionId → paymentSessionId
- Remove payment method radio buttons (Mollie shows all methods)
- Update docker-compose env vars
- Swap stripe npm package for @mollie/api-client

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 14:30:55 -08:00
Jeff Emmett 823102b908 feat: add confirmation emails and Listmonk newsletter sync
- Add nodemailer SMTP integration for payment confirmation emails
  via newsletter@cryptocommonsgather.ing
- Add Listmonk PostgreSQL integration for newsletter subscriber sync
- Update webhook to send confirmation email after Stripe payment
- Add SMTP and Listmonk env vars to docker-compose

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 11:23:21 -08:00
Jeff Emmett 3091c01819 feat: add Google Sheets registration pipeline
- Add googleapis for Google Sheets integration
- Create /api/register endpoint to record registrations with "Pending" status
- Update webhook to mark registrations as "Paid" when payment completes
- Add lib/google-sheets.ts with addRegistration and updatePaymentStatus functions
- Update docker-compose.yml with Google Sheets env vars
- Add .env.example documenting required environment variables

Flow: Form submit → Sheet (Pending) → Payment → Webhook → Sheet (Paid)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 09:43:18 +01:00
Jeff Emmett 3396e73137 fix: restore Docker deployment files after v0 regeneration
v0 bot regenerates the entire project without deployment files.
These are required for self-hosted deployment on Netcup.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 12:08:10 -05:00
v0 a1e4cf1098 feat: update footer text to reflect Creative Commons license
Align footer with commons-oriented ethos and clarify licensing.

#VERCEL_SKIP

Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
2025-12-10 18:39:44 +00:00
Jeff Emmett 8bcb6a978a fix: restore Docker deployment files deleted by v0 bot
- Restore Dockerfile for standalone Next.js deployment
- Restore docker-compose.yml with Traefik labels
- Add output: 'standalone' to next.config.mjs (required for Docker)

The v0 bot commit 747204b deleted these files when regenerating the codebase.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 19:49:17 -08:00
v0 747204b27d feat: update color scheme to crypto Commons palette
Switch to white and red theme with proper contrast for both modes.

#VERCEL_SKIP

Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
2025-12-07 19:54:53 +00:00
Jeff Emmett 30185941bc feat: add Docker deployment for self-hosted infrastructure
- Add Dockerfile for standalone Next.js deployment
- Add docker-compose.yml with Traefik labels for cryptocommonsgather.ing
- Fix Stripe initialization to happen at runtime (not build time)
- Update Next.js to 16.0.7 (security fix)
- Add output: 'standalone' to next.config.mjs
- Add .gitignore and .dockerignore

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-06 15:57:46 +01:00