StudyCircle (SC) is a desktop app for NUS computing students that helps you keep track of your project groups. It helps you manage your contacts, sort them into groups, and track events within those groups.
SC is optimised for use via a Command Line Interface (CLI) while still allowing you to see your changes in real time through a Graphical User Interface (GUI). If you can type fast, SC can get your contact and group management tasks done faster than traditional GUI-only apps.
Ensure you have Java 17 or above installed in your computer.
Mac users: Ensure you have the precise JDK version prescribed here.
Download the latest .jar file from here.
Copy the file to the folder you want to use as the home folder for your StudyCircle.
Open a command terminal, cd into the folder you put the jar file in, and use the java -jar StudyCircle.jar
command to run the application.
A GUI similar to the below should appear in a few seconds. The main elements of the interface have been highlighted in the screenshot. Note how the app contains some sample data to help you get oriented.

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:
list-contacts : Lists all contacts.
add-contact n/John Doe p/98765432 e/e1399155 : Adds a contact named John Doe to the contact list.
delete-contact 3 : Deletes the 3rd contact shown in the current contact list.
clear : Deletes all contacts and groups.
exit : Exits the app.
Refer to the Features below for details of each command.
Notes about the command format:
Words in UPPER_CASE are the parameters to be supplied by the user.
e.g. in add-contact n/NAME, NAME is a parameter which can be used as add-contact n/John Doe.
Items in square brackets are optional.
e.g n/NAME [g/GROUP_INDEX] can be used as n/John Doe g/1 or as n/John Doe.
Items with … after them can be used multiple times including zero times.
e.g. [g/GROUP_INDEX]… can be used as (i.e. 0 times), g/1, g/2 g/3 etc.
Parameters can be in any order.
e.g. if the command specifies n/NAME p/PHONE_NUMBER, p/PHONE_NUMBER n/NAME is also acceptable.
Extraneous parameters for commands that do not take in parameters (such as help, list-contacts,
exit and clear) will be ignored.
e.g. if the command specifies help 123, it will be interpreted as help.
If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.
All commands are case sensitive.
e.g. list-contacts is not the same as List-Contacts
helpShows a message explaining how to access the help page.
Format: help
add-contactAdds a contact to the StudyCircle contact list.
Format: add-contact n/NAME p/PHONE_NUMBER e/EMAIL [g/GROUP_INDEX]…
NAME Constraints:
PHONE_NUMBER Constraints:
EMAIL Constraints:
GROUP_INDEX Constraints:
Duplicate handling: Each contact must have a unique NUS email, while other fields can have duplicates.
Tip: A contact can be added to multiple groups at once by specifying multiple g/ prefixes and GROUP_INDEX should not be blank
Examples:
add-contact n/John Doe p/98765432 e/e1234567 adds a contact with name: John Doe, phone: 98765432, email: e1234567@u.nus.edu to the contact list.add-contact n/Betsy Crowe e/e1232567 p/12345678 g/1 g/2 adds a contact with name: Betsy Crowe, phone: 12345678, email: e1232567@u.nus.edu to both the contact list and groups 1, 2.edit-contactEdits the details of the specified contact. Only the specified fields will be overwritten.
Format: edit-contact CONTACT_INDEX [n/NAME] [p/PHONE] [e/EMAIL] [g/GROUP_INDEX]...
CONTACT_INDEX Constraints:
Other parameter constraints are the same as in add-contact.
Caution: Using g/ prefix will replace the contact’s existing groups instead of adding to them.
Caution: Using g/ with blank GROUP_INDEX removes the contact from all groups.
(Example: edit-contact 1 g/ removes contact 1 from all groups.)
Examples:
edit-contact 1 n/John p/12345678 e/e1234567 g/1 g/2 edits the 1st contact in the current displayed
contact list to name John, phone 12345678, email e1234567@u.nus.edu and adds John to group 1 and 2.delete-contactDeletes the specified contact from the StudyCircle contact list.
Format: delete-contact CONTACT_INDEX
CONTACT_INDEX Constraints:
Examples:
delete-contact 1 deletes the 1st contact in the current displayed contact list.list-contactsShows a list of all contacts with their name, phone number, email and groups (if any) in the current displayed contact list.
Format: list-contacts
find-contactFinds all contacts whose names contain any of the specified keywords and displays them as a list with index numbers.
Format: find-contact KEYWORD [MORE_KEYWORDS]…
KEYWORD is case-insensitive BOB and bob will return the same resultfind-contact Bob Alice will return all contacts with either Bob or Alice in their namesfind-contact ann will match names like Anna, Annette, or Joanne.Examples:
find-contact rob will show the contact list with all people whose name contains robfind-contact Aaron Darren will show the contact list with all people whose name contains either aaron or darrenfind-contact Aa Da will match aaron and darrenadd-groupAdds a new group to the StudyCircle group list.
Format: add-group n/GROUP_NAME
GROUP_NAME Constraints:
-, _, (, )Duplicate handling: Each group name must be unique. Names are case-insensitive (e.g., “Team” and “team” are treated as duplicate names).
edit-groupEdit the specified group from the StudyCircle group list.
Format: edit-group GROUP_INDEX n/GROUP_NAME
GROUP_INDEX Constraints:
Other parameter constraints are the same as in add-group.
delete-groupDeletes the specified group from the StudyCircle group list.
Format: delete-group GROUP_INDEX
GROUP INDEX Constraints:
Examples:
delete-group 1 deletes the 1st group in the current displayed group list.Examples:
edit-group 1 n/cs2103 team 1 edits the 1st group in the current displayed group list to have the name cs2103 team 1.list-groupsShows a list of all groups with their members and events in the current displayed group list.
Format: list-groups
find-groupFinds all groups whose names contain any of the specified keywords (case-insensitive) and displays them as a list with index numbers.
Format: find-group KEYWORD [MORE_KEYWORDS]…
KEYWORD is case-insensitive tp and TP will return the same resultfind-group tp CS2101 will return all groups with either tp or CS2101 in their namesfind-group tp will match names like tp2103, rentport, or cs2103tp.Examples:
find-group CA2 will show the group list with all groups whose name contains CA2find-group CS 210 will show the group list with all groups whose name contains either CS or 210find-group ab3 2101 will match groups named AB3 or cs2101add-memberAdds the specified contacts to the specified group.
Format: add-member GROUP_INDEX c/CONTACT_INDEX [c/CONTACT_INDEX]…
GROUP_INDEX Constraints:
CONTACT_INDEX Constraints:
Tip: You can add more than one contact to a group by specifying each extra contact with a c/ prefix, e.g., c/1 c/2 c/3.
Caution: Adding members to multiple groups at once is not supported.
Examples:
add-member 1 c/2 adds the 2nd contact to the 1st group.add-member 1 c/1 c/2 adds the 1st and 2nd contact to the 1st groupdelete-memberDeletes the specified contacts from the specified group.
Format: delete-member GROUP_INDEX c/CONTACT_INDEX [c/CONTACT_INDEX]…
GROUP_INDEX Constraints:
CONTACT_INDEX Constraints:
Examples:
delete-member 1 c/2 deletes the 2nd contact from the 1st group.delete-member 1 c/1 c/2 deletes the 1st and 2nd contacts from the 1st groupadd-eventAdds an event to the specified group.
Format: add-event GROUP_INDEX d/DESCRIPTION
GROUP_INDEX Constraints:
DESCRIPTION Constraints:
Examples:
add-event 1 d/Report due 31/10 14:00 adds the event Report due 31/10 14:00 to the 1st group.edit-eventEdits an event description in the specified group.
Format: edit-event GROUP_INDEX e/EVENT_INDEX d/EVENT_DESCRIPTION
GROUP_INDEX Constraints:
EVENT_INDEX Constraints:
GROUP_INDEX.DESCRIPTION Constraints:
Examples:
edit-event 1 e/2 d/MVP Feature Specifications edits the 2nd event in the 1st group to MVP Feature Specificationsdelete-eventDeletes the specified event from the specified group.
Format: delete-event GROUP_INDEX e/EVENT_INDEX
GROUP_INDEX Constraints:
EVENT_INDEX Constraints:
GROUP_INDEX.Examples:
delete-event 1 e/2 deletes the 2nd event from the 1st group.set-repoSet repository link for the specified group.
Format: set-repo GROUP_INDEX r/REPOSITORY_LINK
GROUP_INDEX Constraints:
REPOSITORY_LINK Constraints:
Caution: Setting the repo link of a group will overwrite the original repo link, if it was set.
Examples:
set-repo 2 r/https://github.com/AY2526S1-CS2103T-F12-1/tp sets the repository link in 2nd group to 'https://github.com/AY2526S1-CS2103T-F12-1/tp'get-repoRetrieves the repository link of the specified group and automatically copies it to your clipboard.
Format: get-repo GROUP_INDEX
GROUP_INDEX Constraints:
Examples:
get-repo 2 will get the repository link in 2nd group and copy it to your clipboard.delete-repoDeletes the specified repository link from the specified group.
Format: delete-repo GROUP_INDEX
GROUP_INDEX Constraints:
Examples:
delete-repo 1 deletes repository link from the 1st group.show-dashboard Shows the dashboard for a group which displays the group's repo link (if any), members, events and notes.
Format: show-dashboard GROUP_INDEX
GROUP_INDEX Constraints:
Caution: While the dashboard is showing, editing that group's fields (members/events/repolink/name) will not update the
showing dashboard and will require another show-dashboard command to update those fields.
Examples:
In the dashboard, there is a section with an editable white text box which allows you to save any notes to a group.
Clear Notes buttonclearClears the contact book of all groups and contacts.
Format: clear
exitExits the program.
Format: exit
StudyCircle data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
StudyCircle data is saved automatically as a JSON file [JAR file location]/data/addressbook.json. Advanced users are
welcome to update data directly by editing that data file.
Caution:
If your changes to the data file makes its format invalid, StudyCircle will discard all data and start with an empty
data file at the next run. Hence, it is recommended to take a backup of the file before editing it.
Furthermore, certain edits can cause StudyCircle to behave in unexpected ways (e.g., if a value entered is outside the
acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
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 StudyCircle home folder.
preferences.json file created by the application before running the application again.| Action | Format, Examples |
|---|---|
| Add contact | add-contact n/NAME p/PHONE_NUMBER e/EMAIL [g/GROUP_INDEX]… e.g., add-contact n/John Doe p/98765432 e/e1234567 g/1 g/2 |
| Delete contact | delete-contact CONTACT_INDEXe.g., delete-contact 3 |
| Edit contact | edit-contact CONTACT_INDEX [n/NAME] [p/PHONE] [e/EMAIL] [g/GROUP INDEX]... e.g., edit-contact 1 n/John p/12345678 e/e1234567 g/1 g/2 |
| Find contact | find-contact KEYWORD [MORE_KEYWORDS]…e.g., find-contact James Jake |
| List contacts | list-contacts |
| Add group | add-group n/NAME e.g., add-group n/2103T |
| Delete group | delete-group GROUP_INDEXe.g., delete-group 3 |
| Edit group | edit-group GROUP_INDEX n/GROUP_NAMEe.g., edit-group 1 n/cs2103 team 1 |
| Find group | find-group KEYWORD [MORE_KEYWORDS]…e.g., find-group CA1 CA2 |
| List groups | list-groups |
| Add members to a group | add-member GROUP_INDEX c/CONTACT_INDEX [c/CONTACT_INDEX]… e.g., add-member 1 c/1, add-member 1 c/1 c/2 |
| Delete members from a group | delete-member GROUP_INDEX c/CONTACT_INDEX [c/CONTACT_INDEX]… e.g., delete-member 1 c/1, delete-member 1 c/1 c/2 |
| Add an event to a group | add-event GROUP_INDEX d/DESCRIPTIONe.g., add-event 2 d/do project work |
| Delete an event from a group | delete-event GROUP_INDEX e/EVENT_INDEX e.g., delete-event 1 e/2 |
| Edit an event in a group | edit-event GROUP_INDEX e/EVENT_INDEX d/EVENT_DESCRIPTION e.g., edit-event 1 e/2 d/MVP Feature Specifications |
| Set repository link for a group | set-repo GROUP_INDEX r/REPOSITORY_LINK e.g., set-repo 2 r/https://github.com/AY2526S1-CS2103T-F12-1/tp |
| Get repository link from a group | get-repo GROUP_INDEX e.g., get-repo 2 |
| Delete a repository link from a group | delete-repo GROUP_INDEX e.g., delete-repo 1 |
| Show a group's dashboard | show-dashboard GROUP_INDEXe.g., show-dashboard 1 |
| Clear StudyCircle contacts and groups | clear |
| Exit the application | exit |
| Help | help |