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
EduMate
From AB3 #7, #32:- What it does: Gives a basic structure of
EduMate
to work with. - Justification: Fits into requirements of
EduMate
through adaptation of code.
- What it does: Gives a basic structure of
- Spearhead the use of
ContactIndex
andIndexHandler
#124 Testing: #134- What it does: Gives a unique identifier for each contact added to
EduMate
, replacingIndex
entirely. - Justification: Use of
Index
is too rigid as it obtains aPerson
from their index inObservableList
only. - Highlight:
IndexHandler
can help assign aContactIndex
to a newly-addedPerson
. Contacts can be queried by theirContactIndex
instead 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
ContactIndex
instead of just their relative index inObservableList
.
- Let each Person Card’s index number display
view
Command: #82, Testing: #118- What it does: Displays the
Person
orUser
profile on the Profile Panel. - Justification: So that the
User
can 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
TimingRecommender
in 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
Timetable
Class #144, #193 Testing: #144- What it does: Represents a contact’s or
User
’s timetable. - Justification: To display the schedule of the
Person
orUser
- 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.
meet
Command andTimingRecommender
integration #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