- Overview
- Why Choose This Project?
- Key Features
- Technology Stack
- Components Used
- Quick Start
- Getting Started
- Installation
- Project Structure
- Application Modules
- Troubleshooting
- Community & Support
- License
A production-ready React Fitness Tracker Dashboard built with Syncfusion Essential JS 2 (EJ2) components. This comprehensive health monitoring platform demonstrates best practices for building scalable, interactive wellness applications that track daily activities, dietary habits, fasting routines, and fitness progress through beautiful, intuitive visualizations.
Perfect for:
- πͺ Personal fitness enthusiasts
- π₯ Health and wellness applications
- π Nutritional tracking platforms
- π’ Corporate wellness programs
- π Health analytics dashboards
- π Integration with wearables and health APIs
β¨ Modular Architecture - Four independent micro-frontend modules using Webpack Module Federation
β¨ Enterprise-Grade Components - Syncfusion EJ2's 50+ React components for professional UI
β¨ Real-Time Data - Live updates with mock data (ready for API integration)
β¨ Responsive Design - Seamless experience across desktop, tablet, and mobile devices
β¨ Developer Friendly - Clean, well-organized code structure for easy maintenance
β¨ Production Ready - Complete error handling, state management, and best practices
- Activities: Track daily steps, calories burned, and workout details
- Diet: Monitor nutritional intake with detailed macro/micronutrient breakdown
- Fasting: Track intermittent fasting windows with real-time progress
- Profile: Manage personal health goals and body metrics
- Real-time step count and calorie burn tracking
- Daily workout logging with 4 activity types (Running, Swimming, Walking, Yoga)
- Distance and duration metrics with automatic calorie calculations
- Historical activity trends with weekly and monthly visualizations
- Weekly/Monthly comparison charts for progress analysis
- 5-meal daily tracking system (Breakfast, Snack 1, Lunch, Snack 2, Dinner)
- Rich food database with 15+ pre-configured meal items
- Complete nutritional breakdown: Calories, Proteins, Carbs, Fats, Calcium, Iron, Sodium
- Visual doughnut charts for macro/micronutrient distribution
- Adjustable calorie goals and meal recommendations
- Customizable fasting schedule with real-time countdown
- Visual progress tracking with percentage completion
- Elapsed time vs. remaining time display
- Historical fasting performance with weight tracking charts
- Monthly weight trend visualization
- Comprehensive health profile with personal metrics
- Height and weight tracking with multiple unit options (KG/LB, CM/Inches)
- Goal setting and progress monitoring
- Theme preferences (Light/Dark mode)
- Location and contact information storage
- Interactive Line & Column Charts - Activity and diet trends
- Circular Gauges - Daily goal progress indicators
- Linear Gauges - Water intake status with real-time updates
- Doughnut Charts - Nutritional breakdown analysis
- Responsive Tab Navigation - Smooth module switching
- Daily water consumption monitoring with visual gauges
- Meal-based water logging (Breakfast, Lunch, Evening)
- Water intake status indicators (Poor β Good β Almost β Perfect!)
- Expected vs. consumed water amount tracking
- Real-time hydration status updates
Built with modern, battle-tested technologies trusted by Fortune 500 companies:
| Technology | Version | Why We Use It |
|---|---|---|
| React | 19.x | Modern reactive UI framework with excellent performance |
| Node.js | 14+ | Reliable server runtime for build tools |
| npm | 6+ | Industry-standard package management |
| Webpack | 5.x | Powerful module bundler with Module Federation support |
| Babel | 7.x | Latest JavaScript transpilation for browser compatibility |
Syncfusion Essential JS 2 (EJ2) is a comprehensive, production-ready UI component library with:
- β 50+ React components for building complex interfaces
- β Enterprise support with guaranteed maintenance
- β Accessibility compliance (WCAG standards)
- β Multiple themes (Material, Bootstrap, Fabric, Tailwind)
- β 120+ countries support in 60+ languages
Used Components:
{
"@syncfusion/ej2-react-buttons": "*", // Action buttons & controls
"@syncfusion/ej2-react-calendars": "*", // Date & time pickers
"@syncfusion/ej2-react-circulargauge": "*", // Progress indicators
"@syncfusion/ej2-react-grids": "*", // Data grids & tables
"@syncfusion/ej2-react-inputs": "*", // Text inputs & validators
"@syncfusion/ej2-react-lineargauge": "*", // Linear progress gauges
"@syncfusion/ej2-react-navigations": "*", // Tab & navigation controls
"@syncfusion/ej2-react-popups": "*" // Dialogs & popups
}- Webpack 5 Module Federation - Micro-frontend architecture support
- Webpack Dev Server - Hot module reloading for fast development
- Gulp - Automated build tasks and asset processing
- Babel Loader - ES6+ JavaScript transpilation
- CSS/PostCSS - Advanced styling and autoprefixing
This application showcases 11 core Syncfusion components, demonstrating professional UI/UX best practices:
| Component | Purpose | Use Case |
|---|---|---|
| TabComponent π | Main navigation system | Switch between Activities, Diet, Fasting, Profile modules |
| CircularGaugeComponent π― | Goal progress visualization | Daily step goals, fasting progress, target tracking |
| LinearGaugeComponent π | Continuous progress tracking | Water intake levels, hydration status |
| ChartComponent π | Time-series data visualization | Activity trends, weekly/monthly comparisons |
| AccumulationChartComponent π₯§ | Pie/Doughnut charts | Nutritional breakdown (macros & micros) |
| DataGridComponent π | Data tables & lists | Workout history, meal logs, activity records |
| ButtonComponent π | Interactive controls | Add menu, change fasting time, update profile |
| DatePickerComponent π | Date selection | Historical data viewing, date filtering |
| TimePickerComponent β° | Time selection | Fasting start/end time configuration |
| DialogComponent π¬ | Modal dialogs | Menu selection, profile editing, confirmations |
| NumericTextBoxComponent π’ | Numeric inputs | Weight, height, calorie goals, measurements |
Why These Components? β Fully responsive and mobile-optimized β Built-in accessibility (WCAG compliant) β Touch-friendly for mobile devices β Lightweight with excellent performance β Easy to customize and theme
This application uses Webpack Module Federation, so you need to run multiple applications simultaneously.
Open 5 separate PowerShell windows and run these commands in order:
# Window 1 - Activities Module (Port 8051)
cd Activities; npm install; npm run start
# Window 2 - Profile Module (Port 8052)
cd Profile; npm install; npm run start
# Window 3 - Diet Module (Port 8053)
cd Diet; npm install; npm run start
# Window 4 - Fasting Module (Port 8054)
cd Fasting; npm install; npm run start
# Window 5 - Main Dashboard (Port 8050)
npm install; npm run startβ All servers running? Open http://localhost:8050 in your browser and start tracking!
You should see:
- β Fitness Tracker Dashboard loads with real-time data
- β 4 navigation tabs: Activities, Diet, Fasting, Profile
- β Interactive charts and gauges with live data
- β Zero console errors (press F12 to verify)
- β Smooth tab switching with instant module loading
π For detailed step-by-step setup instructions and troubleshooting, see SETUP_GUIDE.md
| Benefit | Description |
|---|---|
| Learn Micro-Frontends ποΈ | Real-world Webpack Module Federation implementation |
| Master Syncfusion π¨ | Hands-on experience with 11+ enterprise UI components |
| Best Practices β | Production-ready patterns and architecture |
| Full Documentation π | Comprehensive guides with troubleshooting |
| Modern Stack π | React 19, Webpack 5, latest development tools |
| Portfolio Ready πΌ | Showcase-quality code for job interviews |
| Advantage | Impact |
|---|---|
| Modular Design | Teams can work on modules independently |
| Scalable | Easy to add new features or modules |
| Maintainable | Clean code structure reduces tech debt |
| Enterprise Ready | Syncfusion's commercial support available |
| Real-Time Updates | Live data with mock services (ready for APIs) |
| Responsive | Works perfectly on all devices |
- π° Cost-Effective - Start with mock data, integrate real APIs gradually
- π Analytics Ready - Built-in tracking and data visualization
- π Secure Foundation - Enterprise-grade Syncfusion components
- π Global Scale - Multi-language, multi-timezone support
- π± Future-Proof - Modern tech stack with long-term support
- π― Customizable - Multiple themes and easy branding
Before you begin, ensure you have the following installed:
- Node.js (v14.0 or higher)
- npm (v6.0 or higher)
- Git (for cloning the repository)
| Requirement | Specification |
|---|---|
| OS | Windows, macOS, Linux |
| RAM | 4GB minimum |
| Browser | Chrome, Firefox, Safari, or Edge (latest versions) |
git clone https://github.com/syncfusion/ej2-react-fitness-application.git
cd ej2-react-fitness-applicationnpm installThis installs all required packages including Syncfusion EJ2 components and React dependencies.
The application uses Webpack Module Federation to load micro-frontend modules. Each module must run on its own port before starting the main application.
Important: Open separate terminal/PowerShell windows for each micro-frontend.
cd Activities
npm install
npm run startcd Profile
npm install
npm run startcd Diet
npm install
npm run startcd Fasting
npm install
npm run startIn a new terminal/PowerShell window:
npm run startThe main dashboard will open automatically at http://localhost:8050 in your default browser.
| Module | Port | URL |
|---|---|---|
| Main Dashboard | 8050 | http://localhost:8050 |
| Activities | 8051 | http://localhost:8051 |
| Profile | 8052 | http://localhost:8052 |
| Diet | 8053 | http://localhost:8053 |
| Fasting | 8054 | http://localhost:8054 |
Note: All micro-frontend modules must be running before accessing the main dashboard. If a module is not running, you will see a loading error.
Main Application:
npm run start- Start main dashboard (Port 8050)npm run start:live- Start with live reload enablednpm run build- Build production versionnpm run build:dev- Build development versionnpm run build:start- Build and serve on port 8080
Micro-Frontend Modules:
npm run start- Start individual module on assigned portnpm run build- Build module for production
ej2-react-fitness-application/
β
βββ src/ # Main application
β βββ App.jsx # Root component
β βββ index.js # Entry point
β βββ index.css # Global styles
β βββ tab.js # Tab navigation component
β βββ LinearGauge.js # Linear gauge component
β βββ DietDialog.js # Diet menu dialog
β βββ FastingDialog.js # Fasting config dialog
β βββ ProfileDialog.js # Profile edit dialog
β βββ assets/ # Images and fonts
β
βββ Activities/ # Activities module
β βββ src/
β β βββ App.jsx
β β βββ Activities.js
β β βββ index.js
β β βββ index.css
β βββ package.json
β βββ webpack.config.js
β
βββ Diet/ # Diet tracking module
β βββ src/
β β βββ App.jsx
β β βββ Diet.js
β β βββ index.js
β β βββ index.css
β βββ package.json
β βββ webpack.config.js
β
βββ Fasting/ # Fasting tracking module
β βββ src/
β β βββ App.jsx
β β βββ Fasting.js
β β βββ CircularGuage.js
β β βββ LinearGuage.js
β β βββ ChartData.js
β β βββ index.js
β β βββ index.css
β βββ package.json
β βββ webpack.config.js
β
βββ Profile/ # User profile module
β βββ src/
β β βββ App.jsx
β β βββ Profile.js
β β βββ index.js
β β βββ index.css
β βββ package.json
β βββ webpack.config.js
β
βββ webpack.config.js # Webpack configuration
βββ package.json # Project dependencies
βββ .babelrc # Babel configuration
βββ gulpfile.js # Gulp build tasks
βββ index.html # HTML template
βββ README.md # Documentation
| Directory | Purpose |
|---|---|
| src/ | Main dashboard application with tab navigation |
| Activities/ | Activity tracking with workout and step data |
| Diet/ | Meal planning and nutritional tracking |
| Fasting/ | Intermittent fasting window tracking |
| Profile/ | User profile and health metrics management |
Displays daily workout activities including:
- Running, Swimming, Walking, Yoga tracking
- Distance and duration metrics
- Calorie burn calculation
- Weekly/Monthly activity charts
- Port: 8051
Manages nutritional tracking with:
- 5 meal periods: Breakfast, Snack 1, Lunch, Snack 2, Dinner
- Predefined food items with nutritional data
- Calorie, protein, carbs, fat, calcium, iron, and sodium tracking
- Nutritional breakdown pie chart
- Port: 8053
Tracks intermittent fasting with:
- Customizable fasting start and end times
- Real-time countdown and elapsed time display
- Progress percentage visualization
- Weight tracking chart with monthly data
- Port: 8054
Manages user health information:
- Personal details (name, age, location, email)
- Body metrics (weight, height, goal weight)
- Unit selection (KG/LB for weight, CM/Inches for height)
- Theme preference (Light/Dark mode)
- Port: 8052
Causes:
- Micro-frontend modules are not running on their respective ports
- Port conflicts with other applications
- Module failed to start due to dependency issues
Solution:
-
Verify all four micro-frontend modules are running on their correct ports:
- Activities: http://localhost:8051
- Profile: http://localhost:8052
- Diet: http://localhost:8053
- Fasting: http://localhost:8054
-
If a module fails to start, check the terminal output for errors and try reinstalling dependencies:
cd <ModuleName> Remove-Item -Recurse -Force node_modules Remove-Item package-lock.json npm install npm run start
-
Check browser console (F12) for detailed error messages.
Error: Port 8050/8051/8052/etc. is already in use
Solution:
-
Find and kill the process using the port:
# Find process using specific port netstat -ano | findstr :8050 # Kill the process (replace PID with the process ID from above) taskkill /PID <PID> /F
-
Or change the port in
webpack.config.jsand corresponding micro-frontend config files.
Error: React version mismatch or Dependency conflict
Solution: Ensure all modules use the same dependency versions:
# Clear all node_modules and reinstall
cd ej2-react-fitness-application
Remove-Item -Recurse -Force node_modules, Activities/node_modules, Diet/node_modules, Fasting/node_modules, Profile/node_modules
Remove-Item package-lock.json, Activities/package-lock.json, Diet/package-lock.json, Fasting/package-lock.json, Profile/package-lock.json
npm install
cd Activities; npm install; cd ..
cd Diet; npm install; cd ..
cd Fasting; npm install; cd ..
cd Profile; npm install; cd ..Causes:
- Module Federation failed to initialize
- Network request to remote module failed
- JavaScript error in module
Solution:
- Check browser DevTools (F12) β Console tab for errors
- Check browser DevTools β Network tab to see if remote modules are loading
- Verify all micro-frontend servers are running and accessible
- Clear browser cache (Ctrl+Shift+Delete) and refresh
Cause: Hot module replacement not working due to caching
Solution:
- Stop the development server (Ctrl+C)
- Clear browser cache
- Restart the micro-frontend module:
npm run start
- Hard refresh browser (Ctrl+Shift+R or Cmd+Shift+R)
- All 4 micro-frontend modules are running (check all terminal windows)
- Main application is running on port 8050
- No port conflicts (all services on different ports)
- Browser console shows no errors (F12)
- All URLs are accessible in browser address bar
- Network requests in DevTools show successful responses (200 status)
- π Syncfusion Documentation - Complete EJ2 React documentation
- π¬ Syncfusion Forums - Active community support
- π₯ Video Tutorials - Learn from Syncfusion team
- π Code Examples - 1000+ examples gallery
- π GitHub Issues - Report bugs and suggest features
Built with the technologies developers love:
React 19 β‘ | Webpack 5 π¦ | Syncfusion EJ2 π¨ | Node.js π
If you find this project helpful, please:
- β Star this repository
- π Share with your team
- π’ Mention in your portfolio
- π¬ Contribute improvements
This project is licensed under Syncfusion Evaluation License.
Usage Rights:
- β Free for evaluation and development
- β Educational and learning purposes
- β Internal team projects
- β Production deployment (requires commercial license)
- β Redistribution without commercial license
For commercial licensing, contact Syncfusion Sales
See the license file for complete terms.
Thank you for exploring this Fitness Tracker Dashboard! We hope this helps you:
- π Master modern React development
- π§ Learn advanced patterns with Syncfusion
- π Understand micro-frontend architecture
- π‘ Build better applications
Made with β€οΈ using Syncfusion EJ2
Version: 1.0.0 | Last Updated: January 2026 | Status: β Production Ready