Snouzy/workout-cool
{ "createdAt": "2025-06-11T13:19:26Z", "defaultBranch": "main", "description": "🏋 Modern open-source fitness coaching platform. Create workout plans, track progress, and access a comprehensive exercise database.", "fullName": "Snouzy/workout-cool", "homepage": "https://workout.cool", "language": "TypeScript", "name": "workout-cool", "pushedAt": "2025-10-29T16:12:59Z", "stargazersCount": 6748, "topics": [ "coach", "exercise", "feature-sliced-design", "fitness", "gym", "health", "nextjs", "open-source", "postgresql", "prisma", "radix-ui", "react", "shadcn-ui", "tailwindcss", "training", "typescript", "webapp", "workout" ], "updatedAt": "2025-11-25T21:16:16Z", "url": "https://github.com/Snouzy/workout-cool"}Workout.cool
Modern fitness coaching platform with comprehensive exercise database
Deutsch | Español | français | 日本語 | 한국어 | Português | Русский | 中文Table of Contents
Section titled “Table of Contents”- [About]!(#about)
- [Project Origin & Motivation]!(#-project-origin—motivation)
- [Quick Start]!(#quick-start)
- [Exercise Database Import]!(#exercise-database-import)
- [Project Architecture]!(#project-architecture)
- [Contributing]!(#contributing)
- [Self-hosting]!(#deployment—self-hosting)
- [Resources]!(#resources)
- [License]!(#license)
- [Sponsor This Project]!(#-sponsor-this-project)
Contributors
Section titled “Contributors”Sponsors
Section titled “Sponsors”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.
🎯 Project Origin & Motivation
Section titled “🎯 Project Origin & Motivation”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. 🥹
The Story Behind workout.cool
Section titled “The Story Behind workout.cool”- 🏗️ 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
Why workout.cool Exists
Section titled “Why workout.cool Exists”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.
👥 From the Community, For the Community
Section titled “👥 From the Community, For the Community”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.
My Mission: Rescue & Revive.
Section titled “My Mission: Rescue & Revive.”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.
Quick Start
Section titled “Quick Start”Prerequisites
Section titled “Prerequisites”Installation
Section titled “Installation”-
Clone the repository
Terminal window git clone https://github.com/Snouzy/workout-cool.gitcd workout-cool -
Choose your installation method:
🐳 With Docker
Docker Installation
Section titled “Docker Installation”-
Copy environment variables
Terminal window cp .env.example .env -
Start everything for development:
Terminal window 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
Manual Installation
Section titled “Manual Installation”-
Install dependencies
Terminal window pnpm install -
Copy environment variables
Terminal window 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
Terminal window npx prisma migrate dev -
Seed the database (optional)
See the - [Exercise database import section]!(#exercise-database-import)
-
Start the development server
Terminal window pnpm dev -
Open your browser Navigate to http://localhost:3000
Exercise Database Import
Section titled “Exercise Database Import”The project includes a comprehensive exercise database. To import a sample of exercises:
Prerequisites for Import
Section titled “Prerequisites for Import”- 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_valueYou can use the provided example.
Import Commands
Section titled “Import Commands”# Import exercises from a CSV filepnpm run import:exercises-full /path/to/your/exercises.csv
# Example with the provided sample datapnpm run import:exercises-full ./data/sample-exercises.csvCSV Format Example
Section titled “CSV Format Example”id,name,name_en,description,description_en,full_video_url,full_video_image_url,introduction,introduction_en,slug,slug_en,attribute_name,attribute_value157,"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,STRENGTH157,"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,QUADRICEPSWant unlimited exercise for local development ?
Just ask chatGPT with the prompt from ./scripts/import-exercises-with-attributes.prompt.md
Project Architecture
Section titled “Project Architecture”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, themesArchitecture Principles
Section titled “Architecture Principles”- Feature-driven: Each feature is independent and reusable
- Clear domain isolation:
shared→entities→features→widgets→app - Consistency: Between business logic, UI, and data layers
Example Feature Structure
Section titled “Example Feature Structure”features/└── exercise-management/├── ui/ # UI components (ExerciseForm, ExerciseCard)├── model/ # Hooks, state management (useExercises)├── lib/ # Utilities (exercise-helpers)└── api/ # Server actions or API callsContributing
Section titled “Contributing”We welcome contributions! Please see our [Contributing Guide]!(CONTRIBUTING.md) for details.
Development Workflow
Section titled “Development Workflow”- 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]!(#code-style)
- 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]!(CONTRIBUTING.md)
Code Style
Section titled “Code Style”- Follow TypeScript best practices
- Use Feature-Sliced Design architecture
- Write meaningful commit messages
Deployment / Self-hosting
Section titled “Deployment / Self-hosting”📖 For detailed self-hosting instructions, see our [Complete Self-hosting Guide]!(docs/SELF-HOSTING.md)
📺 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.
Using Docker
Section titled “Using Docker”# Build the Docker imagedocker build -t yourusername/workout-cool .
# Run the containerdocker run -p 3000:3000 --env-file .env.production yourusername/workout-coolUsing Docker Compose
Section titled “Using Docker Compose”DATABASE_URL
Section titled “DATABASE_URL”Update the host to point to the postgres service instead of localhost
DATABASE_URL=postgresql://username:password@postgres:5432/workout_cool
docker compose up -dManual Deployment
Section titled “Manual Deployment”# Build the applicationpnpm build
# Run database migrationsexport DATABASE_URL="your-production-db-url"npx prisma migrate deploy
# Start the production serverpnpm startResources
Section titled “Resources”License
Section titled “License”This project is licensed under the MIT License. See the [LICENSE]!(LICENSE) file for details.
[]!(LICENSE)
🤝 Join the Rescue Mission
Section titled “🤝 Join the Rescue Mission”This is about rebuilding what we lost, together.
How You Can Help
Section titled “How You Can Help”- 🌟 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
💖 Sponsor This Project
Section titled “💖 Sponsor This Project”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 💪