Boblet is your friendly personal assistant chatbot! It helps you manage your tasks efficiently, offering support for various types of tasks such as ToDos, Deadlines, and Events. Designed as a command-line application, Boblet provides an interactive way to organize your daily activities.
Boblet allows you to:
- Add tasks of different types:
- ToDos: Simple tasks without a specific deadline.
- Deadlines: Tasks with a specified due date.
- Events: Tasks with a specified time frame.
- List all tasks in your current task list.
- Mark tasks as completed.
- Delete tasks from your task list.
Boblet supports three types of tasks:
-
ToDos:
- Format:
todo <description> - Example:
You: todo read book - Output:
Got it. I've added this task: [TODO][✗] read book Now you have 1 task in the list.
- Format:
-
Deadlines:
- Format:
deadline <description> /by <due date> - Example:
You: deadline return book /by Sunday - Output:
Got it. I've added this task: [DEADLINE][✗] return book (by: Sunday) Now you have 2 tasks in the list.
- Format:
-
Events:
- Format:
event <description> /at <time> - Example:
You: event project meeting /at Monday 2-4pm - Output:
Got it. I've added this task: [EVENT][✗] project meeting (at: Monday 2-4pm) Now you have 3 tasks in the list.
- Format:
Boblet supports the following commands:
| Command | Description | Format | Example |
|---|---|---|---|
list |
Lists all tasks in your current task list. | list |
You: list |
done |
Marks a task as done. | done <task number> |
You: done 1 |
delete |
Deletes a task from the list. | delete <task number> |
You: delete 2 |
todo |
Adds a ToDo task. | todo <description> |
You: todo buy groceries |
deadline |
Adds a Deadline task. | deadline <description> /by <date> |
You: deadline submit report /by Friday |
event |
Adds an Event task. | event <description> /at <time> |
You: event team meeting /at 3-5pm |
bye |
Exits the application. | bye |
You: bye |
Boblet gracefully handles incorrect inputs with descriptive error messages. Examples:
-
Invalid Commands:
You: unknowncommand ☹ OOPS!!! I'm sorry, but I don't know what that means :-( -
Empty Task Descriptions:
You: todo ☹ OOPS!!! The description of a todo cannot be empty. -
Invalid Task Numbers:
You: done 99 ☹ OOPS!!! Invalid task number!
- Java Development Kit (JDK) 8 or above installed on your system.
To get started, clone the repository:
git clone <repository-url>- Navigate to the project directory:
cd <project-directory>
- Compile the code:
javac Boblet.java
- Run the program:
java Boblet
Below is an example interaction with Boblet:
____________________________________________________________
Hey there! I'm Boblet, your friendly assistant!
I can track ToDos, Deadlines, and Events. Just tell me what to do!
Type 'list' to see your tasks, 'done <number>' to mark a task as done, 'delete <number>' to remove a task, or 'bye' to leave. Let's get started!
____________________________________________________________
You: todo read book
____________________________________________________________
Got it. I've added this task:
[TODO][✗] read book
Now you have 1 task in the list.
____________________________________________________________
You: deadline return book /by Sunday
____________________________________________________________
Got it. I've added this task:
[DEADLINE][✗] return book (by: Sunday)
Now you have 2 tasks in the list.
____________________________________________________________
You: event project meeting /at Monday 2-4pm
____________________________________________________________
Got it. I've added this task:
[EVENT][✗] project meeting (at: Monday 2-4pm)
Now you have 3 tasks in the list.
____________________________________________________________
You: list
____________________________________________________________
Here are the tasks in your list:
1.[TODO][✗] read book
2.[DEADLINE][✗] return book (by: Sunday)
3.[EVENT][✗] project meeting (at: Monday 2-4pm)
____________________________________________________________
You: done 1
____________________________________________________________
Nice! I've marked this task as done:
[TODO][✓] read book
____________________________________________________________
You: delete 2
____________________________________________________________
Noted. I've removed this task:
[DEADLINE][✗] return book (by: Sunday)
Now you have 2 tasks in the list.
____________________________________________________________
You: bye
____________________________________________________________
Aww, you're leaving already! Well, take care!
See you soon! Bye from Boblet!
____________________________________________________________
Boblet's architecture follows an object-oriented design with the following components:
-
Task(Abstract Class):- Base class for tasks.
- Supports common properties like description, status (done or not), and task type.
-
Task Types:
Todo: A simple task.Deadline: A task with a deadline.Event: A task with a specific time.
-
Enums:
TaskType: Represents task types (TODO, DEADLINE, EVENT).CommandType: Represents user commands (LIST, DONE, DELETE, etc.).
-
Exception Handling:
- Custom
BobletExceptionfor user input validation.
- Custom
-
Persistence:
- Save tasks to a file and load them on startup.
-
Date and Time Parsing:
- Use Java's
LocalDateandLocalTimefor better handling of deadlines and events.
- Use Java's
-
User Interface:
- Transition from the command-line interface to a graphical user interface (GUI).
-
Search Functionality:
- Allow users to search for tasks by keywords or dates.
Contributions are welcome! Please fork the repository and submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.