A smart task manager that categorizes tasks automatically and suggests priorities based on urgency.
- Automatic Categorization: Tasks are automatically categorized based on keywords in the description.
- Priority Suggestions: Task priorities are suggested based on the due date.
- Local Storage: Tasks are stored locally on the device using Hive, ensuring data persistence.
- Search: Tasks can be filtered by title and category.
- Automatic Categorization: Tasks are automatically assigned to categories (e.g., "Work", "Personal") based on keywords found in the task description.
- Automatic Prioritization: Tasks are assigned a priority level (High, Medium, Low) based on their due date.
- Extensible: The categorization logic is built using the Strategy Pattern, allowing for easy extension with an AI-based categorization model in the future.
The application follows a layered architecture based on the principles of Clean Architecture, adapted for a Flutter application.
- Presentation Layer: Contains the UI (widgets and screens) and the ViewModels. This layer is responsible for displaying the data and handling user input.
- Domain Layer: Contains the business logic of the application. This includes use cases (e.g.,
AddTask,GetTasks), entities (e.g.,Task), and the interfaces for our repositories. - Data Layer: Responsible for data retrieval and storage. This layer contains the implementation of the repositories and the data sources.
To run the app, follow these steps:
- Clone the repository.
- Run
flutter pub getto install the dependencies. - Run
flutter runto launch the app.