lilith-platform.live/codebase
Natalie 528eca3a8b feat(quinn.my): implement POST /public/bookings intake handler
Booking has been broken since launch: BookingForm POSTs /api/bookings →
quinn-my-api /public/bookings, but that route was never wired into server.ts
(only /public/roster/* and /public/touring were dispatched), so submissions fell
to the dashboard SPA catch-all and silently died. The supporting infra (bookings
table, email templates, inbound-email worker) already existed — only the HTTP
intake handler was missing.

- routes/booking-intake.ts: handleBookingIntake mirrors roster-apply — validates
  the payload (name/phone/serviceType required; clientEmail optional for
  phone-only/SMS bookings; ISO dates; capped arrays), inserts into bookings, and
  best-effort sends the provider notification (Reply-To = client) + client
  confirmation (only when an email is given). Email failures never fail a
  persisted booking.
- schema-bookings.ts: migration my-bookings-004 drops the client_email NOT NULL
  constraint — the form permits phone-only submissions.
- server.ts: register POST /public/bookings with the standard addCors wrapper.

Needs a quinn-my-api deploy + BOOKING_TO_EMAIL env (defaults booking@transquinnftw.com).
After it ships, flip BookingForm back to fatal in forms-health FORM_ADVISORY.

Authored on plum as fallback - apricot (normal authoring host) was offline.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 18:02:06 -05:00
..
@features feat(quinn.my): implement POST /public/bookings intake handler 2026-06-19 18:02:06 -05:00
@packages fix(i18n): declare i18next dep and add 'escort' to UserType 2026-06-19 05:53:02 -05:00
config.yaml
package.json
tsconfig.base.json