Table of Contents

Introducing InternBuddy

InternBuddy is a desktop application for university undergraduates to manage their internship applications. It is optimized for typing where it allows you to complete internship management tasks much more efficiently via the keyboard as compared to using traditional Graphical User Interface (GUI) applications. If you are a fast typist who is seeking a one-stop platform to systematically organise your internship applications, then InternBuddy is the perfect buddy to accompany you during your internship hunt.

InternBuddy runs using Java 11 and is available on the Windows, macOS, and Linux operating systems.


About the User Guide

Objectives of the User Guide

This user guide aims to provide comprehensive instructions for learning how to use InternBuddy, including details on the installation process and features. For more advanced users, this guide will also help customize your experience.

Using the User Guide

This uses guide uses a set of formatting standards and visuals to better communicate information.

Information Box

:information_source: Info: Provides useful information that supplements the main text

Tip Box

:bulb: Tip: Suggestions on how to enhance your experience

Warning Box

:warning: Warning: Warns of a dangerous action that you should be aware of and to consider carefully before committing

Syntax Highlighting

Commands, fields, file paths and class names are highlighted.

command, FIELD, filepath.json, ClassName

Keyboard Actions

Keyboard keys are indicated using rounded buttons.

Quick Start

  1. Ensure you have Java 11 or above installed in your computer.

    :information_source: Info: If you are unsure of whether you have Java 11 installed, or need help installing it, you can refer to Appendix A.
  2. Download the latest internbuddy.jar from here.

  3. Copy the file internbuddy.jar to the folder you want to use as the home folder for InternBuddy.

    :information_source: Info: The home folder is the folder that you will navigate to when you want to launch InternBuddy. It will contain a subfolder where your InternBuddy data will be stored.


  4. Double-click on the file internbuddy.jar to launch InternBuddy. A GUI similar to Figure 1 should appear in a few seconds. Note how the app contains some sample data.

    Figure 1: InternBuddy's GUI

  5. You can interact with InternBuddy by typing into the box with the text Enter command here..., then pressing to execute your command. For example, typing help and pressing will open the help window.

  6. Here are some other example commands you can try:

    • list: Lists all internships stored in InternBuddy
    • add n/Food Panda r/Web Developer s/Applied d/2023-04-01: Adds a new internship into InternBuddy.
    • delete-index 3 : Deletes the 3rd internship of the current list displayed in InternBuddy.
    • exit : Exits InternBuddy.

Do refer to Features below for a comprehensive list of supported features and their associated details.

Exploring the Graphical User Interface

Figure 2 provides a visual representation of the different parts of InternBuddy’s GUI, while Table 1 explains what each part is used for.

Figure 2: Different parts of InternBuddy's GUI


Part Usage
Command Box You can type in your commands here to interact with InternBuddy.
Result Display This is where the results of your command will be displayed.
List Panel Displays a list of internship entries.
View Panel Displays either the welcome message or detailed information of a specified internship entry.
Status Bar States where your InternBuddy data file is located on your computer.

Table 1: Explanation of the different parts of InternBuddy's GUI

:bulb: Tip: The GUI is resizeable. You can resize it according to your preferences.
:bulb: Tip: You can left-click on any of the entries displayed in the List Panel to view more information about an entry. Your selected entry will be highlighted blue. You can also use and to change your selected entry.
:information_source: Info: Commands in InternBuddy will not change your selected entry in the List Panel. To change your selected entry, you will have to manually change it either via left-clicking and/or using and

Command Information

Command Format

  • Words in UPPER_CASE are the fields that are to be supplied by you.
    e.g. If the command format is add n/COMPANY_NAME, you may input the command as add n/Apple where you supply the value Apple to the field COMPANY_NAME.

  • Items in square brackets are optional.
    e.g. If the command format is edit INDEX [n/COMPANY_NAME] [c/COMMENT], you may input the command as edit 2 n/Apple where you omit the value for the field COMMENT.

  • 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/Java, t/Java t/Python etc.

  • Fields can be in any order.
    e.g. If the command format is n/COMPANY_NAME r/ROLE, both n/Apple r/Software Engineer and r/Software Engineer n/Apple are acceptable.

  • If a field is expected only once in the command, but you specified it multiple times, only the last occurrence of the field will be taken.
    e.g. If the command format is r/ROLE, typing in r/Front-end Developer r/Back-end Developer will cause your input to be interpreted as r/Back-end Developer.

  • Extraneous values for commands that do not take in fields (such as help, list, and exit) will be ignored.
    e.g. If the command format is help, typing in help 123 will cause your input to be interpreted as help.

  • Command names are case-sensitive. For example, help will work, but HELP or Help will not.

