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 find command so that all fields are indexable, not just names. find command now takes an optional field argument. #62
    • Implemented two new search methods in StringUtil to match the internal Map and Set implementation of fields. #62
    • Updated tests after the implementation of multiple fields for phones, addresses and emails. #40, #47
    • Updated list command to display all contacts in lexicographical order of names. #74
    • Created and updated ReacheTheme.css. #86
    • Created Agenda, Meeting, MeetingPlace, MeetingTime, MeetingsList classes in model to model meetings. #107
    • Simplified feedback message from commands for better readability and understandability #115
    • Created classes for meetings feature commands. #116
    • Updated tests for find feature. #125
    • Formatted date time in meetings in a user-friendly manner. #135
    • Added check for expired meetings. #139
    • Updated test for meetings. #210, #219, #240

  • Contributions to UG:
    • Added details about find command under the Finding Contacts section. #77, #84, #158
    • Added tutorials in UG to facilitate on-boarding of first time users. #139, #221

  • Contributions to DG:
    • Added 6 Use Cases #22
    • Added two Class Diagrams for Model component to match new implementation #235, #267
    • Added find feature under Implementation along with its design considerations, activity diagram and sequence diagram #97, #105
    • Added meet feature under Implementation along with its design considerations and sequence diagram #262
    • Added update feature under Implementation along with its design considerations and sequence diagram #262
    • Added instructions for manual testing for find, update, and cancel commands #281

  • Contributions to Team-based Tasks:
    • Created demo videos for v1.2 and v1.3
    • Fixed PE-D bugs (issues #170, #179, #180 #183)

  • 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>
![Sample Contacts](images/Tutorial/sample_contacts_screen.png)
   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>