暂无描述

Mathias 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 1 月之前
.github 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 1 月之前
.vscode 254301174e chore: remove unused email components to clean up the codebase and reduce clutter 1 月之前
app 14a9047b1c chore(layout): remove Facebook Pixel integration and related files to streamline the codebase and reduce dependencies (#33) 1 月之前
content 9ebe0a3f74 feat(about): replace text references to workout.lol with WorkoutLol component for consistency and improved styling (#32) 1 月之前
data afa87ffc70 feat/step 3 (#6) 1 月之前
emails 254301174e chore: remove unused email components to clean up the codebase and reduce clutter 1 月之前
locales cb5f841cc6 feat(locales): update release notes for 2025 with new features and improvements in English and French (#31) 1 月之前
prisma 1315cc5a50 feat(workout-session): implement delete workout session functionality with confirmation prompt and cascade delete in database 1 月之前
public 14a9047b1c chore(layout): remove Facebook Pixel integration and related files to streamline the codebase and reduce dependencies (#33) 1 月之前
scripts 13010512e3 feat(workout-session): implement workout session synchronization feature with local storage and server integration 1 月之前
src 2cb11c61da chore: update Discord invite links across documentation and components to the new URL for consistency and improved access 1 月之前
.cursorrules 77b44b32e0 chore: first commit 1 月之前
.env.example 117fff738a feat/add muscle illustration (#2) 1 月之前
.gitignore 0a5cd1a40f chore(env): add .env.example file for environment variable configuration and update .gitignore to include specific env files 1 月之前
.npmrc 77b44b32e0 chore: first commit 1 月之前
.prettierrc 77b44b32e0 chore: first commit 1 月之前
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 1 月之前
LICENSE 7ac6b16d47 chore: add MIT License file to clarify software usage rights and permissions 1 月之前
Makefile 3f827cd749 feat: add docker (#1) 1 月之前
README.md 2cb11c61da chore: update Discord invite links across documentation and components to the new URL for consistency and improved access 1 月之前
components.json 77b44b32e0 chore: first commit 1 月之前
docker-compose.yml 83223c70da Feature/exercise video modal (#9) 1 月之前
eslint.config.mjs 77b44b32e0 chore: first commit 1 月之前
middleware.ts 77b44b32e0 chore: first commit 1 月之前
next.config.ts 77b44b32e0 chore: first commit 1 月之前
nextauth.d.ts 77b44b32e0 chore: first commit 1 月之前
package.json d5a31a3b64 chore/table map (#16) 1 月之前
pnpm-lock.yaml d5a31a3b64 chore/table map (#16) 1 月之前
postcss.config.mjs 77b44b32e0 chore: first commit 1 月之前
tailwind.config.ts f7fe725182 fix(i18n): correct French translation for "Quitter Sans Sauvegarder" to "Quitter sans sauvegarder" for consistency 1 月之前
tsconfig.json 14a9047b1c chore(layout): remove Facebook Pixel integration and related files to streamline the codebase and reduce dependencies (#33) 1 月之前

README.md

Workout.cool Logo

Workout.cool

Modern fitness coaching platform with comprehensive exercise database

Contributors Forks Stars Issues Languages Repository Size Discord MIT License

Table of Contents

Contributors

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

  • Node.js 18+
  • Either:
    • Docker
    • OR PostgreSQL external database
  • pnpm (recommended) or npm

Installation

  1. Clone the repository

    git clone https://github.com/Snouzy/workout-cool.git
    cd workout-cool
    
  2. Install dependencies

    pnpm install
    
  3. Set up environment variables

    cp .env.example .env
    

Fill in your database URL and other required environment variables:

   DATABASE_URL="postgresql://username:password@localhost:5432/workout_cool"
   BETTER_AUTH_SECRET="your-secret-key"
   # ... other variables
  1. Set up the database

#### Option 1: Using Docker

The project provides a convenient make command that handles everything:

   make init

This single command will:

  • Start the PostgreSQL database using Docker
  • Run database migrations
  • Start the development server

#### Option 2: Manual PostgreSQL Setup

If you prefer to use your own PostgreSQL installation:

   # Run migrations
   npx prisma migrate deploy
   npx prisma generate

   # Start the development server
   pnpm dev
  1. Open your browser Navigate to 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

Available Attribute Types

  • TYPE: STRENGTH, CARDIO, PLYOMETRICS, STRETCHING, etc.
  • PRIMARY_MUSCLE: QUADRICEPS, CHEST, BACK, SHOULDERS, etc.
  • SECONDARY_MUSCLE: Secondary muscle groups targeted
  • EQUIPMENT: BARBELL, DUMBBELL, BODYWEIGHT, MACHINE, etc.
  • MECHANICS_TYPE: COMPOUND, ISOLATION

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

Roadmap

Here are the next steps and goals for Workout.cool:

  • 🏋️‍♂️ Add new exercises and videos
  • 📱 Mobile app (React Native)
  • 🏆 Badges and gamification system
  • 📊 Advanced progress statistics
  • 🤝 Integration with wearables (watches, trackers)
  • 🌍 Multilingual support
  • 🔒 OAuth authentication (Google, Apple, etc.)
  • 💬 Built-in community forum

Feel free to suggest your ideas via issues!

Contributing

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

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Commit your changes (git commit -m 'feat: add amazing feature')
  5. Push to the branch (git push origin feature/amazing-feature)
  6. Open a Pull Request

Code Style

  • Follow TypeScript best practices
  • Use Feature-Sliced Design architecture
  • Write meaningful commit messages
  • Add tests for new features

Deployment

Using Docker (Not ready yet : todo)

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

# Run the container
docker run -p 3000:3000 workout-cool

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 💪