🏋️♂️ Fit.ix - Smart Fitness & Nutrition Tracker
Fit.ix is a holistic Android fitness application designed to help users track their health journey seamlessly. Built with Kotlin and Jetpack Compose, it combines workout logging, nutrition tracking, and hydration monitoring with engaging gamification elements like leaderboards and achievements. The app features a robust Offline-First architecture, ensuring data is saved locally via Room and synchronized with Firebase when online.
🚀 Features
🏃♂️ Activity & Workout
- Custom Workout Logging: Record various exercises including sets, reps, and weights.
- Workout History: View detailed logs of past workouts to track consistency.
- Visual Guides: Integrated illustrations for different equipment (Dumbbells, etc.).
🍎 Nutrition & Hydration
- Meal Tracking: Log Breakfast, Lunch, Dinner, and Snacks to keep track of calorie intake.
- Water Monitor: Dedicated water intake tracker with visual progress indicators.
- Dietary Analysis: Monitor nutrition goals versus actual consumption.
📊 Analytics & Progress
- Dashboard: A central hub displaying daily summaries and streak info.
- Interactive Charts: Visual graphs to analyze weight trends and activity levels over time.
- Progress Insights: Dedicated screen to review long-term health improvements.
🏆 Gamification & Social
- Leaderboard: Compete with friends or the community to stay motivated.
- Achievements: Unlock trophies and badges for reaching milestones (e.g., "7 Day Streak").
🛠 Tech Stack
📱 Android Frontend
- Language: Kotlin
- UI Framework: Jetpack Compose (Material 3) & XML Views (Hybrid)
- Architecture: MVVM (Model-View-ViewModel)
- Navigation: Jetpack Navigation & Intents
💾 Data & Backend
- Local Database: Room Database (SQLite) for offline data persistence.
- Cloud Backend: Firebase Realtime Database / Firestore.
- Synchronization: Custom
SyncManagerto handle offline-to-online data consistency. - Session Management: Shared Preferences for user session handling.
🎨 UI/UX Assets
- Custom Fonts: Integration of Google Fonts (Poppins, Montserrat, Work Sans).
- Animations: Custom transition animations (
slide_in_left,slide_out_right).
📂 Project Structure
Fit.ix/
├── app/
│ ├── src/main/java/com/example/fitix/
│ │ ├── roomDB/ # Room Database Entities, DAOs, & ViewModels
│ │ ├── syncData/ # Logic for syncing Room <-> Firebase
│ │ ├── ui/theme/ # Jetpack Compose Screens & Theme definitions
│ │ │ ├── AddWorkoutScreen.kt
│ │ │ ├── NutritionScreen.kt
│ │ │ ├── Leaderboard.kt
│ │ │ └── ...
│ │ ├── util/ # Utility classes (Network checking, etc.)
│ │ ├── MainActivity.kt # Entry point
│ │ └── ...
│ └── res/ # XML Layouts, Drawables, Fonts, Animations
⚙️ Setup & Installation
Prerequisites
- Android Studio (Koala/Ladybug or newer)
- Java JDK 17+
- Firebase Account
1. Clone the Repository
git clone [https://github.com/your-username/fit-track-project.git](https://github.com/your-username/fit-track-project.git)
cd fit-track-project
2. Configure Firebase
- Go to the Firebase Console.
- Create a new project.
- Add an Android App with package name:
com.example.fitix. - Download the
google-services.jsonfile. - Place the file in the
app/directory:app/google-services.json
3. Build & Run
- Open the project in Android Studio.
- Sync Gradle files.
- Connect a physical device or start an emulator.
- Click Run.
🔄 Synchronization Architecture
The app uses a custom repository pattern to handle data:
- Read: Always reads from the Local Repository (Room) for instant UI updates.
- Write: Writes to Room first.
- Sync: The
SyncManagerobserves network connectivity (Network.kt). When internet is available, it pushes pending local changes to Firebase and pulls remote updates.
🤝 Contributing
Contributions are welcome!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/NewFeature) - Commit your Changes (
git commit -m 'Add NewFeature') - Push to the Branch (
git push origin feature/NewFeature) - Open a Pull Request
📜 License
This project is licensed under the MIT License.
Built With
- kotlin
Log in or sign up for Devpost to join the conversation.