Case study N° 01 · Sports
Quick Plays
An offline-first play designer and playbook app for basketball and football coaches.
- Works offline
- 100%
- Every edit lands in IndexedDB first; Supabase sync runs when a coach is signed in.
- One designer
- 2sports
- Courts and fields share the same timeline, playbooks and rosters.
- To export MP4
- 0servers
- ffmpeg.wasm encodes plays in the browser, so there is no render farm to pay for.

The problem
Coaches draw plays on whiteboards and paper, then hope players remember them. Existing play-design tools are expensive, desktop-only, or tell the coach nothing about whether anyone actually studied the material.
What I built
A tablet-first web app where a coach designs animated plays on a court or field, organizes them into playbooks, manages rosters, plans practices, and shares plays with players. The app then shows who watched, who took the quiz, and who passed.
- Play designer with players, cuts, screens, passes and dribbles on a step-by-step timeline. Plays can be scrubbed and replayed.
- Playbooks, rosters, practice plans, call sheets, scouting and a player view.
- Share links with pre-generated preview images, plus a film-study tracker for players.
- Export plays as MP4 right in the browser using ffmpeg.wasm. No server render farm.
The hard part
Offline first, synced when signed in. Everything is written to IndexedDB (Dexie) first, so the app works in a gym with no Wi-Fi. When a coach is signed in, changes sync to Supabase Postgres with row-level security, and realtime subscriptions keep their devices in step. Undo and redo across the whole designer come from a Zustand store with temporal history (zundo).
Engineering
- Strict TypeScript, CI on every push (lint, typecheck, unit tests in Vitest, end-to-end tests in Playwright), error monitoring in Sentry, product analytics in PostHog.
- Static export to Cloudflare Pages with Git-connected deploys. Supabase migrations are versioned in the repo.
- Stripe billing for paid tiers.
Result
Live at quickplays.app, with a demo mode for both sports. An App Store release is planned.
Figures

Methods
- Stack
- Next.js 14, TypeScript, Tailwind, Zustand, Dexie / IndexedDB, Supabase, Stripe, ffmpeg.wasm, Cloudflare Pages, Playwright, Vitest.
- Tests
- Vitest unit tests and Playwright end-to-end, in CI on every push.
- Status
- Live since May 2026. Coaches, on the sideline tablet.