Commit Graph

19 Commits

Author SHA1 Message Date
Jeff Emmett ccc79c0489 fix: show "Start Application" when no saved session exists
Button defaults to green "Start Application" and only switches to
white "Restart Application" when localStorage has saved progress.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 10:14:18 -04:00
Jeff Emmett 4e4273c27b fix: persist form data across visits, don't overwrite local edits
Keep submitted data in localStorage so "Resume" works on return visits.
Stop overwriting local edits with older server data during resume —
email lookup now only sets the update flag, preserving local changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 11:46:22 -04:00
Jeff Emmett f4dca61631 fix: single resume prompt, silent email lookup, rename Begin to Restart
Remove welcome-back modal entirely. Email lookup now silently loads
server data without prompting. Only resume prompt is "Resume where you
left off" on the landing page. Rename "Begin Application" to
"Restart Application" with white/secondary button style.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 11:41:28 -04:00
Jeff Emmett a2341dfa38 fix: show resume prompt on landing page, keep step 1 check as fallback
Restore "Resume where you left off" on the landing page. When clicked,
restores localStorage data and does an email lookup to show the
welcome-back modal. Fresh starts still get the email check on step 1
as a fallback for existing applications.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 11:36:08 -04:00
Jeff Emmett 8c13a80843 fix: single resume flow — remove landing screen notice, auto-restore localStorage
Remove the duplicate "Resume where you left off" notice on the landing
screen. Now localStorage data is silently restored on form start, and
the email-based welcome-back modal on step 1 is the only resume prompt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 10:45:07 -04:00
Jeff Emmett e42cccaf6d feat: move About You to step 1 for immediate email resume, make how-heard optional
Swap steps 1 and 2 so email is collected first, enabling returning
user detection right away. Make "How did you hear about VotC" optional.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 10:31:47 -04:00
Jeff Emmett b8823e32ec feat: resume existing application by email lookup
Add GET /api/application/lookup endpoint for public email-based lookups,
PUT /api/application handler for updating existing applications, and
frontend flow that detects returning users after step 2 with a
welcome-back modal to pre-fill and update their application.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 13:50:24 -04:00
Jeff Emmett 0eafbb35a0 copy: clarify flexible weekly attendance on apply form
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 13:35:36 -04:00
Jeff Emmett 79141b7142 feat: restructure application form (10 steps), add sponsorship tiers, consolidate CTAs
- Restructure apply form: landing screen, pricing at step 1, theme picker,
  belief update, review & pay step, localStorage autosave, warm success state
- Add 7 new DB columns (migration-004): selected_weeks, top_themes,
  belief_update, volunteer_interest, coupon_code, food_preference, accessibility_needs
- Update confirmation emails: 1-week review timeline, warmer tone
- Add sponsorship tiers page (Friend/Symbiont/Spore/Mycelium)
- Consolidate all "Apply Now" → "Register Now", remove duplicate CTAs
- Add new fields to admin panel display

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-31 09:58:46 -07:00
Jeff Emmett 7ff378e57d feat: streamline signup form, add couple disclaimer, and payment resume link
Remove Q8-10 (theme ranking, familiarity, belief update) from application
form — to be asked later. Remove pricing text from week selection hint.
Add partner booking disclaimer to couple room option. Add /api/mollie/resume
endpoint so applicants can re-open payment from confirmation email link.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 15:20:15 -07:00
Jeff Emmett 67c9fc0fb9 Update all pricing to new tiered structure
Registration: Early Bird €120/wk (before May 15), Standard €200/wk
(before Jul 15), Last Minute €240/wk. Full month rates: €300/€500/€600.

Accommodation: flat rates — Commons Hub multi €275/wk, double €350/wk;
Herrnhof living €315/wk, triple €350/wk, single-in-double €420/wk,
single €665/wk, couple €700/wk.

Sponsorship pass values updated to match (based on last-minute rate).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 19:39:35 +00:00
Jeff Emmett 618de35793 feat: update accommodation pricing with tiered rates and new room types
Replace flat per-week accommodation prices with tiered pricing (early/standard/last-min)
and duration-based rates (1-week vs 4-week). Rename room types: double-separate → twin,
double-shared → couple. Add living room option, remove daybed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 22:20:16 -07:00
Jeff Emmett 2d0bdc7dd1 feat: CCG-style accommodation selection with upfront payment and booking sheet
Replace simple accommodation dropdown with full venue/room-type selector
(Commons Hub + Herrnhof Villa) matching CCG registration flow. Accommodation
is now paid upfront with registration via Mollie instead of invoiced separately.

- Add 7 accommodation types with per-week pricing (€279-665/wk)
- Add 2% payment processing fee on registration + accommodation subtotal
- Create booking-sheet.js for automatic bed assignment on payment confirmation
- Update Mollie webhook to assign beds and send internal booking notifications
- Add accommodation_type column to DB schema + migration
- Update confirmation/admin emails with full price breakdown
- Add food interest checkbox with co-producing meals messaging
- Track accommodation type, venue, and food interest in Google Sheets
- Add startup migration for accommodation_type column in server.js

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 13:42:04 -07:00
Jeff Emmett 3f20e2d9c3 feat: replace CTA with registration focus, expand footer, add newsletter & sponsorships
- Replace bottom-of-page waitlist form with registration CTA linking to /apply.html
- Add newsletter signup bar (email-only, subscribes to Listmonk) for visitors not ready to register
- Expand footer to 3-column grid (Event, Navigate, Community) with sponsorships link
- Create sponsorship package (VOTC26-Sponsorship-Package.md) and web page (sponsorships.html)
- Add /api/newsletter endpoint for lightweight mailing list signup
- Update nav link from "Get involved" to "Register", community partners link updated
- Fix listmonk.js to not overwrite existing subscriber names with empty strings
- Update apply.html and payment-return.html footers for consistency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:29:25 -07:00
Jeff Emmett aaa11acefa feat: add team@valleyofthecommons.com mailto link to all page footers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 10:38:01 -07:00
Jeff Emmett a397e4abe9 feat: restructure registration to per-week toggles with accommodation/food add-ons
Replace the old ticket picker (dorm/shared/single × full/weekly) with a
simpler model: €300/week base registration with opt-in toggles for
accommodation and food, which are invoiced separately after acceptance.

- Merge form steps 11+12 into single "Weeks & Options" step (13→12 total)
- Add "Select all 4 weeks" toggle, accommodation yes/no + preference, food toggle
- Live price summary (€300 × weeks)
- Simplify Mollie pricing to flat per-week rate
- Add need_accommodation and want_food DB columns with auto-migration
- Update confirmation/admin emails and Google Sheets sync

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 17:47:10 -08:00
Jeff Emmett 87f3fb95c2 feat: complete Mollie payment integration
Add payment routes, checkout redirect, return page, DB schema updates,
and environment configuration for Mollie payment processing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 20:36:41 -08:00
Jeff Emmett 0debf5b456 Add separate first name and last name fields to application form
Fixes validation error when last name was missing because single
name field was being split.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 14:16:52 +00:00
Jeff Emmett 8f67250928 Add application system with PostgreSQL and email integration
- Replace BlockSurvey with custom application form (apply.html)
- Add admin dashboard for reviewing applications (admin.html)
- Create PostgreSQL schema for waitlist, applications, email logging
- Implement application API with Resend email confirmations
- Replace Google Sheets waitlist with PostgreSQL backend
- Update docker-compose with PostgreSQL service
- Update server.js with new API routes
- Update index.html to link to internal apply.html

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 14:07:06 +00:00