A Flutter app for tracking recurring household cleaning and maintenance tasks.
Cleaning Tracker helps you keep up with household systems and chores such as HVAC filters, kitchen maintenance, bathroom cleaning, and bedroom resets. It tracks each task's interval, history, and current status so you can see what is healthy, degrading, or overdue at a glance.
- Status Dashboard: Visual overview of all tracked systems with an overall "Home Health Score."
- Task Tracking: Custom intervals, status levels (Operational, Degrading, Critical), and full completion history.
- Smart Reminders: Intelligent notifications based on due dates and user-defined lead times.
- Cloud Sync: Secure backups to Google Drive via JSON files.
- Snooze Support: Flexibility to delay tasks without losing your tracking history.
- Flutter and Dart
- SQLite via
sqflite - Local notifications via
flutter_local_notifications - Google Sign-In and Google Drive backup support
- Unit, widget, integration, and golden tests
- Flutter SDK
>=3.11.0 <4.0.0(matches the constraint inpubspec.yaml). Verify withflutter doctor. - JDK 17 for Android builds.
- Android Studio (with an Android SDK + emulator) and/or Xcode 14.3+ for iOS builds (deployment target iOS 13.0).
- A Google Cloud project only if you want to exercise Drive sync. The app runs fully offline without it.
git clone https://github.com/Shir0o/cleaning-tracker.git
cd cleaning-tracker
flutter pub get
# Copy the env template (required — `.env` is bundled as an asset)
cp .env.example .env
# Generate test mocks (only required if you'll run the test suite)
dart run build_runner build --delete-conflicting-outputs
# Run on an attached device or emulator (Drive sync disabled)
flutter runWith an empty GOOGLE_SERVER_CLIENT_ID in .env, the app falls back to a placeholder client ID (see lib/main.dart). All local features — tasks, completions, reminders, theming — work; only Google Sign-In and Drive backup are inert.
- Follow the Google Cloud setup in docs/DEVELOPMENT.md to create OAuth credentials.
- Set the Web OAuth client ID in your local
.env:
# .env (gitignored)
GOOGLE_SERVER_CLIENT_ID=YOUR_WEB_CLIENT_ID- Run normally:
flutter run.env is loaded at runtime via flutter_dotenv. For CI or release builds you can still override at compile time with --dart-define=GOOGLE_SERVER_CLIENT_ID=..., which takes precedence over .env. The same flag works with flutter build apk, flutter build appbundle, and flutter build ios.
dart format --output=none --set-exit-if-changed .
flutter analyze
flutter test # unit, widget, golden, scenario
flutter test integration_test # requires a connected device/emulator
flutter test --update-goldens # only when intentional UI changes- Architecture: Technical stack, services, and data flow.
- Features: Deep dive into user-facing functionality.
- Testing Strategy: TDD mandate, test categories, and workflows.
- Database Schema: Table definitions and migration logic.
- Development Guide: Setup instructions, dependencies, and environment configuration.
- Release Notes: Version history and changelog.
Contributions are welcome. Please read CONTRIBUTING.md for the development workflow, testing expectations, and pull request guidelines.
Please do not open public issues for vulnerabilities or sensitive data exposure. See SECURITY.md for the reporting process.
Cleaning Tracker is released under the MIT License.