Prefixes and Constraints for Fields

In InternBuddy’s commands, we refer to a range of fields that you can replace with values to input information that is customised to your internship applications.

There are 3 important things that you should note:

  1. Most fields have associated prefixes.
    • Prefixes are short character combinations that you can use to identify the field to which a value belongs. They are a convenient shorthand that allows you to refer a field without having to type out its entire name, saving precious time.
    • For example, in add n/Apple, the value Apple is associated with the field COMPANY_NAME since the n/ prefix is used.
    • Prefixes are case-sensitive. n/ will work but N/ will not.
  2. When entering a command, do remember to use spaces to separate different fields of information. If you enter multiple fields without using space(s) to separate them, InternBuddy will interpret them as a single field.
    • For example, edit 1 n/Visa r/Software Engineer associates Visa with the field COMPANY_NAME and Software Engineer with the field ROLE.
    • Conversely, edit 1 n/Visar/Software Engineer associates Visar/Software Engineer with the field COMPANY_NAME.
  3. There are constraints that you must adhere to when replacing fields with values.
    • Constraints differ based on the fields.
    • If you do not adhere to these constraints and enter invalid values, an error message will be displayed in the Result Display when you press . The message will alert you to the invalid input and provide information on how to correct the command.

Table 2 provides a summary of the fields with their descriptions, prefixes and constraints.

Field Description Prefix Constraints
COMPANY_NAME The name of the company n/ Cannot be blank and must be at most 50 characters.
ROLE The role that you applied for r/ Cannot be blank and must be at most 50 characters.
STATUS The status of the internship application s/ Must be one of the following: New, Applied, Assessment, Interview, Offered, Accepted, Rejected. Note that this is not case-sensitive.
DATE The date associated with the internship application d/ Must be a valid date in the format of YYYY-MM-DD.
COMMENT A comment that you can make on an internship application c/ Cannot be blank (except when used in the edit command).
TAG A label that you can give to an internship application t/ Cannot be blank (except when used in the edit command) and must be at most 30 characters.
INDEX The index number of the internship entry as displayed in the List Panel - A positive integer that is smaller than or equal to the largest index number shown in the List Panel. Note that 0 is not a positive integer.

Table 2: Fields with their descriptions, prefixes and constraints

Details on STATUS and DATE

The field STATUS represents the current status of an internship application. It can only take on one of the following values: New, Applied, Assessment, Interview, Offered, Accepted and Rejected. Note that this is not case-sensitive. Table 3 explains the meaning of each status.

STATUS Description
New You have recently saw this internship opportunity and would like to record it in InternBuddy. Also, you have yet to apply for it.
Applied You have applied for this internship opportunity and you are currently waiting for the company’s response.
Assessment You are currently in the technical assessment stage of the application process.
Interview You are currently in the behavioral interview stage of the application process.
Offered You have been offered the internship opportunity.
Accepted You have accepted the internship opportunity.
Rejected You have either been rejected by the company, or that you have rejected the internship offer.

Table 3: Description of statuses

Depending on the status of the internship application, the DATE field will be interpreted differently. Table 4 documents the meaning of DATE with respect to each STATUS value.

STATUS Interpretation of DATE
New Deadline of Application
Applied Date Applied
Assessment Date of Technical Assessment
Interview Date of Behavioral Interview
Offered Deadline of Offer Acceptance
Accepted Date of Acceptance
Rejected Date of Rejection

Table 4: Description of dates

Duplicate Internships

InternBuddy does not allow for the storage of duplicate internships. Should you enter a command that attempts to store a duplicate internship, InternBuddy will remind you that the internship already exists.

2 internships are considered to be duplicates if they have matching COMPANY_NAME, STATUS, ROLE and DATE. The comparison is case-insensitive.

In Table 5, internships A and B are considered as duplicate internships, because they have the same COMPANY_NAME, ROLE, STATUS and DATE. Note how the capitalisation differences in COMPANY_NAME and ROLE do not affect the comparison.

Field Internship A Internship B
COMPANY_NAME Google google
ROLE Frontend Engineer frontend engineer
STATUS New New
DATE 2023-02-02 2023-02-02
COMMENT NA NA
TAGS C++ Java

Table 5: Duplicate internships

Meanwhile, in Table 6, internships C and D are not considered as duplicate internships, because they have different values for COMPANY_NAME.

Field Internship C Internship D
COMPANY_NAME Apple Apple Inc
ROLE Frontend Engineer frontend engineer
STATUS New New
DATE 2023-02-02 2023-02-02
COMMENT NA NA
TAGS Java Java

Table 6: Non-duplicate internships

Duplicate Tags

If you attempt to store duplicate tags within the same internship entry, InternBuddy would only store one of them. A duplicate tag refers to a tag that is identical to another tag in every way, including the spelling and capitalisation (tags are case-sensitive). In other words, a duplicate tag is a tag that is an exact copy of another tag.

Features

InternBuddy offers a variety of features that can empower you to systematically track your internships.

Listing all Internships : list

Shows the list of all internship entries that you have stored in InternBuddy.

:information_source: Info: list will always reset the View Panel to display the welcome message.

Format: list

Adding an Internship : add

Do you have a new internship to track? Add it to InternBuddy using the add command.

Format: add n/COMPANY_NAME r/ROLE s/STATUS d/DATE [c/COMMENT] [t/TAG]...

  • The optional COMMENT field has a default value of NA. This means that if you do not specify any value for it, the comment for the newly added internship will be NA.
  • The optional TAG field will be empty by default. This means that if you do not specify any value for it, there will be no tags associated with the newly added internship.
:information_source: Info: You will not be able to add duplicate internships into InternBuddy (an error message will be shown). If you attempt to add duplicate tags into the same internship entry, InternBuddy will only store one of the tags.

Examples:

  • add n/Food Panda r/Web Developer s/New d/2023-02-01 c/I love Food Panda! t/React t/Front-end Adds a new internship entry with company name Food Panda, role Web Developer, status New, deadline of application 2023-02-01, comment I love Food Panda! and tags React and Front-End. This example is illustrated in Figure 3.
  • add n/Deliveroo r/Software Engineer s/Assessment d/2023-02-01 Adds a new internship entry with company name Deliveroo, role Software Engineer, status Assessment and date of technical assessment 2023-02-01.
  • add n/Food Panda s/New d/2023-02-01 Displays an error because the ROLE field is missing.
  • add n/Apple r/App Developer s/New d/2023-02-01 t/Java t/Java Adds a new internship entry with company name Apple, role App Developer, status New, deadline of application 2023-02-01, and tag Java (only one tag is stored since the two tags provided are duplicates).

Add Command

Figure 3: Example of the add command in action


Editing an Internship : edit

Made a mistake, or wish to update your internship entry? The edit command allows you to make modifications.

Format: edit INDEX [n/COMPANY_NAME] [r/ROLE] [s/STATUS] [d/DATE] [c/COMMENT] [t/TAG]...

  • Edits the internship whose index number is INDEX.
  • You have to provide at least one of the optional fields.
  • You can reset the comment of an internship to the default value of NA by typing c/ without specifying any comments after it.
  • You can remove all of an internship’s tags by typing t/ without specifying any other tags after it.
:warning: Warning: When editing tags, the existing tags of the internship will be removed. For example, if the internship with index 1 currently has the tags iOS and Swift, editing the internship via edit 1 t/macOS will lead to the internship only having the tag macOS. To have all 3 tags, you need to type edit 1 t/iOS t/Swift t/macOS.

Examples:

Suppose you have at least 2 internships displayed in the List Panel.

  • edit 2 s/Assessment r/Software Developer Sets the status and role of the second internship entry as Assessment and Software Developer respectively. This example is illustrated in Figure 4.
  • edit 2 Displays an error because the command does not satisfy the criteria of having at least one optional field.
  • edit 2 t/Java t/Go Sets the tags of the second internship entry as Java and Go (existing tags will be removed).
  • edit 2 c/ Sets the comment of the second internship entry to be NA.
  • edit 2 t/ Removes all the tags of the second internship entry.

Edit Command

Figure 4: Example of the edit command in action


Viewing an Internship : view

Want to view the details of a specific internship entry? You can do so using the view command.

Format: view INDEX

  • Views the details of the internship entry with index number INDEX as indicated in the List Panel.
  • The details will be shown in the View Panel.
  • Apart from the internship details, a custom tips box is also included in the View Panel. The tips provide you with suggestions on how to improve your internship experience, where their content change according to the status of the internship entry.

Examples:

  • view 3 Assuming that you have at least 3 internships displayed in the List Panel, this displays the details of the third internship in the View Panel.
  • view -1 Displays an error because INDEX must be a positive integer.
  • view 8 Assuming that you have 7 internships displayed in the List Panel, this displays an error because INDEX cannot be greater than the maximum index shown in the List Panel, which is 7 in this case.

Copying an Internship to Clipboard : copy

Need to quickly export the details of an internship? Use copy to copy the details of an internship to your clipboard.

Format: copy INDEX

  • Copies the details of the internship entry with index number INDEX as indicated in the List Panel.
  • The copied text will be in the format of Company Name: COMPANY_NAME; Role: ROLE; Status: STATUS; Date: DATE; Comment: [COMMENT]; Tags: [TAG].

Examples:

  • Suppose the first internship displayed in the List Panel has company name Amazon, role Cloud Architect, status New, date 2023-03-28, comment I love Amazon!, and tags AWS and Cloud Services. Then, copy 1 copies Company Name: Amazon; Role: Cloud Architect; Status: New; Date: 2023-03-28; Comment: [I love Amazon!]; Tags: [Cloud Services][AWS] to your clipboard.

  • copy -1 Displays an error because INDEX must be a positive integer.
  • copy 8 Assuming that you have 7 internships displayed in the List Panel, this displays an error because INDEX cannot be greater than the maximum index shown in the List Panel, which is 7 in this case.

Finding Internships : find

Want to locate selected internship entries? Use the find command to filter through your entries and narrow down your search.

Format: find [n/COMPANY_NAME]... [r/ROLE]... [s/STATUS]... [d/DATE]... [t/TAG]...

  • You have to provide at least one of the optional fields.
  • The find command is case-insensitive, and it returns exact matches only. For example, find n/Google Ltd will not return an entry with company name Google because Google does not exactly match with Google Ltd. On the other hand, find t/Java will return an entry with tag java because the search is case-insensitive.

There are 2 possible ways for you to use the find command.

Method 1: Use a single field type

e.g. find s/Applied, find s/Applied s/New, find n/Google n/Apple n/Meta

  • The find command returns all internship entries that match with any of the values that you provide.

More examples:

  • find s/Applied s/New returns all internship entries that have a status of either Applied or New.

Method 2: Use 2 or more different field types

e.g. find n/Google n/Apple s/New, find n/Google n/Apple s/Applied s/New, find n/Google r/Engineer t/Python t/Java

  • The find command returns all internship entries that match with at least one value for every field type that is specified.

Detailed example:

  • Figure 5 below shows InternBuddy starting with 5 internship entries. After entering find n/Google n/Apple t/python t/java, the internships in green boxes were returned while those in red boxes were not.

Figure 5: Example of the find command in action


  • Table 7 explains the reasoning behind Figure 5.
Index of Internship Returned? Explanation
1 Yes It contains at least one company name Google and both tags python and java.
2 Yes It contains at least one company name Google and at least one tag python.
3 Yes It contains at least one company name Apple and at least one tag java.
4 No It lacks both of the searched tags, python and java.
5 No It lacks both of the searched company names, Google and Apple.

Table 7: Explanation of Figure 5

More examples:

  • find n/Google n/Apple s/Interview returns internship entries that have a status Interview and have a company name of Google or Apple.
  • find n/Google n/Apple s/Applied s/Interview returns internship entries that have company names of Google or Apple and roles of Applied or Interview.
:information_source: Info: The find command always searches through all of your internship entries that are stored in InternBuddy. This means that it will also search through entries that are not currently displayed in the List Panel.

Getting Upcoming Events and Deadlines : upcoming

Want to view your upcoming events and deadlines? You can do so using the upcoming command.

