- Add /api/accommodation-availability endpoint with 2-min cache + room filtering
- Fetch availability on mount, disable sold-out radio options
- Redirect booking notifications to jeff@jeffemmett.com for testing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extracts registration form into shared component and adds promo code
support so late registrants can be offered early bird pricing (€80)
via a private URL, using the same Mollie/Sheet/booking pipeline.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hardcoded €80 ticket price with date-based tiers:
- Early bird €80 (until Mar 31)
- Regular €120 (Apr 1 – Jun 30)
- Late €150 (Jul 1+)
Both the register page and checkout API now compute the current
tier at request time, so prices update automatically on cutoff dates.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix success page and register page Telegram links to use CCG26 group
- Fix CCA Telegram link typo on homepage (extra 'N' in invite code)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add "I would like to include food for the week" checkbox to the payment
step with co-producing meals messaging. Track food interest in Google
Sheets as column Q ("Want Food").
- Add wantFood field to RegistrationData interface
- Add interactive food checkbox replacing static note in payment step
- Pass wantFood through register API to Google Sheets
- Expand sheet ranges from A:P to A:Q, add "Want Food" header
- Preserve food column on payment status updates
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Resolve trivial BCC conflict - both sides added the same BCC to
contact@cryptocommonsgather.ing, keeping the constant reference.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a visible processing fee line item so customers cover payment
processing costs instead of having them deducted from the received amount.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add required email field to registration form (was missing entirely,
causing "N/A" emails in booking notifications)
- Pass email through full chain: form → API → Google Sheet → Mollie
metadata → webhook (with Mollie billingAddress as fallback)
- BCC contact@cryptocommonsgather.ing on all payment confirmation
emails so team is notified of every successful registration
- Replace OG image with alpine mountain card including event name,
dates, and URL for better Twitter/social sharing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
- Commons Hub nightly rates: shared €39.20→€39.90, double €50.20→€50.90
- Herrnhof prices now stored as 7-night totals (×7) for correct checkout
- Confirmation email: food text updated, Herrnhof link removed, added office@commons-hub.at for accommodation questions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Organizers now receive a copy of every successful payment confirmation
email so they're notified of new registrations.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Use absolute URLs for OG/Twitter images (required by LinkedIn, WhatsApp)
- Add image type and descriptive alt text for OG image
- Add robots.txt allowing all crawlers
- Add dynamic sitemap.xml with all public pages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove food as a payment option; add note about follow-up email for food
- Restructure accommodation into two venues: Commons Hub and Herrnhof Villa
- Herrnhof Villa options: single, double (3 configs), and triple rooms
- Update event dates from Aug 16-22 to Aug 16-23 (7 nights) across all pages
- Update pricing: Commons Hub €274.40/€351.40, Herrnhof €40-€95 per person
- Update transparency page with new accommodation breakdown and food TBA
- Update API route and confirmation email to match
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
Click left/right halves to navigate. Swipe on touch devices. 3D
perspective page-flip animation on transitions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Drop the flipbook library — it couldn't reliably force single-page
mode. Replace with a CSS translateX carousel that shows exactly one
slide at a time with smooth transitions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Set width to 3000 so portrait mode always triggers, showing one slide
at a time instead of two-page spread.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace external iframe with react-pageflip flipbook component using
pre-rendered slide images (1.3MB total vs 17MB PDF). Add 3-photo strip
between stats and tiers sections. Swap CTA background image. Update
generate_sponsor_docs.py to export slide JPGs and copy PDF to public/.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Changed 100+ participants to 60+, 25+ countries to 15+ throughout both decks
- Removed "44,850 Friendships Made" and "2 Movements Spawned" stat cards
- Restructured impact slide to 2-column layout with movements text
- Added Valley of the Commons bonus callout to CTA slide
- Added "Sponsor the continuation of a legacy" heading on sponsorships page
- Updated sponsorships page countries to 15+
- Fixed duplicate cover page (stale page-000 removed from flipbook)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Updated all references to early bird registration closing date
across registration page, transparency page, twitter thread,
sponsorship package docs, and sponsor doc generator.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Move community group photo to hero banner, Commons Hub house to CTA
- Remove "44,850 Friendships Made" stat
- Make infinity symbol much larger (text-7xl/8xl)
- Put Commons Stack and BlockScience first in team lists
- Cache-bust embedded flipbook iframe
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add /sponsorships page with tier overview, embedded flipbook deck, and contact CTA
- Create HTML sponsorship slide deck (12 slides) and print-optimized version for PDF/flipbook
- Create sponsor outreach email template
- Update existing outreach templates to reflect new €1k-€5k tier range
- Add opt-in checkboxes for accommodation (dorm/double) and food package on registration payment step
- Pass accommodation and food selections as separate Stripe line items for single checkout
- Store add-on selections in Stripe session metadata
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
- Add Ghost blog newsletter subscribe form (blog.crypto-commons.org) in hero and bottom CTA sections
- Update register buttons to "Register Now to Save Your Seat!"
- Add Valley of the Commons section with weekly themes and overlap info
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
- Make date badge larger and more prominent
- Increase description text size and contrast
- Fix "post-capitalistist" typo
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>