Hey there, future interns! Since you are here, we assumed that you are also a student, like us, who is starting your internship search. Welcome to InternBook, your go-to companion in the exciting journey of applying for internships!
We are a dynamic team of five students who have been in your shoes, feeling the struggle of juggling multiple internship applications while trying to keep track of every detail. We get it - those Excel spreadsheets might seem like a good idea at first, but let's face it, they quickly become a cluttered mess, making it harder to find what you need and leading to inconsistencies in your data. That's why we decided to roll up our sleeves and create InternBook!
InternBook isn't just another app - it's your personal assistant for managing internship applications effortlessly. With InternBook, you can record crucial details like company names, application deadlines, contact emails, and the roles you are applying for, all in one organised place. It is optimised for a Command line Interface (CLI), but you can use the advantages of a Graphical User Interface (GUI). No more frantic searches through endless spreadsheets or sticky notes!
This user guide is tailored to introduce you to the core functionalities of InternBook, providing comprehensive examples to kickstart your journey.
Our user guide begins by providing guidance on getting started. You can easily navigate effortlessly through our features section for a detailed overview of all available functionalities. Alternatively, utilise our convenient Table of Contents to quickly access specific sections of interest. It provides the field constraints, including permitted values and compulsory or optional parameters.
We have also included details about our future enhancements, giving you a glimpse of what features to anticipate.
Don't forget to check out our frequently asked questions section, where you'll find answers to common queries. We understand that perfection takes time, so we appreciate your patience as we work to resolve any known issues you may encounter.
For quick reference, consult our command summary, which outlines key commands used throughout InternBook.
Product: InternBook
Product Description: InternBook is a user-friendly application designed to streamline the internship application process for students. It serves as a comprehensive tool to organise, track, and manage internship applications effectively. Whether you are a tech-savvy student or new to the internship search, InternBook simplifies the process, ensuring a smooth and efficient experience for all users.
Overview of Main Features:
So, whether you are just starting your internship search or you are a seasoned pro, InternBook is here to help you land that dream internship. Let's turn those aspirations into achievements together!
Happy interning,
The InternBook Team 🚀
IMPORTANT Ensure you have Java
11installed in your computer. If you do not have it installed, download it from here. Not sure if you have Java11downloaded, here's how to check.
internBook.jar from here.đź’ˇ TIP: Create a folder with internBook.jar so that the data files created will be stored in the same folder. Check our FAQ to see how to open it in your terminal.
cd into the folder you put the jar file in, and use the java -jar internBook.jar command to run the application.đź’ˇ TIP: If you are struggling to figure out the path to
cdinto, you can use the File Explorer in your OS to copy the file path and directlycdto that.
Alternatively, you can simply navigate to the file location the File Explorer and double-click on the application to run.
A GUI similar to the one displayed below should appear in a few seconds. Note how the app already contains some sample data.

Try out a command!
For instance, typing help and pressing Enter will open the help window.
You can also try out the following commands:
list : Lists all contacts.
add -n Company -e company@gmail.com -t Role: Adds a company contact with name Company, email company@gmail.com and tag Role.
delete 1 : Deletes the contact with index 1.
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 inputs to be supplied by the user.
e.g. in add -n COMPANY, COMPANY is the input which can be used as add -n DBS.
Fields in square brackets are optional.
e.g -n COMPANY [-p PHONE_NUMBER] can be used as -n DBS -p 61234567 or as -n DBS.
Field with …​ after them can be used multiple times.
e.g. -t TAG…​ can be used as -t Software Engineer, -t Software Engineer -t Data Analyst etc.
Fields can be in any order.
e.g. if the command specifies -n COMPANY -t Software Engineer, -t Software Engineer -n COMPANY is also acceptable.
Extraneous parameters for commands that do not take in inputs (such as help, list, exit and clear) will be ignored.
e.g. if the command specifies help 123, it will be interpreted as help.
❗️ Important: Dates will only show in the GUI if both start date and end date are present.
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.
helpShows a pop-up window of our user guide for easier access.
Format: help
listShows a list of all companies in the InternBook.
Format: list
addAdds a company to the InternBook.
Format: add -n COMPANY -e EMAIL -t TAG…​ [-p PHONE_NUMBER] [-d1 START_DATE] [-d2 END_DATE]
| Field | Optional/Compulsory | Flag | Remarks |
|---|---|---|---|
| Company Name | Compulsory | -n | Names should only have alphanumeric characters and spaces |
| Compulsory | -e | Emails should be of the format local-part@domain and adhere to the following constraints: 1. The local-part should only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-). The local-part may not start or end with any special characters. The local-part may not have consecutive special characters. 2. This is followed by a '@' and then a domain name. The domain name is made up of domain labels separated by periods. The domain name must: - end with a domain label at least 2 characters long - have at least 2 domain labels separated by a dot (.) - have each domain label start and end with alphanumeric characters - have each domain label consist of alphanumeric characters, separated only by hyphens, if any. | |
| Tag (Can be used as roles) | Compulsory | -t | Multiple tags are allowed Tags should only have alphanumeric characters and "/" Tags should not start or end with "/" Tags are case insensitive and the first alphabet of each word will be capitalised |
| Phone | Optional | -p | Phone numbers should be 3 or more digits |
| Start Date | Optional | -d1 | Dates should be in the form YYYY-MM-DD Start date must be earlier than or equals to end date |
| End Date | Optional | -d2 | Dates should be in the form YYYY-MM-DD End date must be later than or equal to start date |
Examples:
add -n DBS -t Software Engineer -e dbs@example.com -d1 2024-04-04 -d2 2024-05-05add -n Tiktok -t Data Analyst -e tiktok@example.com -p 61234567 -t AI Engineerℹ️ Remark:
Here are the steps to add a company with examples of error messages and how to deal with them:
add -n Tik_Tok -p 91234-567 -e adasd.com -t Soft-ware Engineer -d1 04-05-2024 -d2 2024-04-14add -n TikTok -p 91234-567 -e adasd.com -t Soft-ware Engineer -d1 04-05-2024 -d2 2024-04-14add -n TikTok -p 91234567 -e adasd.com -t Soft-ware Engineer -d1 04-05-2024 -d2 2024-04-14add -n TikTok -p 91234567 -e adasd.com -t Soft-ware Engineer -d1 2024-04-15 -d2 2024-04-14add -n TikTok -p 91234567 -e adasd.com -t Soft-ware Engineer -d1 2024-04-14 -d2 2024-04-15
For the complete error message, please consult the "Remarks" column in the Adding a Company table.add -n TikTok -p 91234567 -e ada@sd.com -t Soft-ware Engineer -d1 2024-04-14 -d2 2024-04-15
add -n TikTok -p 91234567 -e ada@sd.com -t Software Engineer -d1 2024-04-14 -d2 2024-04-15
editEdits an existing company in the InternBook.
Format: edit INDEX [-n NAME] [-p PHONE_NUMBER] [-e EMAIL] [-t TAG…]​ [-d1 START_DATE] [-d2 END_DATE]
INDEX. The index refers to the index number shown in the displayed intern book. The index must be a positive integer 1, 2, 3, …​| Field | Optional/Compulsory | Flag | Remarks |
|---|---|---|---|
| Company Name | Optional | -n | Names should only have alphanumeric characters and spaces |
| Optional | -e | Emails should be of the format local-part@domain and adhere to the following constraints: 1. The local-part should only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-). The local-part may not start or end with any special characters. The local-part may not have consecutive special characters. 2. This is followed by a '@' and then a domain name. The domain name is made up of domain labels separated by periods. The domain name must: - end with a domain label at least 2 characters long - have at least 2 domain labels separated by a dot (.) - have each domain label start and end with alphanumeric characters - have each domain label consist of alphanumeric characters, separated only by hyphens, if any. | |
| Tag (Can be used as roles) | Optional | -t | Multiple tags are allowed Tags should only have alphanumeric characters and "/" Tags should not start or end with "/"b |
| Phone | Optional | -p | Phone numbers should be 3 or more digits |
| Start Date | Optional | -d1 | Dates should be in the form YYYY-MM-DD Start date must be earlier than or equal to end date |
| End Date | Optional | -d2 | Dates should be in the form YYYY-MM-DD End date must be later than or equal to start date |
| Examples: |
edit 1 -p 91234567 -e dbs_hr@example.com Edits the phone number and email address of the 1st company in the currently displayed list to be 91234567 and dbs_hr@example.com respectively.edit 2 -n Meta -t Engineer Edits the name of the 2nd company to be Meta and change the tags to Engineer only.Here are the steps to edit the fields of a company:
edit 1 -n Amazon edit 1 -e alphabet@example.com edit 1 -t UI/UX Designer edit 1 -p 91234567 edit 1 -d1 2024-04-15 -d2 2024-05-01 đź’ˇ TIP: When editing the dates of an application, it is recommended to edit both start and end dates. If only one of the date is edited, and the record is not showing anything, please refer to our FAQ.
findFinds companies whose names or tags begin with the given keyword.
Format: find KEYWORD
Google will match googleSoftware Engineer will not match Engineer SoftwareSoftware will return a Company with name Software XYZ as well as a Company with tag Software Engineer.Test will return Test Engineer or QA Tester, but not QATester.Software Engineer will return Software Engineering but not Software Developer or Staff Engineer.Examples:
find Google returns google and Googlefind software returns Software Company and companies with tags matching software deleteDeletes the specified company from the InternBook.
Format: delete INDEX
INDEX.Examples:
delete 2 deletes the 2nd company in the intern book.find Google followed by delete 1 deletes the 1st company in the results of the find command.đź’ˇTIP: If you know what company you want to delete, you should search for it by using
find COMPANY, followed bydelete INDEXinstead of going through all entries to look for the company.
markMarks the specified company as applied.
Format: mark INDEX
INDEX as applied.INDEX is already marked.Examples:
mark 2 marks the 2nd company in the listed intern book if it is unmarked.find Google followed by mark 1 marks the 1st company in the results of the find command, if it is unmarked.đź’ˇ TIP: After applying to a company, you should
find COMPANYthenmark INDEXinstead of going through all entries to look for the company.
unmarkMarks the specified company as not applied.
Format: unmark INDEX
INDEX as not applied.INDEX is already unmarked.Examples:
unmark 2 unmarks the 2nd company in the listed intern book if it is marked.find Google followed by unmark 1 unmarks the 1st company in the results of the find command, if it is marked.sortSorts the list in specific order.
Format: sort PREF
PREF.PREF refers to the preference the user can choose from.| Field | Optional/Compulsory | Remarks |
|---|---|---|
| Sort Preference | Compulsory | Choose between "a", "s" or "e" to choose sorting preference |
Examples:
sort asort ssort eℹ️ Remarks:
reminderSet the number of days until the end date of an application and receive reminders about approaching deadlines.
A separate reminder window as shown below, will pop up the next time you launch the app. Companies, whose end date is NUMOFDAYS away from current
date, and have yet to be marked as applied, will show up.
Format: reminder -r NUMOFDAYS
preferences.json file.NUMOFDAYS must be a positive integer or "off" to turn off the reminder| Field | Optional/Compulsory | Flag | Remarks |
|---|---|---|---|
| Reminder Period | Compulsory | -r | Reminder period should be a positive integer or "off" to turn off the reminder |
reminder -r OFF works too.Examples:
reminder -r 7reminder -r offSteps to set a reminder:
reminder -r 30 


