Aucune description

Taio_O b92a734f7f Merge branch 'main' of https://github.com/Snouzy/workout-cool il y a 3 semaines
.github 9c1bad7cf0 chore: config issue templates (#92) il y a 1 mois
.vscode 5dceee9214 初始化数据库 il y a 3 semaines
app 4bd816b036 feat: display app version (#98) il y a 4 semaines
content 78339d1d17 chore/content translations (#101) il y a 4 semaines
data afa87ffc70 feat/step 3 (#6) il y a 1 mois
docs 59d5101378 docs(self-host): mapping custom domain section (#104) il y a 4 semaines
emails 254301174e chore: remove unused email components to clean up the codebase and reduce clutter il y a 1 mois
locales a624d14067 feat(locales): update open source description to clarify the app is ads-free il y a 4 semaines
prisma 5dceee9214 初始化数据库 il y a 3 semaines
public c0fb0c1bac chore(sw.js): update CACHE_NAME to version 1.2.3 for better cache management and add self.clients.claim() to ensure the service worker takes control of the clients immediately after activation il y a 4 semaines
scripts 78339d1d17 chore/content translations (#101) il y a 4 semaines
src b92a734f7f Merge branch 'main' of https://github.com/Snouzy/workout-cool il y a 3 semaines
.cursorrules 77b44b32e0 chore: first commit il y a 1 mois
.env.example b0c9b65a43 Remove unnecessary values from docker compose. Make env file more parametrized. (#96) il y a 4 semaines
.gitignore a196269c6d chore/prune deps (#50) il y a 1 mois
.npmrc 77b44b32e0 chore: first commit il y a 1 mois
.prettierrc 77b44b32e0 chore: first commit il y a 1 mois
CONTRIBUTING.md 4e93c88a6f docs: update CONTRIBUTING.md to enhance clarity on review process and contribution flow, and add a new pull request template for better consistency in submissions il y a 1 mois
Dockerfile 0c9c4b7d2c feature: add workout_cool service to docker compose file (#49) il y a 1 mois
LICENSE 7ac6b16d47 chore: add MIT License file to clarify software usage rights and permissions il y a 1 mois
Makefile 5dceee9214 初始化数据库 il y a 3 semaines
README.md 2d95409eb9 docs: self hosting (#103) il y a 4 semaines
components.json 77b44b32e0 chore: first commit il y a 1 mois
docker-compose.yml 5dceee9214 初始化数据库 il y a 3 semaines
eslint.config.mjs 77b44b32e0 chore: first commit il y a 1 mois
middleware.ts 92b3586d7d feat(locales): add donation alert translations for multiple languages to support fundraising efforts il y a 1 mois
next.config.ts a196269c6d chore/prune deps (#50) il y a 1 mois
nextauth.d.ts 77b44b32e0 chore: first commit il y a 1 mois
package.json 5dceee9214 初始化数据库 il y a 3 semaines
pnpm-lock.yaml 5dceee9214 初始化数据库 il y a 3 semaines
postcss.config.mjs 77b44b32e0 chore: first commit il y a 1 mois
tailwind.config.ts f7fe725182 fix(i18n): correct French translation for "Quitter Sans Sauvegarder" to "Quitter sans sauvegarder" for consistency il y a 1 mois
test-db-connection.js 5dceee9214 初始化数据库 il y a 3 semaines
tsconfig.json 14a9047b1c chore(layout): remove Facebook Pixel integration and related files to streamline the codebase and reduce dependencies (#33) il y a 1 mois

README.md

Workout.cool Logo

Workout.cool

Modern fitness coaching platform with comprehensive exercise database

Contributors Forks Stars Issues Repository Size MIT License

Discord Ko-fi

Table of Contents

Contributors

Sponsors

They are helping making workout.cool free and open-source for everyone :

Vercel OSS Program

lj020326
lj020326
lucasnevespereira
lucasnevespereira

About

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

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

  • 🏗️ 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

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

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.

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

Prerequisites

Installation

  1. Clone the repository

    git clone https://github.com/Snouzy/workout-cool.git
    cd workout-cool
    
  2. Choose your installation method:

🐳 With Docker ### Docker Installation 1. **Copy environment variables** ```bash cp .env.example .env ``` 2. **Start everything for development:** ```sh 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` 3. **Open your browser** Navigate to [http://localhost:3000](http://localhost:3000)
💻 Without Docker ### Manual Installation 1. **Install dependencies** ```bash pnpm install ``` 2. **Copy environment variables** ```bash cp .env.example .env ``` 3. **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` 4. **Run database migrations** ```bash npx prisma migrate dev ``` 5. **Seed the database (optional)** See the - [Exercise database import section](#exercise-database-import) 6. **Start the development server** ```bash pnpm dev ``` 7. **Open your browser** Navigate to [http://localhost:3000](http://localhost:3000)

Exercise Database Import

The project includes a comprehensive exercise database. To import a sample of exercises:

Prerequisites for Import

  1. 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 Commands

# 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.csv

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_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

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, themes

Architecture Principles

  • Feature-driven: Each feature is independent and reusable
  • Clear domain isolation: sharedentitiesfeatureswidgetsapp
  • Consistency: Between business logic, UI, and data layers

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 calls

Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Workflow

  1. Create an issue for the feature/bug you want to work on. Say that you will work on it (or no)
  2. Fork the repository
  3. Create your feature|fix|chore|refactor branch (git checkout -b feature/amazing-feature)
  4. Make your changes following our code standards
  5. Commit your changes (git commit -m 'feat: add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request (one issue = one PR)

📋 For complete contribution guidelines, see our Contributing Guide

Code Style

  • Follow TypeScript best practices
  • Use Feature-Sliced Design architecture
  • Write meaningful commit messages

Deployment / Self-hosting

📖 For detailed self-hosting instructions, see our Complete Self-hosting Guide

To seed the database with the sample exercises, set the SEED_SAMPLE_DATA env variable to true.

Using Docker

# Build the Docker image
docker build -t yourusername/workout-cool .

# Run the container
docker run -p 3000:3000 --env-file .env.production yourusername/workout-cool

Using Docker Compose

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 -d

Manual Deployment

# Build the application
pnpm build

# Run database migrations
export DATABASE_URL="your-production-db-url"
npx prisma migrate deploy

# Start the production server
pnpm start

Resources

License

This project is licensed under the MIT License. See the LICENSE file for details.

MIT License

🤝 Join the Rescue Mission

This is about rebuilding what we lost, together.

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

Appear in the README and on the website as supporter by donating:

Sponsor on Ko-fi    

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 💪