A free, minimalist progress tracker for Brazilian Jiu-Jitsu.
Log mat time, track techniques, and measure consistency. Synced across devices.
bjj.caseyjr.org — enter your email, click the magic link, start tracking. No download, no password, no setup.
On iPhone, tap Share → Add to Home Screen for a native app experience.
- Session Logging — Log session type (Gi, No-Gi, Open Mat, etc.), intensity, mat hours, techniques covered, and rolling notes in seconds.
- Technique Library — 50+ categorized BJJ techniques (guard, passing, submissions, sweeps, takedowns, escapes, back attacks, control). Pin the moves you're currently drilling to your dashboard if you wish.
- Add Custom Techniques — Add your own techniques to the library.
- Analytics — Total mat hours, monthly breakdown, weekly consistency chart, session type distribution, and most-practiced techniques.
- Cross-Device Sync — Log on your laptop, see it on your phone and vice versa. Data syncs via Supabase.
- PWA — Add to home screen on iPhone for a native app experience. Dark mode, no browser chrome.
- Magic Link Auth — No passwords. Enter your email, click the link, you're in.
Your data is yours. Each user's data is isolated at the database level with Row Level Security. No tracking, no analytics on users, no ads.
- Framework: Next.js 15 (App Router) + TypeScript
- Styling: Inline styles, Tailwind-inspired color palette
- Database: Supabase (PostgreSQL) with Row Level Security
- Auth: Supabase Magic Link (passwordless)
- Charts: Recharts
- Icons: Lucide React
- Hosting: Vercel
- PWA: Service worker + Web App Manifest with full iOS support
- Node.js 18+
- A free Supabase account
- Clone the repo
git clone https://github.com/miguelito4/bjj-tracker.git
cd bjj-tracker
npm install-
Create a Supabase project at supabase.com/dashboard and run
schema.sqlin the SQL Editor to create all tables and policies. -
Add environment variables — copy
.env.exampleto.env.localand fill in your Supabase credentials:
cp .env.example .env.localNEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
- Run it
npm run devOpen http://localhost:3000.
Deploy to Vercel in one click or via CLI:
vercelAdd your environment variables in the Vercel dashboard and update your Supabase Authentication → URL Configuration with your production URL.
See schema.sql for the full schema. Tables:
- profiles — User display name, belt rank, academy
- sessions — Session date, type, intensity, mat hours, notes, techniques covered
- pinned_techniques — Techniques pinned to a user's dashboard
All tables have Row Level Security policies ensuring users can only access their own data.
MIT License — see LICENSE for details.
Built by Mike Casey and Claude.
