A personal training management app built with React + Vite. Manage clients, track sessions, measurements, goals, payments, and generate PDF programmes.
- Client profiles with nutrition analysis (BMR, TDEE, macros)
- Session tracking and body measurements with weight chart
- Goals, payments, and pack tracking
- PDF programme generator
- WhatsApp / SMS payment reminder
- Monthly stats dashboard
- Cloud sync via Supabase with localStorage fallback
- PWA β installable on iPhone/Android
- Password-protected single-user access
React 18 Β· Vite Β· Recharts Β· Supabase Β· Vercel
Create a project at supabase.com and run this in the SQL editor:
create table store (
key text primary key,
value text
);Copy .env.example to .env.local and fill in your values:
cp jelitraining/.env.example jelitraining/.env.local| Variable | Description |
|---|---|
VITE_SUPABASE_URL |
Your Supabase project URL |
VITE_SUPABASE_KEY |
Your Supabase publishable (anon) key |
VITE_DEFAULT_PW |
Default login password (change after first login) |
VITE_COACH_NAME |
Coach first name β shown in dashboard greeting |
VITE_COACH_FULLNAME |
Coach full name β shown in PDF footer |
VITE_COACH_INITIALS |
2-letter initials β shown in sidebar/login |
VITE_COACH_EMAIL |
Email β shown in PDF and relance message |
VITE_COACH_INSTAGRAM |
Instagram handle β shown in PDF |
VITE_COACH_CITY |
City β shown in PDF header |
VITE_COACH_TITLE |
Certification/title β shown in PDF footer |
VITE_PAYMENT_LINK |
Payment link β included in relance messages |
cd jelitraining
npm install
npm run devThe app is configured for Vercel. Add all VITE_* env vars in your Vercel project settings, then:
vercel --prodcd jelitraining
npm test