A comprehensive, privacy-first fitness companion & PWA
Built with React, Vite, Tailwind CSS, and AI.
- Overview
- Core Features
- Tech Stack
- PWA Highlights
- Future Enhancements
- Project Objectives
- Installation & Local Setup
- Deployment
- Live Demo
- Acknowledgements
Striven is a robust, non-commercial fitness application designed to run entirely in the browser. Unlike simple step counters, Striven is a full-featured workout companion that combines real-time activity tracking with advanced workout planning and AI-powered nutrition analysis.
It prioritizes data sovereignty: all user data (workouts, history, logs) is stored locally on the device using IndexedDB. No accounts, no cloud servers, and no tracking.
- Real-Time Pedometer: Uses
DeviceMotionEventand Generic Sensor APIs for accurate step counting. - Live Metrics: Tracks distance, calories burned, and active duration.
- Apple-Style Rings: Visual daily progress for Move, Exercise, and Stand goals.
- Live Location Tracking: Syncs the user’s real-time location during workouts using Leaflet and Nominatim so routes are mapped as they move.
- Custom Plans: Create and manage weekly workout routines.
- Session Mode: "Today's Workout" interface with built-in rest timers and set logging.
- PR Tracking: Automatically tracks Personal Records (1RM) for every exercise.
- History: Detailed logs of sets, reps, and weights.
- Smart Recognition: Snap a photo of your meal to identify it using Google Gemini Vision AI.
- Fallback Systems: robust error handling with Hugging Face and OpenFoodFacts database fallbacks.
- Macro Estimation: Instantly estimates calories, protein, carbs, and fats.
- Visual Database: Searchable library with GIFs/Videos for thousands of exercises.
- Smart Instructions: Parsed step-by-step guides and "Pro Tips".
- Filtering: Filter by body part, category, or equipment.
- Local Storage: Powered by Dexie.js (IndexedDB wrapper) for high-performance local data.
- Backup & Restore: Full JSON export/import functionality to move data between devices.
| Category | Technology |
|---|---|
| Frontend | React.js (Vite) |
| Styling | Tailwind CSS, Framer Motion (Animations) |
| State/Logic | React Context API, Custom Hooks |
| Database | Dexie.js (IndexedDB) |
| AI & Vision | Google Gemini API, Hugging Face Inference API |
| External Data | ExerciseDB (RapidAPI), OpenFoodFacts |
| Sensors | DeviceMotionEvent, Accelerometer API |
| PWA | Service Workers, Manifest for installability |
- 🌐 Offline Capable: Core features work without internet access.
- 📲 Installable: Add to Home Screen on iOS and Android.
- ⚡ Performance: GPU-accelerated animations and memoized components for 60fps performance.
To run Striven locally, you will need API keys for the external services (Google Gemini, RapidAPI, HuggingFace).
-
Clone the repository
git clone https://github.com/yourusername/striven.git cd striven -
Install dependencies
npm install
-
Environment Setup Create a
.envfile in the root directory:VITE_RAPIDAPI_KEY=your_rapidapi_key VITE_GOOGLE_API_KEY=your_gemini_key VITE_HUGGINGFACE_API_KEY=your_huggingface_key
-
Run Development Server
npm run dev
- ☁️ Optional encrypted cloud sync.
- ⌚ WearOS / WatchOS companion app.
- 🥗 Detailed macro nutrient breakdown charts.
- 🏆 Gamification and achievement system.
Distributed under the MIT License. See LICENSE for more information.
- Rodney Austria - Creator & Lead Developer
- ExerciseDB - For the comprehensive workout data.
- OpenFoodFacts - For the open nutrition database.
