Sen descrición

Mathias 7ac6b16d47 chore: add MIT License file to clarify software usage rights and permissions hai 1 mes
.vscode 77b44b32e0 chore: first commit hai 1 mes
app 77b44b32e0 chore: first commit hai 1 mes
content 77b44b32e0 chore: first commit hai 1 mes
data 77b44b32e0 chore: first commit hai 1 mes
emails 77b44b32e0 chore: first commit hai 1 mes
locales 77b44b32e0 chore: first commit hai 1 mes
prisma 77b44b32e0 chore: first commit hai 1 mes
public 77b44b32e0 chore: first commit hai 1 mes
scripts 77b44b32e0 chore: first commit hai 1 mes
src 0a5cd1a40f chore(env): add .env.example file for environment variable configuration and update .gitignore to include specific env files hai 1 mes
.cursorrules 77b44b32e0 chore: first commit hai 1 mes
.env.example 0a5cd1a40f chore(env): add .env.example file for environment variable configuration and update .gitignore to include specific env files hai 1 mes
.gitignore 0a5cd1a40f chore(env): add .env.example file for environment variable configuration and update .gitignore to include specific env files hai 1 mes
.npmrc 77b44b32e0 chore: first commit hai 1 mes
.prettierrc 77b44b32e0 chore: first commit hai 1 mes
CONTRIBUTING.md 77b44b32e0 chore: first commit hai 1 mes
LICENSE 7ac6b16d47 chore: add MIT License file to clarify software usage rights and permissions hai 1 mes
README.md 7dac1df469 docs(README): enhance project documentation with logo and improve code block formatting for better readability hai 1 mes
components.json 77b44b32e0 chore: first commit hai 1 mes
eslint.config.mjs 77b44b32e0 chore: first commit hai 1 mes
middleware.ts 77b44b32e0 chore: first commit hai 1 mes
next.config.ts 77b44b32e0 chore: first commit hai 1 mes
nextauth.d.ts 77b44b32e0 chore: first commit hai 1 mes
package.json 77b44b32e0 chore: first commit hai 1 mes
pnpm-lock.yaml 77b44b32e0 chore: first commit hai 1 mes
postcss.config.mjs 77b44b32e0 chore: first commit hai 1 mes
tailwind.config.ts 77b44b32e0 chore: first commit hai 1 mes
tsconfig.json 77b44b32e0 chore: first commit hai 1 mes

README.md

Workout Cool Logo

Workout Cool

Modern fitness coaching platform with comprehensive exercise database

Contributors Forks Stars Issues Languages Repository Size

About

A comprehensive fitness coaching platform that allows trainers to manage their clients, create workout plans, track progress, and access a vast exercise database with detailed instructions and video demonstrations.

Features

  • 🏋️ Comprehensive Exercise Database - Thousands of exercises with detailed descriptions, videos, and muscle targeting
  • 📊 Progress Tracking - Monitor client progress and workout statistics
  • 🎯 Custom Workouts - Create personalized workout routines
  • 🌐 Multi-language Support - English and French translations

Tech Stack

  • Framework: Next.js 14 with App Router
  • Database: PostgreSQL with Prisma ORM
  • Authentication: Better Auth
  • Language: TypeScript
  • Architecture: Feature-Sliced Design (FSD)

Quick Start

Prerequisites

  • Node.js 18+
  • PostgreSQL database
  • pnpm (recommended) or npm

Installation

  1. Clone the repository

    git clone https://github.com/mathiasbradiceanu/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

    npx prisma migrate deploy
    npx prisma generate
    
  2. Start the development server

    pnpm dev
    
  3. 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

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

# 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

Support

If you found this project helpful, consider:

  • ⭐ Starring the repository
  • 🐛 Reporting bugs
  • 💡 Suggesting new features
  • 🤝 Contributing to the codebase

Made with ❤️ by fitness enthusiasts for the fitness community