/ home  ›  apps  ›  the protocol family
PlayProtocol app icon

PlayProtocol & the Protocol family

Five branded apps on one backend, built with Cape Concierge Physical Therapy — four for sports injury prevention, one for exercise at home. Warm-up, strength, and recovery drills filmed rep by rep by physical therapists — native SwiftUI and Jetpack Compose clients, signed video delivery, server-verified entitlements on both stores.

Drills a coach can actually run.

PlayProtocol grew out of the injury-prevention movement screenings that Cape Concierge Physical Therapy runs for school sports programs. The screenings kept surfacing the same gap: coaches wanted the warm-up, strength, and recovery work the PTs prescribed, in a form a team could actually follow — not a PDF, not a YouTube playlist. So we built it as a product: over 75 drills, every one filmed rep by rep by physical therapists, organized by sport across soccer, football, field hockey, and lacrosse.

The trust model is deliberate: every sport opens with free warm-up drills a coach can run at the next practice — no account, no sign-up, nothing collected. Programs that enroll with the PT team get their teams' prescribed drill protocols and daily check-ins layered on top.

LAXProtocol was the first sibling: its own brand, its own content line, a full season of lacrosse-specific work — running on the same backend, the same content pipeline, and the same client codebases. Both ship on the App Store and Google Play.

SoccerProtocol and HoopsProtocol followed the same road — soccer's agility and first-touch work, basketball's landing mechanics and form shooting — each with its own home screen, its own vocabulary and a habit built for the player alone. Both ship on the App Store and Google Play.

HomeProtocol points the same system at a different reader entirely: not a coach or a squad but the patient at home. Everyday warm-ups for the walk, the golf round and the pickleball match, and — when a physical therapist hands one over — the patient's own plan, loaded by a single code into the same player. Free, with nothing for sale, on the App Store and Google Play. Five store identities, one system.

Five apps, one clinical program.

Each app is its own store identity with its own home screen, vocabulary and content line — forked at the symbol level, not re-skinned — on one backend and one content pipeline. What each one is for:

PlayProtocol

iOS · Android

The original. Warm-up, strength and recovery drills across soccer, football, field hockey and lacrosse; free warm-ups in every sport, and enrolled programs' prescribed protocols and daily check-ins layered on top.

LAXProtocol

iOS · Android

Lacrosse, under its own brand. Most lacrosse injuries never involve contact; this is the warm-up, speed and strength work that lowers that risk, with free drills in every part of the program and printable handouts, and no account anywhere.

SoccerProtocol

iOS · Android

Home is laid out the way a match unfolds, Pre-Match through Full Time. The habit for a player alone is a timed nine-station wall routine and a juggling ladder — counted, not clocked. Touchline calculators for sweat rate, single-leg hop symmetry, workload spikes and heat index; handouts a coach can text to a parent.

HoopsProtocol

iOS · Android

Home is a coach's half-court diagram, each section anchored where its work happens. Landing is taught as a skill, and form shooting keeps score: nine timed stations from Mikans to free throws, two thumb-sized make and miss buttons, and a shot chart drawn on the floor the session happened on.

HomeProtocol

iOS · Android

The patient at home. Warm-ups for walking, golf, pickleball and the garden, a ten-minute morning routine, and timed balance practice logged as plain seconds. A physical therapist's plan arrives as one eight-character code and runs in the same big-type player. Free, nothing for sale, no account.

What it does.

🎬

Filmed Rep by Rep

Every drill is demonstrated on video by a physical therapist — full reps, correct form, no stock footage. The video library is the product.

🏃

Free Warm-Ups, No Account

Each sport opens with free warm-up drills, usable immediately. No sign-up, no email capture — a coach can evaluate the whole idea at practice tomorrow.

📋

Prescribed Protocols

Enrolled programs see the drill protocols their PT team actually prescribed for their teams — the app is the delivery channel for real clinical programming.

✅

Daily Check-Ins

Teams log completion daily, so the PTs running the program can see adherence instead of guessing at it.

🥍

Five Brands, One System

PlayProtocol covers four sports; LAXProtocol, SoccerProtocol and HoopsProtocol each go deep on one, and HomeProtocol turns to the patient at home — each under its own store identity. Same backend, same pipeline — separate content, chrome and vocabulary.

🔐

Honest Paywall

Pro content is withheld at the server, not hidden in the client — entitlements are verified against Apple and Google receipt APIs before a single locked byte is signed for delivery.

How it's built.

Ten native clients across five apps collapse into one Go backend, one SQLite database, and one content pipeline. Each client is native: SwiftUI on iOS, Kotlin / Jetpack Compose on Android, sharing the same API. Drill video lives in S3-compatible object storage and is served through time-limited signed URLs, minted only after the server has decided what that caller is entitled to see.

The paywall decision is made once, server-side, per catalog request: the client sends its store receipt, the server verifies it against Apple's and Google's APIs, and locked content is simply absent from the response — no signed URL is ever minted for a tier the caller hasn't bought. A client bug can't leak what the client never received.

Tech.

iOS Clients

  • SwiftUI, native throughout
  • StoreKit in-app purchase
  • Projects generated with xcodegen
  • TestFlight internal + external beta lanes

Android Clients

  • Kotlin / Jetpack Compose, Material 3
  • Play Billing with server verification
  • Signed AAB releases across four Play tracks

Backend

  • Go with chi routing + per-route rate limits
  • Embedded SQLite (pure-Go driver, no CGO)
  • JWT auth on the shared platform core
  • S3-compatible blob store, signed-URL delivery

Shipping Discipline

  • Release gates that inspect the built artifact — the signed bundle's own manifest and bytes — not the intent
  • Store copy checked against the served catalog, so marketing claims can't drift from the product
  • Static marketing site with per-deploy live verification

The parts worth writing down.

Entitlements are a server fact, not a client flag

Both stores' purchases funnel into one server-side entitlement check — Apple receipts and Play purchase tokens verified against the vendors' APIs, then the catalog response is built from what the caller is entitled to. The client renders what it's given; it never decides.

StoreKit Play Billing Server-side verification

One pipeline, five brands

Drill content is ingested, tiered, and served by a single pipeline keyed per app and per sport. Launching LAXProtocol was a content and branding exercise, not a second codebase; SoccerProtocol and HoopsProtocol proved the marginal cost of the next branded vertical really is close to zero.

A plan code is the whole identity

HomeProtocol has no accounts, so the eight-character code a physical therapist hands over is the credential, and it is treated like one: minted from a 32-symbol alphabet with no 0, O, 1 or I — patients read it off paper and type it on a phone — stored only as a hash, redeemed behind a rate limit, and answered with the same 404 whether it is wrong, retired or another practice's, so the endpoint can't be used to learn which codes exist. A per-install cap stops one code being passed around endlessly, and it is enforced with a random install id rather than anything that says who the patient is. Without a code, nothing leaves the phone at all.

Code as credential Hash-only storage Uniform 404 No accounts

Divergence is a gate, not a hope

Four sport apps from one codebase is exactly the setup that decays into one app in four wrappers. So each app is forked at the symbol level — its own vocabulary, its own home screen, its own section chrome — and a check refuses any verbatim chrome shared between two apps, with a control that must stay green on the drill library the family legitimately shares. The shared part is the clinical content; everything a player sees is the app's own. HomeProtocol, built on a chassis of its own, is measured against all four and held to the tighter bar.

Symbol-level forks Divergence gate Shared library, distinct chrome

Verify the artifact, not the commit

The release lane extracts the actual signed bundle and asserts what's in it — the billing permission in the merged manifest, the corrected copy in the compiled bytes — before anything is promoted. A green build proves the repo; only the artifact proves the release.

Artifact-level gates Four Play tracks TestFlight beta lanes

Truth-checked marketing

The marketing site's claims — drill counts, what's free, what's enrolled-only — are checked against the live catalog as part of deploy. If the product changes, the copy fails the gate until it's true again.