Version 1.1.0 — An offline-first Android task management application built with Flutter.
This release focuses on stability and user experience improvements:
- ✅ Fixed crashes when loading blueprints without meals
- ✅ Fixed crashes on days with no tasks or meals
- ✅ Fixed task completion toggle not persisting
- ✅ Fixed heatmap calendar crashes on empty months
- ✅ Fixed app startup crashes
- ✅ Fixed blueprint CRUD operation crashes
- ✅ Fixed search functionality crashes
- 🎨 Enhanced splash screen with random images and no-repeat logic
- 📊 Repositioned heatmap below task list for better hierarchy
- 🔍 Implemented real-time search with instant filtering
- 💡 Added tap-to-view-details on heatmap for month/day/task breakdown
- ⏱️ Consistent 1.5s splash screen timing
- 🏷️ Updated navigation labels for clarity
104 tests passing • 0 analysis issues • Tested on physical device
- Offline-first architecture with local persistence
- Task management with multiple task types (Unsure, Deadline, Time-based)
- Reminders and notifications
- Blueprint system for recurring tasks
- Weekly summaries and analytics
- Meals and fitness tracking
- Dark and Light themes with Timber Brown default
- Data export and import
This project follows Clean Architecture principles to ensure maintainability, testability, and separation of concerns.
lib/
├── core/ # Core application components
│ ├── constants/ # App-wide constants
│ ├── errors/ # Error definitions and handlers
│ ├── theme/ # Theme configuration (Dark/Light/Timber Brown)
│ └── utils/ # Utility functions and helpers
│
├── data/ # Data layer (Framework & Drivers)
│ ├── datasources/ # Data sources (Local DB, APIs)
│ ├── models/ # Data models (JSON serialization)
│ └── repositories/ # Repository implementations
│
├── domain/ # Business logic layer (Entities & Use Cases)
│ ├── entities/ # Business entities
│ ├── repositories/ # Repository interfaces
│ └── usecases/ # Business use cases
│
└── presentation/ # Presentation layer (UI)
├── pages/ # App screens/pages
├── providers/ # State management (Provider/Riverpod)
└── widgets/ # Reusable UI components
- Contains all UI components (pages, widgets)
- Manages state using Riverpod (StateNotifier/AsyncNotifier)
- Uses feature-scoped providers
- Immutable state only
- No business logic in widgets (delegated to use cases)
- Interacts with domain layer through use cases
- Dependency: Domain layer only
- Core business logic and entities
- Repository interfaces (contracts)
- Use cases (application-specific business rules)
- Dependency: None (completely independent)
- Repository implementations
- Data models with serialization/deserialization
- Data sources (local database, shared preferences)
- Dependency: Domain layer only
- Shared utilities and constants
- Theme configuration
- Error handling
- Dependency: None (used by all layers)
- Dependency Rule: Dependencies point inward (Presentation → Domain ← Data)
- Separation of Concerns: Each layer has a single, well-defined responsibility
- Testability: Business logic is isolated and easily testable
- Offline-First: All data operations work offline by default
- Immutability: Entities and models are immutable where possible
- Flutter SDK 3.35.7 or higher
- Dart SDK 3.9.2 or higher
- Android SDK with minimum API level 21
# Get dependencies
flutter pub get
# Build and run
flutter run
# Build APK
flutter build apk --release# Run tests
flutter test
# Analyze code
flutter analyze
# Format code
flutter format lib/- Framework: Flutter
- Language: Dart
- Architecture: Clean Architecture
- State Management: Riverpod (StateNotifier/AsyncNotifier)
- Local Storage: sqflite / Hive (to be determined)
- Notifications: flutter_local_notifications
- Platform: Android only
This is a private project. Please follow the development plan in plan.md.
See LICENSE file for details.