Transform daily wellness activities into an engaging adventure
FitQuest combines wellness tracking with gamification mechanics to create an engaging experience that motivates users to maintain healthy habits. Complete daily activities to earn XP and watch your virtual plant companion evolve from a tiny seed to a majestic ancient tree.
Earn XP by completing daily wellness activities:
- 🏃 Exercise: 50 XP per session (cardio, strength, yoga)
- 🧘 Meditation: 30 XP per session (5+ minutes)
- 💧 Hydration: 10 XP per glass (track your water intake)
- 😴 Sleep: 40 XP for 7-9 hours of quality rest
Watch your companion grow through 5 unique stages:
- Seed (0-100 XP) - Just beginning your journey
- Sprout (100-500 XP) - First signs of growth
- Sapling (500-1500 XP) - Building strong habits
- Tree (1500-5000 XP) - Thriving wellness routine
- Ancient Tree (5000+ XP) - Master of healthy living
- 🌟 Evolving Plant Companion - Watch your companion grow through 5 evolution stages as you progress
- 🎯 XP System - Earn experience points for completing wellness activities
- 🔥 Streak Tracking - Maintain daily streaks to maximize your growth
- ⚡ Combo Multipliers - Complete multiple activities for bonus XP
- 📈 Activity Dashboard - Visualize your progress with beautiful charts
- 📅 Calendar View - Track your consistency over time
- 💎 Weekly Goals - Set and achieve personalized targets
- 🎯 Activity History - Review all your logged activities
- 🥇 Global Leaderboards - Compete with users worldwide
- 👥 Friends System - Connect and challenge friends
- 🏅 Achievement System - Unlock 15+ unique badges
- 🎊 Milestone Celebrations - Celebrate your progress with animations
- 🌓 Dark Mode - Beautiful UI in light and dark themes
- 🔔 Smart Notifications - Timely reminders to maintain your streak
- 📱 Offline-First - Works seamlessly without internet connection
- 🌍 Multi-language Support - Available in multiple languages (coming soon)
- ♿ Accessibility - Designed with accessibility in mind
- Framework: Flutter 3.16.0
- Language: Dart 3.0+
- State Management: BLoC Pattern + Provider (for theme)
- Animations: Rive (plant animations), Lottie (UI animations), Custom Painters
- UI Components: Custom design system with Material 3
- Authentication: Firebase Auth (Email/Password, Google Sign-In)
- Database: Cloud Firestore (NoSQL, real-time sync, 40 MB cache limit)
- Storage: Firebase Cloud Storage (user avatars, plant images)
- Functions: Cloud Functions for Firebase (leaderboard calculations)
- Analytics: Firebase Analytics & Crashlytics
- Architecture: Clean Architecture with Repository Pattern
- Dependency Injection: GetIt + Injectable
- Local Storage: Hive (offline data), Shared Preferences (settings)
- Code Generation: Freezed, Json Serializable, Injectable
- Testing: Unit tests (mockito), Widget tests, Integration tests
📖 Documentation: See the docs/ folder for technical documentation.
Before you begin, ensure you have the following installed:
- ✅ Flutter SDK (3.16.0 or higher) - Install Flutter
- ✅ Dart SDK (3.0.0 or higher) - Included with Flutter
- ✅ Android Studio or Xcode (for mobile development)
- ✅ VS Code with Flutter extensions (recommended) - Setup VS Code
- ✅ Git - Install Git
- ✅ Firebase Account - Create Firebase Account
flutter doctor -vgit clone https://github.com/NickiMash17/fitquest-app.git
cd fitquest-appflutter pub get- Visit Firebase Console
- Click "Add project"
- Enter project name:
fitquest-app - Follow the setup wizard (disable Google Analytics for development)
-
Authentication
- Go to Authentication → Sign-in method
- Enable Email/Password
- Enable Google (optional)
-
Firestore Database
- Go to Firestore Database
- Click "Create database"
- Start in Test mode (for development)
- Choose your region
-
Storage
- Go to Storage
- Click "Get started"
- Start in Test mode
For Android:
- Click the Android icon in Project Overview
- Register app with package name:
com.nicolettemashaba.fitquest - Download
google-services.json - Place it in
android/app/directory
For iOS:
- Click the iOS icon in Project Overview
- Register app with bundle ID:
com.nicolettemashaba.fitquest - Download
GoogleService-Info.plist - Place it in
ios/Runner/directory
# Install FlutterFire CLI globally
dart pub global activate flutterfire_cli
# Configure Firebase for your project
flutterfire configureFollow the prompts and select your Firebase project.
# Run on Chrome (Web)
flutter run -d chrome
# Run on Android Emulator
flutter run -d android
# Run on iOS Simulator (Mac only)
flutter run -d ios
# Run on specific device
flutter devices # List available devices
flutter run -d <device-id>Android (APK)
flutter build apk --releaseAndroid (App Bundle - for Play Store)
flutter build appbundle --releaseiOS (Mac only)
flutter build ipa --releaseWeb
flutter build web --releaselib/
├── core/ # Core functionality (config, constants, services, theme)
│ ├── constants/ # App constants, colors, strings
│ ├── theme/ # Theme data, text styles
│ ├── utils/ # Helper functions, validators
│ ├── config/ # App configuration
│ ├── services/ # Core services
│ └── widgets/ # Core reusable widgets
├── features/ # Feature modules (feature-based structure)
│ ├── authentication/ # Auth feature (BLoC, pages, widgets)
│ ├── activities/ # Activity tracking feature
│ ├── home/ # Home screen feature
│ ├── goals/ # Goals feature
│ ├── profile/ # User profile, settings
│ ├── community/ # Leaderboards, friends, social features
│ └── onboarding/ # First-time user experience
├── shared/ # Shared code across features
│ ├── models/ # Data models (Freezed)
│ ├── repositories/ # Data repositories
│ ├── services/ # Business logic services
│ └── widgets/ # Reusable widgets
└── main.dart # App entry point
flutter testflutter test --coverage
lcov --list coverage/lcov.info # View coverage summaryflutter test integration_test/flutter test test/features/authentication/bloc/auth_bloc_test.dart- Unit Tests - Business logic, utilities, models
- Widget Tests - UI components, interactions
- Integration Tests - End-to-end user flows
- Golden Tests - Visual regression testing (coming soon)
- Technical Deep Dive - Architecture, design decisions, and implementation details
- Project setup and architecture
- Authentication system
- Basic activity tracking
- Plant companion mechanics
- XP and leveling system
- Celebration animations
- Theme system (light/dark mode)
- Firebase integration completion
- Real-time leaderboards
- Achievement system
- Push notifications
- Profile customization
- Social features (friends, challenges)
- Custom plant themes and shop
- Apple Health / Google Fit integration
- Advanced analytics dashboard
- Multi-language support
- AI-powered habit recommendations
- Community challenges
- Premium subscription tier
- Wearable device integration
- Desktop applications (Windows, macOS)
Symptoms: White/blank screen when running on web browser
Solutions:
- Check Browser Console (F12 → Console tab) for errors
- Hard Refresh:
Ctrl+Shift+R(Windows) orCmd+Shift+R(Mac) - Clear Browser Cache:
Ctrl+Shift+Delete→ Clear cached images and files - Try Incognito Mode: Open browser in incognito and navigate to localhost
Symptoms: No Firebase App '[DEFAULT]' has been created
Solutions:
# Re-run FlutterFire configuration
flutterfire configure
# Ensure google-services.json and GoogleService-Info.plist are in correct locations
# Clean and rebuild
flutter clean
flutter pub get
flutter runSymptoms: Console warnings about missing indexes
Solutions:
- These are warnings, not critical errors
- Click the provided link in the error message
- Firebase Console will auto-generate the required index
- Wait 2-5 minutes for index creation
Solutions:
flutter clean
flutter pub get
flutter pub upgrade
flutter runSymptoms: Port 8080 is already in use
Solutions:
# Use a different port
flutter run -d chrome --web-port=8081
# Or kill the process using the port (Windows)
netstat -ano | findstr :8080
taskkill /PID <PID> /F
# Or kill the process (Mac/Linux)
lsof -ti:8080 | xargs kill -9To see the onboarding screen again:
- Press F12 → Console tab
- Type:
localStorage.clear()and press Enter - Refresh the page (F5)
- 🐛 Open an Issue
- 📧 Email: nene171408@gmail.com
We love contributions! FitQuest is built by developers like you.
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow the existing code style and architecture patterns
- Write tests for new features
- Update documentation as needed
- Keep commits atomic and well-described
- Be respectful and constructive in discussions
- 🐛 Bug fixes
- ✨ New features
- 📝 Documentation improvements
- 🌍 Translations
- 🎨 UI/UX enhancements
- 🧪 Test coverage
- Project setup and architecture
- UI design system
- Navigation structure
- Authentication flow
- Activity tracking UI
- Plant companion visuals
- Celebration animations
- Data persistence
- Offline support
- Firestore integration
- Cloud storage setup
- Real-time sync
- Cloud functions
- Leaderboards
- Social features
- Notifications
- Analytics
- Unit test coverage (80%+)
- Integration tests
- Performance optimization
- Accessibility audit
- Beta testing
- App Store submission
- Play Store submission
- Web deployment
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2025 Nicolette Mashaba
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction...
Special thanks to:
- 💙 Flutter Team - For the amazing cross-platform framework
- 🔥 Firebase Team - For robust backend infrastructure
- 🎓 Jediah Codes - For the comprehensive learning path at jediah.dev
- 🌟 Open Source Community - For invaluable packages and support
- 🎨 Design Inspiration - Duolingo, Habitica, and Forest App
Special thanks to these amazing packages:
firebase_core&firebase_auth- Backend servicesflutter_bloc- State managementrive- Beautiful animationsfl_chart- Data visualizationhive- Local storageconfetti- Celebration animations
- 📖 Documentation - Comprehensive guides
- ❓ Stack Overflow - Technical questions
- 🐛 Issue Tracker - Report bugs
- ⭐ Star this repo to show support
- 👀 Watch for updates
- 📧 Subscribe to our newsletter (coming soon)