TravelHub is a contact management app designed to help travel agents efficiently manage customer information and service details, such as addresses and contact information. Using a simple command-line interface, it supports adding, deleting, tagging of contact profiles and trips.
Ensure you have Java 17 or above installed in your Computer.
Windows users: Download and install JDK 17 from here
Mac users: Ensure you have the precise JDK version prescribed here.
java -version in your terminalDownload the TravelHub.jar file from the latest release here.
.jar file will be listed under the Assets dropdown of the latest version - click on it to begin your downloadCopy the TravelHub.jar file to the folder you want to use as the home folder for TravelHub. Other additional folders (e.g. data folder) will be created within this home folder.
Open a command terminal, cd into the folder you put the jar file in, type the java -jar travelhub.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 list all the available commands.
Some example commands you can try:
listContact : Lists all contacts.
addContact 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.
deleteContact 3 : Deletes the 3rd contact shown in the current list.
clear : Deletes all contacts and trips.
exit : Exits the app.
Refer to the Features below for details of each command.
IMPORTANT: All commands are case-sensitive
Notes about the command format:
Words in UPPER_CASE are the parameters to be supplied by the user.
e.g. in addContact n/NAME, NAME is a parameter which can be used as addContact n/John Doe.
The parameter nts/NOTE is optional for Trip and Contact.
However, if added, it must be the final input parameter.
Items in square brackets are optional.
e.g n/NAME [t/TAG] can be used as n/John Doe t/customer 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/customer, t/customer t/service 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, 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.
A contact consists the following parameters: name, phone, email, address, tags and notes.
The parameters follow immediately after their corresponding prefixes and are useful for the addContact and editContact commands.
| Parameter | Prefix | Description |
|---|---|---|
NAME | n/ | Specifies the name of the contact. Requirements:
|
PHONE | p/ | Specifies the phone number of the contact. Requirements:
|
EMAIL | e/ | Specifies the email of the contact Requirements:
|
ADDRESS | a/ | Specifies the address of the contact. Requirements:
|
TAG | t/ | Specifies the tag of a customer. Requirements:
|
NOTE | nts/ | Specifies additional notes related to the contact. Requirements:
|
A trip consists the following parameters: trip name, accommodation, itineraries date, customers, and notes.
The parameters follow immediately after their corresponding prefixes and are useful for the addTrip and editTrip commands.
| Parameter | Prefix | Description |
|---|---|---|
NAME | n/ | Specifies the name of the trip. Requirements:
|
ACCOMMODATION | acc/ | Specifies the accomodation for the trip. Requirements:
|
ITINERARY | i/ | Specifies the itinerary for the trip. Requirements:
|
DATE | d/ | Specifies the date of the trip. Requirements:
|
CUSTOMER_NAME | c/ | Specifies the name of the customers participating in the trip. Requirements:
|
NOTE | nts/ | Specifies additional notes related to the trip. Requirements:
|
All commands are case-sensitive and listed in alphabetical order. Please follow the specified format for each command carefully
addContactAdds a contact to the address book.
Format: addContact n/NAME p/PHONE e/EMAIL a/ADDRESS [t/TAG]… [nts/NOTE]
Examples:
addContact n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01addContact n/XYZ Restaurant e/xyz_cuisine@example.com a/XYZ Street p/67654321 t/service nts/Serves western cuisineaddContact n/Betty's Gift Shop e/betty_biz@example.com a/Sunshine Street 3 p/67654321 t/service t/customer addTripAdds a trip to the trip book.
Format: addTrip n/NAME acc/ACCOMMODATION i/ITINERARY d/DATE [c/CUSTOMER_NAME]... [nts/NOTE]
Examples:
addTrip n/Paris 2025 acc/Hotel Sunshine i/Visit Eiffel Tower; Eat baguette d/01/1/2025 c/Jane Doe c/John Doe nts/Remember to book ticketsaddTrip n/Beach Vacation acc/Beach Resort i/Relax by the beach; Snorkeling d/15/3/2024 c/Alice Smith nts/All-inclusive packageaddTrip n/Business Conference acc/City Hotel i/Attend presentations; Networking d/10/5/2024 nts/Corporate rate applies clearClears all contact and trip entries stored in the application.
Format: clear
Upon execution of this command, a confirmation pop-up will appear:
Any additional text after clear (e.g., clear abc) will be ignored. The command will still be processed as clear.
deleteContactDeletes the specified contact from the address book.
Format: deleteContact INDEX
INDEX.Examples:
listContact followed by deleteContact 2 deletes the 2nd contact in the address book.find Betsy followed by deleteContact 1 deletes the 1st contact in the results of the find command.
deleteTripDeletes the specified trip from the trip book.
Format: deleteTrip INDEX
INDEX.Examples:
editContactEdits an existing contact in the address book.
Format: editContact INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]… [nts/NOTE]
INDEX.t/ without specifying any tags after it.nts/ without specifying anything after it.Examples:
editContact 1 p/91234567 e/johndoe@example.com Edits the phone number and email address of the 1st contact to be 91234567 and johndoe@example.com respectively.editContact 2 n/Betsy Crower t/ Edits the name of the 2nd contact to be Betsy Crower and clears all existing tags.
editTripEdits an existing trip in the trip book.
Format: editTrip INDEX [n/NAME] [acc/ACCOMMODATION] [i/ITINERARY] [d/DATE] [c/CUSTOMER_NAME]... [nts/NOTE]
INDEX.nts/ without specifying anything after it.Examples:
editTrip 1 acc/Grand Hotel i/Visit Louvre; Visit Seine River nts/Changed hotel due to availability Edits the accommodation, itinerary, and adds a note for the 1st trip.editTrip 2 n/London Trip 2025 c/Jane Doe c/Bob Smith Edits the name and changes the customer names for the 2nd trip.
exitExits the program.
Format: exit
Any additional text after exit (e.g., exit xyz) will be ignored. The command will still be processed as exit.
findFinds contacts whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
hans will match HansHans Bo will match Bo HansHan will not match HansOR search).
e.g. Hans Bo will return Hans Gruber, Bo YangExamples:
helpShows a list of all available commands.
Format: help
Any additional text after help (e.g., help xyz) will be ignored. The command will still be processed as help.
Expected output:
Available commands:
- addContact: Adds a new contact
- addTrip: Adds a new trip with name, accommodation, itinerary, date, optional customer names and optional note
- clear: Clear all contacts and trips
- deleteContact: Removes a contact at a specified index
- deleteTrip: Removes a trip at a specified index
- editContact: Edits a contact at a specified index
- editTrip: Edits a trip at a specified index
- exit: Exits the program
- find: Find contacts whose names contain any of the given keywords
- help: Shows program usage instructions
- listContact: Lists all contacts [can specify tag type]
- listTrip: Lists all trips [can specify date]
listContactShows a list of contacts in the address book.
Format: listContact [customer/service]
[customer/service] parameter, only contacts with the tag will be displayed.
listTripShows a list of all trips in the trip book.
Format: listTrip [DATE]
[DATE] parameter, only trips on that specific date will be displayed.ContactBook and TripBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
ContactBook data are saved automatically as a JSON file [JAR file location]/data/addressbook.json. Similarly, TripBook data are saved automatically as a JSON file [JAR file location]/data/tripbook.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, ContactBook and TripBook 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 ContactBook and TripBook 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 ContactBook and TripBook home folder.
preferences.json file created by the application before running the application again.help command (or use the User Guide menu, or the keyboard shortcut F1) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.All commands are case-sensitive and are listed in alphabetical order below.
| Action | Format, Examples |
|---|---|
| Add Contact | addContact n/NAME p/PHONE e/EMAIL a/ADDRESS [t/TAG]… [nts/NOTE] e.g., addContact n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/customer |
| Add Trip | addTrip n/NAME acc/ACCOMMODATION i/ITINERARY d/DATE [c/CUSTOMER_NAME]... [nts/NOTE]e.g., addTrip n/Paris 2025 acc/Hotel Sunshine i/Visit Eiffel Tower; Eat baguette d/01/1/2025 c/Jane Doe c/John Doe nts/Customer prefers window seat |
| Clear | clear |
| Delete Contact | deleteContact INDEXe.g., deleteContact 3 |
| Delete Trip | deleteTrip INDEXe.g., deleteTrip 3 |
| Edit Contact | editContact INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]… [nts/NOTE]e.g., editContact 2 n/James Lee e/jameslee@example.com or editContact 5 p/98765432 t/service nts/Allergic to fish |
| Edit Trip | editTrip INDEX [n/NAME] [acc/ACCOMMODATION] [i/ITINERARY] [d/DATE] [c/CUSTOMER_NAME]... [nts/NOTE]e.g., editTrip 1 acc/Grand Hotel i/Visit Louvre; Visit Seine River nts/Changed hotel due to availability or editTrip 3 n/Batam Trip d/17/12/2025 |
| Exit | exit |
| Find | find KEYWORD [MORE_KEYWORDS]e.g., find James Jake or find Alex |
| Help | help |
| List Contact | listContact [customer/service] e.g., listContact or listContact service or listContact customer |
| List Trip | listTrip [DATE]e.g., listTrip or listTrip 15/12/2023 |