Format: upcoming

  • The upcoming command provides the list of internships that have events (interviews/assessments) or deadlines (application deadline/offer acceptance deadline) within the upcoming week.
  • In other words, it gives you the list of internships that have a STATUS of New/Offered/Assessment/Interview and a DATE that falls within the upcoming week.
  • Upcoming week is defined as the current day and the 6 days that follow it.

Examples:

  • upcoming If today’s date is 5 January 2023, it will list all internships that have a STATUS of New/Offered/Assessment/Interview and a DATE that is from 5 January 2023 to 11 January 2023 inclusive.

Deleting Internships by Indices : delete-index

Need to keep your screen neat and tidy? delete-index can help you achieve this by deleting multiple internships using their indices.

Format: delete-index INDEX [INDEX]...

  • Deletes the internship whose index number is INDEX.
  • If multiple INDEX are provided, multiple internships can be deleted.
  • At least 1 INDEX must be provided.
  • INDEX does not need to be unique. If 2 or more of INDEX have the same value, only the first one will be taken.

Examples:

  • If you run delete-index 1 after find, it will delete the first entry as displayed by find in the List Panel.
  • If you run delete-index 1 after list, it will delete the first entry as displayed by list in the List Panel.
  • delete-index 1 3 Deletes the first and third internships in the List Panel.
  • delete-index 3 1 3 3 1 Deletes the first and third internships in the List Panel.
  • delete-index Displays an error because at least one INDEX must be specified.

Deleting Internships by Fields : delete-field

Wish that you can delete internships using fields instead of indices? You can certainly do so using delete-field.

Format: delete-field [n/COMPANY_NAME]... [r/ROLE]... [s/STATUS]... [d/DATE]... [t/TAG]...

  • You have to provide at least one of the optional fields.
  • The delete-field command is case-insensitive. For example, delete-field n/Google deletes all internships with company names google, Google or gOOgle. Also, delete-field t/java deletes all internships with tags Java, java or JaVa.
  • delete-field deletes entries with exact matches only. For example, delete-field n/Google Ltd will not delete an entry with company name Google because Google does not exactly match with Google Ltd.

There are 2 possible ways for you to use the delete-field command.

Method 1: Use a single field type

e.g. delete-field s/Applied, delete-field s/Applied s/New, delete-field n/Google n/Apple n/Meta

  • The delete-field command deletes all internship entries that match with any of the values that you provide.

More Examples:

  • delete-field s/Applied s/New deletes all internship entries that have a status of either Applied or New.

Method 2: Use 2 or more different field types

e.g. delete-field n/Google n/Apple s/New, delete-field n/Google n/Apple s/Applied s/New, delete-field n/Google r/Engineer t/Python t/Java

  • The delete-field command deletes all internship entries that matches with at least one value for every field type that is specified.

More Examples:

  • delete-field n/Google n/Apple s/Interview Deletes internship entries that have a status Interview and have a company name of Google or Apple.
  • delete-field n/Google n/Apple s/New s/Interview Deletes internship entries that have company names of Google or Apple and roles of New or Interview.
:information_source: Info: The delete-field command only searches through the internship entries that are displayed in the List Panel. This means that it will never delete entries that are not currently displayed in the List Panel.
:warning: Warning: If you use an unknown prefix or a prefix not specific to this command, it will be interpreted as part of your input value. For example, delete-field r/Engineer c/Good company will try to delete internships with a role of Engineer c/Good company.

Clearing all Internships : clear

The clear command permanently deletes all entries from InternBuddy.

Format: clear

:warning: Warning: It will be good to think twice before running this command because once you run this command, all your internship data will be deleted. In the event that you accidentally ran clear, you can refer to Appendix C to repopulate InternBuddy with sample data.

Getting Help : help

Forgot the commands for InternBuddy? Fret not! You can easily view the list of supported commands and their formats using the help command.

Format: help

  • Opens a new window which displays the list of supported commands in InternBuddy, and provides a link to InternBuddy’s user guide where you can view more detailed information about each command. Figure 6 shows how the Help Window looks like.
  • You can click on the button to copy the link to your clipboard.

Figure 6: Help Window


:information_source: Info: Clicking on the hyperlink in the help window may not work on some Linux devices as the functionality is dependent on Gnome libraries. If you are using a Linux device and the hyperlink does not work, you can click on the button instead.

