Skip to content

North-Abyss/Trackify-Flutter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

52 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Trackify

A Flutter habit-tracking application built as a learning project during the 100 Days of Code challenge. Trackify helps users build and maintain positive habits by providing a clean, intuitive interface to track daily habit completion. It includes a historical Time Matrix, a global cooldown timer engine, and an automated multi-platform CI/CD pipeline.

Download Now: https://github.com/North-Abyss/Trackify-Flutter/releases/tag/v0.0.0

preview

Demo Video :

Demo

πŸ“± Features

  • The Time Matrix - A historical 10-year calendar that visualizes completion history with custom-colored markers.
  • Habit Dashboard - View active habits, cooldown timers, streaks, and quick actions in one place.
  • Advanced State Memory - Habits remember exactly when they were completed, including current streaks and midnight reset behavior.
  • Add/Edit/Delete Habits - Full CRUD operations for managing habits.
  • Local Storage - Data is persisted instantly to the device using SharedPreferences.
  • Theme Customization - Support for custom dynamic themes, accent palettes, and Material You-style color selection.
  • Import / Export Backup - Save and restore habit data as a custom .trackify file directly from the Settings screen.
  • Cloud CI/CD Pipeline - Automated GitHub Actions release builds for Android, Windows, and Linux on every v* tag.

πŸ—οΈ Architecture

Trackify follows a clean architecture pattern with a clear separation of concerns.

State Management

  • Provider (provider: ^6.1.5+1) - Used for reactive state management.
    • HabitProvider - The universal heartbeat engine. Handles CRUD, streak logic, cooldown timers, persistence, import/export, and historical completion tracking.
    • ThemeProvider - Handles theme mode switching, accent colors, and custom theme loading.
    • UserProvider - Tracks user progression and XP-style interactions from the dashboard.

Data & UI Integrations

  • Table Calendar (table_calendar: ^3.2.0) - Renders the historical Time Matrix and dynamic completion dots.
  • SharedPreferences (shared_preferences: ^2.5.5) - Local device storage for habits and metadata.
  • UUID (uuid: ^4.5.3) - Generates unique identifiers for habits.
  • Dynamic Color (dynamic_color: ^1.8.1) - Supports Material You-style dynamic theming when available.
  • File Picker (file_picker: ^11.0.2) - Native .trackify import/export UI for backups.
  • Flutter Launcher Icons (flutter_launcher_icons: ^0.14.4) - Generates cross-platform app icons.

Key Components

Models (lib/models/)

  • Habit - Core habit model with built-in memory for completedDates, currentStreak, cooldown timing, and metadata.
  • UserProfile - User information and preference model.

Screens (lib/screens/)

  • DashboardScreen - Main habit list, create/edit dialog, timer overview, and navigation to the calendar/settings/profile views.
  • CalendarScreen - The Time Matrix historical view powered by table_calendar.
  • ProfileScreen - User profile summary and related app interactions.
  • SettingsScreen - Theme, data backup, and .trackify import/export controls.

Widgets (lib/widgets/)

  • HabitCard - Reusable habit card UI for the dashboard.
  • LevelProgressBar - Visual progress indicator for user progression.

πŸš€ Getting Started

Prerequisites

  • Flutter SDK (version 3.8.1 or higher)
  • A connected device or emulator

Installation

  1. Clone the repository:
git clone https://github.com/North-Abyss/Trackify-Flutter.git
cd Trackify-Flutter
  1. Get dependencies:
flutter pub get
  1. Run the app locally:
flutter run
  1. Run the app specific devices:
flutter run -d <deviceId>
# e.g.
flutter run -d emulator-5554          # Android emulator
flutter run -d 0123456789ABCDEF       # physical Android device serial
flutter run -d chrome --web-port=8080 # web (Chrome)
flutter run -d linux                  # Linux desktop
flutter run -d windows                # Windows desktop
flutter run -d macos                  # macOS (must run on macOS host)

☁️ Cloud Compilation (CI/CD)

Trackify ships with a fully automated release workflow in .github/workflows/release.yml.

By pushing a v* tag, GitHub Actions builds and uploads:

  • Android: Universal APK and split APKs for ABI-specific installation.
  • Windows: Native .exe installer and portable .zip bundle.
  • Linux: Native .deb package and portable .zip archive.

