Setpoint Academy proposal · Earlier todayAll deliverables · Scope · Mockups

Pad Thai Padel Academy — product plan

Written 16 September 2026. Companion files in this folder: SETPOINT-AUDIT-2026-09-16.md (30-row feature audit of Setpoint's Academy module, with file paths) and PHASE-1-SPEC.md (the build spec for the next prompt).

1. The straight answer on "forking"

Dashboll, PadeLock and CourtSync are closed SaaS products. None publishes source code, a public API, or a repository. There is nothing to fork. What can be forked is their feature set, which is documented below, and what can be extended is the codebase you already own.

Reference What it is Modules Pricing
Dashboll (dashboll.com) Spanish academy platform, white-label iOS/Android app Agenda (classes, courts, coaches, drag to reschedule) · Payments (Stripe, SEPA, wallet, recurring) · CRM with AI (leads from Instagram/web/WhatsApp) · 1:1 and group messages with push · Player evolution (technical profile, attendance, ranking) Academy €89 (100 players, 1 head coach) · PLUS €129 (200 players) · PRO €189 (300 players, branded app) · MAX €399 (unlimited) · CUSTOM. All shown at −50% for 3 months
PadeLock (padelock.com) Spanish academy web app, ~30 academies Digital attendance · coach schedules · waitlist with automatic substitution · automatic level assignment · makeups · payment and rate control · WhatsApp + email notifications · multi-club · reports Not published (demo-led)
CourtSync (courtsync.io) Racquet-sport academy platform (tennis first, padel supported) Terms, camps, private-lesson packages · calendar with templates · waitlist with timed claim · makeup credits with compatibility rules · Stripe Connect payouts · guardian and student accounts · public academy page · SMS on higher tiers · Xero/QuickBooks Starter $23 (100 students) · Professional $79 (unlimited, Stripe, 300 SMS) · Enterprise $199, billed annually

Open-source candidates checked on GitHub:

Repo Fit Blocker
adamsherif123/ThePadelAcademyy Padel academy, Supabase + Expo + Vite, strong backend tests, pushed 13 Sep 2026 No licence (all rights reserved by default), apps still run on mock data, Cairo timezone baked in. Cannot be forked legally without the author's permission
debueb/pro-padel German padel club software, Java/Spring No licence, last push June 2022, court booking not academy
tkrebs/ep3-bs MIT, 215 stars, PHP Court booking only, no academy concepts

2. What you already own

Setpoint (superstack-digital/setpoint, Next.js + Supabase, production live for Pad Thai Padel) has an Academy module. Audited against the 30 features the three references sell:

Full evidence per row: SETPOINT-AUDIT-2026-09-16.md.

3. Recommendation

Fork base = Setpoint's Academy module. It already covers 24 of 30 reference features, it is multi-tenant (so it is the sellable product, not a one-club tool), and every alternative either cannot be forked or duplicates it.

Option B, standalone app: only if you want a product that is yours independently of Setpoint's roadmap and Nestor's review. Cost: rebuilding ~24 features that exist (6 to 10 weeks of agent work), a second database of the same students, and the "fourth tool" you said you did not want. Not recommended unless the answer to the question at the end is "separate business".

Not rebuilt, ever: WhatsApp reminder queue (exists, academy-payments-reminder-panel.tsx, wa.me manual lane with sent_manual status), POS bridge, CRM, reports, check-in, coach feedback.

Cut as Dashboll envy at 60 students: AI CRM, push notification app, SEPA, white-label app, drag-and-drop planning.

Honest scope statement: the whole thing cannot be built in one prompt with no failure. Eight modules in a live production repo with mandatory Playwright, docs-sync and CTO review breaks on scope, not on skill. The plan is four prompts, one PR each, read-only first, each fully specified before it runs. Phase 1 is specified now.

4. The build, four steps

Step Name What it adds Data changes Gate before it starts Effort
1 Academy Health (next prompt) Read-only page: Training without paying · Payments to verify · Next 1st worklist with PROPOSED bridge amounts and PRORATE tier. CSV export per tab. None (no migration, no view) Nestor has seen this plan about 8 h agent + review (13 build steps)
2 Makeups + waitlist lesson_waitlist with timed claim on cancellation; makeup credit as a ledger reason on package_session_transactions, facility-flagged, default OFF 2 migrations Step 1 merged; makeup rule decided 4–6 h + review
3 Proration in billing process-package-billing computes the bridge for mid-cycle starts, writes it on the payment_request, labelled with the PRORATE tier; behind academy_payment_settings flag 1 migration + edge function One real cycle (1 Oct) validated against Step 1's proposed amounts 4–6 h + review
4 Player progress me/progress route exposing reviewed coach feedback; level history table; academy progress page in apps/web 1 migration Jose confirms what players may see 4–6 h + review

Later, separately decided: WhatsApp Cloud API (needs a Meta business account, a sending number, approved templates; the free 24h reply window ends 1 Oct 2026), a lead entity in the CRM fed by the website Sheet, player self-cancellation for lessons.

Step 1 in detail

See PHASE-1-SPEC.md. Summary: one GET route api/admin/academy-health, one page [facility]/academy/health with three tabs and summary tiles, owner/admin/manager only, no writes, no migration, one Playwright spec seeding each flagged case and asserting rendered rows, docs-sync entries, PR with demo GIF.

Rules encoded in Step 1:

5. Rules for every PR

6. Before the next prompt

  1. colima status shows running; supabase --version ≥ 2.116. Supabase takes ports 54321–54327 and only one local stack (setpoint, openrally or padel-backend) can run at a time; Setpoint admin is port 3000.
  2. cd ~/cowork/setpoint && git status clean on main; git fetch origin main.
  3. supabase start succeeds; select count(*) from pg_tables where schemaname='public' > 100.
  4. gh auth status shows the account you want on the PR.
  5. Nestor has the link to this plan.

Prompt to paste:

Build Step 1 "Academy Health" in ~/cowork/setpoint exactly as specified in
~/Desktop/cowork/ptp-academy-product/PHASE-1-SPEC.md. Read that file and
SETPOINT-AUDIT-2026-09-16.md first. Pre-flight: colima + supabase start,
git fetch/merge origin/main, branch feature/academy-health. No migrations,
no writes, no prod contact. Run the Playwright spec in the foreground,
do the docs-sync checklist, self-review the full diff, open the PR with a
demo GIF, and report the PR link and the test output.

7. Risks and defaults

Risk Mitigation
PR lands unasked on the CTO's repo Proposal first; read-only Step 1; one PR; demo attached
Wrong bridge amount reaches a student Step 1 proposes only; amounts checked against the 10 Sep control-panel fixture (ptp-academy-control/outputs/academy-control-data.json) before Step 3
Local Supabase reset wipes another session One session at a time; verify table count after any reset
Docs-sync stalls the session Checklist is explicit in the spec; budgeted
Student PII on public pages Nothing in this plan deploys outside Setpoint's authenticated admin
WhatsApp automation expected Not promised; wa.me manual lane stays until Meta decisions are made

Open decisions, with the default the plan assumes:

  1. Internal fix for Pad Thai Padel or a product Setpoint sells to other academies? Default: internal now, built consumer-agnostic so it is sellable later.
  2. Extend Setpoint or build standalone? Default: extend Setpoint.
  3. Makeups: on or off? Default: off (fixed slot, missed session is lost; recovery visits remain Proposed).
  4. Abby's Setpoint role? Default: manager.
  5. Which GitHub account opens the PRs? Default: the one gh auth status shows; confirm it is yours.
  6. Stripe import for reconciliation (Step 3)? Default: the control panel's restricted read-only key, never a live secret key.

Sources: dashboll.com and dashboll.com/precios; padelock.com; courtsync.io/pricing and courtsync.io/features; github.com/adamsherif123/ThePadelAcademyy; github.com/debueb/pro-padel; github.com/tkrebs/ep3-bs; ~/cowork/setpoint (audit 16 Sep 2026); ~/Desktop/cowork/ptp-academy-control/SETPOINT-PORT.md.