đź’ˇTIP: To switch off reminder, simply key
reminder -r off.
clearClears all entries from the intern book.
Format: clear
exitExits the program.
Format: exit
InternBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
InternBook data are saved automatically as a JSON file [JAR file location]/data/internBook.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, InternBook 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 InternBook 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 InternBook home folder.
Q: How do I check if I am on JDK 11?
A: For MAC users, open up your Terminal, and for Windows users, open up your Command Prompt.
Type in java -version and you will see the java version.
Q: How do I navigate to my folder on my terminal?
A: For Windows user:


For Mac users:
Open Finder.
Navigate to the parent folder of the target folder but do not double-click into it (the folder you want to open a terminal window into)
Right-Click on the folder and hover over Services (At the bottom), Click New Terminal at Folder.
If there is no such option, you will have to go to your Settings > Keyboard > Keyboard Shortcuts... > Services > Files and Folders > Tick New Terminal At Folder

Now try again,
Q: Why are my dates missing in the GUI?
A: Ensure that you have keyed in the start date and end date for the internship application. If only one date is present,
it will not show in the GUI. You can edit them accordingly.
Q: What causes the occurrence of multiple records for companies sharing the same name, email, phone, and tag?
A: We apologise for the confusion. Please refer to known issues. Different application records may
be stored if there are distinctions in their name, phone number, email address, start date, end date, or tags. However,
if only the start date or end date is available, those dates won't be displayed, potentially leading to confusion.
Q: Can different companies be tagged to the same email address?
A: Yes, it's possible. We permit multiple company names to share the same email address. For instance, consider
inputs like OCBC Tech or OCBC Finance. We offer users the flexibility to customise company names, including departmental
distinctions, even if they share an email address.
Q: Why is it possible to add applications with dates that have already passed?
A: Users are permitted to add applications with past dates because we're in the process of developing new
features. These features will enable users to take notes about specific companies, which they can
refer back to when considering future applications.
Q: When is a company classified as a duplicate?
A: A company is identified as a duplicate when you attempt to add a record with identical name, phone number, email
address, tags, start date, and end date as an existing entry. If all these fields matches, the system flags it as a duplicate,
preventing the addition of such an application.
Q: Why do applications with no dates appear between sorted applications by start or end date?
A: We apologise for the confusion caused. This occurs because some applications may have only a start date or an end
date entered, causing them not to display any dates. However, when sorting by start date, applications with only a start
date will also be considered in the sorting process.
preferences.json file created by the application before running the application again.

sort a is not fully accurate. It should state "Sorted all entries in alphanumerical order" instead.

| Action | Format, Examples |
|---|---|
| Help | help |
| List | list |
| Add | add -n NAME -e EMAIL -t TAG…​ [-p PHONE_NUMBER] [-d1 START_DATE] [-d2 END_DATE] e.g., add -n Meta -e meta@example.com -t Software Developer |
| Edit | edit INDEX [-n NAME] [-p PHONE_NUMBER] [-e EMAIL] [-d1 START_DATE] [-d2 END_DATE] [-t TAG…​]e.g., edit 2 -n DBS -p 91234567 |
| Find | find KEYWORD e.g., find Google, find Software |
| Delete | delete INDEXe.g., delete 3 |
| Mark | mark INDEXe.g., mark 1 |
| Unmark | unmark INDEXe.g, unmark 3 |
| Sort | sort PREFe.g., sort a, sort s, sort e |
| Reminder | reminder -r NUMOFDAYS e.g., reminder -r 7, reminder -r off |
| Clear | clear |
| Exit | exit |