A JavaFX-based task management chatbot application that helps you organize your todos, deadlines, and events with a friendly conversational interface.
This was created as an assignment for a software engineering course in NUS (CS2103T). In this era where LLMs are integrated into almost every application, I named it "Dumpy" to reflect its simplicity and wishes to showcase even a simple bot can be fun and useful.
- Task Management: Create, view, mark, and delete tasks
- Multiple Task Types:
- Todo: Simple tasks without dates
- Deadline: Tasks with due dates
- Event: Tasks with start and end times
- Search Functionality: Fuzzy find tasks through the find command
- Persistent Storage: Tasks are automatically saved and loaded
- GUI Interface: Modern JavaFX-based graphical user interface
- JavaFX 17.0.14.fx-zulu (included in dependencies)
-
Clone the repository:
git clone <repository-url> cd ip
-
Build the project:
./gradlew build
-
Run the application:
./gradlew run
Alternatively, you can run the generated JAR file:
java -jar build/libs/dumpy.jar-
Add Tasks:
use
todo,deadline, oreventand create tasks interactively. -
List Tasks:
listlist
-
Toggle task done status:
mark <task_number>mark 1
-
Delete Task:
delete <task_number>delete 2
-
Find Tasks:
find <keyword>find meeting
-
Exit:
exit
The application supports this date and time formats:
YYYY-MM-DD HH:MM(e.g., 2023-12-15 14:30)
src/
├── main/
│ ├── java/
│ │ ├── components/
│ │ │ ├── Dumpy.java # Main application logic
│ │ │ ├── CommandRouter.java # Command parsing and routing
│ │ │ ├── Todo.java # Todo-specific functionality
│ │ │ └── task/ # Task-related classes
│ │ │ ├── Task.java # Base task class
│ │ │ ├── TaskType.java # Task type enumeration
│ │ │ ├── DeadlineTask.java
│ │ │ └── EventTask.java
│ │ ├── ui/ # User interface components
│ │ │ ├── MainWindow.java
│ │ │ └── DialogBox.java
│ │ ├── utilities/ # Utility classes
│ │ │ ├── Data.java # Data persistence
│ │ │ ├── DateTime.java # Date/time utilities
│ │ │ ├── IO.java # Input/output utilities
│ │ │ ├── EventBus.java # Event handling
│ │ │ └── EventListener.java
│ │ ├── exceptions/
│ │ │ └── TaskNotFoundException.java
│ │ └── Main.java # Application entry point
│ └── resources/
│ ├── view/ # FXML files
│ │ ├── MainWindow.fxml
│ │ └── DialogBox.fxml
│ └── styles/
│ └── main.css # Application styling
./gradlew build./gradlew testThe project uses Checkstyle for code quality. Run checks with:
./gradlew checkstyleMainGenerate a shadow JAR with all dependencies:
./gradlew shadowJarTasks are automatically saved to ./data/dumpy.txt in a human-readable format.
The application will create this directory and file automatically on first run.
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and checkstyle
- Submit a pull request
This project is part of a software engineering course assignment.
- Built with JavaFX for the graphical interface
- Uses Gradle for build management
- Follows Java coding standards with Checkstyle