The ./git-sync.sh helper can be used to sync your local branch with GitHub and trigger the release pipeline.

πŸ“‚ Project Structure

lib/
β”œβ”€β”€ main.dart                 # App entry point with MultiProvider setup
β”œβ”€β”€ models/
β”‚   β”œβ”€β”€ habit.dart           # Habit model with JSON serialization and completion history
β”‚   └── user_profile.dart    # User profile model
β”œβ”€β”€ providers/
β”‚   β”œβ”€β”€ habit_provider.dart  # Habit state management, timers, streaks, and persistence
β”‚   β”œβ”€β”€ theme_provider.dart  # Theme mode and accent palette management
β”‚   └── user_provider.dart   # User progress and XP interactions
β”œβ”€β”€ screens/
β”‚   β”œβ”€β”€ dashboard_screen.dart    # Main habit dashboard
β”‚   β”œβ”€β”€ calendar_screen.dart     # The Time Matrix
β”‚   β”œβ”€β”€ profile_screen.dart      # User profile
β”‚   └── settings_screen.dart     # App settings and backup management
└── widgets/
    β”œβ”€β”€ habit_card.dart        # Reusable habit card component
    └── level_progress_bar.dart # Progress visualization

assets/
β”œβ”€β”€ custom_theme.json        # Custom theme configuration
β”œβ”€β”€ icon.png                 # Base app icon
└── social preview.png       # Social preview image

.github/workflows/
└── release.yml              # Multi-platform cloud compiler instructions

πŸ’‘ Learning Highlights

This project demonstrates:

  • βœ… DevOps & CI/CD: Automated multi-platform release builds via GitHub Actions.
  • βœ… Advanced State Management: Global timer coordination and reactive UI updates through Provider.
  • βœ… Data Structures: Historical DateTime tracking and streak computation.
  • βœ… Persistent Storage: SharedPreferences-backed local persistence and JSON backup/import.
  • βœ… Cross-Platform Nuances: Windows, Linux, and Android build considerations with packaging and asset generation.
  • βœ… Dynamic Theming: Material You-inspired color selection and theme mode support.

πŸ“ Recent Updates

  • The Time Matrix: Added historical habit completion tracking with table_calendar and dynamic colored markers.
  • Cloud Compiler: Added a GitHub Actions release pipeline for Android APKs, Windows installers, and Linux .deb packages.
  • Import / Export: Added .trackify backup workflows directly from the Settings screen.
  • Dynamic Theme Support: Added Material You-style dynamic colors and curated accent palettes.

�️ Project Architecture

The diagram below shows how Trackify is structured, how screens talk to providers, and where persistence and backups take place.

graph TD
    %% UI Layer
    subgraph UI [UI Screens]
        DS[DashboardScreen]
        CS[CalendarScreen]
        SS[SettingsScreen]
        PS[ProfileScreen]
    end

    %% State Management
    subgraph State [State Management]
        HP((HabitProvider))
        TP((ThemeProvider))
        UP((UserProvider))
    end

    %% Storage & DevOps
    subgraph Data [Data & Storage]
        SP[(SharedPreferences)]
        TR[.trackify Backup]
    end

    subgraph CI [CI/CD Pipeline]
        GA[GitHub Actions]
        RL[Releases: APK, EXE, DEB]
    end

    %% Connections
    UI -->|Reads / Updates| HP
    UI -->|Reads / Configures| TP
    UI -->|Reads| UP

    HP <-->|Persists Data| SP
    SS <-->|Import / Export| TR
    
    GA -->|Compiles on v* tag| RL
Loading

πŸ“ Future Enhancements

  • Streak tracking
  • Habit completion history (Time Matrix)
  • Export / Import habit data (Custom .trackify format)
  • Theme mode and accent color customization
  • OTA GitHub Update Checker
  • Habit statistics and progress charts
  • Daily reminders and notifications
  • Cloud sync across devices

πŸ‘€ About

This is a learning project created by @North-Abyss as part of the 100 Days of Code challenge to master Flutter and DevOps fundamentals.

πŸ“„ License

This project is open source and available under the MIT License.


Happy tracking! πŸš€

About

Trackify is a high-performance, cross-platform habit tracking application built with Flutter.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors