Back

Backglass, every rally explained

A padel video app for the group I play with. It turns the match we already film into points, highlight reels and coaching.

Try the demo

Read only, no sign-up. You land on a real match.

The itch

We film every match on a phone propped behind the back glass, and nobody watches it back. I wanted to get better without a paywall or an AI analysis that makes things up.

What it does

Paste a link and it cuts the match into points. That step is motion detection, no model involved. The four players tag each point with a tap, and once enough are tagged it cuts a reel per player and writes coaching that cites real points. You can ask why on any rally.

Adding a match
Adding a match
Tagging a point
Tagging a point
Coaching that cites points
Coaching that cites points

Built properly

Real accounts with magic link and Google sign-in through Better Auth, and a tested permissions module behind every action. Rooms work like folders, one-match invites cover one-off opponents, and an admin People page decides who can add matches and sets a monthly cap per person. Next.js 16, Tailwind v4, shadcn, Drizzle, Neon Postgres and Vercel, with the analysis pipeline in Python on Modal and Gemini reading the points. PGlite runs locally, so dev needs nothing external.

Rooms
Rooms
People page
People page

How it looks

The tweakcn Realmorphism theme, adjusted until every text pairing meets WCAG AA in light and dark. Inter and JetBrains Mono. It doesn't look like this portfolio, on purpose.

Home, light
Home, light
Matches, dark
Matches, dark

How the video was made

Remotion and remocn for the edit, with Playwright driving the real app to capture the footage. Claude Code steered the build, and the match clips are real footage cut with ffmpeg. No screen recorder, no editor.

Where it lives

Built solo, on and off, over about three weeks, Aug to Sep 2026. It runs for the group I play with. There is a read-only demo you can click around, and I am happy to walk anyone through the rest. Ask me for a walkthrough. Try the demo.