Skip to content

ArpitAswal/Task-Tracker

Repository files navigation

App Logo

Click on a logo to download the latest version of the app apk file:

todo_image

Task Tracker

Task Tracker is a Flutter productivity app for managing personal tasks with offline support, Firebase sync, localized UI, and scheduled local notifications.

Current Highlights

  • 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

Feature Overview

Authentication

  • Login
  • Sign up
  • Forgot password
  • Email verification
  • Remember me support

Task Management

  • Create, edit, complete, incomplete, and delete tasks
  • Optional description, priority, category, and reminder time
  • Validation for reminder timing
  • Sorting and filtering support

Notifications

  • 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

Settings

  • Theme selection
  • Language selection
  • Task reminders on/off
  • Battery optimization shortcut on Android
  • Delete all tasks

Persistence and Sync

  • Hive for local task caching
  • Firestore for cloud sync
  • SharedPreferences for user preferences
  • Secure storage for sensitive saved credentials

App Flow

  1. App launches and initializes Firebase, storage, and notifications.
  2. Splash screen checks onboarding, login state, and email verification.
  3. 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
  4. Home dashboard provides:
    • Tasks
    • Profile
    • Leaderboard
    • Settings

Notification Behavior

How task reminders work

  • 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.

Android battery saver / battery optimization

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

Installation

Prerequisites

  • Flutter SDK
  • Firebase project configured for Android/iOS
  • lib/firebase_options.dart
  • android/app/google-services.json
  • ios/Runner/GoogleService-Info.plist
  • Local secret/signing files described below

Run locally

git clone https://github.com/ArpitAswal/TaskTracker.git
cd TaskTracker
flutter pub get
flutter run

Local-Only Private Files

The 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.
  • *.jks or *.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"
}

Tech Stack

  • Flutter
  • Provider
  • Firebase Auth
  • Cloud Firestore
  • Hive
  • SharedPreferences
  • Flutter Secure Storage
  • flutter_local_notifications
  • timezone

Important Notes

  • 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.md is intended to be public Markdown. Local operating docs such as agent.md, plan.md, architecture.md, app_flow.md, and app_summary.md are ignored by git.

Documentation Files

Public repository documentation:

  • README.md

Local operating documentation ignored by git:

  • agent.md
  • plan.md
  • architecture.md
  • app_flow.md
  • app_summary.md

Contributing

Contributions are welcome through issues and pull requests. Before committing or pushing, verify that no confidential file or secret value is staged.

Feedback

For feedback or bug reports, please use the repository issues or contact:

  • arpitaswal995@gmail.com

About

TaskTracker is a mobile application developed using the Flutter framework, designed to help users efficiently manage and track their daily tasks. With a user-friendly interface and a range of features, it simplifies task organization while providing timely notifications to keep users on track.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors