ced4568/RootNode-academy-website (separate GitHub repo, Chase-authorized access) now implements docs/WEBSITE_REGISTRATION_AND_CHECKOUT.md's full contract on its own side: public offering lookup, registration (adult + guardian/minor), agreement acceptance, checkout creation, and a status-polling success page. Its own stale pricing was also corrected to match docs/ ROOTNODE_PRICING_AND_OFFERS_V1.md. It has nothing to talk to yet -- no real Platform API exists (Gate 4's hardware blocker, unchanged) -- so every RootNode-facing route there returns a clean 503 until ROOTNODE_API_URL/ROOTNODE_INTEGRATION_KEY point at a real deployment. Updates PHASE10_LAUNCH_READINESS.md Gate 10 and its matrix row, and WINTER_BREAK_LAUNCH_CHECKLIST.md and WINTER_BREAK_CAMP_OPERATIONS.md's own website-status notes, all of which previously said 'nobody has built the website-side form yet.'
6.5 KiB
6.5 KiB
Winter Break Camp Operations
Phase 8 §29 (payment step updated in Phase 9) — how to actually run the Winter Break Linux &
Systems Foundations Camp (docs/WINTER_BREAK_CAMP_CURRICULUM_OPTIONS.md Option A) using the
platform built in Phases 7-9, end to end, entirely from /admin. As of Phase 9, real
checkout/payment (Stripe test mode today, live mode once real credentials exist) is part of this
flow — see docs/PHASE9_COMMERCE_AND_LAUNCH.md and docs/WINTER_BREAK_LAUNCH_CHECKLIST.md.
What already exists vs. what Chase still fills in
Already representable, real, tested:
- The curriculum package (ROOT 01-02, referencing the real, unmodified courses).
- The offering itself, in DRAFT, with delivery mode
camp, and a real price. - Registration → guardian/adult → agreement → real checkout → verified webhook → confirmation →
enrollment → cohort → activation → classroom → real Lab work, proven end to end in
infra/scripts/drills/test-phase9-winter-camp-commerce.js(13/13 passing, test payment provider, no live money) — plus failed-payment retry, abandoned-checkout seat release, and a last-seat checkout race, none of which existed in Phase 8's own rehearsal.
Still genuinely unknown, deliberately left editable, never invented by this phase:
- Exact dates, venue, real capacity, and price (the price FIELD is real and editable; the actual dollar amount to charge is still Chase's call).
- The actual agreement text (a plain-language placeholder only — see
docs/ STUDENT_GUARDIAN_DATA_MODEL.md's legal-review list). - Whether registration opens before or after a specific marketing push.
- Real Stripe credentials — until they exist, the platform runs on the deterministic test
provider, functionally complete but not yet validated against Stripe's own live systems. See
docs/STRIPE_INTEGRATION_RUNBOOK.md.
The operational sequence
- Create the location —
/admin→ Offerings → (via the offering create form's location dropdown) or directly if a location admin surface is added later; today, an admin/owner usesPOST /api/admin/locations(documented indocs/OFFERING_ADMIN_GUIDE.md) once the real venue is known. - Create the curriculum package —
winter-linux-systems-v1, referencingroot-01-computing-linux-foundationsandroot-02-linux-administration-networkingin sequence. This step is a one-time setup — the same package can back every future Winter Break Camp offering. - Create the cohort and the offering — delivery mode
camp, referencing the program, the curriculum package, and (once known) the location and capacity. - Assign the lead instructor — both at the offering level (
instructor_offerings, Phase 7) and the cohort level (cohort_instructors, unchanged since Phase 2A) — the offering detail page's own instructor step, or the two admin routes directly. - Set the price —
PATCH /api/admin/offerings/:idwithprice_amount/price_currency(or leaveprice_amountunset for a free offering). ConfirmPAYMENT_PROVIDERis configured (testfor rehearsal,stripewith real credentials for a live launch — seedocs/ STRIPE_INTEGRATION_RUNBOOK.md). - Configure the required agreement(s) — create the agreement definition (title + plain- language summary) and link it to the offering. The actual legal text still needs professional review before this camp is opened to real families — see below.
- Check launch readiness — the offering detail page's readiness panel should show every
check green before publishing, including the new
priceandpayment_providerchecks. If instructor/curriculum/agreements/price are configured but dates/location/capacity aren't final yet, readiness will honestly show that. - Publish, then open registration —
draft → published → enrollment_open. Only onceenrollment_opendoes the offering appear in the public offerings API and accept real registrations. - Registrations arrive — via the website integration (contract ready, see
docs/WEBSITE_REGISTRATION_AND_CHECKOUT.md) or entered directly by an admin for a phone/ in-person sign-up. - Guardian/adult completes the agreement, then checkout — the agreement acceptance and checkout-creation endpoints are both live (Phase 9); checkout is blocked until the agreement is accepted.
- Payment confirmation — a verified, idempotent webhook (never a browser redirect) is what
actually confirms payment and walks the registration to
confirmed. A failed payment leaves the registration retriable without releasing the seat; an abandoned checkout or an expired, unpaid reservation releases it. - Convert to enrollment — happens automatically on payment confirmation for a priced offering (or a manual admin transition for a free one) — creates the real student account (or matches an existing one), the real academic enrollment, and real cohort membership.
- Account activation — the student's (or, for a minor, the guardian's) real one-time activation token, delivered the same way every other RootNode activation email already is.
- Classroom day — Prepare Labs for the cohort, start the classroom session, students join and work through real ROOT 01-02 content and Labs.
- Offering completion —
in_progress → completedonce the camp concludes.
Known blockers before this can actually open to the public
- Real dates, venue, capacity, and the actual dollar price are not yet decided (this document does not invent them — the platform fields to hold them are real and ready).
- The agreement text requires professional legal review (see
docs/ STUDENT_GUARDIAN_DATA_MODEL.md). - Real Stripe credentials do not exist yet — the commerce pipeline is built and tested against
the deterministic test provider only; see
docs/STRIPE_INTEGRATION_RUNBOOK.mdfor going live. - The website's own registration/checkout UI is now built (rootnodeacademy.com, a separate
repository not owned by this one) against
docs/WEBSITE_REGISTRATION_AND_CHECKOUT.md's contract — but it has nothing to talk to yet, sinceROOTNODE_API_URL/ROOTNODE_INTEGRATION_KEYpoint at no real Platform API (none is deployed — seedocs/ PHASE10_PRODUCTION_DEPLOYMENT.md). Its own real pricing (docs/ ROOTNODE_PRICING_AND_OFFERS_V1.md) has already been published on the live site. - See
docs/WINTER_BREAK_LAUNCH_CHECKLIST.mdfor the full go/no-go list.