A workout tracker you can fork in 30 minutes.
Next.js App Router, Supabase auth with row-level security, and 2,000+ annotated exercises from exerciseapi.dev. Production-grade defaults, ready to ship.
See it in action
A sample of the video-backed exercises in the catalog. Hover to preview, click to see the full detail page.
18 Inch Deadlift
erector spinae·barbell
Click to view →
Accommodating Resistance Deadlift
biceps femoris·barbell
Click to view →
Alternate Hammer Curl
biceps brachii short head·dumbbell
Click to view →
Alternate Incline Dumbbell Curl
biceps brachii short head·dumbbell
Click to view →
Alternating Deltoid Raise
deltoid anterior·dumbbell
Click to view →
Anti-Gravity Press
deltoid anterior·barbell
Click to view →
Arnold Dumbbell Press
deltoid anterior·dumbbell
Click to view →
Atlas Stones
erector spinae·other
Click to view →
2,000+ exercises
Annotated catalog across 12 categories. Primary and secondary muscles, equipment, level, force, mechanic.
Videos + instructions
Every exercise ships with demo video, step-by-step instructions, tips, common mistakes, and safety info.
Supabase auth + RLS
Magic-link sign in, server-side sessions, row-level security. Users can only ever see their own data.
MCP-ready
API key reads from a standard env var. Drop the MCP server into Claude or Cursor and let the agent wire up exercises.
Schema you can actually read.
Four tables. Row-level security enabled on all of them. Every foreign key cascades on delete. No ORM, just SQL you own.
exercise_id is a string pointing at an exerciseapi.dev id — no local exercise table required.
auth.users (Supabase)
|
+-- profiles (id, name, user_exercise_api_key)
|
+-- workouts (date, name, status, notes, rating, timestamps)
|
+-- workout_exercises (exercise_id, exercise_name, muscle, equipment, order)
|
+-- exercise_sets (set_number, weight, weight_unit, reps, is_completed)Ready to ship your workout app?
Clone the repo, drop in your exerciseapi.dev key and Supabase credentials, and you're live. MIT licensed.