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
- 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
.trackifyfile directly from the Settings screen. - Cloud CI/CD Pipeline - Automated GitHub Actions release builds for Android, Windows, and Linux on every
v*tag.
Trackify follows a clean architecture pattern with a clear separation of concerns.
- 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.
- 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.trackifyimport/export UI for backups. - Flutter Launcher Icons (
flutter_launcher_icons: ^0.14.4) - Generates cross-platform app icons.
Habit- Core habit model with built-in memory forcompletedDates,currentStreak, cooldown timing, and metadata.UserProfile- User information and preference model.
DashboardScreen- Main habit list, create/edit dialog, timer overview, and navigation to the calendar/settings/profile views.CalendarScreen- The Time Matrix historical view powered bytable_calendar.ProfileScreen- User profile summary and related app interactions.SettingsScreen- Theme, data backup, and.trackifyimport/export controls.
HabitCard- Reusable habit card UI for the dashboard.LevelProgressBar- Visual progress indicator for user progression.
- Flutter SDK (version
3.8.1or higher) - A connected device or emulator
- Clone the repository:
git clone https://github.com/North-Abyss/Trackify-Flutter.git
cd Trackify-Flutter- Get dependencies:
flutter pub get- Run the app locally:
flutter run- 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)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
.exeinstaller and portable.zipbundle. - Linux: Native
.debpackage and portable.ziparchive.
The ./git-sync.sh helper can be used to sync your local branch with GitHub and trigger the release pipeline.
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
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
DateTimetracking 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.
- The Time Matrix: Added historical habit completion tracking with
table_calendarand dynamic colored markers. - Cloud Compiler: Added a GitHub Actions release pipeline for Android APKs, Windows installers, and Linux
.debpackages. - Import / Export: Added
.trackifybackup workflows directly from the Settings screen. - Dynamic Theme Support: Added Material You-style dynamic colors and curated accent palettes.
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
- Streak tracking
- Habit completion history (Time Matrix)
- Export / Import habit data (Custom
.trackifyformat) - Theme mode and accent color customization
- OTA GitHub Update Checker
- Habit statistics and progress charts
- Daily reminders and notifications
- Cloud sync across devices
This is a learning project created by @North-Abyss as part of the 100 Days of Code challenge to master Flutter and DevOps fundamentals.
This project is open source and available under the MIT License.
Happy tracking! π

