# Mini Project - Task Management System

### Mini Project: Task Management Application

**Project Description:**

Develop a simple command-line Task Management Application using Java Collections. The application should allow users to create tasks, assign them to categories, mark them as completed, and view tasks based on different criteria.

**Features to Implement:**

1. **Task Class:**
   * Create a Task class with attributes like title, description, due date, category, and status (completed or pending).
2. **Task Manager:**
   * Implement a collection (e.g., ArrayList) to manage tasks.
   * Provide functionalities to add new tasks, mark tasks as completed, and remove tasks from the list.
3. **Categories:**
   * Allow users to assign tasks to different categories (e.g., Work, Personal, Shopping, etc.).
   * Provide options to view tasks based on categories.
4. **Task Display:**
   * Implement functionality to display all tasks in the list.
   * Allow users to filter tasks based on their status (completed or pending).
5. **Task Details:**
   * Provide an option to view detailed information about a specific task, including its description, due date, and category.

**Additional Features (Optional):**

* Implement error handling and validation for user inputs.
* Allow users to edit task details or mark them as incomplete.
* Implement sorting functionalities based on due date or category.
* Persist data using file I/O or serialization for future sessions.

**Project Evaluation:**

Your project will be evaluated based on the following criteria:

* Correct implementation of classes and methods.
* Proper use of Java Collections to manage tasks.
* User-friendly interface with clear instructions and error handling.
* Efficient filtering and sorting algorithms.
* Ability to handle edge cases and unexpected inputs.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://codewithmeiy.gitbook.io/core-java/test-your-knowledge/collections/mini-project-task-management-system.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
