What in the passport system is real coach content vs. what I wrote as a stand-in. The families' passports, coach sheets and rubric doc carry no draft labels — this page is the only place that tracking lives.
| Sport / coach | Status | Detail |
|---|---|---|
| Ultimate Frisbee Jeff Bussel | Coach content | All five skills (Good Spirit, Dump, IO, OI, Break the Mark) and their level wording came from Jeff's reply verbatim. Only the 14-week ordering is mine. |
| Dance Nicolette Ehrke | Coach content | All five skills and level wording from Nicolette's reply. Daily session shape (10/20/20) and class-size preference are hers. The 14-week build-to-performance plan is mine, built on her shape. |
| Soccer David Alfreds | Mixed | Dribbling is David's confirmed rubric. Passing, First Touch, Shooting, Defending, Field Vision are mine — standard youth-soccer progressions written in his format. 14-week plan is mine. |
| Volleyball Amanda Matos | All mine | Amanda has not replied. All six skills (Bump, Serve, Set, Blocking, Attacking, Court Awareness & Rotation), their level wording, field codes and the 14-week plan are mine. |
| Character & behavior cross-sport | Mine | Grit, Focus, Teamwork, Effort — written to match David's progression-chart language. Never coach-authored; used by every sport. |
| Yoga Club | Sample only | Fictional sport used to demonstrate the sheet layout. No coach, not enrolled, not in Supabase as a real offering. |
| Item | Status | Detail |
|---|---|---|
| Badge names | From David | Turf Tactician, Bounce Back, True North, Kindness Captain, Field Ready, Passport Pro and the personal-best names came from David's progression chart. |
| Badge artwork | Mine | Vector icons drawn in the program palette (deep green / gold). No artwork was supplied. If the embroidered patches use different art, the digital badges should be redrawn to match the physical ones. |
| Unlock requirements | Mine | Requirement text (e.g. "5 clean wall-passes in a row") is illustrative and needs a coach pass before it drives real awards. |
| Item | Status | Detail |
|---|---|---|
| Program name / domain | Decided, not bought | Public-facing: CKC Athletics. Umbrella / back end: Wildlight Education Group. Domain ckcathletics.com is the chosen name and is already written into the passport link text and the notification message — but it has not been purchased. Someone must register it (Namecheap, Cloudflare, etc.) and point it at Netlify. Buy it under a company account if Wildlight should own it long-term; the registrar account is separate from Netlify access. |
| Season dates | Set | Fall 2026: every Tuesday and Thursday from Thu Sept 10 through Thu Dec 17, both Thanksgiving-week days skipped — 27 sessions across 14 program weeks, pre-loaded in Supabase and in Elsa's date dropdown. |
| Placement / capacity | Rule set, needs the surveys | Placement runs from each athlete's survey ranking, filling rosters in preference order against a floor of 5 and a ceiling of 15 per sport. Admin reviews before it's final. Waiting on the trial surveys actually being filled in. |
| Coach login | Half-built | SQL for per-coach PINs (name + code, e.g. AMANDA1) is written and ready to run; the entry screens still use the shared passcode until it's switched over. The portals in steps 11–13 sit behind these PINs. |
| Personal-best metrics | Set | Four fitness metrics, collected in weeks 1–2 and repeatable all season: sprint (lower is better), push-ups in 1 minute, plank hold, squats in 1 minute. They drive Elsa's Fitness column, the kid-view personal bests, and the parent view's “Measured this week.” |
| Coach data entry | Decided | Coaches never type into the system. They mark the paper matrix sheet; Elsa enters it. The coach portal is read-only reference — rubric plus their own athletes' current standing. |
| Family text notification | Half-built | Queue table + trigger function written. Sending needs an SMS provider — Twilio (or MessageBird, Vonage, Amazon SNS) is a service that sends texts from software: you rent a phone number and the app hands each message to their API. Cost for this program: about $1.15/month for the number plus under a cent per text — roughly 700 texts a season (26 families × 2 sessions × 14 weeks) is $6–8 total, and Twilio's ~$15 new-account credit would cover the first season. Free alternatives: email instead of text, or Elsa keeps texting manually. |
| Athletes & guardians | Real data | All 26 enrolled kids, ages, guardian names, emails and phone numbers are real and loaded in Supabase. |
| Demo athlete | Fictional | Rizzo Alfreds' history, personal bests and journal entries are invented for the prototype. Not a real record. |
Ordered so nothing waits on something later in the list. Steps 1–11 are what a placeholder-free passport and a real launch need; steps 12–16 are the back-end portals and the log — needed for staff to run the season without opening Supabase directly, but not blocking the families' launch.
| Step | Where | What it unblocks |
|---|---|---|
| 1 · Run SQL steps 10–12 | Supabase | Volleyball's six skills, per-coach PIN login, and the notification queue. |
| 2 · Run SQL steps 13–17 | Supabase | The rest of the content and plumbing: 13 all four sports' skills, rubric wording and 14-week outlines (this is what fixes Elsa seeing Soccer only); 14 the Fall 2026 calendar and Explorer/Builder/Master groups; 15 legacy code cleanup plus the four fitness metrics; 16 roster placement; 17 the demo-athlete flag. Run them in order — skipping any leaves a screen half-populated. |
| 3 · Seed the badge table | Supabase | All 26 badges exist as art but not as data. Needs one row per badge: name, skill code, and the level→metal rule (L1 bronze, L2 silver, L3 gold) so badges award themselves from session levels. |
| 4 · Capture the week-1 fitness baseline | Coaches + Elsa | The four metrics are decided and seeded (SQL step 15). What's left is running them with every athlete in weeks 1–2 so each child has a starting number — without it the first personal best has nothing to beat. Worth a quick confirm with David that sprint distance and the 1-minute counts match how he'll actually test. |
| 5 · Retire the demo athlete | Supabase | SQL is written (step 17): flags Rizzo Alfreds as demo and adds a view and roster function that exclude it. Careful — Rizzo Bacigalupo is a real student; the filter is on the slug, never the name. |
| 6 · Switch Elsa's screens to PIN login | Entry screens | Replaces the shared passcode with real per-coach accounts. Depends on step 1. |
| 7 · Point the passport at live data only | Passport app | Badge vault, personal bests, skill web, growth bars and journal all read from Supabase instead of sample content. Depends on steps 2–5. |
| 8 · Run one real session end-to-end | Elsa + a coach | Paper sheet → batch entry → publish → open two passports → confirm a level, a badge and a personal best all appear. |
| 9 · Buy ckcathletics.com, point at Netlify | Ops | Every link we hand families uses this domain. Do it before the links go out. |
| 10 · Twilio account + number | Ops | Turns the notification queue into real texts. ~$1.15/month plus pennies per message. |
| 11 · Text the family links | Ops | All 26 links and PINs are generated and waiting. This is launch — recommended for the start of week 3, once fitness and sign-ups are in. |
| 12 · Coach portal | New build | One screen per coach behind their PIN: their sport's rubric for reference, plus their own athletes — current level per skill, character levels, badges earned, fitness numbers. Read-only; coaches don't type. The piece four people would open every session, and the only one that doesn't exist in any form yet. |
| 13 · Elsa portal | Shell around existing screens | Daily session entry, survey entry, and the roster & link generator as tabs behind one link, so there's nothing to bookmark separately and no chance of opening the wrong screen mid-session. All three screens already exist. |
| 14 · Admin portal | New build | Everything the other two have, plus placement review, the response log, and a passport viewer — a picker of all 26 names that opens any passport read-only, so admin can see exactly what a family sees without their link. |
| 15 · Response log | Supabase + admin view | Every write is already a permanent row (sessions, session_entries, both survey tables), so nothing is lost — what's missing is a readable log: “Elsa published Soccer, Explorer group, Oct 13 — 12 athletes, 9 levels, 2 badges.” Needs a small log table, a trigger on publish, and a Log tab. |
| 16 · Re-upload to Netlify | Ops | Page changes need a fresh upload; database changes do not. The badge vault, the fitness personal bests and every portal above are files, so they go up together once they're built. SQL steps take effect the moment they're run. |
Groups are by level, never by age. Each athlete's group comes from their own recorded levels: recompute_level_groups() averages their skill levels per sport and files them as Explorer, Builder or Master. Run it after publishing sessions and the next sheet prints them in the right group.
set_manually = true) and the recompute leaves that override alone — useful when a kid is technically L2 but you want them practicing with the L3 group.From the end-of-trial survey. Each athlete ranks the sports they tried; placement walks the rankings in order and fills rosters against two hard limits — at least 5 and no more than 15 per sport.
Both forms live on the athlete's own passport screen, opened with their personal link — there is no separate site or login to visit. Submitting writes straight to Supabase, not to the passport display:
trial_preference_surveys (one row per sport: preference rank + baseline enjoyment). This is what placement reads.rotation_reflection_surveys (confidence, enjoyment, coach feedback, program feedback, and now the athlete's re-ranking of what they want next).The answers are not shown back to families on the passport. Confidence and enjoyment feed the Growth Journal trend; coach feedback is visible to David and Elsa only. Nothing a kid writes about a coach appears on a family-facing screen.
Still to wire: the submit buttons only save when the page is opened with a real athlete link. Without one they show a preview of the row instead — fine for review, but the link path has to be how families actually receive the surveys.
Can surveys be passed around digitally at the end of the two week? That will make the grouping easier but can be a print out.
| When | What's collected | Why in this order |
|---|---|---|
| Weeks 1–2 (the rotation) | Fitness baseline | All four fitness metrics — sprint, push-ups in 1 min, plank hold, squats in 1 min — are captured for every athlete in the first two weeks, before any sport-specific skill work is logged. That gives each child a starting number to beat, so personal bests are real comparisons instead of first-ever entries. |
| End of week 2 | Sport sign-up | Kids rank the sports they tried. Placement runs from these rankings against the 5-minimum / 15-maximum limits. |
| Week 3 onward | Sport-specific skills | Once rosters are set, coaches start logging that sport's skill levels and character levels on their group sheet. |
| End of each rotation | Reflection + re-rank | Confidence and enjoyment, plus “what would you like to try next” — the re-ranking doubles as the sign-up baseline for the following rotation. |
Recommendation: send family links after the fitness baseline and sport sign-ups are in — start of week 3. A passport opened before then is nearly empty: no levels, no personal bests, no badges, and no sport assigned yet, which reads as a broken app rather than a new one. By week 3 every child has four fitness numbers, a sport, a group, and at least one session logged — so the first thing a family sees is a passport with something in it.
Practical order: run one test session end-to-end first (one coach, one sheet, two passports checked), then text the 26 links the same week. Everything after that is incremental — each session just adds to what families already have open.