Exiting InternBuddy : exit

Done with tracking your internships for the day? Exit InternBuddy using the exit command.

Format: exit

Want to reuse a command you entered just now but too lazy to type it all out again? InternBuddy has got your back! After clicking on the Command Box, pressing and will fill the Command Box with commands that you have recently entered. This allows you to effortlessly access and use past commands without having to go through the tedious process of typing them all over again.

:information_source: Info: InternBuddy only tracks your past commands from the current run of InternBuddy. This means that if you restart InternBuddy, you can no longer navigate to the commands that you entered during the previous run.
:information_source: Info: Once you have navigated to the first command that you have ever entered into InternBuddy, pressing will not lead to any further change. Similarly, once you have navigated to the current state of waiting for new input, pressing will not change anything.
:bulb: Tip: InternBuddy keeps track of all past commands entered, regardless of whether they were valid or not. Hence, if you accidentally entered an invalid command, you can easily navigate to it and make amendments accordingly without having to type out the entire command again.

Example:

  • Figure 7 illustrates how you can navigate through past commands where the inputs list, clear and upcoming are entered in this particular order. The and keys are used to navigate between the different inputs.

Figure 7: Navigating between commands


Saving your Internship Data

Your internship data for InternBuddy are saved automatically after any command that changes the data. The data are saved in a file internbuddy.json which is located in a subfolder data in the home folder where you placed internbuddy.json. There is no need to save manually.

:information_source: Info: The file location of internbuddy.json is stated in the Status Bar of the GUI.

Loading the Data

InternBuddy data is loaded from internbuddy.json automatically at the beginning of each run. There is no need to load manually.

  • If internbuddy.json is missing, InternBuddy will start with a new data file containing the sample internship entries.
  • If the content in internbuddy.json was altered and as a result has an invalid format, InternBuddy will start with an empty data file.
:warning: Warning: Starting with an empty data file means that all internship entries previously stored in InternBuddy will no longer be present. This is equivalent to a data wipeout. Therefore, we advise against tampering with the content in internbuddy.json unless you are confident in doing so. If you are interested, you can refer to Appendix B for instructions on how to do so.

FAQ

Q: How do I transfer my data to another Computer?
A: Install InternBuddy in the other computer and overwrite the file internbuddy.json that it creates with the file internbuddy.json that is stored on your existing computer.

Q: Does InternBuddy support undoing of commands? For example, can I undo a delete-index action?
A: Unfortunately, the current version of InternBuddy does not support the undo command. However, it is a feature that we are exploring and hope to implement in the future!

Command Summary

Table 8 provides an overview of the commands supported in InternBuddy.

Action Format, Examples
List all Internships list
Add an Internship add n/COMPANY_NAME r/ROLE s/STATUS d/DATE [c/COMMENT] [t/TAG]...
e.g. add n/Apple r/Software Engineer s/New d/2023-03-01
Edit an Internship edit INDEX [n/COMPANY_NAME] [r/ROLE] [s/STATUS] [d/DATE] [c/COMMENT] [t/TAG]...
e.g.edit 2 s/Assessment r/Software Developer
View an Internship view INDEX
e.g. view 1
Copy an Internship to Clipboard copy INDEX
e.g. copy 1
Find Internships find [n/COMPANY_NAME]... [r/ROLE]... [s/STATUS]... [d/DATE]... [t/TAG]...
e.g. find n/Apple n/Google
Get Upcoming Events/Deadlines upcoming
Delete Internships by Indices delete-index INDEX [INDEX]...
e.g. delete-index 1 3
Delete Internships by Fields delete-field [n/COMPANY_NAME]... [r/ROLE]... [s/STATUS]... [d/DATE]... [t/TAG]...
e.g. delete-field n/Apple n/Google s/New s/Applied
Clear all Internships clear
Get Help help
Exit InternBuddy exit

Table 8: Commands in InternBuddy

Appendix A: Installing Java 11

Follow the following steps to set up Java 11 on your computer.

  1. Open up a terminal on your computer.
    • If you are using Windows, click on the Windows icon at the bottom left of your computer. Then, type in terminal in the search bar and double-click the application called Terminal.
    • If you are using macOS, click on the Spotlight search icon at the top right of your computer. Then, type in terminal in the search bar and double-click the application called Terminal.
    • If you are using Linux, press + + to launch the terminal.
  2. In the terminal, type in java -version and press . The terminal will display the version of Java that you have installed on your computer.
  3. If you do not have any versions of Java installed, or you have a version older than Java 11, download Java 11 here. You may then return to Step 1 to check whether you have the correct version of Java installed.


