Commit Graph

48 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 ebd22ccb91 feat: dynamic accommodation availability + sold-out UI
- 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>
2026-04-15 11:48:43 -04:00
Jeff Emmett d6e33f12e3 fix: remove Herrnhof Villa from accommodation options
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 11:34:25 -04:00
Jeff Emmett b02ebcacae feat: add secret early bird pricing link at /register/friends
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>
2026-04-02 16:20:45 -07:00
Jeff Emmett a6c8f0a477 feat: add dynamic pricing tiers to CCG registration
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>
2026-03-23 12:45:39 -07:00
Jeff Emmett cdaf09e14d fix: correct Telegram group links across registration and homepage
- 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>
2026-03-19 13:47:11 -07:00
Jeff Emmett b8567b0f54 feat: add food interest tracking to registration flow
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>
2026-03-12 13:42:23 -07:00
Jeff Emmett ef72526e1d feat: add 2% Mollie processing fee surcharge on top of payments
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>
2026-03-11 10:30:38 -07:00
Jeff Emmett eaf2c0ac31 fix: require email on registration, BCC contact@ on confirmations, update OG image
- 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>
2026-03-10 10:58:46 -07: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 4b78d357c0 update: accommodation pricing and confirmation email
- 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>
2026-03-09 10:41:14 -07:00
Jeff Emmett 28f1c6bb81 update: improve SEO - absolute OG image URLs, add sitemap and robots.txt
- 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>
2026-03-06 14:49:59 -08:00
Jeff Emmett ddbdd95191 update: reorder accommodation/food notices, remove referral reward text
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 14:24:07 -08:00
Jeff Emmett 9ae7909275 update: revise Herrnhof Villa room option wording
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 13:13:23 -08:00
Jeff Emmett b209f2f14b update: registration - remove food payment, add Herrnhof Villa, extend to 7 nights
- 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>
2026-03-06 12:37:43 -08: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 13719826ba feat: add "Register to Attend" link to footer across all pages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 12:02:39 -08:00
Jeff Emmett 5d07257b6e feat: embed flipbook deck on sponsorship page, add photo strip
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>
2026-03-04 11:38:22 -08:00
Jeff Emmett 55b9b2d125 update: deck stats (60+ participants, 15+ countries), remove duplicate stats, add Valley of the Commons
- 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>
2026-03-03 10:59:51 -08:00
Jeff Emmett b8ad5dc8f5 fix: change early bird deadline from April 30 to March 31
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>
2026-03-03 10:42:34 -08:00
Jeff Emmett 4123a576b5 update: swap hero/CTA images, bigger infinity, reorder teams
- 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>
2026-03-03 10:35:36 -08:00
Jeff Emmett b778a9fe22 update: sponsorship stats, budget, and terminology
- Total attendees 400+ → 300+
- Replace "Projects Incubated" with "44,850 Friendships Made"
- Replace "Return Rate" with "∞ Real Value Produced"
- Add Commons Stack, BlockScience, zkNetwork to attendee teams
- "pass" → "event ticket", "full access pass" → "event ticket, lodging and food"
- Budget: food €8,500, venue €5,000, accessibility €3,500, add design & marketing €2,000
- Reorder budget items highest to lowest, new total €25,000
- Revenue: ticket sales ~€7k, food contributions ~€8.5k, sponsorship gap ~€10-15k

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 10:19:59 -08:00
Jeff Emmett 80ab20001b feat: add sponsorships page, sponsorship deck, and registration add-ons
- 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>
2026-03-02 17:37:58 -08:00
Jeff Emmett c22655e345 fix: remove @vercel/analytics import (not on Vercel)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 11:29:43 -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 f82cd57aa9 feat: add email subscribe CTAs, Valley of the Commons section, update button text
- 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>
2026-02-12 11:30:09 +00: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 f2736fc3d3 fix: use hardcoded base URL for Stripe redirect URLs
The request.nextUrl.origin returns internal Docker address (0.0.0.0:3000)
when behind reverse proxy, causing invalid redirect after payment.
2026-01-18 19:23:28 +01:00
Jeff Emmett 13bddc06ef fix: use dynamic Stripe pricing instead of pre-created price IDs 2026-01-18 19:14:39 +01:00
Jeff Emmett 25d77b6d7f fix: use 303 redirect for checkout POST to prevent header errors
- Changed NextResponse.redirect() to Response with 303 status
- Added .gitignore file
2026-01-18 18:07:11 +01:00
Jeff Emmett f19bf65e7b feat: improve hero section readability and fix typo
- 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>
2026-01-06 00:57:39 +01:00
Jeff Emmett a7cd547107 Add Open Graph and Twitter Card metadata for social sharing
- Add og-image.jpg (1200x630) for link previews
- Add metadataBase, openGraph, and twitter metadata to layout.tsx

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 22:11:32 +01:00
Jeff Emmett cbbb6fee1d feat: simplify registration to event ticket only
Remove food and accommodation packages from payment page, keeping only
early bird ticket pricing (€80/€120/€150 tiers).

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 23:12:16 -05:00
Jeff Emmett 2cf3056735 feat: change favicon to mountain emoji
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 22:57:36 -05:00
Jeff Emmett f8bb379a0f feat: add CCG26 Telegram link across all pages
Updated all "Coming Soon" placeholders with the actual CCG26 Telegram
group link (https://t.me/+n5V_wDVKWrk1ZTBh) on:
- /directions (button and footer)
- /success (footer)
- /register (two footers)
- /about (footer)
- /gallery (footer)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 22:38:56 -05:00
Jeff Emmett 61027b5cfb feat: add Psilo-Cybernetics and Post-Appitalism to Myco-Economics
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 21:59:16 -05:00
Jeff Emmett 3d939ce86a feat: add links to theme cards and CCG26 Telegram
- Add clickable links for Regenerative & Collaborative Finance section
  (ReFi DAO, EthicHub, CoFi Gathering, Regen Network, Circles UBI)
- Add MycoFi link in Myco-Economics section
- Add links for Governance & Mutualism section
  (Economic Space Agency, Bread Coop, Holochain)
- Add links for Solarpunk & Radical Games section
  (pocas, Solar Punk WOW, Futurescraft)
- Add CCG26 Telegram group link and remove "Coming Soon"

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 18:11:17 -05:00
v0 0a07ece5ff feat: update community photo with new discussion circle image
Improve visual appeal for homepage with new group photo.

#VERCEL_SKIP

Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
2025-12-10 22:20:30 +00:00
v0 7dac44a543 feat: add clickable CCA link in Partners section
Update CCA text to link to crypto-commons.org.

#VERCEL_SKIP

Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
2025-12-10 18:41:21 +00: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 60921db465 fix: use lazy initialization for Stripe client
Prevents build-time errors when STRIPE_SECRET_KEY isn't available.
The client is now initialized on first use instead of module load.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 19:54:53 -08:00
v0 194ea5f37d feat: add mushroom emoji favicon for MycoFi
Use inline SVG for a fitting decentralized symbol.

#VERCEL_SKIP

Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
2025-12-08 00:39:19 +00:00
v0 a582806e3e feat: update date references to August 16-22, 2026
Consistently update date references across the site.

#VERCEL_SKIP

Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
2025-12-07 21:01:11 +00:00
v0 c17694b9b0 feat: add optional packages to registration flow
Update registration to include dynamic package selection and total.

#VERCEL_SKIP

Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
2025-12-07 20:47:36 +00: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
v0 a3cf6995b2 feat: update color scheme to crypto-themed palette
Switch to white, red, and neutral gray for consistent contrast.

#VERCEL_SKIP

Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
2025-12-06 14:22:52 +00:00
v0 be3c555aeb Initialized repository for chat Crypto commons gathering
Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
2025-12-02 07:52:37 +00:00