A mobile-first PWA for tracking CrossFit-style garage gym workouts. Ships with a 12-week "Return to CrossFit" program, an in-app program builder, standalone WOD logger, and full PR tracking — all offline, zero backend.
Live Demo · Report Bug · Request Feature
- 12-week program — progressive phases from light movement to full CrossFit WODs
- In-app program builder — create custom programs with a step-by-step wizard
- Standalone WOD logger — log any CrossFit WOD with type, movements, and score
- Workout timer — AMRAP, EMOM, For Time, Tabata, and Rounds modes with audio cues
- Progressive logging — one-tap complete, optional weight entry, detailed set tracking
- PR detection & celebration — automatic personal record tracking with in-app celebration
- Exercise history — weight progression charts and movement history
- Equipment checklist — auto-detects gear needed for each workout
- Warm-up generator — personalized warm-ups based on today's movements
- Difficulty predictor — rates workout intensity (1-10) using your PR history
- Movement swap engine — suggests alternatives for missing equipment or injuries
- Plate calculator — visual barbell loading with colored plates
- Whiteboard mode — full-screen dark display for your garage wall
- Competition sounds — procedural audio cues (3-2-1-Go!, time cap warnings)
- Ghost racer — pace yourself against your previous best time
- Partner WOD mode — track work/rest splits for two athletes
- WOD spinner — random workout generator when you need inspiration
- Voice logging — hands-free weight entry via speech recognition
- Achievement system — 12 unlockable badges (First Blood, Century Club, Iron Week, etc.)
- Monthly & yearly recaps — training volume summaries and PR highlights
- Score comparisons — see improvement across repeated WODs
- What-if calculator — project PRs at different rep ranges using Epley/Brzycki formulas
- Goal tracking — set and monitor personal fitness goals
- Dark mode — light, dark, and system theme options
- Offline-first — full PWA with service worker, install to your home screen
- Data portability — export/import full backups as JSON
- Self-hosted — Docker support, no external services required
- Zero backend — all data stored in localStorage
Prerequisites: Node.js 18+ and pnpm 9+
pnpm install
pnpm devOpen http://localhost:5173 in your browser.
pnpm test # run all 605 tests
pnpm test:watch # watch mode for developmentGRGWOD is a static site — deploy anywhere that serves HTML.
Vercel / Netlify: Connect your GitHub repo and it auto-detects Vite. No configuration needed.
Docker:
docker compose up -dThe app will be available at http://localhost:3000.
You have two options:
- In-app builder — Go to Program > "+ New" and use the step-by-step wizard
- JSON upload — Create a JSON file following
docs/SCHEMA.mdand upload via Settings
- React 19 + TypeScript (strict mode)
- Vite 7
- Tailwind CSS v4
- vite-plugin-pwa (Workbox)
- Vitest + React Testing Library (605 tests)
- Web Speech API (voice logging)
- Web Audio API (competition sounds)
- No backend, no database, no npm runtime dependencies beyond React
See CONTRIBUTING.md for development setup, project structure, and guidelines.