This idea came from my [Shivi] group chat with my friends. We always send “DA PLAN” in the group chat for our assignments and what time we’re going to do them and how hard we think they’re going to be. I thought it was super cool how we can come up with these but I also saw that it was slightly inefficient. I was entering all my tasks in a list format first and then I was re-ordering it based on which assignments were due first. Then out of the assignments I had due first I used to pick a hard one then an easy one. I was essentially doing double the work. I thought it would be so much faster to just automate this, so that was the inspiration for “DA PLAN”
What it does
Da Plan allows you to quickly create a list of unordered tasks you want to get done throughout your day. You can visualize the list of all the tasks you have created while typing so you do not lose track of what you have already set for yourself. Once you’ve added all the tasks you want to get done, Da Plan will work its magic and provide you with a schedule for your convenience. Said schedule will organize tasks based on the priority you assign it and its due date. This smart scheduling program also allows you to go back and forth to add more tasks as you see fit. So you do not have to worry about forgetting any of the things you want to accomplish!
How we built it
We split into two pairs to efficiently come up with the program. One pair worked on Back End Development and the other worked on Front End Development.
The backend for our program heavily relies on data structures. We primarily used linked list implementations to structure the individual user’s schedule. It was effective because we could then implement the Collection Class to sort the list of given tasks first by order of due date and then by level of difficulty. The idea behind this was the first priority for the user is to get the tasks that are due earliest out of the way but we also wanted to ensure they would not be doing difficult tasks back to back.
For the design process, the Front End Development pair laid out visual groundwork on figma.com to come up with a starting vision. Here, we discussed possible themes and color palettes to create a streamlined and smooth experience for the user. Furthermore, the logo and general structure of the program was created. Then, we started translating that vision into code using Scene Builder for JavaFX. We used different containers, controls, and nodes to bring to fruition the idea we originally had. Afterwards, we created a JavaFX Project on IntelliJ IDEA CE to finalize the creation and connections of the controller, java, and fxml files. This is also the step where we introduced the code developed by the backend pair, which finalized our program.
Challenges we ran into
We definitely ran into some challenges with sorting the linked list of plans based on two field variables. It was difficult to figure out the logic for that because we wanted to prioritize based on time but then also re-order based on difficulty level. Another difficulty we ran into was figuring out the date and time objects. Figuring out how many days an item was due based on a date input and figuring out how many tasks you could fit into 24 hours was a learning curve for all of us.
When it came to Front End Development, the pair had some big challenges to overcome. The biggest one being that neither of us had worked doing UI before. This was our first time interacting with the tools and frameworks used (JavaFX and JavaFX Scene Builder) and we had to teach ourselves all the basics to put together the UI while also making it well-rounded and smooth for the user.
Accomplishments that we're proud of
We were able to accomplish many tasks and goals while working on this project.
For the Back End Development aspect, we are very proud that we were able to get the basic implantation of the smart planner app down. This is a great starting point for us to add a lot of other ideas that we have so we can build a more comprehensive app that can be used commercially. We are also very proud of our debugging skills over the course of building this app. This is something we normally struggle with a lot more but we were very calm and patient while debugging this time around and it really paid off!
For the Front End Development aspect, we were very proud to end up implementing not just a basic, working GUI for our application, but one that is stylish and aesthetically-pleasing as well. We did not expect to create something that looks nice since it was our first time using JavaFX. However, after hours of learning JavaFX and playing around with the features in SceneBuilder, we got a good feel for how to work with the tools. There were also several difficult challenges involving the integration of the UI and the backend components, but we managed to debug our way through these issues.
What we learned
In both the Back End and Front End aspects of the program, we were able to learn and grow a lot as coders. We all performed out of our comfort zone with the purpose of developing and improving skills. We discovered how strong we can be when working in pairs, as well as teaching ourselves highly technical skills and concepts. Furthermore, the virtual aspect of things allowed us to get creative when it came to collaborating on the project. Specifically, some tools and frameworks we learned and improved upon included:
- JavaFX Scene Builder
- Different IDE’s (IntelliJ IDEA, Eclipse, VS Code)
- Algorithms and Data Structures (Linked Lists, Hash Tables, Sorting)
- Debugging skills
What's next for Da Plan
One of our favorite aspects of the program we developed is the possibility for expandability and addition of features. We can build so much upon this program. Some of the features we wish we could have added but didn’t have enough time to implement are as follows:
- Ability to check off a task once you have completed it
- Ability to go back and edit the duration of a task is you over/under-estimated it
- Output the schedule as a calendar with tasks planned out according to hours of the day
- Have the user input a time they want to start/stop working at
- Ability to automatically add breaks in a smart way
- Possibly come up with a more efficient mechanism of sorting the tasks
- Integrate the schedule with google calendar