Fit Track - AI-Powered Habit & Exercise Tracker
MIT LICENSE
Inspiration
The journey to fitness is often cluttered with complex apps, manual data entry, and a lack of clear progress visualization. We wanted to build Fit Track to strip away the noise and focus on what matters: consistency and progress.
Our inspiration came from the desire to make fitness tracking as frictionless as possible. We realized that the biggest barrier to tracking is the effort it takes to log data during a workout. This led us to integrate Voice Logging, allowing users to simply speak their workout, and let AI handle the rest. We aimed to create a tool that not only tracks data but helps users build lasting habits through visual feedback and a seamless user experience.
What it does
Fit Track is a comprehensive web application that serves as your personal fitness companion.
- AI Voice Logging: The standout feature. Users can click a microphone button and speak their workout (e.g., "I did 3 sets of bench press for 10 reps at 60kg"). The app records the audio, transcribes it, and uses Google Gemini to intelligently parse the natural language into structured workout logs automatically.
- Smart Workout Logging: For manual entry, we provide a streamlined interface to log exercise types, sets, reps, and weights, organized by custom sections (e.g., "Leg Day", "Push Day").
- Habit Tracking: Users can define daily or weekly habits (like "Drink 3L water", "Read 10 pages") and track their streaks.
- Interactive Dashboard: A central hub showing weekly progress, active streaks, and a snapshot of recent activities.
- Progress Visualization: Dynamic charts powered by Recharts visualize workout volume and consistency over time, helping users see their improvement.
- Week-by-Week History: Users can navigate through previous weeks to review past performance and ensure progressive overload.
How we built it
We adopted a modern, type-safe monorepo architecture to ensure robustness and developer velocity.
- Frontend: Built with React and Vite for a blazing fast experience. We used Tailwind CSS and Shadcn/ui for a premium, accessible, and responsive design. React Query handles data fetching and caching, ensuring the UI is always in sync with the server. Wouter provides lightweight routing.
- Backend: A Node.js and Express server acting as a Backend-for-Frontend (BFF). It handles API requests, validation, and orchestrates AI services.
- Database: We leveraged Appwrite as our backend-as-a-service (BaaS) for secure database storage, authentication, and file storage.
- AI Integration:
- ElevenLabs: Used for high-quality Speech-to-Text transcription of user voice logs.
- Google Gemini: The brain behind the operation. We prompt Gemini to analyze the transcribed text and extract structured JSON data (exercises, sets, reps, weights) to populate the database.
- Language: The entire stack is written in TypeScript, sharing Zod schemas between client and server for end-to-end type safety.
Challenges we ran into
- AI Parsing Accuracy: Getting the AI to reliably understand various ways users might phrase their workouts (e.g., "3x10 bench" vs "Bench press 3 sets of 10") required careful prompt engineering with Google Gemini.
- Audio Handling: capturing audio in the browser, converting it to the correct format, and securely uploading it to the server for processing was a multi-step challenge involving Blob handling and multipart form data.
- State Management: synchronizing complex nested data (weeks -> sections -> exercises -> sets) and ensuring the UI updates optimistically after an AI log was tricky. React Query's cache invalidation strategies were a lifesaver here.
- Date & Time Zones: Handling week ranges and ensuring workouts logged late at night appear in the correct "fitness week" required robust date manipulation logic.
Accomplishments that we're proud of
- Seamless Voice Interface: We are incredibly proud of the "Speak to Log" feature. It feels magical to just talk to the app and see the table fill up with accurate data seconds later.
- Modern & Clean UI: The application looks and feels professional. The dark mode aesthetic with vibrant accents makes it a joy to use.
- Full-Stack Type Safety: achieving a strictly typed codebase from the database layer up to the React components has significantly reduced bugs and improved our development speed.
- Real-time Feedback: The instant visualization of progress on the dashboard gives users immediate gratification for their efforts.
What we learned
- The Power of Multimodal AI: We learned how to effectively chain different AI models (Speech-to-Text + LLM) to solve real-world user problems.
- BaaS Efficiency: Using Appwrite allowed us to focus on building unique features (like the AI integration) rather than reinventing the wheel with auth and database boilerplate.
- User-Centric Design: We learned that removing friction (like manual typing) is the key to user retention in fitness apps.
- Monorepo Benefits: Keeping client and server code together simplified sharing types and keeping our API contracts in sync.
What's next for Fit Track
- Mobile Application: We plan to build a React Native mobile app to bring the voice logging experience to the gym floor more natively.
- Social Features: Adding leaderboards, workout sharing, and "gym buddy" features to increase motivation through community.
- Advanced Analytics: Implementing more granular stats, like "One Rep Max" estimation and volume progression charts per muscle group.
- Wearable Integration: Syncing data with Apple Health and Google Fit to provide a holistic view of the user's health.
Log in or sign up for Devpost to join the conversation.