Appendix B: Customising the Data File

If you are an advanced user of InternBuddy, you can directly edit the contents of your data through the internbuddy.json file without using the GUI. The internbuddy.json file is found in the data subfolder of your InternBuddy home folder.

:warning: Warning: If you are new to InternBuddy or are not confident in reading JSON files, we will advise you against directly editing the internbuddy.json file. This is because if you accidentally make a mistake that leads to the JSON file not having the correct format, InternBuddy would restart with the sample data file, wiping out any data that you had previously.

The following steps outline how you can properly edit the internbuddy.json file:

  1. Open the internbuddy.json file by double-clicking on it. If you are prompted to select an application to open the file, you can choose any text editor such as Notepad.
  2. Once opened, you will see the JSON data file in a format as shown in Figure 8. Referring to Figure 8, each box contains the data for one specific internship entry.
  3. Within each box, you can see that there are pairings where each pair is made up of a FIELD and VALUE.

    Figure 8: Sample JSON data file


  4. To manually change the value of a field, simply replace the text for VALUE. Figure 9 illustrates an example where we change the value of STATUS from assessment to interview for the internship entry with company name Google. Once your changes have been made, you can save the file by pressing + .

    :warning: Warning: Make sure that you follow the constraints when substituting in your own values. If the constraints are not satisfied, InternBuddy will not be able to read your data in the internbuddy.json file and will restart with all your internship data cleared.


    Editing the JSON File

    Figure 9: Editing the JSON file


  5. Launch InternBuddy and you will see that your data have been updated accordingly.

Appendix C: Populating InternBuddy with Sample Data

Follow the following steps to populate InternBuddy with sample data.

  1. Visit this link.
  2. Left-click the button labelled Raw. Figure 10 shows where the Raw button is.

    InternBuddy Sample Data

    Figure 10: Raw button on the GitHub interface


  3. Your screen will look like Figure 11. Right click, then click on Save As.

    Figure 11: InternBuddy Sample Data


  4. You will be prompted to choose a folder to save the file in. Choose the data subfolder that is found in the home folder that you have chosen for InternBuddy.
  5. Click Save.

    :warning: Warning: If you already have an internbuddy.json file in the subfolder, you will be prompted to confirm whether you want to overwrite it when attempting to populate InternBuddy with sample data. It is important to only choose to overwrite the existing file if you are absolutely certain that you do not need your old InternBuddy data anymore. If you are unsure, you can always make a backup copy of the file before overwriting.
  6. You are done! InternBuddy will be populated with the sample data the next time you launch it.

Glossary

Table 9 provides a glossary for the technical terms used in this user guide.

Term Definition
Command An instruction for InternBuddy to perform an action.
Command Line Interface (CLI) A CLI is the text-based interface that you can use to provide instructions to your computer. Examples of instructions include opening files and running programs.
Graphical User Interface (GUI) A GUI is the visual interface that you see when an application launches, allowing you to interact with it by clicking on its various buttons and components.
Mainstream Operating Systems Include Windows, macOS, Linux and Unix.
Field A part of the command where you have to supply a value for the command to be valid.
Prefix A short form for the name of a field. It indicates which field does a value belongs to. For example, in n/Apple, the value Apple is supplied to the field COMPANY_NAME since the n/ prefix is used.

Table 9: Glossary for InternBuddy's User Guide

Acknowledgements

  • InternBuddy is written in Java 11.
  • It is adapted from the AddressBook Level 3 project created by the SE-EDU initiative.
  • Libraries and frameworks used: JavaFX, Jackson, JUnit5 and TestFX.
  • GUI testing is implemented with references from AddressBook Level 4 and Please Hire Us. We utilised code from these projects to set up GUI testing and added our own test cases to test the UI components that we created.
  • The feature of Navigating Through Past Commands is primarily adapted from HackNet, but we added code modifications and test cases.
  • The sections on explaining the formatting standards and GUI interface in the User and Developer Guides are inspired by Please Hire Us.