Skip to content
Prototype modeSynthetic data only · no payments, emails, or production changes

Phase 0

Evidence registry & contracts

Requirements registry

RequirementStatusEvidence
Team capacity value 21 means open-ended (rendered '20+')confirmedcampvine-main: views/pages/program-registration.php:75; client/programs/programs-manage.php:422
Finix payment path exists alongside Stripeconfirmedcampvine-main: views/pages/checkout.php, private-lesson-checkout.php, company-donation.php
Explicit provider → Finix (brand ready) → Stripe fallbackconfirmedSupplied brief (source-confirmed); ordering in adapter quote()
Age eligibility on session start dateconfirmedSupplied brief
Private-lesson hold defaults to 20 minutesconfirmedSupplied brief; production expiry must come from server
Self / family / team registration typesconfirmedSupplied brief
Discount revalidated & usage reserved at checkoutconfirmedSupplied brief
Insurance lifecycle independent of registration/paymentconfirmedSupplied brief
Editing restricted: archived, recurring, membership, legacy payment planconfirmedSupplied brief
CMS collections (staff … subscribers)confirmedSupplied brief; cms.campvine-main (Laravel)
Team registrations go to operator review (demo)inferredDemo-only behavior; acceptance rules unverified
Waitlisted submissions are not charged (demo)unknownPayment timing for waitlist not established
Service boundaries: discovery, accounts, registrations, finance, lessons, sites, reportingproposedsrc/services/contracts.ts
Demo processing fee 3%proposedSynthetic value only — real fees from backend
Cancellation windows, refunds, taxes, transfer fees, coupon stacking, payment schedulesunknownNot supplied — dependent actions disabled
Permission keys for delegated employeesunknownDemo uses illustrative feature names
Waitlist promotion order / automatic acceptanceunknownNot modeled
Impersonation safeguards (scope, expiry, audit)unknownSupport mode disabled
CMS drafts / versioning / approvalsunknownNot assumed
Company-specific exceptionsunknownMust be enumerated before migration

Entity map

Company ─┬─ Brand ─── Program ─── Session ─── RegistrationOption
         │            (active · listing · archived — independent)
         │
Account ─┼─ Participant (reusable profile)
         │        └─ snapshot ─▶ Registration (self | family | team)
         │                         ├─ status · payment · waiver · insurance (independent)
         │                         ├─ ledger · answers · notes · history
         │                         └─ Team (name lock, capacity; 21 = open-ended)
         ├─ Membership (own lifecycle)   ├─ Private lesson: Slot ─ Hold ─ Reservation
         └─ Donation (own lifecycle)
CMS Site (owner-enforced) ─ Pages/Sections/Nav/Media/Collections ─ external program/team IDs

Permission / scope matrix (illustrative — keys unverified)

CapabilityParentDirector ownerDelegated employeePlatform admin
Discovery & register✓✓✓✓
Family dashboard (own)✓———
Operator registrations—All brandsAssigned brandsPlatform view TBD
Finance / refundsOwn balance✓ (rules TBD)If feature grantedTBD
Users & permissions—✓If grantedSub-admins TBD
Branded sites—Owned sitesIf grantedTBD
Platform admin———✓ (permissions TBD)

Backend contracts required (proposed)

Prioritized gaps

  1. Registration status transitions & waitlist promotion rules
  2. Payment timing, schedules, recurring charges, fees, taxes
  3. Cancellation & refund entitlements
  4. Delegated-employee permission keys and platform sub-admin scope
  5. Company-specific exceptions inventory
  6. Insurance provider contract & webhook states
  7. Impersonation safeguards