By: CS2103T-F10-2 Since: Feb 2020 Licence: MIT

1. Introduction

Internship Diary is a desktop application that assists university students in managing their internship applications.

With the Internship Diary, you can leave behind your troubling times trying to to organize, track, and review all your past and upcoming internship applications. The application is designed and optimized for users who can type quickly, and provides an elegant design which is easy on the eyes.

2. Quick Start

Here are the steps to get you started on using Internship Diary:

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

  2. Download the latest internshipdiary.jar here.

  3. Copy the file to the folder you want to use as the home folder for your Internship Diary.

  4. Double-click the file to start the app. The Graphical User Interface (GUI) should appear in a few seconds.

    Ui
    Figure 1. Graphical User Interface of Internship Diary
  5. Test the application by typing the command help in the command box and pressing Enter to execute it. This should open the help window.

    help window
    Figure 2. Help window that appears when help is executed
  6. Refer to Section 4, “Commands” to find out what other commands you can use on Internship Diary.

3. Key Information

Here are some important information you should know.

3.1. Graphical user interface

internship diary label
Figure 3. Major graphical components of Internship Diary

The above image illustrates the major graphical components of Internship Diary to help you navigate our application.

3.2. Structure of internship application

Field Prefix Can Be Empty? Max Number of Values Remarks

Company

c/

No

1

No restrictions on input.

Role

r/

No

1

No restrictions on input.

Address

a/

Yes

1

No restrictions on input.

Phone

p/

Yes

1

"+" at the start is optional. Must have between 4 and 15 digits if not empty.

Email

e/

Yes

1

Email should be of format "LOCAL@DOMAIN". LOCAL consists of at least 1 character. DOMAIN starts and ends with alphanumeric characters, and consists of alphanumeric characters, periods or hyphens for the characters in between.

E.g. example@example.com

Application Date

d/

Yes

1

Must be a valid date of the form day-month-year. Whitespace and / are also supported separators. If year is not given, will default to the current year.

Priority

w/

No

1

Must be an integer from 0 to 10 (inclusive). If left empty, default to 5.

Status

s/

No

1

Possible values listed in Section 3.3, “Valid status”. The first letter of the Status can be used to input the respective Status values.

Interviews

Not applicable

Yes

No limits

See below, Section 3.4, “Structure of interview”

3.3. Valid status

The following are the valid statuses for internship application, listed in sort order:

1.

wishlist

An internship application that you are planning to apply for.

2.

applied

An internship application that you have already applied for.

3.

interview

An internship application that you have applied to, and have been invited to an interview.

4.

offered

An internship application that you have received a job offer for.

5.

rejected

An internship application that you have been rejected for.

6.

ghosted

An internship application that you have heard no reply from for a long time.

3.4. Structure of interview

  • Interview represents an interview that you have been given by the company you are applying to. It exists within an InternshipApplication

  • Currently there are two types of Interview provided by the Internship Diary:

    • Online Interview — No address is needed.

    • Offline Interview — Address must be provided when interview is added or modified from online to offline.

  • You can specify what type of interview you want to add by using the o/IS_ONLINE prefix.

  • In order to facilitate your tracking of interviews, there are no restriction to what InternshipApplication you can add your interview to.
    Therefore, it is possible for you to add an interview to an InternshipApplication with any status.

    • This is so that just in case you forgot to record an interview after you already got offered or rejected, you could still add it into the Internship Diary for your personal tracking.

    • In v2.0, we will create a prompt on whether you want to automatically change your InternshipApplication status to 'interview'.

Field Prefix Can Be Empty? Max Number of Values Remarks

isOnline

o/

No

1

Can only be true or false

Interview Date

d/

No

1

Must be a valid date of the form day-month-year. Whitespace and / are also supported separators. If year is not given, will default to the current year.

Interview Address

a/

online: yes offline: no

1

No restrictions on input.

