KeepInTouch is a desktop app for managing contacts for job-seekers. It can also help job-seekers to manage events for career purposes. KeepInTouch is optimized for use via a Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, KeepInTouch can get your contact management tasks done faster than traditional GUI apps.
help
list contact
add contact
delete contact
find
add tag
delete tag
add note
delete note
list events
add event
delete event
clear
exit
Ensure you have Java 11 installed in your Computer.
Download the latest keepintouch.jar
from here.
Copy the file to the folder you want to use as the home directory for your KeepInTouch app.
Open a command terminal, cd
into the home directory, and use the java -jar keepintouch.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 show the list of all available commands.
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 delete contact CONTACT_ID
, CONTACT_ID
is a parameter which can be used as delete contact 1
.
Items in square brackets are optional.
e.g add contact -n NAME [-p PHONE_NUMBER] [-a ADDRESS] [-e EMAIL] [-t TAGNAME...]
can be used as add contact -n Aaron -p 12345678 -a Baker Street 12 -e aaron123@gmail.com -t Frontend
or as add contact -n Aaron -e aaron123@gmail.com
.
Items with …
after them can be used multiple times.
e.g. [-t TAGNAME...]
can be used as -t Frontend
, -t Frontend -t Java
etc.
Parameters can be in any order.
e.g. if the command specifies -tit NOTE_TITLE -con NOTE_CONTENT
, -con NOTE_CONTENT -tit NOTE_TITLE
is also acceptable.
Extraneous parameters for commands that do not take in parameters (such as list contact
and exit
, etc.) will be ignored.
e.g. if the command specifies exit 123
, it will be interpreted as exit
.
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.
Requirements and details on user supplied parameters:
CONTACT_ID
is the number that is on the left of the contact's name in each contact card.
CONTACT_ID
should be a positive integer less than 2,147,483,648.
NAME
should be alphanumeric, spaces are allowed.
PHONE_NUMBER
should be numbers at least 3 digits long.
EMAIL
should be of the format local-part@domain:
+
, _
, .
, -
. The local-part should not start or end with any special characters.TAGNAME
should be alphanumeric, with no spaces.
TAGNAME
is case-sensitive. For example, a contact can have tags Frontend
and frontend
at the same time.
START_TIME
and END_TIME
can be in one of the following formats:
yyyy-MM-dd HH:mm[:ss]
2023-10-12 20:05
, 2023-10-12 20:05:30
yyyy-MM-dd
2023-10-12
HH:mm[:ss]
00:10
, 05:01:45
help
Shows a list of commands and functionalities.
Format: help [COMMAND_WORD]
COMMAND_WORD
after help
to view the specific functionalities of the command.COMMAND_WORD
includes: add
, delete
, clear
, find
, list
.Examples:
help
help add
list contact
Shows a list of all contacts in the contact list if tags not specified. Otherwise, shows a list of contacts which contains any one of the specified tags.
Format: list contact [-t TAGNAME...]
Examples:
list contact
to show all contacts.list contact -t Recruiter
to show all contacts which have a recruiter tag.add contact
Adds a contact to the contact list.
Format: add contact -n NAME -p PHONE_NUMBER -a ADDRESS -e EMAIL [-t TAGNAME...]
Examples:
add contact -n Aaron -p 12345678 -a Baker Street 12 -e aaron123@gmail.com
Unsuccessful output:
This contact already exists in the contact list
Phone numbers should only contain numbers, and it should be at least 3 digits long
delete contact
Deletes the specified contact from the contact list.
Format: delete contact CONTACT_ID
Examples:
delete contact 1
deletes the first contact in the contact list.Unsuccessful output:
The person index provided is invalid
find
Finds a contact by their name by matching keywords with the contact's name. Only word-word matches will be detected, and partial words match will not be detected. For example, Ale
will not match Alex
, but Alex
will match Alex Wong
. Keywords are case insensitive.
Format: find KEYWORD [OTHER_KEYWORDS...]
Examples:
find David
add tag
Adds one or more tags to a contact. Contact list will go back to showing all contacts upon successful addition.
Format: add tag -id CONTACT_ID -t TAGNAME...
Examples:
add tag -id 1 -t Frontend
adds a tag with tag name "Frontend" to the first contact in the contact list.add tag -id 1 -t Frontend -t Java
adds two tags with tag name "Frontend" and "Java" to the first contact in the contact list.Unsuccessful output:
Can not find the target contact with ID: 100
delete tag
Deletes one or more tags to a contact. Contact list will go back to showing all contacts upon successful deletion.
Format: delete tag -id CONTACT_ID -t TAGNAME...
TAGNAME
are accepted, but they will be treated as one.Examples:
delete tag -id 1 -t Frontend
deletes a tag with tag name "Frontend" from the first contact in the contact list.delete tag -id 1 -t Frontend -t Java
deletes two tags with tag name "Frontend" and "Java" from the first contact in the contact list.Unsuccessful output:
Can not find the target contact with ID: 100
add note
Adds a note to a contact from the contact list.
Format: add note -id CONTACT_ID -tit NOTE_TITLE -con NOTE_CONTENT
Examples:
add note -id 1 -tit Meeting Topics -con The topic is about the framework design of the project
add note -id 2 -tit Open Position -con Applications for SWE full-time positions will open soon
Unsuccessful output:
Can not find the target contact with ID: 100
delete note
Deletes the specified note from the contact list.
Format: delete note -id CONTACT_ID -nid NOTE_ID
NOTE_ID
from the contact with id CONTACT_ID
.Examples:
delete note -id 1 -nid 1
deletes the first note from the first contact in the contact list.Unsuccessful output:
Can not find the target contact with ID: 100
Note not found: ID = 5
list events
Shows a list of all events or events within a specified time interval.
Format: list events [-descending] [-st START_TIME] [-et END_TIME]
(start time and end time are inclusive)
Arguments -st
and -et
must both present or both not present.
By default, the list of events are sorted by the start time in ascending order (i.e. from earliest to latest). If you want to use descending order, add -descending
to the command.
Executing this command will create a popup window, which shows a table representing the events within the specified time interval. The columns inside the table are resizeable.
Examples:
list events
list events -st 2023-11-01 -et 2023-11-02
list events -descending -st 2023-11-01 -et 2023-11-02
add event
Adds an event to a contact. The event should not have clashes in timing with other existing events in the contact list. Events with start time earlier than the current time are allowed for keeping track of past events.
Format: add event -id CONTACT_ID -en EVENT_NAME -st START_TIME [-et END_TIME] [-loc LOCATION] [-info INFORMATION]
END_TIME
is not given, it will be defaulted to the START_TIME
.START_TIME
is exactly equals to END_TIME
, the END_TIME
for the event will not be displayed in text-based UI.Examples:
add event -id 1 -en Meeting with professor -st 12:00 -et 13:00 -loc COM 1 Basement -info Discuss the project implementation with the professor
add event -id 2 -en Chat with TikTok recruiter -st 17:00
Unsuccessful output:
Error: Operation would result in duplicate events
Can not find the target contact with ID: 100
Invalid date-time format! Text '29/05/2024' could not be parsed at index 2
delete event
Deletes the specified event from a contact.
Format: delete event -id CONTACT_ID -eid EVENT_ID
EVENT_ID
from the contact CONTACT_ID
.EVENT_ID
is the number that are in the left of the event line under each contact card.Examples:
delete event -id 1 -eid 2
deletes the second event from the first contact in the contact list.Unsuccessful output:
Can not find the target contact with ID: 100
Event not found: ID = 5
clear
Clears all KeepInTouch entries.
Format: clear
exit
Exits the program.
Format: exit
KeepInTouch data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
More features coming soon ...
The directory where the jar file for the application and the data
folder presents.
The unit for storing the contact information for a person/entity in the address book. You can add tags, notes and events to a contact.
Short tags to be added to the contact for you to reference. It can be the type of the contact, for example, company
, HR
, etc.
A piece of additional information for a contact that you want to store and reference in the future. It can be any additional information you'd like to keep with the contact.
A representative of an event that you will happen with a person/entity in a contact in the future. It can be job interviews, career fairs or HR meeting appointments.
Q: Why can't I run the app?
A: Make sure you have Java 11 installed before running the app, and make sure you have followed the way mentioned in Quick Start.
Q: How do I transfer my data to another device?
A: Please follow these steps:
data
folder is always in the new home directory together with the jar file.Q: Can I modify the data file outside the application itself?
A: No, you should NOT directly modify the data file outside the application at anytime, otherwise it may lead to unpredictable consequences and errors to the application.
No known issues at the moment
Action | Format, Examples |
---|---|
List Contact | list contact [-t TAGNAME...] e.g., list contact -t Recruiter |
Add Contact | add contact -n NAME -p PHONE_NUMBER -a ADDRESS -e EMAIL [-t TAGNAME...] e.g., add contact -n Aaron -p 12345678 -a Baker Street 12 -e aaron123@gmail.com -t Frontend |
Delete Contact | delete contact CONTACT_ID e.g., delete contact 1 |
Find Contact | find KEYWORD [OTHER_KEYWORDS...] e.g., find Alex |
Add Tag | add tag -id CONTACT_ID -t TAGNAME... eg., add tag -id 1 -t Frontend |
Delete Tag | delete tag -id CONTACT_ID -t TAGNAME... eg., delete tag -id 1 -t Frontend |
Add Note | add note -id CONTACT_ID -tit NOTE_TITLE -con NOTE_CONTENT e.g., add note -id 2 -tit Open Position -con Applications for SWE full-time positions will open soon |
Delete Note | delete note -id CONTACT_ID -nid NOTE_ID e.g., delete note -id 1 -nid 1 |
List Events | list events [-descending] [-st START_TIME] [-et END_TIME] e.g., list events -descending -st 2023-11-01 -et 2023-11-02 |
Add Event | add event -id CONTACT_ID -en EVENT_NAME -st START_TIME [-et END_TIME] [-loc LOCATION] [-info INFORMATION] e.g., add event -id 1 -en Meeting with professor -st 12:00 -et 13:00 -loc COM 1 Basement -info Discuss the project implementation with the professor |
Delete Event | delete event -id CONTACT_ID -eid EVENT_ID e.g., delete event -id 1 -eid 1 |
Clear Data | clear |
Help | help [COMMAND_WORD] e.g., help add |