Click on a logo to download the latest version of the app apk file:
Task Tracker is a Flutter productivity app for managing personal tasks with offline support, Firebase sync, localized UI, and scheduled local notifications.
- Email/password authentication with verification flow
- Onboarding for first-time users
- Task CRUD with categories, priorities, and reminder times
- Offline-first storage with Hive plus Firestore sync
- Theme switching: System, Light, Dark
- Localization: English and Hindi
- Profile, streaks, and leaderboard
- Local task reminders and overdue notifications
- Android battery optimization shortcut in Settings
- Login
- Sign up
- Forgot password
- Email verification
- Remember me support
- Create, edit, complete, incomplete, and delete tasks
- Optional description, priority, category, and reminder time
- Validation for reminder timing
- Sorting and filtering support
- Task reminder notification at
reminderAt - End-of-task notification at the task end time
- Daily overdue summary notification
- Global Task Reminders toggle in Settings
- Re-scheduling of active reminders when notifications are turned back on
- Android exact scheduling support for stronger idle-mode delivery
- Theme selection
- Language selection
- Task reminders on/off
- Battery optimization shortcut on Android
- Delete all tasks
- Hive for local task caching
- Firestore for cloud sync
- SharedPreferences for user preferences
- Secure storage for sensitive saved credentials
- App launches and initializes Firebase, storage, and notifications.
- Splash screen checks onboarding, login state, and email verification.
- User is routed to:
- Onboarding on first launch
- Login if signed out
- Email verification if account is not verified
- Home dashboard if authenticated and verified
- Home dashboard provides:
- Tasks
- Profile
- Leaderboard
- Settings
- Notifications are initialized during app startup.
- Reminder scheduling is timezone-aware.
- A task reminder is scheduled only if:
- the global notification toggle is enabled
- the task has a valid future reminder
- the task is not completed
- Completing or deleting a task cancels its scheduled notifications.
Battery optimization can delay or suppress notifications on some Android devices.
The app now includes a Battery Optimization entry in Settings:
- it reads the current optimization exemption status
- it opens the Android system battery optimization screen
- it helps the user whitelist the app for better notification reliability
Important:
- this setting cannot be silently changed by Flutter alone
- Android requires the user to confirm the change in system UI
- Flutter SDK
- Firebase project configured for Android/iOS
lib/firebase_options.dartandroid/app/google-services.jsonios/Runner/GoogleService-Info.plist- Local secret/signing files described below
git clone https://github.com/ArpitAswal/TaskTracker.git
cd TaskTracker
flutter pub get
flutter runThe public repository must not contain confidential app configuration. Each developer must add these files on their own machine when needed:
secrets.json: local confidential values used by the app or build scripts.android/app/google-services.json: Android Firebase app configuration.ios/Runner/GoogleService-Info.plist: iOS Firebase app configuration.lib/firebase_options.dart: generated by FlutterFire for the developer's Firebase project.android/key.properties: Android release signing properties.*.jksor*.keystore: Android release signing keystore.- Google Maps key files, if maps are added later, such as
google_maps_api.xml,GoogleMapsKeys.plist, or local maps key JSON files. - Any service-account JSON, private certificate,
.env, token, password, or machine-specific configuration.
These files are ignored by .gitignore. Do not commit them to a public remote repository.
If a new feature needs confidential values, store them locally in secrets.json or the platform-specific private config file and document the required key names here without exposing real values.
Example local secrets.json shape:
{
"googleMapsApiKeyAndroid": "YOUR_ANDROID_MAPS_KEY",
"googleMapsApiKeyIos": "YOUR_IOS_MAPS_KEY"
}- Flutter
- Provider
- Firebase Auth
- Cloud Firestore
- Hive
- SharedPreferences
- Flutter Secure Storage
- flutter_local_notifications
- timezone
- Android 13+ requires notification permission.
- Some Android versions/devices also require exact alarm approval for precise scheduling.
- Even with exact scheduling, aggressive OEM battery optimization may still delay alerts.
- The app provides a battery optimization settings shortcut, but the final permission change is system-controlled.
- The repository still contains a default sample widget test that does not reflect the real app bootstrap and will fail without Firebase-aware test setup.
- Before any commit or push, check that no secret, keystore, Firebase config, Google Maps key, or private JSON file is staged.
- Only
README.mdis intended to be public Markdown. Local operating docs such asagent.md,plan.md,architecture.md,app_flow.md, andapp_summary.mdare ignored by git.
Public repository documentation:
README.md
Local operating documentation ignored by git:
agent.mdplan.mdarchitecture.mdapp_flow.mdapp_summary.md
Contributions are welcome through issues and pull requests. Before committing or pushing, verify that no confidential file or secret value is staged.
For feedback or bug reports, please use the repository issues or contact:
arpitaswal995@gmail.com