3.5. Command format

  • Words in UPPER_CASE are the parameters to be supplied by the user.
    (e.g. in add n/COMPANY_NAME, COMPANY_NAME is a parameter which can be used as add c/Google)

  • Items in square brackets are optional.
    (e.g c/COMPANY_NAME [w/PRIORITY] can be used as c/Google w/5 or as c/Google)

  • Items with ​ after them can be used multiple times including zero times.
    (e.g. delete INDEX, [INDEX],…​ can be used as delete 1 or delete 1, 2, 3)

  • Parameters can be entered in any order.
    (e.g. if the command specifies s/STATUS r/ROLE, r/designer s/applied is also acceptable)

  • An input consisting of only spaces is considered empty.

3.6. Viewing command history

Use the up and down arrow keys while the command box is being focused to scroll through your command history.

3.7. Other important information

3.7.1. Index of an internship application

  • We will use INDEX to refer to a particular internship application.

    • INDEX can be found on the left side of an internship application card.

    • INDEX will start from 1 (inclusive).

    • INDEX is not unique to a particular internship application — it will change as the list is updated.

    • INDEX only serves as a reference for you to choose the correct internship application.

sample index
Figure 4. Example of an internship application card seen on the Internship Application List
  • For any command that uses INDEX:

    • INDEX must be among those displayed in the current list.

      • For example, if the current list displays INDEX 1 to 10, INDEX 11 will not be considered valid.

3.7.2. Multiple fields

  • Commands that contain fields (see: Section 3.2, “Structure of internship application”) will be able to take in multiple entry of each field (except sort which only allows one field).

  • However, when multiple fields are inputted, eg. c/Google c/Facebook, only the last field will be recognised by the application. In the example above, only c/Facebook will be registered, c/Google will be ignored by the application.

3.7.3. Command availability

  • Commands will work on both main list and archival list.

    • The exceptions are: Archive, Unarchive, Reminder

3.7.4. Colored internship applications

  • Some internship applications in the list may be colored green or red. This is what each color means:

    • Internship applications colored green indicates that there is an upcoming application deadline or interviews for that internship application.

    • Internship applications colored red indicates that the internship application’s status is ghosted and you might want to take action to keep the list relevant.

ColoredCards
Figure 5. Example of colored internship applications

4. Commands

4.2. Viewing unarchived internship applications: list

Displays unarchived internship applications. This is known as your main list.

Format: list

main list
Figure 6. Display of main list

4.3. Viewing archived internship applications: archival

Displays archived internship applications. This is known as your archival list.

Format: archival

archival list
Figure 7. Display of archival list

4.4. Selecting an internship application to display: select

Selects an internship application to display on the right panel of the internship diary.

Only one internship application may be selected at any point in time.

Alternatively, you may use your mouse to click on a specific internship application on the left panel of the internship diary.

Format: select INDEX

Example(s):

  • select 1

select internship
Figure 8. Display of internship application details when selected

4.5. Adding an internship application: add

Adds an internship application to the current list.

Format: add c/COMPANY r/ROLE d/DATE s/STATUS [p/PHONE] [e/EMAIL] [a/ADDRESS] [w/PRIORITY]

Refer to Section 3.2, “Structure of internship application” for details about the input constraints.

Examples:

  • add c/Microsoft r/software engineer d/01 01 2020 s/rejected

  • add c/Google r/Software Engineer d/20 02 2020 s/applied p/91234567 e/google@google.com a/123 Orchard Road

4.6. Deleting internship application: delete

Deletes internship application from the current list.

Formats:

  • delete INDEX

  • delete INDEX, [INDEX],…​

  • delete s/STATUS [STATUS]…​

  • Deleting by INDEX:

    • Deletes the internship application at INDEX.

    • INDEX may be entered in any order.

      • e.g. delete 3, 1, 2.

    • Duplicated INDEX will be ignored.

      • e.g. delete 1, 2, 2 has the same effect as delete 1, 2.

  • Deleting by STATUS:

    • There must be at least one valid STATUS.

    • The command will execute as long as there is a valid STATUS — it will ignore other invalid inputs. If there is no internship application with the specified STATUS, then the feedback box will not display any internship application information (as there is no internship application to act upon).

      • e.g. the command will delete internship application(s) with status rejected for delete s/ somethinginvalid rejected.

      • e.g. the command will delete internship application(s) with status applied or wishlist for delete s/applied somethinginvalid wishlist.

