This document describes the folder organization of the Terminal Task Manager project and the purpose of each component.
The project follows a modular structure to keep the code clean, readable, and maintainable.
terminal-task-manager
│
├── src
├── README.md
├── PROJECT_STRUCTURE.md
└── .gitignore
README.md
Contains the project overview, features, and instructions for running the program.
PROJECT_STRUCTURE.md
Explains the internal architecture of the project.
.gitignore
Prevents unnecessary system files and compiled Java files from being added to the repository.
All Java source files are located inside the src folder.
src
│
├── main
├── model
├── service
└── exception
Each folder represents a logical component of the application.
src/main │ └── MainApplication
This package contains the entry point of the program.
- Starting the application
- Displaying the command line interface
- Handling user input
- Calling the appropriate methods in the service layer
The main loop of the CLI runs here.
src/model
│
├── Task
├── User
└── AdminUser
This package defines the core data objects used by the system.
Task
Represents a single task.
Possible attributes:
- Task ID
- Title
- Description
- Priority
- Completion status
This class also contains methods to update and display task information.
User
Represents a system user.
Attributes may include:
- Username
- Role
AdminUser
Extends the User class to demonstrate inheritance.
Admin users may have additional permissions such as:
- Deleting tasks
- Clearing the task list
src/service │ └── TaskManager
This package contains the business logic of the application.
Responsible for managing the task collection.
Responsibilities include:
- Adding tasks
- Deleting tasks
- Searching tasks
- Marking tasks as completed
- Listing all tasks
The class internally manages collections such as:
ArrayListfor storing tasksLinkedListfor historySetfor unique tags
src/exception
│
├── TaskNotFoundException
└── InvalidTaskException
This package contains custom exceptions used in the application.
Thrown when the user tries to access a task that does not exist.
Thrown when a task input is invalid.
Example cases:
- Empty task title
- Incorrect task ID
The application operates using the following workflow:
- The program starts from the
MainApplication. - The CLI menu is displayed.
- The user selects an option.
- The
TaskManagerprocesses the request. - Tasks are created, updated, searched, or deleted.
- Results are displayed to the user.
- The program returns to the main menu until the user exits.
| Collection | Purpose |
|---|---|
| ArrayList | Stores tasks dynamically |
| LinkedList | Stores command history |
| Set | Stores unique task tags |
This project demonstrates several Java programming concepts:
- Classes and Objects
- Methods and Constructors
- Inheritance
- Packages
- Exception Handling
- Custom Exceptions
- String Handling
- StringBuffer
- Java Collections Framework
- Iterators
The project structure allows easy addition of new features such as:
- Task persistence using files
- Task deadlines and reminders
- Task categories
- User authentication
- Advanced CLI commands
This modular architecture ensures the project remains scalable, maintainable, and easy to understand for both developers and reviewers.