Welcome to Mood Tracker, a comprehensive mobile application designed to help users monitor their emotional well-being through daily mood tracking, journaling, and a rewarding gamification system. The app provides seamless authentication, multilingual support, and dynamic theming for an enhanced user experience.
The design inspirations came from this: Figma user and also from this Dribble pageBuilt by Nkpozi Marcel Kelechi || (X: @Captured-Heart)
mood_tracker_demo.mp4
This project demonstrates the following Flutter development practices: clean architecture, state management with Riverpod, local data persistence with Hive, and modern UI animations.
- Mood Tracking: Daily mood selection with visual feedback and calendar integration
- Journal Management: Create, edit, delete journal entries with mood associations
- Rewards & Gamification: Point system, achievement badges, and progress tracking
- Localization: Switch between English and German languages seamlessly
- Theme Management: Light, Dark, and System theme modes with user preferences
- API Demo: Integration with OpenLibrary API showcasing REST operations
- Offline Support: Local data persistence with Hive for offline functionality
After cloning this repository:
The app runs on:
- Flutter: >=3.29.0
- Dart: >=3.7.0 <4.0.0
Install fvm if not already installed:
dart pub global activate fvmInstall the local flutter version:
fvm installflutter clean && flutter pub getflutter run- User Registration & Login with email validation
- Secure Storage using flutter_secure_storage
- Session Management with persistent user data
- Form Validation with custom validators
- Visual Mood Selection (Awesome, Good, Sad, Horrible)
- Daily Mood Limits - One mood entry per day
- Calendar Integration with table_calendar for mood history
- Mood Statistics and trend visualization
- Rich Text Journaling with Moods with mood associations
- CRUD Operations - Create, Read, Update, Delete entries
- Point System based on mood entries (Awesome: 10pts, Good: 5pts, etc.)
- Achievement Badges (Bronze, Silver, Gold, Platinum)
- Progress Tracking with statistics dashboard
- Reward Notifications with confetti animations
- Multi-Language Support (English, German)
- Dynamic Language Switching with persistent preferences
- Easy Localization Integration
- Three Theme Modes: Light, Dark, System
- Persistent Theme Preferences using Hive storage
- REST API Demo with OpenLibrary integration
- Network Connectivity checking
- Error Handling with retry mechanisms
- Loading States and user feedback
- Flutter Riverpod for reactive state management
- AsyncNotifier for handling async operations
- Provider composition for dependency injection
- Hive Database for local data storage
- Custom Adapters for data serialization
- Secure Storage for sensitive information
lib/
βββ constants/ # App constants and enums
βββ hive_helper/ # Database configuration
βββ src/
β βββ data/ # Controllers and repositories
β βββ domain/ # Entities and repository interfaces
β βββ presentation/ # UI components and views
βββ utils/ # Utility functions
- flutter_riverpod: State management solution
- hive: Local database for data persistence
- easy_localization: Internationalization support
- dio: HTTP client for API calls
- table_calendar: Calendar widget for mood history
- flutter_animate: Rich animations
- flutter_slidable: Swipe actions for list items
- confetti: Celebration animations
- flutter_secure_storage: Secure data storage
- uuid: Unique identifier generation
- internet_connection_checker_plus: Network connectivity
- Clean Architecture with clear separation of concerns
- Repository Pattern for data abstraction
- MVVM Pattern with Riverpod state management
- Dependency Injection for testable code
- Error Handling with custom result types
- Fork the repository
- Create your 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