Example(s):

  • list
    delete 2
    Deletes the 2nd internship application from the main list.

  • list
    delete 1, 2, 3
    Deletes the 1st, 2nd, and 3rd internship applications from the main list.

  • archival
    delete s/applied
    Deletes all the internship application(s) with the applied status from the archival list.

  • archival
    delete s/applied rejected
    Deletes all the internship application(s) with the applied or rejected status from the archival list.

4.7. Archiving internship application: archive

Moves internship application from the main list to the archival list.

Formats:

  • archive INDEX

  • archive INDEX, [INDEX],…​

  • archive s/STATUS [STATUS]…​

  • Archiving by INDEX:

    • Archives the internship application at INDEX.

    • INDEX may be entered in any order.

      • e.g. archive 3, 1, 2.

    • Duplicated INDEX will be ignored.

      • e.g. archive 1, 2, 2 has the same effect as archive 1, 2.

  • Archiving by STATUS:

    • There must be at least one valid STATUS.

    • The command will execute as long as there is a valid STATUS — it will ignore other invalid inputs. If there is no internship application with the specified STATUS, then the feedback box will not display any internship application information (as there is no internship application to act upon).

      • e.g. the command will archive internship application(s) with status rejected for archive s/ somethinginvalid rejected.

      • e.g. the command will archive internship application(s) with status applied or wishlist for archive s/applied somethinginvalid wishlist.

Example(s):

  • list
    archive 2
    Archives the 2nd internship application in the main list.

  • list
    archive 1, 2, 3
    Archives the 1st, 2nd, and 3rd internship application in the main list.

  • list
    archive s/applied
    Archives all the internship application(s) with the applied status in the main list.

  • list
    archive s/applied rejected
    Archives all the internship application(s) with the applied or rejected status in the main list.

4.8. Unarchiving internship application: unarchive

Moves internship application from the archival list to the main list.

Formats:

  • unarchive INDEX

  • unarchive INDEX, [INDEX],…​

  • unarchive s/STATUS [STATUS]…​

  • Unarchiving by INDEX:

    • Unarchives the internship application at INDEX.

    • INDEX may be entered in any order.

      • e.g. unarchive 3, 1, 2.

    • Duplicated INDEX will be ignored.

      • e.g. unarchive 1, 2, 2 has the same effect as unarchive 1, 2.

  • Unarchiving by STATUS:

    • There must be at least one valid STATUS.

    • The command will execute as long as there is a valid STATUS — it will ignore other invalid inputs. If there is no internship application with the specified STATUS, then the feedback box will not display any internship application information (as there is no internship application to act upon).

      • e.g. the command will unarchive internship application(s) with status rejected for unarchive s/ somethinginvalid rejected.

      • e.g. the command will unarchive internship application(s) with status applied or wishlist for unarchive s/applied somethinginvalid wishlist.

Example(s):

  • archival
    unarchive 2
    Unarchives the 2nd internship application in the archival list.

  • archival
    unarchive 1, 2, 3
    Unarchives the 1st, 2nd, and 3rd internship application in the archival list.

  • archival
    unarchive s/applied
    Unarchives all the internship application(s) with the applied status in the archival list.

  • archival
    unarchive s/applied rejected
    Unarchives all the internship application(s) with the applied or rejected status in the archival list.

4.9. Editing an internship application: edit

Edits an internship application in the internship diary.
Format: edit INDEX [c/COMPANY] [r/ROLE] [d/DATE] [s/STATUS] [p/PHONE] [e/EMAIL] [a/ADDRESS] [w/PRIORITY]​

  • Edits the internship application at the specified INDEX.

  • At least one of the optional fields must be provided.

  • Existing values will be updated to the input values.

Examples:

  • edit 1 s/applied r/Product Management
    Edits the status and role of the internship application to be applied and Product Management respectively.

4.10. Locating internship applications: find

Finds all internship application(s) with the specified fields containing any of the given keywords.

The find parameters will appear at the bottom left of the internship diary

Format: find [KEYWORDS] [c/COMPANY] [r/ROLE] [a/ADDRESS] [p/PHONE] [e/EMAIL] [d/DATE] [w/PRIORITY] [s/STATUS]

  • At least one of the optional parameter must be provided.

  • If [KEYWORDS] is provided, find will look for matches in any field except for application date based on KEYWORDS (i.e. OR search), regardless of whether other fields are specified.

  • When fields are specified without [KEYWORDS], only applications where all the specified fields match are returned (i.e. AND search). e.g. find c/google r/software engineer will return application with company being Google and role being Software Engineer but not company that is Facebook and role being Software Engineer.

  • The search is case insensitive. e.g google will match Google.

  • The order of the keywords does not matter. e.g. AI Singapore will match Singapore AI.

  • Companies matching at least one keyword will be returned (i.e. OR search). e.g. AI Singapore will return AISingapore, AI Malaysia.

  • Partial words will be matched e.g. find a/Singapore will match internship application with address field named Singapores.

  • Consecutive find command calls will not stack on the resulting list from the preceding find command. It is always performed on either the main list or archival list (shown on the bottom left of the program window).

Example(s):

  • find Google
    Lists internship application(s) with company Google OR with email alice@google.com.

BeforeFind1
Figure 9. Before executing find Google.
AfterFind1
Figure 10. After executing find Google.
  • find c/Google s/applied
    Lists internship application(s) with company Google AND status applied.

BeforeFind2
Figure 11. Before executing find c/Google s/applied.
AfterFind2
Figure 12. After executing find c/Google s/applied.

4.11. Sorting internship companies by field: sort

Sort displayed internship companies based on a given FIELD.

The sort parameters will appear at the bottom left of the internship diary

Type reverse before FIELD to sort in the reverse order.

Format: sort [reverse] FIELD.

Available values for FIELD:
c/: Sorts by company name (Dictionary Order).
d/: Sorts by application date (Chronological Order).
r/: Sorts by role (Dictionary Order).
s/: Sorts by status (Refer to Section 3.3, “Valid status”).
w/: Sorts by priority level (Ascending Order).

  • Sort displayed internship companies based on a given FIELD

Examples:

  • Sort c/
    Returns a list of currently displayed companies sorted by company name.

beforeSort
Figure 13. Before sorting the diary.
afterSort
Figure 14. After sorting the diary.

4.12. Modifying an interview in an internship application: interview

Add, list, edit or delete interviews within an internship application

An interview must contain a date and a boolean (true or false) that represents whether an interview is conducted online or not.
If the interview is not conducted online, an additional address field must be provided. See Section 3.4, “Structure of interview” for more information.

Format:

  • Overview
    interview INTERNSHIP_INDEX COMMAND_WORD [INTERVIEW_INDEX] [a/ADDRESS] [d/DATE] [o/IS_ONLINE]

  • A COMMAND_WORD can be: add list edit delete
    The command will behave identically to their internship application counterparts

    • list is currently functionally similar to select, additional features will be added in v2.0.

  • The INTERNSHIP_INDEX corresponds to the index of the internship in the displayed internship list. Whereas the INTERVIEW_INDEX corresponds to the index of the interview in the interview list.

  • Specific format of each COMMAND_WORD:

    • Add interview
      interview INTERNSHIP_INDEX add d/DATE o/IS_ONLINE [a/ADDRESS]

      • Address field a/ADDRESS is listed as optional here as online interview do not require an address but offline interview does.

    • List interview
      interview INTERNSHIP_INDEX list

    • Edit interview
      interview INTERNSHIP_INDEX edit INTERVIEW_INDEX [a/ADDRESS] [d/DATE] [o/IS_ONLINE]

      • If you are editing an online interview into an offline interview, Address field a/ADDRESS is a requirement.

    • Delete interview
      interview INTERNSHIP_INDEX delete INTERVIEW_INDEX

Examples:

  • list
    interview 2 list
    Lists all interviews in the 2nd internship application in the list

InterviewListExample
Figure 15. Display of interview list in internship application details panel
  • interview 2 add o/false d/05 02 2020 a/Raffles City #02-22
    Adds an interview to the 2nd internship application in the list.

InterviewAddExample
Figure 16. Display of change in interview list after a new interview is added
  • interview 2 list
    interview 2 edit 1 d/05 05 2020
    Edits the date of the 1st interview in the 2nd internship application in the list to 05 05 2020.

InterviewEditExample
Figure 17. Display of change of interview field after an interview is edited
  • interview 2 list
    interview 2 delete 3
    Deletes the 3rd interview in the 2nd internship application in the list.

InterviewDeleteExample
Figure 18. Display of change in interview list after an interview is deleted

4.13. Getting applications due or have interviews in 7 days: reminder

Displays all internship application(s) that:

  • have status wishlist and need to be submitted in 7 days

  • have status interview and interviews scheduled in 7 days

The applications will be displayed in order of earliest application date or scheduled interview date followed by those with later dates.

This command helps to remind you of applications which you might want to focus on first, so that you do not miss submission deadlines or any upcoming interviews.

Format: reminder

reminderexample
Figure 19. Example display of Internship Diary when reminder is executed
reminder can be used anytime, but it does not work on archived applications.
Any command after reminder will be ignored.
e.g. reminder dummy variable be just be treated as reminder

4.14. Clearing all entries: clear

Clears all entries from the Internship Diary.
Format: clear

4.15. Retrieving statistics: stats

Displays the statistics about your internship application(s) on the current list.

It will open a separate window that contains a bar chart and a pie chart.

The statistics will dynamically update as you update the current list (e.g. switching between main and archival list).

Format: stats

internship diary stats
Figure 20. Statistics window which opens when stats is executed
  • The bar chart showcases:

    • the count of internship application(s) under each STATUS

  • The pie chart showcases:

    • the percentage of internship application(s) under each STATUS

    • percentages are rounded off to two decimal places

Alternatively, you may use your mouse to click on "Statistics" and then "View Statistics" to bring up the statistics window.
click statistics
Figure 21. Opening statistics window via mouse click

4.16. Exiting the program: exit

Exits the program.
Format: exit

4.17. Saving the data

Internship Diary is saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.

5. FAQ

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 Internship Diary folder.

Q: What happens if I directly change the data stored in the hard drive?
A: The application cannot guarantee the integrity of your data if you tamper with the file in the storage.

6. Command Summary

  • Help : help

  • List : list

  • Archival : archival

  • Select : select INDEX

  • Add add c/COMPANY r/ROLE d/DATE s/STATUS [p/PHONE] [e/EMAIL] [a/ADDRESS] [w/PRIORITY]​
    e.g. add c/Google r/Software engineer s/wishlist d/10 10 2010

  • Delete : delete INDEX
    e.g. delete 1

  • Archive : archive INDEX
    e.g. archive 1

  • Unarchive : unarchive INDEX
    e.g. unarchive 1

  • Edit : edit INDEX [c/COMPANY] [r/ROLE] [d/DATE] [s/STATUS] [p/PHONE] [e/EMAIL] [a/ADDRESS] [w/PRIORITY]
    e.g. edit 2 c/Google s/applied

  • Find : find [KEYWORDS] [c/COMPANY] [r/ROLE] [a/ADDRESS] [p/PHONE] [e/EMAIL] [d/DATE] [w/PRIORITY] [s/STATUS]
    e.g. find c/google r/engineer

  • Sort : sort FIELD
    e.g. sort c/

  • Interview :

    • Add: interview INTERNSHIP_INDEX add d/DATE o/IS_ONLINE [a/ADDRESS]
      e.g. interview 1 add d/20 12 2020 o/true

    • List: interview INTERNSHIP_INDEX list
      e.g. interview 1 list

    • Edit: interview INTERNSHIP_INDEX edit INTERVIEW_INDEX [a/ADDRESS] [d/DATE] [o/IS_ONLINE]
      e.g. interview 1 edit 1 d/10 10 2020

    • Delete: interview INTERNSHIP_INDEX delete INTERVIEW_INDEX
      e.g. interview 1 delete 1

  • Reminder : reminder

  • Clear : clear

  • Statistics : stats

  • Exit : exit

7. Glossary

  • Alphanumerical

    • Either a letter of the English language (a-z, A-Z) or a Roman numeral (0-9).

  • Chronological order

    • The order of events in which events which occurred earlier would be placed before events which occurred later.

  • Dictionary order:

    • The order which words would be ordered in a dictionary.