Track your Ramadan habits and get smart reminders.
Premium Ramadan tracker and planner: yearly seasons, Autopilot Quran plan, Sahur/Iftar reminders, and local backup/restore.
- One-tap habit tracking: Fasting, Quran, Dhikr, Taraweeh, Sedekah, 5 Prayers
- Smart reminders: Sahur, Iftar, and goal reminders (Quran, Dhikr, Sedekah, Taraweeh) based on your location
- Daily progress and streaks: Completion score and streak counter
- Insights and heatmaps: Charts, heatmaps, and trends for Quran, Dhikr, and habits
- Ramadan Autopilot: Daily plan with Quran reading targets and catch-up suggestions
- Yearly reusable: Multiple Ramadan seasons (2025, 2026, etc.)
- Backup and restore: Export/import data as JSON
- 100% offline and private: No account, no ads, no tracking; data stays on your device
- Multi-language: English and Indonesian
- Flutter: Cross-platform mobile framework
- Riverpod: State management
- Drift: SQLite database with type-safe queries
- fl_chart: Charts for insights
lib/
├── app/ # App configuration and main screen
├── data/
│ ├── database/ # Drift database schema, tables, DAOs
│ ├── providers/ # Riverpod providers
│ └── repositories/ # Data repositories
├── domain/
│ ├── models/ # Domain models
│ └── services/ # Business logic (autopilot, completion)
├── features/
│ ├── today/ # Today tab screen
│ ├── month/ # Month view screen
│ ├── plan/ # Autopilot plan screen
│ ├── insights/ # Insights/charts screen
│ └── settings/ # Settings screen
└── widgets/ # Shared UI components
The app uses Drift (SQLite) with the following tables:
- ramadan_seasons: Stores multiple Ramadan seasons
- habits: Default habit definitions (fasting, prayers, quran, etc.)
- season_habits: Per-season habit configuration
- daily_entries: Daily tracking data
- quran_plan: Quran reading plan configuration
- quran_daily: Daily Quran pages read
- dhikr_plan: Dhikr target configuration
- notes: Reflection notes
- kv_settings: Key-value settings
- Flutter SDK >=3.0.0
- Dart SDK >=3.0.0
- Clone the repository:
git clone https://github.com/hndrwn-dk/ramadan-tracker.git
cd ramadan-tracker- Install dependencies:
flutter pub get- Generate Drift database code:
flutter pub run build_runner build --delete-conflicting-outputs- Run the app:
flutter runOn first launch, the app will guide you through onboarding:
- Set up your Ramadan season (start date, number of days)
- Choose which habits to track (fasting, Quran, Dhikr, Taraweeh, Sedekah, I'tikaf)
- Configure goals (Quran pages/day, Dhikr target, Sedekah amount & currency)
- Set up prayer time reminders (Sahur & Iftar)
- Go to Settings > Season Management
- Tap "Create New Season"
- Enter label (e.g., "Ramadan 2025")
- Select number of days (29 or 30)
- The app will copy habit settings from the previous season
The Autopilot plan is configured during onboarding, but you can adjust it later:
- Go to Settings > Goals
- Configure:
- Quran goal (1 Khatam / 2 Khatam / Custom pages per day)
- Dhikr target (33/100/300/1000 per day)
- Sedekah goal (optional, with currency selection)
- View your daily plan in the Plan tab
The Today tab allows fast logging:
- Toggle boolean habits (fasting, Taraweeh, I'tikaf)
- Adjust count habits (Quran pages, Dhikr) with +/- buttons
- Use quick-add chips (+5, +10, +20 for Quran; +33, +100, +300 for Dhikr)
- Track Sedekah with currency support (IDR, SGD, USD, MYR)
- Write daily reflections
- Go to Settings > Backup & Restore
- Export: Tap "Export Backup" to share your data as JSON
- Import: Tap "Import Backup" to select and restore a JSON file
Note: Import will replace all existing data. Make sure to export before importing.
The Autopilot generates daily plans based on:
-
Quran Planning:
- Default: 1 Juz/day = 20 pages/day
- Calculates remaining pages and days
- Suggests daily target with catch-up cap (max +5 pages/day)
- Distributes reading across morning/day/night time blocks
-
Time Allocation:
- Quran: ~1.5 minutes per page
- Dhikr: ~0.02 minutes per count
- Taraweeh: 20 minutes (fixed)
-
Catch-Up Mode:
- If you miss days, increases daily target
- Caps increase to prevent overwhelming targets (default +5 pages/day)
- Shows warnings if completion becomes unlikely
The completion score (0-100) is calculated as:
- Boolean habits: 1 if done, 0 if not
- Count habits: progress = min(value / target, 1)
- Score = average of all enabled habits × 100
flutter testflutter build apk --release # Android
flutter build ios --release # iOSTo add a migration:
- Update
schemaVersioninapp_database.dart - Add migration logic in
onUpgradecallback - Regenerate code:
flutter pub run build_runner build
MIT License - see LICENSE file for details
This is a standalone app. For issues or feature requests, please open an issue in the repository.