This project is a task management application built using Domain-Driven Design (DDD) principles and Riverpod for state management.
The application follows DDD principles to ensure a clean separation of concerns and maintainability. The domain layer contains the business logic and entities that represent the tasks.
- Entities: Represent the core business domain. In this case,
TaskEntityis the central entity. - Value Objects: Immutable objects that have a set of values used to describe the state of an entity. For example,
TaskPriorityis a value object. - Use Cases: Define the actions that can be performed on the domain. For example,
GetTasksUseCaseis a use case. - Repository: Abstracts the data access layer, providing a way to interact with the data storage.
Riverpod is used for state management, providing a simple and efficient way to handle the application's state.
- Providers: Manage the state of the application. For example,
taskNotifierProvidermanages the list of tasks. - Notifiers: Implement the business logic for updating the state. For example,
TaskNotifierhandles adding, updating, and deleting tasks.
- Task Management: Users can create, update, and delete tasks.
- Filtering and Sorting: Tasks can be filtered by priority and completion status, and sorted by due date.
- Real-time Updates: Tasks are updated in real-time using Riverpod's reactive state management.
- Firebase Firestore is used as the backend for storing tasks.
- Flutter is used for building the mobile application.
- Flutter SDK 3.29.0 or later
- Clone the repository:
git clone https://github.com/your-repo/task-management-app.git
- Navigate to the project directory:
cd task-management-app - Install dependencies:
flutter pub get
- Run the application:
flutter run
Contributions are welcome! Please submit a pull request with your changes.
Feel free to modify this README to better fit your project's specific needs and details.
If you have any questions or need further assistance, feel free to ask!