🏋️‍♂️ 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 SyncManager to 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

  1. Go to the Firebase Console.
  2. Create a new project.
  3. Add an Android App with package name: com.example.fitix.
  4. Download the google-services.json file.
  5. 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:

  1. Read: Always reads from the Local Repository (Room) for instant UI updates.
  2. Write: Writes to Room first.
  3. Sync: The SyncManager observes network connectivity (Network.kt). When internet is available, it pushes pending local changes to Firebase and pulls remote updates.

🤝 Contributing

Contributions are welcome!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/NewFeature)
  3. Commit your Changes (git commit -m 'Add NewFeature')
  4. Push to the Branch (git push origin feature/NewFeature)
  5. Open a Pull Request

📜 License

This project is licensed under the MIT License.

Built With

  • kotlin
Share this project:

Updates