Skip to content

Repository files navigation

GymPro

A modern workout and fitness progress tracker built for lifters who want a clean, fast, and distraction-free experience. Log workouts, monitor strength progression, manage training templates, and visualize long-term performance through an intuitive interface.


Overview

GymPro is a full-stack fitness tracking application built with React, TypeScript, Vite, Tailwind CSS, and Supabase.

The application focuses on simplicity, performance, and scalability while providing everything needed to track workouts, estimate one-rep maxes, manage exercises, and analyze training progress.


Features

Workout Tracking

  • Log workouts with sets, reps, and weight
  • Automatic workout volume calculations
  • Built-in rest timer
  • Personal Record (PR) detection
  • Complete workout history

Exercise Management

  • Built-in exercise library
  • Custom exercise creation
  • Workout templates and routines
  • Search and filtering

Progress Analytics

  • Estimated One Rep Max (1RM)
  • Strength progression
  • Volume analytics
  • Interactive charts
  • Body weight tracking

Authentication

  • Email & Password authentication
  • Secure user accounts
  • Protected routes
  • Session management

Data Management

  • Cloud synchronization
  • Persistent workout history
  • CSV / JSON export
  • Backup and restore support

Tech Stack

Frontend

  • React 19
  • TypeScript
  • Vite
  • Tailwind CSS v4
  • Motion

UI

  • Base UI
  • Radix UI
  • shadcn/ui
  • Lucide React

Backend

  • Supabase
  • PostgreSQL
  • Supabase Authentication

Visualization

  • Recharts

Drag & Drop

  • dnd-kit

Project Structure

src/
├── components/
├── pages/
├── hooks/
├── lib/
├── services/
├── types/
├── utils/
└── assets/

Getting Started

Prerequisites

  • Node.js 20+
  • npm

Installation

git clone <repository-url>

cd gym-progress-tracker

npm install

Environment Variables

Create a .env file in the project root.

VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key

Development

Start the development server:

npm run dev

Build the project:

npm run build

Preview the production build:

npm run preview

Run TypeScript checks:

npm run lint

Database

GymPro uses Supabase PostgreSQL as its primary database.

Core entities include:

  • Users
  • Workouts
  • Exercises
  • Workout Templates
  • Personal Records
  • Body Measurements

Supabase provides:

  • Authentication
  • PostgreSQL Database
  • Row Level Security (RLS)
  • Real-time capabilities
  • REST and client APIs

Available Scripts

Command Description
npm run dev Start the development server
npm run build Create a production build
npm run preview Preview the production build
npm run lint Run TypeScript type checking

Design Principles

GymPro is designed around a few core ideas:

  • Minimal interface
  • Fast interactions
  • Responsive design
  • Clean data visualization
  • Long-term progress tracking
  • Scalable architecture

Future Improvements

  • AI workout recommendations
  • Progressive overload insights
  • Nutrition tracking
  • Calendar view
  • Offline support
  • Workout sharing

License

This project is licensed under the MIT License.

About

A fast, distraction-free fitness and workout tracking web app built with React, TypeScript, and Supabase. Log workouts, monitor strength progression, and analyze training data.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages