Tonishka Singh's Project Portfolio Page
Project Reache
Reache is a desktop app that helps busy working professionals manage their large list of contacts by providing an easy-to-use interface to store contacts and organize meetings. It is optimised for use via a Command Line Interface (CLI) and is especially suited for fast typers.
Summary of Contribution
-
Code Contributed: RepoSense Link
- Enhancements Implemented:
- Enhanced
findcommand so that all fields are indexable, not just names.findcommand now takes an optional field argument. #62 - Implemented two new search methods in
StringUtilto match the internalMapandSetimplementation of fields. #62 - Updated tests after the implementation of multiple fields for phones, addresses and emails. #40, #47
- Updated
listcommand to display all contacts in lexicographical order of names. #74 - Created and updated
ReacheTheme.css. #86 - Created
Agenda,Meeting,MeetingPlace,MeetingTime,MeetingsListclasses inmodelto model meetings. #107 - Simplified feedback message from commands for better readability and understandability #115
- Created classes for
meetingsfeature commands. #116 - Updated tests for
findfeature. #125 - Formatted date time in
meetingsin a user-friendly manner. #135 - Added check for expired meetings. #139
- Updated test for meetings. #210, #219, #240
- Enhanced
- Contributions to UG:
- Contributions to DG:
- Added 6 Use Cases #22
- Added two Class Diagrams for
Modelcomponent to match new implementation #235, #267 - Added
find featureunderImplementationalong with its design considerations, activity diagram and sequence diagram #97, #105 - Added
meet featureunderImplementationalong with its design considerations and sequence diagram #262 - Added
update featureunderImplementationalong with its design considerations and sequence diagram #262 - Added instructions for manual testing for
find,update, andcancelcommands #281
- Contributions to Team-based Tasks:
- Contributions beyond the Project team:
- Contributions to the Developer Guide (extracts):
#### Design Considerations
#### Aspect: What happens when user does not specify a field
**Note:**
For evaluating the usefulness of the alternatives these are the assumptions
made as to why the user does not specify the field:
a) they forgot,
b) they do not want to restrict their search to one field, or
c) they do not remember which field they want to search.
**Alternative 1 (Current Choice):** Search all fields for the keyword
- Pros:
- This is the most intuitive approach.
- For all above mentioned scenarios a-c, this alternative will produce
the most useful result.
- Cons:
- If there is a lot of data it will take more time to search all fields for
every person.
- Requires the most complex implementation among all alternatives.
- Performs a lot of unnecessary comparisons (`alex` will never match any
phone number, likewise `659347563` will never match any name).
**Alternative 2:** Use name as the default search field
- Pros: Simple implementation. Since searching people by their name is
the most probable and intuitive use of this command, this is likely to
produce a useful result.
- Cons: Useless for scenario b) and c).
**Alternative 3:** Produce a command syntax error and ask user to enter field
- Pros: Simple implementation. Useful in scenario a) above.
- Cons: Useless for scenario b) and c).
- Contributions to the User Guide (extracts):
### 2.3 Getting Started with Reache
If you are a first time user of Reache, we highly recommend following these
two step-by-step tutorials to get familiar with the product.
In the [contacts tutorial](#231-tutorial-1-managing-contacts-with-reache),
you will learn how to add your contact information to Reache.
In the [meetings tutorial](#232-tutorial-2-managing-meetings-with-reache),
you will learn how to schedule and track your meetings using Reache.
Experienced users should skip this section.
#### 2.3.1 Tutorial 1: Managing Contacts with Reache
In this tutorial we will be adding your personal contact information to Reache.
1. Launch Reache from the folder in which it is located by double clicking
on it. You will see the window shown below with some sample contacts. <br>

Since this is the first time you are using Reache, it loads the sample
contacts as there are no actual contacts stored. Let’s start storing some
real contacts in it. <br><br>