- About
 - Project Origin & Motivation
 - Quick Start
 - Exercise Database Import
 - Project Architecture
 - Contributing
 - Self-hosting
 - Resources
 - License
 - Sponsor This Project
 
A comprehensive fitness coaching platform that allows create workout plans for you, track progress, and access a vast exercise database with detailed instructions and video demonstrations.
This project was born from a personal mission to revive and improve upon a previous fitness platform. As the primary contributor to the original workout.lol project, I witnessed its journey and abandonment. π₯Ή
- ποΈ Original Contributor: I was the main contributor to workout.lol
 - πΌ Business Challenges: The original project faced major hurdles with exercise video partnerships (no reliable video provider) could be established
 - π° Project Sale: Due to these partnership issues, the project was sold to another party
 - π Abandonment: The new owner quickly realized that exercise video licensing costs were prohibitively expensive, began to be sick and abandoned the entire project
 - π Revival Attempts: For the past 9 months, I've been trying to reconnect with the new stakeholder
 - π§ Radio Silence: Despite multiple (15) attempts, there has been no response
 - π New Beginning: Rather than let this valuable work disappear, I decided to create a fresh, modern implementation
 
Someone had to step up.
The opensource fitness community deserves better than broken promises and abandoned platforms.
I'm not building this for profit.
This isn't just a revival : it's an evolution. workout.cool represents everything the original project could have been, with the reliability, modern approach, and maintenance that the fitness open source community deserves.
I'm not just a developer : I'm a user who refused to let our community down.
I experienced firsthand the frustration of watching a beloved tool slowly disappear. Like many of you, I had workouts saved, progress tracked, and a routine built around the platform.
If you were part of the original workout.lol community, welcome back! If you're new here, welcome to the future of fitness platform management.
- 
Clone the repository
git clone https://github.com/Snouzy/workout-cool.git cd workout-cool - 
Choose your installation method:
 
π³ With Docker
- 
Copy environment variables
cp .env.example .env
 - 
Start everything for development:
make dev
- This will start the database in Docker, run migrations, seed the DB, and start the Next.js dev server.
 - To stop services run 
make down 
 - 
Open your browser Navigate to http://localhost:3000
 
π» Without Docker
- 
Install dependencies
pnpm install
 - 
Copy environment variables
cp .env.example .env
 - 
Set up PostgreSQL database
- If you don't already have it, install PostgreSQL locally
 - Create a database named 
workout_cool:createdb -h localhost -p 5432 -U postgres workout_cool 
 - 
Run database migrations
npx prisma migrate dev
 - 
Seed the database (optional)
 
See the - Exercise database import section
- 
Start the development server
pnpm dev
 - 
Open your browser Navigate to http://localhost:3000
 
The project includes a comprehensive exercise database. To import a sample of exercises:
- Prepare your CSV file
 
Your CSV should have these columns:
id,name,name_en,description,description_en,full_video_url,full_video_image_url,introduction,introduction_en,slug,slug_en,attribute_name,attribute_value
You can use the provided example.
# Import exercises from a CSV file
pnpm run import:exercises-full /path/to/your/exercises.csv
# Example with the provided sample data
pnpm run import:exercises-full ./data/sample-exercises.csvid,name,name_en,description,description_en,full_video_url,full_video_image_url,introduction,introduction_en,slug,slug_en,attribute_name,attribute_value
157,"Fentes arrières à la barre","Barbell Reverse Lunges","<p>Stand upright...</p>","<p>Stand upright...</p>",https://youtube.com/...,https://img.youtube.com/...,slug-fr,slug-en,TYPE,STRENGTH
157,"Fentes arrières à la barre","Barbell Reverse Lunges","<p>Stand upright...</p>","<p>Stand upright...</p>",https://youtube.com/...,https://img.youtube.com/...,slug-fr,slug-en,PRIMARY_MUSCLE,QUADRICEPS
Want unlimited exercise for local development ?
Just ask chatGPT with the prompt from ./scripts/import-exercises-with-attributes.prompt.md
This project follows Feature-Sliced Design (FSD) principles with Next.js App Router:
src/
βββ app/ # Next.js pages, routes and layouts
βββ processes/ # Business flows (multi-feature)
βββ widgets/ # Composable UI with logic (Sidebar, Header)
βββ features/ # Business units (auth, exercise-management)
βββ entities/ # Domain entities (user, exercise, workout)
βββ shared/ # Shared code (UI, lib, config, types)
βββ styles/ # Global CSS, themes
- Feature-driven: Each feature is independent and reusable
 - Clear domain isolation: 
sharedβentitiesβfeaturesβwidgetsβapp - Consistency: Between business logic, UI, and data layers
 
features/
βββ exercise-management/
βββ ui/ # UI components (ExerciseForm, ExerciseCard)
βββ model/ # Hooks, state management (useExercises)
βββ lib/ # Utilities (exercise-helpers)
βββ api/ # Server actions or API calls
We welcome contributions! Please see our Contributing Guide for details.
- Create an issue for the feature/bug you want to work on. Say that you will work on it (or no)
 - Fork the repository
 - Create your feature|fix|chore|refactor branch (
git checkout -b feature/amazing-feature) - Make your changes following our code standards
 - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request (one issue = one PR)
 
π For complete contribution guidelines, see our Contributing Guide
- Follow TypeScript best practices
 - Use Feature-Sliced Design architecture
 - Write meaningful commit messages
 
π For detailed self-hosting instructions, see our Complete Self-hosting Guide
πΊ You can also watch a 3-minute video guide on self-hosting Workout.Cool.
To seed the database with the sample exercises, set the SEED_SAMPLE_DATA env variable to true.
# Build the Docker image
docker build -t yourusername/workout-cool .
# Run the container
docker run -p 3000:3000 --env-file .env.production yourusername/workout-coolUpdate the host to point to the postgres service instead of localhost
DATABASE_URL=postgresql://username:password@postgres:5432/workout_cool
docker compose up -d# Build the application
pnpm build
# Run database migrations
export DATABASE_URL="your-production-db-url"
npx prisma migrate deploy
# Start the production server
pnpm startThis project is licensed under the MIT License. See the LICENSE file for details.
This is about rebuilding what we lost, together.
- π Star this repo to show the world our community is alive and thriving
 - π¬ Join our Discord to connect with other fitness enthusiasts and developers
 - π Report issues you find. I'm listening to every single one
 - π‘ Share your feature requests finally, someone who will actually implement them !
 - π Spread the word to fellow fitness enthusiasts who lost hope
 - π€ Contribute code if you're a developer : let's build this together
 
Appear in the README and on the website as supporter by donating:
  If you believe in open-source fitness tools and want to help this project thrive,
  consider buying me a coffee β or sponsoring the continued development.
  Your support helps cover hosting costs, exercise database updates, and continuous improvement.
  Thank you for keeping workout.cool alive and evolving πͺ