MENU

To-Do List

Repository

I developed this To-Do List application to manage daily tasks with a focus on ease of use and data persistence. The project features a custom JavaFX interface, a flexible task categorization system, and a robust JSON-based save mechanism. By implementing a full application lifecycle—from user input to persistent storage—I explored the challenges of state management and UI responsiveness in a desktop environment.

Dynamic Main View Architecture

The application's core interface is built using a responsive JavaFX layout. I utilized a VBox to dynamically arrange task lists and a ScrollPane to ensure the UI remains navigable even with a large number of entries. The layout is further refined with custom CSS to provide a clean, modern aesthetic. I also implemented interactive popups for creating and deleting lists, ensuring a streamlined workflow for managing multiple task categories.

JSON-Based Persistence Layer

To ensure user data is preserved between sessions, I implemented a robust save system using the org.json library. This layer serializes the entire ToDoList object graph—including task names, statuses, and categories—into a formatted JSON file. This approach provides a lightweight, human-readable data format that is easy to debug and extend, while also demonstrating the use of file I/O and JSON parsing in Java.

Task Management and Sorting Logic

The ToDoList class encapsulates the core business logic, including task addition, deletion, and automated sorting. I implemented a completion tracking system that uses DecimalFormat to calculate and display the progress of each list in real-time. The sorting engine allows tasks to be organized by status or category, ensuring that users can easily prioritize their workload. This state-driven logic ensures the UI always accurately reflects the underlying data model.

Technical Implementation Summary

By combining JavaFX for the presentation layer with a JSON persistence engine, I created a functional and reliable productivity tool. The project highlighted the importance of clear Model-View separation and taught me how to handle complex data structures in Java. Future improvements could include multi-threaded background saving and a more advanced notification system for task deadlines.

Try It Out

Download

If you want to try this app out for yourself, click on the download button and install from GitHub.

Video Demonstration

External Media Required

This video requires third-party cookies from YouTube to be displayed. Accepting will enable all external media across the site.