AI-powered nutrition tracking app for iOS and Android. Snap a photo of your food, scan a barcode, or log meals manually โ Whole Fit handles the rest.
- AI Food Recognition โ Point your camera at any meal and get instant calorie/macro estimates via Google Gemini Vision
- Barcode Scanner โ Look up packaged foods through OpenFoodFacts
- Daily Dashboard โ Animated progress rings for calories, protein, carbs, and fats
- Meal History & Analytics โ Charts and trends over time (Gifted Charts)
- AI Nutrition Chatbot โ Ask questions, get meal suggestions, track goals conversationally
- AI Body Scan โ Visual body composition estimates from photos
- Muscle League โ Gamification system with streaks, XP, and leaderboards
- Community Feed โ Share meals and progress with other users
- Personal Records โ Track PRs across nutrition and fitness milestones
- Reminders โ Push notifications for meals and water intake
- Fully Offline โ All data stored locally in SQLite; works without internet
- Dark Mode โ Follows system preference or manual toggle
- Premium Tier โ Extended AI message limits and advanced features
| Layer | Tools |
|---|---|
| Framework | React Native 0.81, Expo SDK 54, TypeScript |
| Styling | NativeWind (Tailwind for RN), Reanimated |
| Navigation | React Navigation v6 |
| State | Zustand + Immer |
| Database | Expo SQLite |
| AI | Google Gemini (@google/generative-ai) |
| Food Data | OpenFoodFacts API |
| Charts | Gifted Charts |
| Testing | Jest (unit), Detox (E2E) |
Prerequisites: Node.js 18+, an Expo account, and a Gemini API key.
# Clone and install
git clone <repo-url> && cd FitTrack
npm install
# Add your Gemini key in app.json โ expo.extra.geminiApiKey
# or update src/services/geminiAPI.ts directly
# Start dev server
npx expo start
# Run on device/simulator
npx expo run:ios # iOS simulator
npx expo run:android # Android emulatorFor development builds with native modules (camera, notifications, SQLite):
npm run dev # starts with expo-dev-clientsrc/
components/ UI components (progress rings, food cards, etc.)
screens/ All app screens
navigation/ Tab and stack navigators
services/ Gemini API, OpenFoodFacts, SQLite queries
store/ Zustand stores (meals, user, settings)
hooks/ Custom React hooks
analytics/ Tracking and chart logic
constants/ App-wide constants and config
types/ TypeScript type definitions
utils/ Helpers and validators
data/ Static/seed data
e2e/ Detox end-to-end tests
assets/ Icons, splash screen, fonts
MIT