Skip to content

Captured-Heart/mood_tracker_assessment

Repository files navigation

Mood Tracker Assessment - Flutter App

Mood Tracker Logo

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 page

Built by Nkpozi Marcel Kelechi || (X: @Captured-Heart)

Demo Video

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.

Demo Features Overview

- Authentication Flow: Complete user registration/login system with validation and secure storage
- 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

Getting Started

After cloning this repository:

FVM setup

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 fvm

Install the local flutter version:

fvm install

Dependencies Installation

flutter clean && flutter pub get

Run the Application

flutter run

Key Features

πŸ” Authentication System

  • User Registration & Login with email validation
  • Secure Storage using flutter_secure_storage
  • Session Management with persistent user data
  • Form Validation with custom validators

πŸ˜”πŸ₯³πŸ˜­πŸ˜† Mood Tracking

  • 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

πŸ“ Journal Entries

  • Rich Text Journaling with Moods with mood associations
  • CRUD Operations - Create, Read, Update, Delete entries

πŸ† Rewards & Gamification

  • 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

🌍 Internationalization

  • Multi-Language Support (English, German)
  • Dynamic Language Switching with persistent preferences
  • Easy Localization Integration

🎨 Dynamic Theming

  • Three Theme Modes: Light, Dark, System
  • Persistent Theme Preferences using Hive storage

πŸ”— API Integration

  • REST API Demo with OpenLibrary integration
  • Network Connectivity checking
  • Error Handling with retry mechanisms
  • Loading States and user feedback

UI Screenshots

Light Theme Screenshots

Light Theme 1 Light Theme 2 Light Theme 3 Light Theme 4
Light Theme 5 Light Theme 6 Light Theme 7 Light Theme 8

Dark Theme Screenshots

Dark Theme 1 Dark Theme 2 Dark Theme 3 Dark Theme 4
Dark Theme 5 Dark Theme 6 Dark Theme 7 Dark Theme 8

Technical Architecture

State Management

  • Flutter Riverpod for reactive state management
  • AsyncNotifier for handling async operations
  • Provider composition for dependency injection

Data Persistence

  • Hive Database for local data storage
  • Custom Adapters for data serialization
  • Secure Storage for sensitive information

Project Structure

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

Tools & Packages

Core Dependencies

UI & Animation

Utilities

Development Patterns

  • 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

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Made with πŸ’œ by Nkpozi Marcel Kelechi

Twitter β€’ GitHub β€’ LinkedIn β€’ Medium

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages