By F14-1, JAYME
Attention all undergraduates!
Are you tirelessly navigating the labyrinth of internship opportunities?
Ever found yourself frustrated by inadvertently applying to the same company twice?
Losing track of all the different interview dates?
Amidst all of your applications from various websites, it's easy to lose track.
But fear not – we've got your back.
Introducing InternHub – your ultimate desktop solution for streamlining internship application tracking. Bid farewell to the chaos and embrace a seamless journey towards your dream internship.
InternHub caters to undergraduates from all fields, providing them with a seamless and efficient approach to managing their internship contacts.
For professors and career guidance officers reading this, we invite you to share this invaluable resource with your students, empowering them to secure their dream internships.
InternHub is meticulously crafted with user-friendliness at its core, tailored to accommodate individuals of all computer proficiency levels. Whether you're experienced or just starting to explore desktop applications, our interface ensures a seamless experience, intuitively guiding you through every step of your internship management journey. With InternHub's sleek Command Line Interface (CLI), navigation and management become effortless, empowering you to stay focused on your goals.
Unlock the power to focus on what truly matters – securing that coveted internship – with InternHub by your side.
For users who are new to InternHub, click here for a helpful starting point!
Experienced users can jump straight to exploring our features!
java -version
.internhub.jar
here.
This jar file contains our entire application, isn't it cool?internhub.jar
, it will go to your Downloads folder.The home folder will serve as InternHub's central location, it is where InternHub will keep all its important files and saved data.
You can create a home folder named "internhub" and store the jar file inside it, making it easy to find in the future.
copy/copy as path
to copy the path to this folder.cd
and paste the copied text, your command should look something like this: cd /Users/jayme/home_folder
, then hit enter.java -jar internhub.jar
command to run the application.The beautiful colours on our InternHub interface is best viewed in full screen and it contains 1 sample data, FoodPanda.
[For Mac users]
To skip steps 1-3, you can drag the folder out to your desktop. Then, right-click the folder and select "New Terminal at Folder"
help
and pressing Enter will open the help window.Our team has carefully designed this user guide to be your one-stop solution for everything related to InternHub! Our aim is to help you get started with InternHub as quickly as possible. The guide features all the available commands, their syntax, as well as specific examples for illustration.
Here in this section, we will be explaining the icons used and providing clear guidance on UI navigation. Furthermore, we are providing guidelines for command formatting and contact details in InternHub, along with an understanding of each parameter.
Command Box
Result Display
add
, the text found in the result display box may get cut off. Simply use our pink scroll bar to view the entire output.List of Applications
View Panel
Parameters in UPPER_CASE
are user-supplied.
For example, in add c/COMPANY_NAME
, replace COMPANY_NAME
with the actual company name like add c/Food Panda
.
Square brackets denote optional items.
For instance, c/COMPANY_NAME [a/ADDRESS]
can be entered as c/Food Panda a/CBD
or simply c/Food Panda
.
Parameters can be in any order.
For example, if a command specifies add c/COMPANY_NAME p/PHONE_NUMBER
, p/PHONE_NUMBER add c/COMPANY_NAME
is also valid.
Unnecessary parameters for commands without specified inputs (e.g., help
, list
, exit
, and clear
) are ignored.
For instance, help 123
will be treated as help
.
Practice caution when copying command lines from the User Guide.
When copying and pasting multi-line commands from a PDF, be cautious as space characters around line breaks might be omitted.
Parameter | Description | Constraints | Example | Required |
---|---|---|---|---|
c/ | Company Name | Only contain alphanumeric values | c/ABC Corporation | Yes |
p/ | Phone Number | Only contain numbers and at least 3 digits | p/98765432 | Yes |
e/ | Email Address | Should be of the format local-part@domain, multiple consecutive special characters are not allowed. | e/example@example.com | Yes |
t/ | Tags | Valid values are NR, I, O, OA, R | t/NR | Yes |
jd/ | Job Description | - | jd/Software Developer Intern | Yes |
id/ | Internship Duration | - | id/3 months | Yes |
s/ | Salary | Only positive numbers (ie 0 is not a valid input) | s/500 | Yes |
a/ | Physical Address | - | a/123 Main St, City, Country | No |
d/ | Interview Date | Of format dd-mm-yyyy HHmm & cannot be earlier than current day | d/14-04-2024 1500 | No |
n/ | Notes | - | n/Previous experience required | No |
For company names with special characters, it's advisable to omit them or replace them with spaces.
Here are some examples:
Please note that company names are case-sensitive.
This means variations in capitalization, such as "Apple" and "apple," will be treated as separate entries.
In InternHub, we aim to provide flexibility to users without imposing overly strict restrictions.
Therefore, we allow duplicate phone numbers to be entered for different contacts.
Allowed special characters are +_.-.
For emails with special characters, multiple consecutive special characters are not allowed.
Here's an example of a valid email: abc+company@example.com
.
An invalid email example would be abc+_company@example.com
.
Ensure to include the appropriate tag after t/
to denote the status of the internship application:
When using tags to denote the status of internship applications, you can use both lowercase and UPPERCASE.
For example, either t/i
or t/I
will work.
We have intentionally omitted setting a minimum internship duration as there isn't a universally fixed minimum duration for internships.
Invalid Date
When InternHub encounters an invalid date like "29-02-2031," which doesn't exist because 2031 isn't a leap year, it automatically changes it to the closest valid date, which is "28-02-2031."
This happens because the InternHub follows the rules of the Gregorian calendar, which determines how dates are calculated and adjusted.
Overlapping of interview dates and time
In InternHub, it's possible to schedule interviews with multiple companies for the same date and time.
This flexibility acknowledges that you may have multiple interviews lined up simultaneously, requiring you to choose between them based on your preferences and priorities.
Using JSON file to change the date
While we've ensured that when adding or editing an internship application, the interview date cannot precede the current day, we also recognize the importance of allowing deliberate adjustments to past dates.
As a result, experienced users have the flexibility to edit interview dates in the JSON file, empowering them to rectify errors and make necessary modifications.
Error messages
When entering the command 'edit 3 d/14-07-2024 3", InternHub will display two error messages:
Interview Date & Time needs to follow this pattern : dd-mm-yyyy HHmm
Interview Date & Time cannot be before today's date!
Please only read the error message that is relevant to your situation. In this case, it is the first line.
Each contact is uniquely identified by the combination of Company Name and Job Description
Example of Allowed Internship Applications:
Internship application 1: Company Name - ABC Corp, Job Description - Software Engineer
Internship application 2: Company Name - ABC Corp, Job Description - Marketing Specialist
Example of Not Allowed Internship Applications:
Internship application 1: Company Name - ABC Corp, Job Description - Software Engineer
Internship application 2: Company Name - ABC Corp, Job Description - Software Engineer
add
Add a new internship application into InternHub.
Format: add c/COMPANY_NAME p/PHONE_NUMBER e/EMAIL [a/ADDRESS] t/TAG jd/JOB_DESCRIPTION [d/INTERVIEW_DATE] id/INTERN_DURATION s/SALARY [n/NOTE]
All fields are unable to handle multiple inputs.
Example of correct format: add c/Happy Burger p/98765432 e/HappyBurger@example.com a/311, Clementi Ave 2, #02-25 S(123456) t/I jd/Software Developer intern d/29-05-2024 1200 id/3 months s/1000 n/Company CEO is John Doe, tech team lead is Alex Yeoh
This internship application will be added in InternHub successfully.
Example of incorrect format: add c/Happy Burger p/98765432 e/HappyBurger@example.com a/311, Clementi Ave 2, #02-25 S(123456) t/I jd/Software Developer intern d/29-05-2024 1200 id/3 months s/1000 n/Company CEO is John Doe, tech team lead is Alex Yeoh
n/Company has 500 employee
An error message "Multiple values specified for the following single-valued field(s): n/" will be shown on the result display box.
Example 1:
We have provided the command below with all parameters provided, including the optional parameters:
add c/MediaCorp p/12345678 e/jobs@mediacorp-digital.com a/321 Media Lane, Singapore 238163 t/I jd/Creative Design Intern d/11-06-2024 0900 id/3 months s/1000 n/Be prepared to discuss current trends in the media industry and how Mediacorp is adapting to digital transformation.
Expected Outcome
Example 2:
We have provided the command below with only the necessary parameters provided, excluding the optional parameters:
add c/Pixar p/98765432 e/Pixar@example.com t/O jd/Junior Animator intern id/3 months s/1000
Expected Outcome
More examples for you to try out:
add c/Grab p/66550000 e/careers@grab.com a/6 Temasek Boulevard t/I jd/Software Developer Intern d/12-06-2024 0900 id/6 months s/1500 n/Grab offers various services like ride-sharing, food delivery and etc.
add c/Happy Burger p/98765432 e/HappyBurger@example.com a/311, Clementi Ave 2 t/NR jd/Software Developer intern id/3 months s/1000
add c/DBS Bank p/12345678 e/areers@dbs-bank-online.com a/321 Media Lane, Singapore t/NR jd/Creative Design Intern id/3 months s/1000
delete
Deletes an internship application by index from InternHub.
Format: delete INDEX
INDEX
.Example 1:
list
followed by delete 2
deletes the 2nd entry.
Expected outcome
After we execute the delete command, the Grab entry is no longer in our list of internship applications.
edit
Edits an existing internship application detail in InternHub.
edit
, followed by the INDEX
of the application. The index refers to the index number shown in the displayed internship application list.Format: edit INDEX [c/COMPANY_NAME] [p/PHONE_NUMBER] [e/EMAIL] [t/TAG] [jd/JOB_DESCRIPTION] [id/INTERN_DURATION] [s/SALARY] [a/ADDRESS] [d/INTERVIEW_DATE] [n/NOTE]
When you edit any field with a new value, this will OVERWRITE the old value!
If you want to delete any of the Optional fields, you can use edit like so:
edit 2 d/
will remove the interview date of company at index 2.edit 2 a/
will remove the address of company at index 2.edit 2 n/
will remove the note of company at index 2.All fields are unable to handle multiple inputs.
Example of correct format: edit 1 n/Company CEO is John Doe
We update the 1st internship application's note.
Example of incorrect format: edit 1 n/Company CEO is John Doe n/Company has 500 employee
An error message "Multiple values specified for the following single-valued field(s): n/" will be shown on the result display box.
Example 1
With the edit command, we can achieve this with the following command:
edit 3 t/I d/20-06-2024 0900
Example 2
With the edit command, we can achieve this with the following command:
edit 3 t/R
The image below shows the respective outcomes after executing both edit commands:
Notice how when we set the interview date for Happy Burger, the contact list dynamically rearranged to prioritize the latest interview at the top.
This dynamic sorting is based on the first interview date.
view
Views the details of the internship application on the view panel in InternHub.
Format: view INDEX
INDEX
.Example:
view 1
Displays the company card of the 1st contact in the list on the view panel.list
This command shows a list of all internship applications in InternHub sorted in ascending order of interview dates. Internship application contacts with interview dates will be listed first, followed by internship application contacts without interview dates.
Format: list
Expected Outcome
All internship applications will be shown on the left side of the window.
find
Finding internship applications whose company names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
shoppa
will match Shoppa
.Food Panda
will match Panda Food
.Shopp
will not match Shoppa
, Food Panda
will not match FoodPanda
.OR
search).
e.g. Happy Burger
will return Happy Meal
, Burger Queen
.Examples:
note
This command will allow you to update the notes of an internship application without overwriting them.
Format: note INDEX
Updating a note of an existing internship application.
Suppose you want to edit the note of an internship application at index 2.
When you hit enter, it will retrieve the note content of the application at index 2 in the command box as an edit command:
The next time you view the contact, the note section will be updated:
filter
Filtering data allows you to narrow down your search results to focus on internship applications based on their status.
Use the filter
command to filter by tag and find exactly the internships with the specified status.
Format: filter VALID_TAG
Valid Tag Inputs
Example:
filter i
or filter I
.reminder
Sending reminders is a pivotal practice to uphold organization and ensure timely completion of crucial tasks.
You can effortlessly retrieve reminders manually using this command. It conveniently displays the interviews scheduled within the upcoming N days, keeping you well-prepared and on track.
Format: reminder INT
Examples:
reminder 0
: Shows you the interviews you have today.reminder 2
: Shows you the interviews you have in the next 2 days, including today.reminder 100
: Shows you the interviews you have in the next 100 days, including today.Expected Outcome
help
To access our InternHub User Guide at anytime, simply type help into the command box and press Enter. This action will display a link to this document, allowing you to easily navigate and explore the comprehensive features of InternHub.
Format: help
You can also execute this command by using the F1
key on your keyboard.
Expected Outcome
A separate help window will appear.
clear
Clears all entries stored in InternHub.
Format: clear
exit
Exits the program.
Format: exit
InternHub data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
InternHub 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:
addressbook.json
file before editing it.Q: How do I transfer my data to another Computer?
A: Install the InternHub app on the other computer and replace the empty data file it creates with the file containing the data from your previous InternHub home folder.
Q: What is a home folder?
A: A home folder is the main directory associated with a user account on a computer. It typically contains user-specific settings, documents, downloads, and their personal files. Here is an example using the user name "internGuy" on a Unix-like system: /home/internGuy
. On a Windows sytem, C:\users\internGuy
.
Q: Why is the app not running?
A: Ensure that JDK 11
or above is installed.
Q: How do I open the command terminal/how to change directory (cd) into a folder?
A: Users should refer to the documentation or help resources specific to their operating system for instructions on opening a command terminal and navigating to a directory using the cd
command.
Q: How do I run internhub.jar?
A: You can run internhub.jar by opening a command terminal, navigating to the directory containing the jar file using the cd
command, and then typing java -jar internhub.jar
and pressing Enter.
Q: I accidentally made some changes in the addressbook.json and InternHub is now blank, what do I do?
A: The reason for this occurrence is likely due to invalid fields assigned to the internship applications. If you are able to identify the invalid field, by all means make your changes and upon the next run, InternHub should work as normal. However, if you are not sure, you can follow these steps to salvage your data:
addressbook.json
.clear
in InternHub and manually add the applications referencing the details from the addressbook.json
.Q: I copied a command from the UserGuide but when I paste and run on InternHub, it fails?
A: When you copy from our UserGuide, do exercise caution as sometimes it can unfortunately concatenate or append the commands together, making the command invalid. When you paste the command, we urge you to verify if the format of the code is valid. You can take a look here for reference.
When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the preferences.json
file created by the application before running the application again.
When entering numbers larger than 2147483647 (maximum Integer value) e.g. reminder 100000000000, the input will be considered invalid as we assumed that most users will not encounter this issue in normal usage. A solution could be added in a future iteration.
Company name is case-sensitive, this make it possible for user to input "Apple" and "apple" in our application. It is possible that both input refer to the same company and may lead to potential confusion. For our future implementation, we intend to make company name case-insensitive.
Phone numbers allow duplicates, We did not want to set high restrictions in our application, hence did not force users to ensure all phone numbers must be unique. From user feedback, duplicate phone numbers can lead to potential confusion, especially when managing large contact lists. A solution could be added in a future iteration.
Leap Year Date Handling, A defect has been identified in the Java Format library where certain invalid date inputs, such as "29 Feb 2023" which is not a leap year, are incorrectly accepted and silently converted to a valid date by the system. This behavior can result in incorrect date information being processed by the application. Hence, users are advised to manually verify the correctness of date inputs, especially around leap years, to ensure accuracy. The workaround in the future will be imposing a stricter validation check offered by the Java library java.time.format.ResolverStyle
to correct this behaviour.
The order of applications without interview date, may differ in the list of applications when you close and reopen InternHub. This is due to our list sorting algorithm only focuses on the interview date and is random otherwise.
Action | Format, Examples |
---|---|
Add | add c/COMPANY_NAME p/PHONE_NUMBER e/EMAIL [a/ADDRESS] t/TAG jd/JOB_DESCRIPTION [d/INTERVIEW_DATE] id/INTERN_DURATION s/SALARY [n/NOTE] e.g., add c/FoodPanda p/12345678 e/panda@food.com a/CBD t/I jd/Front End Intern d/15-04-2024 0900 id/6 months s/500 n/- |
Delete | delete INDEX e.g., delete 3 |
Edit | Edit INDEX [c/COMPANY_NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG] [jd/JOB_DESCRIPTION] [d/INTERVIEW_DATE] [id/INTERN_DURATION] [s/SALARY] [n/NOTE] e.g., Edit 2 p/99987654 |
View | view INDEX e.g., view 3 |
List | list |
Find | find KEYWORD [MORE_KEYWORDS] e.g., find foodpanda |
Note | note INDEX |
Filter | filter VALID_TAG e.g., filter I |
Reminder | reminder INT |
Help | help |
Clear | clear |
Exit | exit |
Term | Meaning |
---|---|
Java Version | A programming language and computing platform used for the InternHub application. Version 11 or higher is required for proper functioning. |
Terminal or Command Prompt | Command-line interfaces used to interact with the operating system and run commands. |
JAR | Java Archive (JAR) is a package file format that packages all components of a Java program into a single executable compressed file for distribution. To run a JAR file, you typically need to have a Java Environment installed on your system. |
Result Display | Area where outputs and messages from InternHub are displayed. |
View Panel | Area displaying detailed information of the selected internship company contact. |
Features | Functionalities provided by InternHub, including adding, editing, deleting, and filtering contacts. |
Command | A directive given to the program to perform a specific task. |
GUI (Graphical User Interface) | A visual way of interacting with a computer through graphical elements like windows, icons, buttons & menus. |
Index | A numerical identifier used to specify the position of an item in a list, for this context the position of an internship company contact. |
JSON (JavaScript Object Notation) | A lightweight data interchange format that is easy to read & write, and for machines to parse. InternHub uses JSON to store and manage data. |
CLI (Command Line Interface) | A way to interact with a computer by typing commands into a terminal or command box. |
Prefix | A string of characters placed at the beginning of a command to indicate its type. For example, InternHub uses c/ for company name and p/ for phone number and so on. |
Field | A specific piece of information within each internship company contact like company name, phone number & etc... |