A comprehensive web-based fitness tracking application designed for a 6-day workout split program. Track your daily workouts, monitor progress, and stay motivated with detailed analytics and customizable workout selection.
- 6-Day Split Program: Pre-configured workout schedule covering Chest & Triceps, Back & Biceps, and Shoulders & Legs
- Flexible Workout Selection: Choose any workout on any day to fit your schedule
- Detailed Exercise Lists: Complete exercise breakdown with sets and reps for each workout
- Rest Day Support: Dedicated rest day tracking
- Workout History: Complete log of all completed and skipped workouts
- Analytics Dashboard: Visual progress tracking with charts and statistics
- Completion Rate: Track your consistency with percentage-based metrics
- Muscle Group Analysis: See which muscle groups you've trained most frequently
- Daily Motivation: Inspirational sticky note with motivational content
- Intuitive Interface: Clean, responsive design with easy navigation
- Real-time Updates: Instant feedback on workout completion
- Visual Progress: Color-coded workout history and progress indicators
- Frontend: React 18 with TypeScript
- UI Framework: Tailwind CSS with shadcn/ui components
- Database: Supabase (PostgreSQL)
- Charts: Recharts for data visualization
- Icons: Lucide React
- Build Tool: Vite
- State Management: React Hooks with Tanstack Query
Each workout day includes:
- Warm-up Routine: 12 essential warm-up exercises
- Main Workout: Targeted muscle group exercises with progressive rep schemes (15, 12, 10, 8)
- Core Training: 6 dedicated abs/core exercises
- Monday & Thursday: Chest & Triceps
- Tuesday & Friday: Back & Biceps
- Wednesday & Saturday: Shoulders & Legs
- Sunday: Rest Day
- Node.js (v16 or higher)
- npm or yarn package manager
- Clone the repository:
git clone <repository-url>
cd fitness-tracker- Install dependencies:
npm install- Set up environment variables:
Create a
.envfile in the root directory and add your Supabase credentials:
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key- Start the development server:
npm run dev- Open your browser and navigate to
http://localhost:5173
The application uses a single table structure:
id: Primary key (auto-generated)date: Workout date (unique)day: Day of the weekmuscle_groups: Array of targeted muscle groupsexercises: Array of exercise namescompleted: Boolean flag for completion statuscreated_at: Timestamp
- TodaysWorkout: Displays the current day's scheduled workout
- WorkoutSelector: Allows custom workout selection
- WorkoutHistory: Shows historical workout data
- WorkoutAnalytics: Provides statistical insights and charts
- MotivationalNote: Daily motivation with inspirational content
- Total workouts completed
- Total workouts missed
- Overall completion percentage
- Muscle group training frequency chart
- Progress tracking over time
- Follow the scheduled 6-day split
- Choose any workout for any day
- Mark workouts as complete or skipped
- Rest day acknowledgment
- Daily Workout: Check today's scheduled workout on the main dashboard
- Custom Selection: Use the workout selector to choose any workout
- Track Progress: Mark workouts as complete or skipped
- View History: Check your workout history in the History tab
- Analyze Progress: Review your statistics in the Analytics tab
The workout programs can be easily customized by modifying the src/data/workouts.ts file. You can:
- Add new exercises
- Modify rep schemes
- Change muscle group combinations
- Adjust workout structure
The application is fully responsive and works seamlessly across:
- Desktop computers
- Tablets
- Mobile phones
The application can be deployed to any static hosting service like:
- Vercel
- Netlify
- GitHub Pages
- Firebase Hosting
Build the project for production:
npm run buildThe built files will be in the dist directory.
Feel free to contribute to this project by:
- Reporting bugs
- Suggesting new features
- Submitting pull requests
- Improving documentation
This project is open source and available under the MIT License.
Happy Training! 💪