A fitness tracking application that gamifies your workout journey. Track workouts, set goals, and level up your fitness!
This application does NOT use any managed cloud services or auto-provisioned databases.
You MUST provide your own Supabase instance to run this application. There is no fallback or default database.
- Node.js & npm (install with nvm)
- A Supabase account and project (create at supabase.com)
git clone <YOUR_GIT_URL>
cd <YOUR_PROJECT_NAME>npm install- Go to supabase.com and create a free account
- Create a new project
- Wait for your project to be fully provisioned (this takes 1-2 minutes)
- Note your project URL and anon key from Project Settings > API
Important: The .env file is not included in this repository for security reasons. You must create it yourself.
-
Copy the example environment file:
cp .env.example .env
-
Edit
.envand replace the placeholder values with your Supabase credentials:VITE_SUPABASE_URL=https://your-project-ref.supabase.co VITE_SUPABASE_PUBLISHABLE_KEY=your-anon-key-here VITE_SUPABASE_PROJECT_ID=your-project-id-here -
NEVER commit your
.envfile to version control - it is already in.gitignore
- Open your Supabase project dashboard
- Navigate to the SQL Editor
- Run each migration file from
./supabase/migrations/in order:20260119064145_5c3fc727-e03b-4e75-80ca-d27267150d93.sql20260119065541_af69017e-df74-43bb-9634-c0e9b6d3473f.sql20260119070601_add_session_logging.sql20260119094000_rename_weight_to_weight_kg.sql
This creates all necessary tables, views, and Row Level Security (RLS) policies.
npm run devThe application will be available at http://localhost:8080
This application uses your Supabase project's authentication system:
- Email/password authentication
- Sessions stored in your Supabase instance
- Users table =
auth.usersfrom your project - All auth logic runs through your Supabase instance
There is no proxy authentication or shadow users.
The application uses the following main tables in your Supabase project:
profiles- User profiles and fitness statsworkout_sessions- Individual workout sessionssession_exercises- Exercises within sessionsexercise_sets- Sets/reps/weight data for exercisestraining_goals- User fitness goalstraining_preferences- User workout preferences
All tables have Row Level Security (RLS) enabled and are secured to the authenticated user.
- Frontend: Vite + React + TypeScript
- UI: shadcn-ui + Tailwind CSS
- Backend: Supabase (your own instance)
- Auth: Supabase Auth (from your instance)
- Database: PostgreSQL (via your Supabase project)
The app presents your real gym progress as an RPG character sheet with:
- Level & XP System - Earn XP based on workout volume and duration
- Core Stats - Strength, Endurance, Recovery, Consistency, Mobility (all calculated from real data)
- Radar Chart - Visual balance of your physical metrics
- Training Calendar - Track completed sessions and rest days
- Goals - Set and track long-term fitness objectives
- Behavior Patterns - Earn "potions" through good training habits
All stats are derived from logged workouts. No fake numbers. No manual editing.
📖 System Status User Guide
🔧 System Status Technical Documentation
- Log exercises with sets, reps, and weight
- Inline editing of all workout data
- Autosave functionality
- Session history with XP tracking
npm run dev # Start development server
npm run build # Build for production
npm run build:dev # Build in development mode
npm run lint # Run ESLint
npm run preview # Preview production buildWhen deploying to production:
- Ensure your environment variables are set in your hosting platform
- Build the application:
npm run build - Deploy the
distfolder to your hosting service - Your Supabase instance remains the backend - no additional backend deployment needed
- ✅ All data belongs to YOUR Supabase project
- ✅ You have full control over auth, database, RLS, and policies
- ✅ No third-party managed services are used
- ✅ No automatic provisioning or fallback connections
⚠️ Keep your.envfile secure and never commit it⚠️ Regularly update your Supabase RLS policies as needed
Error: "VITE_SUPABASE_URL is not configured"
- You need to set up your
.envfile with your own Supabase credentials. See Setup Instructions above.
Authentication not working
- Verify your Supabase URL and anon key are correct
- Check that you've run all database migrations
- Ensure RLS policies are enabled on your tables
Database queries failing
- Confirm all migrations have been run in your Supabase SQL editor
- Check your Supabase project logs for detailed error messages
- Verify RLS policies allow the authenticated user to access the data
For issues related to:
- Supabase setup: Check Supabase documentation
- Application bugs: Open an issue in this repository