Russell Tan's Project Portfolio Page
Project: EduMate
EduMate is a desktop address book application used to help NUS students maintain both their social and academic life by lowering the barriers to meet up and also make new friends within modules and school.
The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 30 kLoC.
Given below are my contributions to the project.
- Code Contributed to team-based tasks:
- Basic User Profile #7
- What it does: Separate User Profile from a typical contact.
- Justification: Personalise settings for the user of the application.
- Overhaul of
EduMateFrom AB3 #7, #32:- What it does: Gives a basic structure of
EduMateto work with. - Justification: Fits into requirements of
EduMatethrough adaptation of code.
- What it does: Gives a basic structure of
- Spearhead the use of
ContactIndexandIndexHandler#124 Testing: #134- What it does: Gives a unique identifier for each contact added to
EduMate, replacingIndexentirely. - Justification: Use of
Indexis too rigid as it obtains aPersonfrom their index inObservableListonly. - Highlight:
IndexHandlercan help assign aContactIndexto a newly-addedPerson. Contacts can be queried by theirContactIndexinstead of their index inObservableList.
- What it does: Gives a unique identifier for each contact added to
- Person Card UI changes #134
- Let each Person Card’s index number display
ContactIndexinstead of just their relative index inObservableList.
- Let each Person Card’s index number display
viewCommand: #82, Testing: #118- What it does: Displays the
PersonorUserprofile on the Profile Panel. - Justification: So that the
Usercan view the full profile of the contact or him/herself. - Highlight: Can view profiles via different command formats.
- What it does: Displays the
HourBlock,TimeBlock,TimePeriod,Day#144, #193 Testing: #144, #193- What it does: Represents periods of a time in a
Timetable. - Justification: Abstracts out a period of time for the
TimingRecommender. - Highlight: Built using Joda-Time
- What it does: Represents periods of a time in a
- MathUtil and TimeUtil #144, #193 Testing: #193
- What it does: Utility functions to aid
TimingRecommenderin its functions. - Justification: Separate abstraction of methods which do not fit into any Time-based classes.
- Highlights: Cartesian Product, Indexing, Clash checks, Merge
TimePeriods.
- What it does: Utility functions to aid
TimetableClass #144, #193 Testing: #144- What it does: Represents a contact’s or
User’s timetable. - Justification: To display the schedule of the
PersonorUser
- What it does: Represents a contact’s or
TimingRecommender#144, #204- What it does: Looks through all participants’ timetables and finds time slots when every participant is free.
- Justification: Using an automated tool to schedule meetups is more efficient compared to relying on NUS students to manually message each other to find a suitable meeting time.
meetCommand andTimingRecommenderintegration #204
- Basic User Profile #7
- Code contributed: RepoSense link
- Project management:
- Initiated use of GitHub Projects to manage progress.
- Chaired weekly meetings.
- Managed Gradle for the entire team (imports, packages, enabling assertions) #161
- Documentation:
- User Guide #210, #218, #225, #238, #246, #325
- Partial reformatting of User Guide (Content presentation, whitespace usage)
- Used Figma to obtain desired diagrams used in the entire User Guide.
- Fix grammatical errors and sentence structure in the entire User Guide.
- Developer Guide #166, #177, #199, #218, #225,
- Added UML diagrams and content for View Command, View Command Parser, Recommender, Time-related classes.
- Contributed to adding placeholders for new upcoming commands during V1.2 in preparation for V1.3.
- User Guide #210, #218, #225, #238, #246, #325
- Reviewing/Mentoring contributions:
- Tools:
- Java 11, JavaFX, Joda-Time, JUnit, Gradle, Figma