A modern workout tracking application built with React, TypeScript, and Vite. Track your workouts, monitor progress, and achieve your fitness goals.
- 🏋️♂️ Create and manage workouts
- 📊 Track exercise sets, reps, and weights
- 📱 Responsive design
- 🔐 User authentication with Supabase
- 💾 Real-time data persistence
- 📈 Progress monitoring
- 📅 Workout calendar (coming soon)
- Implement workout calendar functionality
- Add progress tracking charts and analytics
- Create workout templates/presets
- Add social features (sharing workouts, following users)
- Implement workout reminders and notifications
- Add exercise library with proper form guides
- Add a form with user details after registration
- Set up unit testing
- Add E2E
- Implement proper error boundaries
- Add PWA support
- Optimize bundle size and loading performance
- Add offline support
- Implement proper data caching strategy
- Add comprehensive API documentation
- Set up CI/CD pipeline
- Add i18n support
- Add dark mode support
- Implement skeleton loading states
- Add proper form validation feedback
- Improve mobile responsiveness
- Add proper error states and empty states
- Implement proper loading indicators
- Add proper toast notifications
- Improve accessibility (ARIA labels, keyboard navigation)
- Add kilograms or pounds conversion
- Add API documentation
- Create component documentation with Storybook
- Add proper JSDoc comments
- Create user documentation/guide
- Add contributing guidelines
- Add code of conduct
- Create changelog
- React 19 (RC)
- TypeScript
- Vite
- Redux Toolkit
- Styled Components
- Supabase
- React Hook Form
- Zod
- React Router DOM
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- pnpm (v8 or higher)
- Git
-
Clone the repository:
git clone https://github.com/yourusername/gymster-app.git cd gymster-app
-
Install dependencies:
pnpm install
-
Create a
.env.local
file in the root directory with your Supabase credentials:VITE_SUPABASE_API_URL="your-supabase-url" VITE_SUPABASE_API_KEY="your-supabase-anon-key"
-
Generate Supabase types:
pnpm generate-types
-
Prepare Husky:
pnpm husky:prepare
-
Start the development server:
pnpm dev
pnpm dev
- Start development serverpnpm build
- Build for productionpnpm preview
- Preview production buildpnpm lint
- Run ESLintpnpm lint:fix
- Fix linting issuespnpm generate-types
- Generate Supabase typespnpm husky:prepare
- Prepare Husky
src/
├── api/ # API integration and Supabase client
├── lib/ # Shared utilities and configurations
├── routes/ # Route components and configurations
├── styles/ # Global styles and theme
├── ui/ # UI components and views
│ ├── components/ # Reusable components
│ └── views/ # Page-specific components
├── utils/ # Helper functions and hooks
└── types/ # TypeScript type definitions
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request