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.
Barbell Back Squat
rectus femoris·barbell
Click to view →
Barbell Bench Press - Medium Grip
pectoralis major sternal head·barbell
Click to view →
Barbell Block Pull
biceps femoris·barbell
Click to view →
Barbell Box Step Up
rectus femoris·barbell
Click to view →
Barbell Close Grip Bench Press
triceps brachii lateral head·barbell
Click to view →
Barbell Curl
biceps brachii short head·barbell
Click to view →
Barbell Deadlift
erector spinae·barbell
Click to view →
Barbell Front Squat
rectus femoris·barbell
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.