Repstack is an open source alternative to commercial hypertrophy training applications, inspired by evidence-based training principles from Renaissance Periodization. Our mission is to make scientifically-backed muscle building programs accessible to everyone, completely free.
- Open Source & Free: Core functionality will always remain free and open source
- Progressive Web App: Runs seamlessly on all platforms (iOS, Android, Desktop, Web)
- Science-Based: Built on proven hypertrophy training principles
- Privacy-First: Your training data stays with you - works offline
- Community-Driven: Built by lifters, for lifters
- Personalized training program generator
- Auto-regulation based on user feedback (pump, soreness, recovery)
- Progressive overload tracking
- Mesocycle management (4-6 week training blocks)
- Deload week scheduling
- Exercise library with user-created exercises and categories (machine, barbell, dumbbell, bodyweight, cable)
- Workout logging and history
- Progress tracking and analytics (1RM, volume, personal records)
- Custom exercise creation
- Template library (programs for upper/lower, push/pull/legs, full body splits)
- Volume landmarks and recovery indicators
- Exercise substitution recommendations
- Offline-first PWA capabilities
- Data export/import
- Training insights and visualizations
- Multiple training styles (hypertrophy, strength, hybrid)
- Equipment-based program filtering
- Mobile and desktop responsive design
- Premium coaching features
- Advanced analytics
- Team/coach management
- Cloud sync across devices
- Community features and challenges
Note: The core application will always remain open source and free. SaaS features will be optional add-ons.
Framework & Build:
- React 19 - UI library
- TypeScript - Type safety
- Vite - Fast dev server and build tool
PWA Capabilities:
- vite-plugin-pwa - PWA configuration and service worker generation
- Workbox - Service worker management
- IndexedDB - Local data storage via Dexie.js
Code Quality:
- ESLint - Code linting
- Prettier - Code formatting
- TypeScript strict mode - Type checking
- Node.js 18.x or higher
- npm 9.x or higher (comes with Node.js)
-
Clone the repository
git clone https://github.com/wulfland/Repstack.git cd Repstack -
Install dependencies
npm install
-
Start the development server
npm run dev
The app will be available at
http://localhost:5173/
npm run dev- Start development server with hot reloadnpm run build- Build for productionnpm run preview- Preview production build locallynpm run lint- Run ESLintnpm run lint:fix- Fix ESLint errors automaticallynpm run format- Format code with Prettiernpm run format:check- Check code formattingnpm run type-check- Run TypeScript type checkingnpm run test- Run unit tests with Vitest (watch mode)npm run test:run- Run unit tests oncenpm run test:coverage- Run tests with coverage reportnpm run test:e2e- Run end-to-end tests with Playwright
The app includes full Progressive Web App capabilities:
- โ Offline Support - Service Workers cache assets for offline use
- โ Installable - Can be installed on any device (iOS, Android, Desktop)
- โ Local Storage - IndexedDB stores user data locally
- โ Responsive - Mobile-first design that works on all screen sizes
- โ Fast - Optimized build with code splitting
๐ Complete Offline Functionality Guide - Learn how Repstack works 100% offline
Local Development:
- PWA features are enabled in development mode
- Service Worker registers automatically
- Test offline mode by stopping the dev server after initial load
Production Build:
npm run build
npm run previewThen open in your browser and test:
- Install the app (look for install prompt)
- Go offline (DevTools โ Network โ Offline)
- App should still work
Repstack/
โโโ public/ # Static assets
โ โโโ pwa-192x192.png # PWA icon (192x192)
โ โโโ pwa-512x512.png # PWA icon (512x512)
โ โโโ apple-touch-icon.png # iOS home screen icon
โ โโโ robots.txt # SEO robots file
โโโ src/
โ โโโ components/ # Feature UI components
โ โ โโโ common/ # Shared UI (toasts, dialogs)
โ โ โโโ exercises/ # Exercise library management
โ โ โโโ mesocycles/ # Mesocycle/program management
โ โ โโโ onboarding/ # First-time setup wizard
โ โ โโโ progress/ # Progress tracking & analytics
โ โ โโโ settings/ # App settings
โ โ โโโ templates/ # Pre-built training templates
โ โ โโโ workouts/ # Workout session logging
โ โโโ layouts/ # Layout components
โ โโโ hooks/ # Custom React hooks
โ โโโ db/ # IndexedDB database setup (Dexie)
โ โโโ lib/ # Utility functions and algorithms
โ โโโ types/ # TypeScript type definitions
โ โโโ test/ # Test utilities and helpers
โ โโโ App.tsx # Main app component
โ โโโ main.tsx # App entry point
โ โโโ index.css # Global CSS
โโโ e2e/ # Playwright end-to-end tests
โโโ docs/ # Documentation
โโโ screenshots/ # App screenshots
โโโ index.html # HTML template
โโโ vite.config.ts # Vite configuration
โโโ tsconfig.json # TypeScript configuration
โโโ eslint.config.js # ESLint configuration
โโโ .prettierrc # Prettier configuration
The app uses IndexedDB (via Dexie.js) with the following tables:
- users - User profiles and preferences (experience level, units, theme)
- exercises - Exercise library (user-created and built-in starter exercises)
- workouts - Workout logs with sets, reps, and weights
- workoutSets - Individual sets with reps, weight, and RIR data
- trainingSessions - Auto-regulation feedback (pump, soreness, fatigue ratings)
- mesocycles - Training blocks (4-6 week programs with split configuration)
See src/db/index.ts for the complete schema and src/types/models.ts for TypeScript interfaces.
- โก Initial load: < 3 seconds on 3G
- โก Time to interactive: < 5 seconds
- ๐ฆ Bundle size: Optimized for mobile
- ๐ Lighthouse score: 90+ across all metrics
Current Phase: โ Core Application Complete โ ๐ Refining & Expanding
The core application is fully functional with:
- โ React + TypeScript + Vite
- โ PWA capabilities (offline, installable)
- โ IndexedDB for local storage (Dexie.js)
- โ Responsive mobile-first layout
- โ Code quality tools (ESLint, Prettier)
- โ Production build pipeline
- โ Unit tests (Vitest) and E2E tests (Playwright)
- โ Onboarding wizard for new users
- โ Exercise library with starter exercises
- โ Workout session logging with auto-save
- โ Mesocycle planning with split configuration
- โ Progress tracking with 1RM calculations and personal records
- โ Auto-regulation (pump, soreness, fatigue feedback)
- โ Pre-built training program templates
- โ Data export/import for portability
- โ Dark/light/system theme support
- โ Accessibility (WCAG 2.1 AA compliance)
Next Steps:
- Exercise substitution recommendations
- Advanced analytics and visualizations
- Optional cloud sync (SaaS layer)
We welcome contributions! This project is in early stages, but we're excited to build this together with the community.
Please see CONTRIBUTING.md for guidelines on how to contribute.
- Requirements Definition: Help us define features and user stories
- Design & UX: Design mockups and user flows
- Development: Code contributions once architecture is defined
- Testing: Test the app and provide feedback
- Documentation: Improve docs and create tutorials
- Exercise Content: Contribute exercise descriptions and form cues
- ARCHITECTURE.md - Architecture decisions and data flow
- CONTRIBUTING.md - Contribution guidelines
- docs/OFFLINE_FUNCTIONALITY.md - How offline mode works
- docs/ACCESSIBILITY.md - Accessibility implementation details
- docs/TESTING.md - Testing strategy and how to run tests
Interested in the science behind the app? Check out:
- Renaissance Periodization YouTube Channel
- Hypertrophy Training Principles
- Progressive Overload Explained
This project is licensed under the MIT License - see the LICENSE file for details.
This means:
- โ Free to use, modify, and distribute
- โ Can be used in commercial projects
- โ Can be used to create derivative works
โ ๏ธ Provided "as is" without warranty
- Phase 1 (Complete): Core training engine โ workout logging, exercise library, mesocycle planning
- Phase 2 (Complete): Progress tracking โ analytics, 1RM calculations, personal records, templates
- Phase 3 (Complete): PWA features โ offline support, installable, data export/import
- Phase 4 (In Progress): Polish & expand โ exercise substitutions, advanced analytics, optional cloud sync
- Issues: Use GitHub Issues for bug reports and feature requests
- Discussions: Use GitHub Discussions for questions and ideas
- Contributing: See CONTRIBUTING.md for contribution guidelines
This project is inspired by the work of:
- Dr. Mike Israetel and the Renaissance Periodization team
- The open source fitness community
- Evidence-based training research
Disclaimer: This is an independent open source project and is not affiliated with or endorsed by Renaissance Periodization.
Built with โค๏ธ by the open source fitness community