An ML-Powered Fitness & Health Recommendation Platform
FitAI replaces generic wellness advice by passing your physiological footprint straight into a Random Forest predictive engine — delivering personalized diet plans, exercise routines, and caloric forecasts through a beautiful, theme-aware dashboard.
Forked and built upon the original project: Fitness and health Recommendation system
FitAI is a full-stack, AI-powered health and fitness recommendation system designed as a comprehensive mini-project for the Introduction to AI & Data Science open elective. The platform leverages three trained scikit-learn machine learning models to deliver hyper-personalized fitness recommendations based on a user's physiological profile, health goals, and vital statistics.
- 3 ML Models — Random Forest Regressor for calorie prediction + 2 Random Forest Classifiers for diet & exercise recommendations
- Interactive Dashboards — Recharts-powered visualizations including Weight/BMI trends, Caloric breakdown, and Radar fitness profiles
- Secure Authentication — JWT-based login/register with bcrypt password hashing via SQLite
- Progress Tracking — Full historical data persistence through MongoDB with time-series analysis
- 3 Premium Themes — Minimalist White, Space Black, and Cyberpunk Neon with glassmorphism design
- Animated UI — Framer Motion page transitions, parallax starry backgrounds, and micro-interactions
- Privacy-First — Complete account and data wiping across both SQLite and MongoDB stores
- BMR Calculations — Mifflin-St Jeor equation with activity-factor multipliers for precise metabolic estimates
┌─────────────────────────────────────────────────────────────────┐
│ CLIENT (Browser) │
│ React 19 + Vite 8 + Tailwind CSS + Recharts + Framer Motion │
│ │
│ ┌──────────┐ ┌───────────┐ ┌──────────┐ ┌────────────┐ │
│ │ Landing │ │ Dashboard │ │ Progress │ │ Settings │ │
│ │ Page │ │ Page │ │ Page │ │ Page │ │
│ └────┬─────┘ └─────┬─────┘ └────┬─────┘ └─────┬──────┘ │
│ │ │ │ │ │
│ └──────────────┴────────────┴──────────────┘ │
│ Axios HTTP Client │
└──────────────────────────────┬───────────────────────────────────┘
│ REST API (JSON)
▼
┌──────────────────────────────────────────────────────────────────┐
│ SERVER (FastAPI + Uvicorn) │
│ │
│ ┌──────────────┐ ┌────────────────┐ ┌──────────────────┐ │
│ │ /auth Router │ │ /recommend │ │ /dashboard │ │
│ │ register │ │ ML Pipeline │ │ history │ │
│ │ login │ │ BMI + BMR │ │ metrics │ │
│ │ delete │ │ Predictions │ │ │ │
│ └──────┬───────┘ └───────┬────────┘ └────────┬─────────┘ │
│ │ │ │ │
│ ┌──────▼───────┐ ┌───────▼────────┐ ┌────────▼─────────┐ │
│ │ SQLite │ │ scikit-learn │ │ MongoDB │ │
│ │ (auth.db) │ │ .pkl Models │ │ (health_tracker) │ │
│ └──────────────┘ └────────────────┘ └──────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
Health Tracker/
├── .gitignore
├── README.md
│
├── backend/ # FastAPI + ML Backend
│ ├── main.py # App entry point, CORS, routers, lifecycle
│ ├── setup.py # Synthetic data generation + model training
│ ├── requirements.txt # Python dependencies
│ │
│ ├── data/ # Generated CSV datasets
│ │ ├── calories.csv # 1500 samples: gender, age, height, weight, etc.
│ │ └── recommend.csv # 1500 samples: goal_code, diet, exercise
│ │
│ ├── models/ # Trained ML model artifacts
│ │ ├── calorie_model.pkl # RandomForestRegressor (R² = 0.8786)
│ │ ├── diet_model.pkl # RandomForestClassifier (Accuracy ≈ 35%)
│ │ ├── exercise_model.pkl # RandomForestClassifier (Accuracy ≈ 31%)
│ │ └── metrics.json # Serialized evaluation metrics
│ │
│ ├── database/ # Database connection modules
│ │ ├── auth_db.py # SQLite + JWT + bcrypt auth utilities
│ │ └── mongo_db.py # Motor async MongoDB client
│ │
│ └── routers/ # FastAPI route handlers
│ ├── auth.py # Register / Login / Delete Account
│ ├── recommend.py # ML inference pipeline + BMR + BMI
│ └── dashboard.py # History retrieval + model metrics
│
└── frontend/ # React + Vite Frontend
├── index.html # HTML entry point
├── package.json # npm dependencies
├── vite.config.js # Vite dev server + proxy configuration
├── tailwind.config.js # Theme-aware custom design tokens
│
└── src/
├── main.jsx # React DOM root
├── App.jsx # Router + global layout shell
├── index.css # Design system: themes, glassmorphism, utilities
├── App.css # Legacy scaffold styles
│
├── hooks/
│ └── useTheme.js # Theme persistence hook (localStorage)
│
├── layouts/
│ └── DashboardLayout.jsx # Auth-gated outlet wrapper
│
├── pages/
│ ├── Landing.jsx # Hero + ML metrics radial charts
│ ├── Auth.jsx # Login / Register form
│ ├── Dashboard.jsx # Main AI workspace
│ ├── Progress.jsx # Historical trend analysis
│ └── Settings.jsx # Profile, raw logs table, account deletion
│
└── components/
├── Header.jsx # Nav bar + theme switcher + auth controls
├── Footer.jsx # Attribution footer
├── StarryBackground.jsx # Parallax star field animation
├── InputForm.jsx # Health metrics input form
├── ResultCards.jsx # KPI cards (BMI, BMR, Calories, etc.)
├── DietCards.jsx # Recommended diet plan display
├── ExerciseCards.jsx # ML workout routine display
├── PersonalizationPanel.jsx # AI explanation panel
└── Charts.jsx # WeightChart, CaloriesChart, FitnessRadarChart
| Requirement | Version |
|---|---|
| Python | 3.10+ |
| Node.js | 18+ |
| MongoDB | 6.x+ (running on localhost:27017) |
git clone https://github.com/your-username/health-tracker.git
cd health-trackercd backend
# Create and activate virtual environment
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS/Linux
# Install dependencies
pip install -r requirements.txt
# Generate datasets and train ML models
python setup.py
# Start the API server
python -m uvicorn main:app --reload --port 8000Note: Ensure MongoDB is running on
localhost:27017before starting the server. The API will be available athttp://127.0.0.1:8000.
cd frontend
# Install dependencies
npm install
# Start development server
npm run devThe frontend dev server runs at
http://localhost:5173and proxies API requests to the backend.
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | React 19, Vite 8 | Component-based SPA with HMR |
| Styling | Tailwind CSS 3.4, Custom CSS Variables | Theme system with glassmorphism utilities |
| Animations | Framer Motion 12 | Page transitions & micro-interactions |
| Charts | Recharts 3.8 | Line, Composed, Radar, RadialBar charts |
| Icons | Lucide React | Consistent SVG icon library |
| HTTP Client | Axios | Promise-based API communication |
| Routing | React Router DOM 7 | Client-side navigation with auth guards |
| Backend | FastAPI, Uvicorn | Async Python web framework with ASGI |
| ML Engine | scikit-learn (RandomForest) | Regression + Classification models |
| Data Processing | Pandas, NumPy | Feature engineering & dataset generation |
| Auth Database | SQLite 3 | User credentials with bcrypt hashing |
| Health Database | MongoDB (Motor async driver) | Time-series health history storage |
| Auth Tokens | python-jose (JWT), Passlib | Stateless authentication tokens |
| Serialization | Pydantic v2 | Request/response validation & schemas |
- Algorithm:
RandomForestRegressor(100 estimators) - Features: Gender, Age, Height, Weight, Activity Level, Heart Rate, Body Temperature
- Target: Calories Burned
- Performance: R² Score = 0.8786, MAE = ±12.68 kcal
- Algorithm:
RandomForestClassifier(50 estimators) - Features: Goal Code (Weight Loss / Maintenance / Weight Gain)
- Target: Structured diet plan string
- Performance: Accuracy = 35.33%
- Algorithm:
RandomForestClassifier(50 estimators) - Features: Goal Code (Weight Loss / Maintenance / Weight Gain)
- Target: Structured exercise routine string
- Performance: Accuracy = 31.00%
Note: Diet and exercise classifiers are trained on a multi-label text classification task with high cardinality targets, resulting in moderate accuracy. In production, these would be enhanced with NLP-based retrieval or collaborative filtering.
FitAI ships with three curated visual themes, switchable in real-time from the header:
| Theme | Background | Accent | Style |
|---|---|---|---|
| Minimalist White | #FAFAFA |
Blue #3B82F6 |
Clean, professional |
| Space Black | #0A0A0C |
White #FFFFFF |
Sleek, monochrome |
| Cyberpunk Neon | #0B0914 |
Violet #8B5CF6 |
Vibrant, futuristic |
All themes use CSS custom properties with a glassmorphism design system featuring backdrop blur, translucent panels, and smooth 300ms transitions.
| Method | Endpoint | Description |
|---|---|---|
POST |
/auth/register |
Register a new user account |
POST |
/auth/login |
Authenticate and receive JWT token |
DELETE |
/auth/account?username= |
Delete user account + all data |
POST |
/recommend/ |
Submit vitals → receive ML predictions |
GET |
/dashboard/history?username= |
Retrieve health history timeline |
GET |
/dashboard/metrics |
Fetch ML model performance metrics |
This project is developed as an academic mini-project for the Introduction to AI & Data Science open elective course.
© 2026 FitAI. All rights reserved.