Vishandi Rudy Keneta's Project Portfolio Page
Project: UniGenda
UniGenda is a desktop app for managing contacts and schedules, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you are a university student having a hard time organising your timetable, or commonly find difficulty scheduling a suitable time to meet up with your project group mates or friends, UniGenda is the app just for you!
Given below are my contributions to the project.
- Improved Feature: Edited the existing attributes and added new attributes of a
Personin AB3 to match UniGenda’s needs.- Justification: As UniGenda is an app meant for university students to use, and nowadays people don’t know each other’s address and/or email, we decided to make email and address optional in UniGenda. Also, these days, lots of university students use
TelegramandGitHubto support their school activities. Hence, we add these two attributes also to aPerson’s attribute in UniGenda. - Highlights: I tried some implementations that could model the optional attributes, i.e.
Email,Address,Telegram, andGitHub. This is an important (and tedious) step because it needs to be easily developed for future optional attributes as well, as it is only logical for future developments to add more optional attributes. I tried making thePersonto have anOptional<attribute>, and I also tried changing the getter functions to return anOptional<attribute>, but both didn’t work. The hardest part of the implementation is in deciding what anemptyattribute should look like. At last, we decided to have a staticemptyattribute for each of the optional attribute because it is easier to implement and easier to maintain as well. In exploring the ways to model these, I discussed this modelling part with my group mates, hanqinilnix and tyanhan.
- Justification: As UniGenda is an app meant for university students to use, and nowadays people don’t know each other’s address and/or email, we decided to make email and address optional in UniGenda. Also, these days, lots of university students use
- Improved Feature: Edited the
addandeditcommands to make the edited attributes work well.- Justification: With the newly added (and edited) optional attributes, it is only logical to make the user doesn’t have to input these optional attributes when adding a
Personto UniGenda. Also, we need to allow user to delete the optional attributes from aPerson’s information. - Highlights: The most challenging part is in making sure the
VALIDATION_REGEXfor each of the new (and old) attributes works well.
- Justification: With the newly added (and edited) optional attributes, it is only logical to make the user doesn’t have to input these optional attributes when adding a
- New Feature: Added the ability to delete events from a
Person’s schedule.- What it does: Allows the user to delete a particular
Eventfrom aPerson’s schedule. - Justification: This feature is necessary for users to delete an
Eventif he/she made a mistake when adding a particularEventto aPerson.
- What it does: Allows the user to delete a particular
- New Feature: Added the ability to view a
Person’s schedule in detail.- What it does: Allows the user to view a
Person’s schedule and upcoming schedule for the upcoming week. - Justification: Listing all the events for a
Personin his/her card will make the schedule really hard to read and sometimes it could make the list very long. To mitigate this issue, we decided to make another panel (placed on the right) for the user to see thePerson’s detailed schedule. - Highlights: The challenging parts of implementing this feature is in the changes I need to make in the GUI and filtering out the events that are going to occur at a particular date. As the
Events in UniGenda can be a Daily, Weekly, and BiWeekly, the latter part is tricky, because even a small mistake can make the display doesn’t work. Thankfully, hanqinilnix and tyanhan continuously helped me to fix the issues.
- What it does: Allows the user to view a
- Improved Feature: Improving GUI.
- Justification: To accommodate the changes we made, especially the new
Schedule, I made the necessary changes to the existing GUI. - Highlights: Adding logos beside a
Person’s attribute to make it look nicer and easier to differentiate. Changing the structure of the GUI by adding the right panel. This part is especially challenging for me, because I didn’t have any experience with JavaFX before, and moving things around in SceneBuilder could be tricky sometimes, as it is really prone to mistake. One wrong click could make my whole window break.
- Justification: To accommodate the changes we made, especially the new
- Tests Added:
- Wrote tests for
Telegram#59,GitHub#65, and edit tests forEmailandAddress#25. Some changes in the tests made along the progression of the project. - Wrote tests for
Event#190. - Added tests for
EditCommandParserandAddCommandParser#79 to include the changes we made. - Added tests for
ParserUtil#118, #123.
- Wrote tests for
-
Code contributed: RepoSense link
- Project management:
- Wrote the full
v1.2 Demodocumentation. - Maintains the
v1.3milestone near the deadline ofv1.3and closes the milestone.
- Wrote the full
- Documentation:
- User Guide:
- Added and edited documentation for the
add,edit,deleteEvent, andviewSchedulefeatures. - Updated screenshots used in the User Guide.
- Added and edited documentation for the
- Developer Guide:
- Added documentation for the
viewSchedulefeature. - Added manual testings for some new and enhanced features. #221
- Added documentation for the
- User Guide:
- Community: