User Guide
MeetBuddy is a desktop app for managing contacts and daily meetings, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, MeetBuddy can get your contacts and meetings management done faster than traditional GUI apps. In addition, MeetBuddy is meant for users to organise their meetups with friends, family, or work colleagues. It provides a better user experience for users who have alot of contacts having online Gravatar accounts, where there is automatic syncing of their profile pictures.
- Quick start
- Glossary
- General Features
- Contact Features
- Meeting features
- Person Meeting Features
- Timetable feature
- FAQ
- Command summary
Quick start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
meetbuddy.jar
from here. -
Copy the file to the folder you want to use as the home folder for your MeetBuddy.
-
Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
-
Type the command in the command box and press Enter to execute it. e.g. typing
help
and pressing Enter will open the help window.
Some example commands you can try:-
listp
: Lists all contacts. -
addp
n/John Doe ph/98765432 e/johnd@example.com a/John street, block 123, #01-01
: Adds a contact namedJohn Doe
to MeetBuddy. -
deletep
3
: Deletes the 3rd contact shown in the current list. -
exit
: Exits the app.
-
-
Refer to the Features below for details of each command.
Glossary
- Contact: The set of all the persons stored in MeetBuddy, which is shown in the left part of the GUI.
- Person(s): Refers to the persons in the contact.
- Person Meeting: Refers to features/models and other aspects that are | related to both persons(contact) and meetings in MeetBuddy.
- Person Meeting Connection: Refers to the associations between people and meeting within MeetBuddy.
General Features
Notes about the command format:
-
Words in
UPPER_CASE
are the parameters to be supplied by the user.
e.g. inadd n/NAME
,NAME
is a parameter which can be used asadd n/John Doe
. -
Items in square brackets are optional.
e.gn/NAME [g/GROUP]
can be used asn/John Doe g/friend
or asn/John Doe
. -
Items with
…
after them can be used multiple times including zero times.
e.g.[g/GROUP]…
can be used asg/friend
,g/friend g/family
etc. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME ph/PHONE_NUMBER
,ph/PHONE_NUMBER n/NAME
is also acceptable. -
If a parameter is expected only once in the command but you specified it multiple times, only the last occurrence of the parameter will be taken.
e.g. if you specifyph/12341234 ph/56785678
, onlyph/56785678
will be taken. -
Extraneous parameters for commands that do not take in parameters (such as
help
,list
,exit
) will be ignored.
e.g. if the command specifieshelp 123
, it will be interpreted ashelp
. -
Note that for all date arguments, if the day is less than or equal to 31 and there is no such day corresponding to the given month and year of the date, the program is smart enough to handle such cases and automatically corrects the date to the nearest valid end-of-month date. For example
31-02-2021
will be auto-corrected to28-02-2021
because there is no such date. But32-02-2021
will not be autocorrected and the user will be prompted with an error message.
Composition of the app
Viewing help : help
Shows a message explaning how to access the help page.
Format: help
Exiting the program : exit
Exits the program.
Format: exit
Saving the data
MeetBuddy data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Editing the data file
Person Contact data are saved as a JSON file [JAR file location]/data/addressbook.json
. Users are not suggested updating data directly by editing that data file.
Meeting data are saved as a JSON file [JAR file location]/data/meetingbook.json
. Users are not suggested updating data directly by editing that data file.
Person-Meeting Connection data are saved as a JSON file [JAR file location]/data/connctions.json
. Users are not suggested updating data directly by editing that data file.
Archiving data files [coming in v2.0]
Contact Features
Adding a person: addp
Adds a person to MeetBuddy.
Format: addp n/NAME [ph/PHONE] [e/EMAIL] [a/ADDRESS] [g/GROUP]...
Examples:
addp n/John Doe ph/98765432 e/johnd@example.com a/John street, block 123, #01-01
addp n/Betsy Crowe g/CS2103 e/betsycrowe@example.com a/Newgate Prison ph/1234567 g/badminton
Listing all persons : listp
Shows a list of all persons in MeetBuddy.
Format: listp
Editing a person : editp
Edits an existing person in MeetBuddy.
Format: edit INDEX [n/NAME] [ph/PHONE] [e/EMAIL] [a/ADDRESS] [g/GROUP]…
- Edits the person at the specified
INDEX
. The index refers to the index number shown in the displayed person list. The index must be a positive integer 1, 2, 3, … - Existing values will be updated to the input values.
- When editing groups, the existing groups of the person will be removed i.e adding of groups is not cumulative.
- You can remove all the person’s groups by typing
g/
without specifying any groups after it.
Examples:
-
edit 1 ph/91234567 e/johndoe@example.com
Edits the phone number and email address of the 1st person to be91234567
andjohndoe@example.com
respectively. -
edit 2 n/Betsy Crower g/
Edits the personName of the 2nd person to beBetsy Crower
and clears all existing groups.
Locating persons by personName: findp
Finds persons whose names contain any of the given keywords.
Format: findp KEYWORD [MORE_KEYWORDS]
- The search is case-insensitive. e.g
hans
will matchHans
- The order of the keywords does not matter. e.g.
Hans Bo
will matchBo Hans
- Only the personName are searched.
- Only full words will be matched e.g.
Han
will not matchHans
- Persons matching at least one keyword will be returned (i.e. OR search). e.g.
Hans Bo
will returnHans Gruber
,Bo Yang
Examples:
-
find John
returnsjohn
andJohn Doe
-
find alex david
returnsAlex Yeoh
,David Li
Locating persons by group: findpg
Finds persons whose groups contain any of the given keywords.
Format: findpg KEYWORD [MORE_KEYWORDS]
- The search is case-insensitive. e.g
badminton
will matchBadminton
- The order of the keywords does not matter. e.g.
findpg tennis table
will list every person in the table tennis group - Only the groups are searched.
- Only full words will be matched e.g.
badminton
will not matchbadmintons
- Persons whose group match at least one keyword will be returned (i.e.
OR
search).
Examples:
-
findpg badminton
returns the list of contacts that are in the badminton group
Deleting a person : deletep
Deletes the specified person from MeetBuddy.
Format: delete INDEX
- Deletes the person at the specified
INDEX
. - The index refers to the index number shown in the displayed person list.
- The index must be a positive integer 1, 2, 3, …
Examples:
-
list
followed bydelete 2
deletes the 2nd person in MeetBuddy. -
find Betsy
followed bydelete 1
deletes the 1st person in the results of thefind
command.
Sorting of persons : sortp
Sorts the contacts displayed according to a specified field.
Format: sortp by/FIELD d/DIRECTION
- Sorts according to the field specified by
FIELD
-
FIELD
is only restricted to the following cases:- Sort by name :
NAME
- Sort by email :
EMAIL
- Sort by phone number :
PHONE
- Sort by address :
ADDRESS
- These are all case-insensitive
- Sort by name :
-
DIRECTION
is only restricted to the following cases:- Sort by ascending alphabetical order :
ASC
- Sort by descending alphabetical order :
DESC
- These are all case-insensitive
- Sort by ascending alphabetical order :
Examples:
-
sortp by/NAME d/ASC
sorts the persons by name and present the result in ascending alphabetical order.
Profile picture:
Instantly updates your contacts with their Gravatar profile picture, if your contact has their email linked to their gravatar account. The profile picture will be automatically displayed upon adding the contact. If there is a problem obtaining the image, a default blue circle icon will be displayed instead.
Meeting features
Adding a meeting: addm
Adds a meeting to MeetBuddy.
Format: addm n/NAME st/TIME ed/TIME [desc/DESCRIPTIONS] [pr/PRIORITY] [p/PERSON RELATED INDEX]… [g/GROUP]…
- Note that meetings must be of minimum length of 15 mins and maximum length of 7 days. For example a meeting cannot be 15 March 16:00 - 22 March 16:00, but can be from 15 March 16:00 - 22 march 15:59.
- Priority should be an integer from 1 to 5. If the priority is not specified, it will be automatically set as 1.
- Description can be empty.
- A meeting can have any number of groups (including 0).
- Person Related Index refers to the index of the contact list shown in the GUI. The index should be an integer and not out of bounds. If duplicated person index is in the input, the program will automatically remove the duplication.
Examples:
addm n/CS2103 Lecture st/2021-03-12 14:00 ed/2021-03-12 16:00 desc/Week 7 pr/3 g/lectures g/SoC p/1 p/2
Listing all meetings : listm
Shows a list of all meetings in MeetBuddy.
Format: listm
Editing a meeting : editm
Edits an existing meeting in MeetBuddy.
Format: editm INDEX [n/NAME] [st/START TIME] [ed/END TIME] [desc/DESCRIPTION] [pr/PRIORITY] [p/PERSON RELATED INDEX] [g/GROUP]...
- Note that meetings must be of minimum length of 15 mins and maximum length of 7 days. For example a meeting cannot be 15 March 16:00 - 22 March 16:00, but can be from 15 March 16:00 - 22 march 15:59. Be aware of this when editing start datetime and/or end datetime of the meeting.
- Edits the meeting at the specified
INDEX
. The index refers to the index number shown in the displayed meeting list. The index must be a positive integer 1, 2, 3, … - Existing values will be updated to the input values.
- When editing person related, the existing related contacts will be removed. You must specify the index correctly.
- When editing groups, the existing groups in the meeting will be removed i.e adding of groups is not cumulative.
- You can remove all the meeting’s groups by typing
g/
without specifying any groups after it.
Examples:
-
editm 1 n/CS2103 Lecture g/SOC g/friends
Edits the name of the 1st meeting to beCS2103 Lecture
, and its groups to beSOC
andfriends
. -
editm 2 n/CS2106 Lab g/
Edits the name of the 2nd meeting to beCS2106 Lab
and clears all existing groups in the meeting. -
editm 2 n/CS2106 Lab p/1
Edits the name of the 2nd meeting to beCS2106 Lab
and change the contacts related field to the first person in your contact list (If he/she exists).Deleting a meeting:
deletem
Deletes a meeting in MeetBuddy.
Format: deletem INDEX
- Deletes the meeting at the specified
INDEX
. - The index refers to the index number shown in the displayed meeting list.
- The index must be a positive integer 1, 2, 3, …
Examples:
-
listm
followed bydelete 2
deletes the 2nd meeting in MeetBuddy.
Locating meetings: findm
Finds meetings that satisfy all the given criteria.
Format: findm [n/NAME] [time/TIME]... [desc/DESCRIPTION] [pr/PRIORITY] [g/GROUP]... [p/INDEX OF PERSON RELATED]...
- Though all fields are optional, we require the user to enter at least one.
- The search is case-sensitive in name searching. e.g
CS2103
will not matchcs2103
- The order of the searching filed does not matter. e.g.
findm n/CS pr/3
will be the same asfindm pr/3 n/CS
. - Time field refers to a point of time, as long as this point of time is in between of a meeting’s start time and ending time (inclusive), the search will return this specific meeting.
- The user can enter many times. The meetings will have to satisfy all of them.
- Time field must follow YYYY-MM-DD HH:MM format.
- For other fields, the requirement is the same as addm (Adding a meeting). You can refer to the previous UG instruction.
Examples:
-
findm n/CS pr/3 time/2021-03-12 19:00
will try to find a meeting whose name containsCS
and with priority level3
and contains the time pointMarch 12th, 2021 19:00
.
Showing of persons in a meeting : showm
Shows all persons present in a specified meeting.
Format: showm INDEX
- The index refers to the meeting index, and it must be a positive integer 1, 2, 3, …
- The meeting must also exist in the list of meetings shown on the GUI.
- The command will display the list of contacts associated with a meeting.
- This command, however, will not show the list of contacts associated with groups that are in a meeting.
- For instance, a meeting can have the group
table tennis club
, but contacts in thetable tennis club
will not be shown withshowm
. Only those who are directly added into the meeting will be shown. - This is because a user may have the meeting with the
table tennis club
but not everyone in the club. The user may only wish to have the meeting with a user-defined circle of friends within the club depending on the purpose.
Sorting of meetings : sortm
Sorts the meetings displayed according to a specified field.
Format: sortm by/FIELD d/DIRECTION
- Sorts according to the field specified by
FIELD
-
FIELD
is only restricted to the following cases:- Sort by name :
NAME
- Sort by start time :
START
- Sort by end time :
END
- Sort by priority :
PRIORITY
- Sort by description :
DESCRIPTION
- These are all case-insensitive
- Sort by name :
-
DIRECTION
is only restricted to the following cases:- Sort by ascending order :
ASC
- Sort by descending order :
DESC
- These are all case-insensitive Examples:
- Sort by ascending order :
-
sortm by/PRIORITY d/ASC
sorts the meetings by priority and present the result in ascending order.
Person Meeting Features
Listing all persons and meetings : list
Shows a list of all persons and meetings in MeetBuddy.
Format: list
Adding persons related for a meeting: addptm
Adds persons related to a meeting in MeetBuddy.
Format: addptm INDEX p/PERSON RELATED INDEX1 [p/PERSON RELATED INDEX2]…
- The index refers to the meeting index, and it must be a positive integer 1, 2, 3, …
- The user must input at least one person related index field.
- Person Related Index refers to the index of the contact list shown in the GUI. The index should be an integer and not out of bounds. If duplicated person index is in the input, the program will automatically remove the duplication.
Examples:
-
addptm 1 p/1 p/2 p/2
Adds the person on index 1 and 2 into the contacts related field in meeting 1.
Deleting persons related from a meeting: deletepfm
Deletes persons related from a meeting in MeetBuddy.
Format: deletepfm INDEX p/PERSON RELATED INDEX1 [p/PERSON RELATED INDEX2]…
- The index refers to the meeting index, and it must be a positive integer 1, 2, 3, …
- The user must input at least one person related index field.
- Person Related Index refers to the index of the contact list shown in the GUI. The index should be an integer and not out of bounds. If duplicated person index is in the input, the program will automatically remove the duplication.
- The related persons that the user wants to delete must exist in the contacts related field.
Examples:
-
deletepfm 1 p/1 p/2 p/2
Deletes the person on index 1 and 2 from the contacts related field in meeting 1.
Timetable feature
Viewing Timetable:
No command is necessary. Just click on the timetable tab to switch view from meeting list to timetable. The timetable consists of 7 rows, each row corresponds a day of a week in the timetable, which default is from 7 am to 6.59 am on the next day. Each meeting is represented as an orange rectangular slot that will be placed in the timetable according to the following rules
- If the meetings happen on a date corresponding to a column, it will be slotted into that column
- The vertical axis if the timetable is the time, and slots are vertically placed according to their start time.
- The length of the meeting slot is proportional to the timespan of the meeting.
Note that it will correctly update and display all meetings. Meetings that fall outside the range of the timetable will be filtered off.
Some things to note:
- Default when starting the application, the timetable will have the first ( leftmost column ) representing today’s date.
- Meetings can overlap across columns.
- Setting small meeting times around the edge of the timetable will cause display issues, For example,
setting a meeting
to 6:44-7:01 might cause display issues from the 7 - 7.01 will not display the date or time. Also even though 15 minute
meetings are allowed to be scheduled, the words will appear squished on the timetable. It is therefore highly
recommended to set your meeting times to be
AT LEAST 30 MINS
and meeting namesAT MOST 24 characters
long. It is recommended to avoid scheduling your meetings overlapping across 7am (for example, meetings ending at 7:01 am) to get optimum viewing functionality. A recommended way to schedule meetings is to choose a time between 7am - 5pm.
- Note that you can scroll to view more slots.
Set Timetable date : setTimetable
Sets a timetable to start on a specified date. Updates the display accordingly.
Format: ‘setTimetable DATE’
- DATE must be a string strictly following the format
YYYY-mm-dd
- If no date is specified, for example
setTimetable
without DATE parameter is keyed in, it will default set to today’s current date.
Examples:
-
setTimetable 2021-04-12
Set the time table to Apr 12th, 2021. You can check it by clicking Timetable in the GUI. -
setTimetable
Sets the timetable to today’s date. You can double check with the calendar.
FAQ
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous MeetBuddy home folder.
Command summary
Action | Format, Examples |
---|---|
Add |
addp n/NAME [ph/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [g/GROUP]… e.g., addp n/James Ho ph/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 g/CS2106 g/badminton addm n/NAME st/TIME ed/TIME [desc/DESCRIPTIONS] [pr/PRIORITY] [p/PERSON RELATED INDEX]… [g/GROUP]… e.g., addm n/CS2103 Lecture st/2021-03-12 14:00 ed/2021-03-12 16:00 desc/Week 7 pr/3 g/lectures g/SoC p/1 p/2
|
Delete |
deletep INDEX e.g., deletep 3 deletem INDEX e.g., deletem 3
|
Edit |
editp INDEX [n/NAME] [ph/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [g/GROUP]… e.g., editp 2 n/James Lee e/jameslee@example.com editm INDEX [n/NAME] [st/START TIME] [ed/END TIME] [desc/DESCRIPTION] [pr/PRIORITY] [p/PERSON RELATED INDEX] [g/GROUP]... e.g., editm 2 n/CS2103 Lecture
|
Find |
findp KEYWORD [MORE_KEYWORDS] e.g., findp James Jake findpg KEYWORD [MORE_KEYWORDS] e.g., findpg badminton findm [n/NAME] [time/TIME]... [desc/DESCRIPTION] [pr/PRIORITY] [g/GROUP]... [p/INDEX OF PERSON RELATED]... e.g., findm n/CS pr/3 |
List |
list , listm , listp
|
Sort |
sortp by/FIELD d/DIRECTION sortm by/FIELD d/DIRECTION
|
Help | help |
SetTimetable | setTimetable DATE |
AddPersonRelatedToAMeeting | addptm INDEX p/PERSON RELATED INDEX1 [p/PERSON RELATED INDEX2]… |
DeletePersonRelatedFromAMeeting | deletepfm INDEX p/PERSON RELATED INDEX1 [p/PERSON RELATED INDEX2]… |