The body you have always dreamed of πͺ
Chikrice is a comprehensive fitness application designed to help users achieve their health and fitness goals. This project serves as an excellent learning platform for junior and mid-level frontend engineers who want to:
- π Level up their skills with modern React development
- π€ Collaborate with other developers in a real-world project
- Learn industry best practices and patterns
- πΌ Build portfolio with a production-ready application
- π Experience code migration from JavaScript to TypeScript
- π§ͺ Practice testing with Vitest and Playwright
- Real-world experience: Work on a live application used by real users
- Modern tech stack: Learn cutting-edge technologies and tools
- Community-driven: Join a community of passionate developers
- Portfolio-worthy: Add a substantial project to your portfolio
- Mentorship opportunities: Learn from experienced developers
- Fitness enthusiasts welcome: Perfect if you love fitness and programming!
This is a full-stack application with separate frontend and backend repositories:
- React 18 with modern hooks and patterns
- Material-UI for professional UI components
- Zustand for state management
- Vite for fast development and building
- Node.js with Express.js
- MongoDB database
- JWT Authentication
- RESTful API
** Backend Repository**: chikrice-backend
If you're a backend developer or want to work on the API, check out the backend repository!
- React 18.2.0 - Modern React with hooks and concurrent features
- JavaScript β TypeScript (Migration in progress)
- Material-UI (MUI) 5.14.19 - Professional UI components
- React Hook Form 7.48.2 - Performant form handling
- Zustand 5.0.7 - Lightweight state management
- Vite 5.4.10 - Fast build tool and dev server
- ESLint - Code linting and quality
- Prettier - Code formatting
- Husky - Git hooks
- Commitlint - Conventional commit messages
- TypeScript 5.8.3 - Type safety (migration in progress)
- Vitest - Unit and integration testing
- Playwright - End-to-end testing
- React Router DOM - Client-side routing
- Axios - HTTP client
- SWR - Data fetching
- Framer Motion - Animations
- i18next - Internationalization
- React Joyride - User onboarding
- ApexCharts - Data visualization
- Node.js v18.x (Recommended)
- Yarn package manager
- Git
-
Clone the repository
git clone https://github.com/chikrice/chikrice-user-frontend.git cd chikrice-user-frontend -
Set up environment variables
cp .env.example .env
π Configure your
.envfile:VITE_DEV_HOST_API: Your backend API URL (default:http://localhost:3000)VITE_GOOGLE_CLIENT_ID: Google OAuth client IDVITE_MAPBOX_API: Mapbox API key (optional)
π How to get API keys:
- Google OAuth: Google Cloud Console
- Mapbox: Mapbox Account
-
Install dependencies
yarn install
-
Start development server
yarn dev
-
Open your browser Navigate to http://localhost:3030
| Command | Description |
|---|---|
yarn dev |
Start development server |
yarn build |
Build for production |
yarn preview |
Preview production build |
yarn lint |
Run ESLint |
yarn lint:fix |
Fix ESLint issues and format code |
yarn release |
Create a new release |
src/
βββ components/ # Reusable UI components
βββ pages/ # Page components
βββ sections/ # Page sections and features
βββ layouts/ # Layout components
βββ store/ # Zustand stores
βββ hooks/ # Custom React hooks
βββ utils/ # Utility functions
βββ api/ # API integration
βββ theme/ # MUI theme configuration
βββ locales/ # Internationalization
βββ assets/ # Static assets
We welcome contributions from developers of all skill levels! Here's how you can get started:
Look for issues labeled with:
good first issue- Perfect for beginnershelp wanted- General help neededbug- Bug fixesenhancement- New featuresdocumentation- Documentation improvements
- Fork the repository
- Create a feature branch
git checkout -b feature/your-feature-name
- Make your changes
- Follow our coding standards
- Run
yarn lint:fixbefore committing - Follow conventional commit messages
- Write clean, readable code
- Run
- Test your changes
- Submit a pull request
We use Conventional Commits:
type(scope): description
feat(auth): add login functionality
fix(ui): resolve button alignment issue
docs(readme): update installation instructions
-
Code Quality
- ESLint for linting
- Prettier for formatting
- Husky for pre-commit hooks
-
Git Workflow
- Feature branches
- Pull request reviews
- Conventional commits
-
Testing (Coming Soon)
- Unit tests with Vitest
- E2E tests with Playwright
- React Fundamentals: Learn modern React patterns
- State Management: Understand Zustand vs Context
- UI Development: Master Material-UI components
- Form Handling: Practice with React Hook Form
- Code Quality: Learn ESLint and Prettier
- TypeScript Migration: Help migrate from JavaScript
- Testing Implementation: Set up Vitest and Playwright
- Performance Optimization: Optimize bundle size and runtime
- Architecture Patterns: Improve code organization
- CI/CD: Enhance deployment pipeline
- β Modern React development
- β TypeScript implementation
- β UI/UX design principles
- β State management patterns
- β Testing strategies
- β Code quality practices
- β Git workflow
- β Performance optimization
- β Internationalization
- β Progressive Web Apps
Check out the live application: chikrice.khaled-javdan.com
This project is licensed under the MIT License - see the LICENSE file for details.
- Material-UI for the excellent component library
- Vite for the fast build tool
- All contributors who help make this project better
Ready to level up your skills? π
Made with β€οΈ by the Chikrice community