Moddie is a desktop app for managing schedules, interests, and tags of contacts optimized for use via a Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Moddie can get your contact and schedule management tasks done faster than traditional GUI apps.
Ensure you have Java 11
or above installed in your Computer.
Download the latest Moddie.jar
from here.
Copy the file to the folder you want to use as the home folder for your Moddie.
Open a command terminal, cd
into the folder you put the jar file in, and use the java -jar Moddie.jar
command to run the application.
A 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:
list
: Lists all contacts.
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01
: Adds a contact named John Doe
to the Address Book.
delete 3
: Deletes the 3rd contact shown in the current list.
clear
: Deletes all contacts.
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 n/NAME
, NAME
is a parameter which can be used as add n/John Doe
.
Items in square brackets are optional.
e.g n/NAME [t/TAG]
can be used as n/John Doe t/friend
or as n/John Doe
.
Items with …
after them can be used multiple times including zero times.
e.g. [t/TAG]…
can be used as (i.e. 0 times),
t/friend
, t/friend t/family
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
, 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.
help
Shows a message explaning how to access the help page.
Format: help
Expected success outcome:
Opened help window.
Expected failure outcome:
Help not available. Please try again.
Prompts suggestions to user based on their inputs. Expected success outcome:
Lists down similar suggestion seperated by whitespaces matching user inputs
Upon typing some input and deleting it entirely, will prompt it to list down all commands!
add
Adds a person to the address book with their information.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL [a/ADDRESS] [t/TAG]… [i/INTEREST]…
tag
are added, separate with a space (e.g t/friends t/neighbours)interest
are added, separate with a space (e.g i/basketball i/shopping)Tip: A person can have any number of tags or interests (including 0)
Examples:
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01
add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/83329001 t/criminal i/hunting
Expected success outcome:
New person added: …
Expected failure outcome:
Invalid command format!
Potential Errors:
list
Shows a list of all persons in the address book.
Format: list
Expected success outcome:
Listed all persons
edit
Edits an existing person's information in the address book.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]… [i/INTEREST]…
INDEX
. The index refers to the index number shown in the displayed person list.
The index must be a positive integer 1, 2, 3, …t/
without
specifying any tags after it.i/
without
specifying any interests after it.Examples:
edit 1 p/91234567 e/johndoe@example.com i/Bird Watching
Edits the phone number, email address and interest of the
1st person to be 91234567
, johndoe@example.com
and Bird Watching
respectively.edit 2 n/Betsy Crower t/
Edits the name of the 2nd person to be Betsy Crower
and clears all existing tags.find alex
and then running edit 1 n/Alen a/10 Admiralty St #04-01
will only edit the 1st person who is displayed
on the contact list.Expected success outcome:
Edited Person: …
Expected failure outcome:
Phone numbers should only contain numbers, and it should be at 8 digits long and starts with either 6, 8 or 9
OR
The person index provided is invalid.
Potential Errors:
find
Finds persons whose names, phone number, email, address or tag contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
hans
will match Hans
Hans Bo
will match Bo Hans
Han
will not match Hans
OR
search).
e.g. Hans Bo
will return Hans Gruber
, Bo Yang
Disclaimer:
list
if find
command is called.Examples:
find John
returns john
and John Doe
find alex david
returns Alex Yeoh
, David Li
find 9123
returns the phone numbers 91236547
and 23912376
find gmail
returns the emails alexY@gmail.com
and davidL@gmail.com
find road
returns the address Upper Thomson Road
and Lower Kent Ridge Road
find friend
returns anyone with the tag friend
Expected success outcome:
xx persons listed!
...
Expected failure outcome:
0 persons listed!
delete
Deletes the specified person from the address book.
Format: delete INDEX
INDEX
.Examples:
list
followed by delete 2
deletes the 2nd person in the address book.find Betsy
followed by delete 1
deletes the 1st person in the results of the find
command.Expected success outcome:
Deleted Person: …
Expected failure outcome:
The person index provided is invalid.
clear
Clears all entries from the address book.
Format: clear
Expected success outcome:
Address book has been cleared!
addSched
Adds an event with contact from specified date with time
Format: addSched PERSON_INDEX [MORE_PERSON_INDEX] s/SCHEDULE_NAME start/START_DATETIME end/END_DATETIME
find Betsy
followed by addSched 1 s/Exam start/2024-03-05 16:00 end/2024-03-05 18:00
adds the 1st person in
the results of the find
command to the event stated.Examples:
addSched 4 s/Exam start/2024-03-05 16:00 end/2024-03-05 18:00
will add the 4th person in the address list to the Exam
event which
would take place on 5th March 2024 from 4pm - 6pmaddSched 1, 2, 3 s/CSMeeting start/2024-03-18 13:00 end/2024-03-18 19:00
will add the 1st, 2nd and 3rd persons in the address list
to the CSMeeting
event which would take place on 18th March 2024 from 3pm - 7pmExpected success outcome:
New schedule added: ...
start:
end:
Expected failure outcome:
Invalid command format!
addSched: Adds a schedule to person(s) in address book. Parameters: PERSON INDEX(S) (must be positive integer)
s/SCHEDULE start/START_DATETIME (yyyy-MM-dd HH:mm) end/END_DATETIME (yyyy-MM-dd HH:mm)
(START_DATETIME and END_DATETIME must be in the same day and between 08:00 and 21:00)
Example: addSched 1, 2 s/CS2103 weekly meeting start/2024-02-24 09:00 end/2024-02-24 17:00
OR
The date format provided is invalid. Format: yyyy-MM-dd HH:mm
OR
Duplicate Schedule cannot be added to same Person
Potential Errors:
deleteSched
Deletes a schedule that associated with a person
Format: deleteSched PERSON_INDEX schedule/SCHEDULE_INDEX
find Betsy
followed by deleteSched 1 schedule/2
deletes the 2nd schedule from the 1st person in
the results of the find
command.Examples:
deleteSched 1 schedule/2
will delete the 2nd schedule from the 1st person in the address listExpected success outcome:
The schedule deleted: …
Expected failure outcome:
Invalid command format!
deleteSched: Deletes a schedule in address book. Parameters: Person INDEX(S) (must be positive integer)
schedule/Schedule INDEX(S) (must be positive integer)
Example: deleteSched 1 schedule/ 1
OR
The schedule index provided is invalid
Potential Errors:
editSched
Edit a schedule that associated with a person with new information, and optionally, you may also edit the group associated with the schedule.
Format: editSched PERSON_INDEX schedule/SCHEDULE_INDEX [s/SCHEDULE_NAME] [start/START_DATETIME] [end/END_DATETIME]
find Betsy
followed by editSched 1 schedule/2 s/CCA meeting
edits the 2nd schedule from the 1st person in
the results of the find
command with the new schedule name CCA meeting
, as well as the schedule for every other
participants.Examples:
editSched 1 schedule/2 s/CS1101S meeting start/2024-02-03 12:00 end/2024-02-03 15:00
will copy the
2nd schedule from the 1st person in the address list with the new name CS1101S meeting
on the
new timing from 3rd February 2024 12pm to 3rd February 2024 3pm, for the 1st person only.editSched 1 schedule/2 s/CS2040S class
will copy the 2nd schedule from the 1st person in the address list and create a separate schedule with the new name CS2040S class
for the 1st person only.editSched 1 schedule/2 start/2024-03-05 11:00
will copy the 2nd schedule from the 1st person in the address list and create a separate schedule with the new starting date time of 5th March 2024 11am for the 1st person only.editSched 1 schedule/2 end/2024-06-12 20:00
will copy the 2nd schedule from the 1st person in the address list and create a separate schedule with the new ending date time of 12th June 2024 8pm for the 1st person only.Expected success outcome:
Edited Schedule: …
Expected failure outcome:
Invalid command format!
editSched: Edit a schedule in address book. Parameters: PERSON INDEX(S) (must be positive integer)
schedule/TASK INDEX(S) (must be positive integer) [start/ START DATETIME (yyyy-MM-dd HH:mm)]
[end/ END DATETIME (yyyy-MM-dd HH:mm)]
Example: editSched 1 schedule/ 1, 2 [s/ CS2103 weekly meeting] [start/ 2024-02-24 15:00] [end/ 2024-02-24 17:00]
OR
At least one field to edit must be provided.
Potential Errors:
exit
Exits the program.
Format: exit
The schedule display allows users to be able to view the schedule of their classmates and determine if there are any conflicts in timing.
When there is no conflict between the schedules, the schedule would be displayed with a black border as shown below.
The schedule which the user would like to view can be done using the dropdown box which displays all the names that of the classmates within the contact list.
If 2 or more people are participants in the same schedule, the schedule border would be colored blue and it would called 'Group schedule'. By hovering over the Group schedule, you would be able to view all the participants of that specific group schedule.
Important Notes:
Moddie data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Moddie data are 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, Moddie 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 the Moddie 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.
[coming in v2.0]
Details coming soon ...
n/John Doe
and n/john doe
are both considered the same valid name.p/82710912
e/CS2103_grp@nus.sg
a/Blk 810 Sengkang St 21
.t/friends
i/fruits
2024-07-07 12:00
and END_DATETIME = 2024-07-07 17:00
John Doe
, Phone number = 98765432
, Email = john@gmail.com
John Doe
, Phone number = 98765432
, Email = johnD@outlook.com
John Doe
, Phone number = 87654321
, Email = john@gmail.com
Jack Black
, Phone number = 98765432
, Email = john@gmail.com
John Doe
, Phone number = 81234567
, Email = jonnyBoy@gmail.com
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 Moddie home folder.
preferences.json
file created by the application before running the application again.Command | Format, Examples |
---|---|
Help | help |
Add | add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [i/INTEREST]… [t/TAG]… e.g., add n/James Ho p/94458770 e/jamesho@example.com a/123, Clementi Rd, 1234665 i/ basketball t/friend t/colleague |
List | list |
Edit | edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [i/INTEREST]… [t/TAG]… e.g., edit 2 n/James Lee e/jameslee@example.com |
Find | find KEYWORD [MORE_KEYWORDS] e.g., find James Jake |
Delete | delete INDEX e.g., delete 3 |
Clear | clear |
Add Schedule | addSched INDEX [MORE_INDEX] s/SCHEDULE_NAME start/START_DATETIME end/END_DATETIME e.g. addSched 1, 2, 3 s/CSMeeting start/2024-04-04 09:00 end/2024-04-04 17:00 |
Delete Schedule | deleteSched PERSON_INDEX schedule/SCHEDULE_INDEX e.g. deleteSched 1 schedule/2 |
Edit Schedule | editSched PERSON_INDEX schedule/SCHEDULE_INDEX [s/SCHEDULE_NAME] [start/START_DATETIME] [end/END_DATETIME] e.g. editSched 1 schedule/1 s/CS1101S meeting start/ 2024-04-04 12:00 end/ 2024-04-04 15:00 |
Exit | exit |