All work
Web AppFitness

Submit

Quenga Designs · 2026

A training journal for everyone on the mats — log rolls, track techniques, and watch progress compound over time. (Formerly BJJ Journal.)

9
AI Coach features
105
Unit tests passing
In testing
Stage
Problem
Training progress in BJJ is slow and easy to lose track of — sessions blur together, and nothing connects what you logged last month to what you should focus on this week.
Solution
I built a full training journal on React and Supabase: session logging, a technique library, tournament and seminar tracking, trend analytics, and an AI Coach grounded entirely in the user's own logged data.
Result
Currently in testing. The successor to BJJ Journal, rebuilt with Supabase auth and a hardened test suite.

The brief

Submit is the second life of BJJ Journal, the studio's original training log. The rebuild had a sharper thesis: a journal for everyone on the mats — adults, competitors, and kids via a Parent Mode — where progress compounds because the app remembers what you did and reflects it back.

What was built

The core loop is session logging: rolls, rounds, the 7 P's, breathing, partners, and notes. Around it sits a technique library of positional concepts and steps, tournament and seminar tracking with match history, a crossover-training log, videos, photo memories, and a trends dashboard with rolling averages, streaks, and baselines.

The AI Coach layer is nine features deep: session debriefs, technique tagging, weekly focus, fatigue breakpoint detection, partner scouting, a progress narrative, kids coaching notes, Ask Your Journal, and a competition game plan. Every one is grounded in the user's own logged data and every one is optional — without an API key configured, they fail gracefully and the journal works untouched.

Supabase provides email/password auth, and Parent Mode lets one account track multiple kids.

Under the hood

Stack: React 18, Vite 6, TypeScript in strict mode, Tailwind 4, Recharts, and Supabase for auth and journal data. The AI Coach calls /api/coach, a Vercel serverless function that proxies to the Anthropic API with a server-only key — never a VITE_ variable, so it can't reach the client bundle. Privacy is structural: AI calls send only a digest built locally from logged data, never raw account data, and results cache on-device so repeat views cost nothing.

The stability phase closed a real coverage gap — 39 of 41 components originally lacked tests. The suite now stands at 105 passing unit tests across 20 test files, plus Playwright end-to-end specs and a Node-native storage test.

Where it stands

In testing. The migration from the original localStorage-only BJJ Journal to a Supabase backend is the defining move of this generation — accounts, multi-device access, and family links instead of data trapped in one browser. The roadmap ahead is phased around stability first, then mobile one-handed use, because the honest use case is logging a session right after training.