From 5fc517d462d483dbc798f6def8a848f2e3969fa3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 17:41:08 +0000 Subject: [PATCH] deploy: cafb1b922f97f3f411bde670544bca740345eb7e --- AboutUs.html | 2 +- AboutUs.page-vue-render.js | 2 +- Configuration.html | 2 +- Configuration.page-vue-render.js | 2 +- DevOps.html | 2 +- DevOps.page-vue-render.js | 2 +- DeveloperGuide.html | 19 +++++++-------- DeveloperGuide.page-vue-render.js | 31 +++++++++++++----------- Documentation.html | 2 +- Documentation.page-vue-render.js | 2 +- Logging.html | 2 +- Logging.page-vue-render.js | 2 +- SettingUp.html | 2 +- SettingUp.page-vue-render.js | 2 +- Testing.html | 2 +- Testing.page-vue-render.js | 2 +- UserGuide.html | 2 +- UserGuide.page-vue-render.js | 2 +- index.html | 2 +- index.page-vue-render.js | 2 +- team/choaticman.html | 2 +- team/choaticman.page-vue-render.js | 2 +- team/raghava-chittidi.html | 2 +- team/raghava-chittidi.page-vue-render.js | 2 +- team/woke02.html | 2 +- team/woke02.page-vue-render.js | 2 +- team/xueting.html | 2 +- team/xueting.page-vue-render.js | 2 +- team/zwezeya.html | 2 +- team/zwezeya.page-vue-render.js | 2 +- 30 files changed, 54 insertions(+), 52 deletions(-) diff --git a/AboutUs.html b/AboutUs.html index 86da8095319..24a159d95cd 100644 --- a/AboutUs.html +++ b/AboutUs.html @@ -18,7 +18,7 @@ [portfolio]
Refer to the guide Setting up and getting started.
The Architecture Diagram given above explains the high-level design of the App.
Given below is a quick overview of main components and how they interact with each other.
Main components of the architecture
Main
(consisting of classes Main
and MainApp
) is in charge of the app launch and shut down.
The bulk of the app's work is done by the following four components:
UI
: The UI of the App.Logic
: The command executor.Model
: Holds the data of the App in memory.Storage
: Reads data from, and writes data to, the hard disk.Commons
represents a collection of classes used by multiple other components.
How the architecture components interact with each other
The Sequence Diagram below shows how the components interact with each other for the scenario where the user issues the command /delete 1
.
Each of the four main components (also shown in the diagram above),
interface
with the same name as the Component.{Component Name}Manager
class (which follows the corresponding API interface
mentioned in the previous point.For example, the Logic
component defines its API in the Logic.java
interface and implements its functionality using the LogicManager.java
class which follows the Logic
interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component's being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.
The sections below give more details of each component.
The API of this component is specified in Ui.java
The UI consists of a MainWindow
that is made up of parts e.g.CommandBox
, ResultDisplay
, InternshipApplicationListPanel
, StatusBarFooter
etc. All these, including the MainWindow
, inherit from the abstract UiPart
class which captures the commonalities between classes that represent parts of the visible GUI.
The UI
component uses the JavaFx UI framework. The layout of these UI parts are defined in matching .fxml
files that are in the src/main/resources/view
folder. For example, the layout of the MainWindow
is specified in MainWindow.fxml
The UI
component,
Logic
component.Model
data so that the UI can be updated with the modified data.Logic
component, because the UI
relies on the Logic
to execute commands.Model
component, as it displays InternshipApplication
object residing in the Model
.The HelpWindow
component is shown when you execute a help command. It contains a link to the detailed user and developer guide on this HireMe documentation website.
The ChartWindow
component is shown when you execute a chart command. It contains a visual representation of the various statuses of your internship applications, in the form of a pie chart.
API : Logic.java
Here's a (partial) class diagram of the Logic
component:
How the Logic
component works:
Logic
is called upon to execute a command, it is passed to an AddressBookParser
object which in turn creates a parser that matches the command (e.g., DeleteCommandParser
) and uses it to parse the command.Command
object (more precisely, an object of one of its subclasses e.g., DeleteCommand
) which is executed by the LogicManager
.Model
when it is executed (e.g. to delete a internship application).Refer to the guide Setting up and getting started.
The Architecture Diagram given above explains the high-level design of the App.
Given below is a quick overview of main components and how they interact with each other.
Main components of the architecture
Main
(consisting of classes Main
and MainApp
) is in charge of the app launch and shut down.
The bulk of the app's work is done by the following four components:
UI
: The UI of the App.Logic
: The command executor.Model
: Holds the data of the App in memory.Storage
: Reads data from, and writes data to, the hard disk.Commons
represents a collection of classes used by multiple other components.
How the architecture components interact with each other
The Sequence Diagram below shows how the components interact with each other for the scenario where the user issues the command /delete 1
.
Each of the four main components (also shown in the diagram above),
interface
with the same name as the Component.{Component Name}Manager
class which follows the corresponding API interface
mentioned in the previous point.For example, the Logic
component defines its API in the Logic.java
interface and implements its functionality using the LogicManager.java
class which follows the Logic
interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component's being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.
The sections below give more details of each component.
The API of this component is specified in Ui.java
.
The UI consists of a MainWindow
that is made up of parts e.g.CommandBox
, ResultDisplay
, InternshipApplicationListPanel
, StatusBarFooter
etc. All these, including the MainWindow
, inherit from the abstract UiPart
class which captures the commonalities between classes that represent parts of the visible GUI.
The UI
component uses the JavaFx UI framework. The layout of these UI parts are defined in matching .fxml
files that are in the src/main/resources/view
folder. For example, the layout of the MainWindow
is specified in MainWindow.fxml
.
The UI
component,
Logic
component.Model
data so that the UI can be updated with the modified data.Logic
component, because the UI
relies on the Logic
to execute commands.Model
component, as it displays InternshipApplication
object residing in the Model
.The HelpWindow
component is shown when you execute a help command. It contains a link to the detailed user and developer guide on this HireMe documentation website.
The ChartWindow
component is shown when you execute a chart command. It contains a visual representation of the various statuses of your internship applications, in the form of a pie chart.
API : Logic.java
Here's a (partial) class diagram of the Logic
component:
How the Logic
component works:
Logic
is called upon to execute a command, it is passed to an AddressBookParser
object which in turn creates a parser that matches the command (e.g., DeleteCommandParser
) and uses it to parse the command.Command
object (more precisely, an object of one of its subclasses e.g., DeleteCommand
) which is executed by the LogicManager
.Model
when it is executed (e.g. to delete a internship application).Model
) to achieve.CommandResult
object which is returned back from Logic
.Here are the other classes in Logic
(omitted from the class diagram above) that are used for parsing a user command:
How the parsing works:
AddressBookParser
class creates an XYZCommandParser
(XYZ
is a placeholder for the specific command name e.g., AddCommandParser
) which uses the other classes shown above to parse the user command and create a XYZCommand
object (e.g., AddCommand
) which the AddressBookParser
returns back as a Command
object.XYZCommandParser
classes (e.g., AddCommandParser
, DeleteCommandParser
, ...) inherit from the Parser
interface so that they can be treated similarly where possible e.g, during testing.API : Model.java
The Model
component:
InternshipApplication
objects. These objects are stored in a UniqueList, ensuring that each application is unique.InternshipApplication
objects (e.g., search results) as a separate, filtered list. This filtered list is exposed as an unmodifiable ObservableList<InternshipApplication>
, allowing the UI to automatically reflect any changes in the data, as the list is observable.UserPrefs
object, representing the user’s preferences. This object is exposed externally as a ReadOnlyUserPrefs
, ensuring that the preferences can be accessed but not modified directly.Model
does not depend on any other external components. As it represents the core domain entities, it maintains logical independence to ensure modularity and encapsulation.API : Storage.java
The Storage
component,
AddressBookStorage
and UserPrefStorage
, which means it can be treated as either one (if only the functionality of only one is needed).Model
component (because the Storage
component's job is to save/retrieve objects that belong to the Model
)Classes used by multiple components are in the seedu.hireme.commons
package.
This section describes some noteworthy details on how certain features are implemented.
The implementation of the command follows the convention of a normal command, where AddressBookParser
is responsible for parsing the user input string into an executable command.
In this case, since there are no additional parameters for the help command, AddressBookParser
does not create any parser object.
AddressBookParser
ensures that there are no additional keywords provided. If there are keywords found, AddressBookParser
throws a ParseException.
Otherwise, it creates a new instance of HelpCommand
.
Upon execution, HelpCommand
returns an instance of CommandResult
which contains the help message.
NOTE:
Model
is not invoked here but included for the sake of clarity.
The implementation of the create command follows the convention of a normal command, where AddressBookParser
is responsible for parsing the user input string into an executable command.
@@ -23,7 +23,7 @@
If any of the above constraints are violated, AddressBookParser
throws a ParseException. Otherwise, it creates a new instance of AddCommand
that corresponds to the user input.
AddCommand
comprises of the internship application to be added, which is an instance of InternshipApplication
.
Upon execution, AddCommand
first queries the supplied model if it contains a duplicate internship application. If no duplicate internship application exists, then AddCommand
adds the internship application into the data.
NOTE: HireMe identifies an entry as a duplicate if its
NAME
,ROLE
,DATE
match (case-insensitive) with those of an existing internship application entry. Attempting to add a duplicate will result in an error.
The implementation of the list command follows the convention of a normal command, where AddressBookParser
is responsible for parsing the user input string into an executable command.
AddressBookParser
creates ListCommand
Upon execution, ListCommand
calls on model::updateFilteredList
to show all internship applications.
The implementation of the delete command follows the convention of a normal command, where AddressBookParser
is responsible for parsing the user input string into an executable command.
In this case, AddressBookParser
creates DeleteCommandParser
to parse user input string.
AddressBookParser
first obtains the index from the user's input.
-AddressBookParser
ensures that there is only 1 keyword found which is a number. If there is no valid keyword found, AddressBookParser
throws a ParseException.
+AddressBookParser
ensures that there is only one keyword found which is a number. If there is no valid keyword found, AddressBookParser
throws a ParseException.
Otherwise, it creates a new instance of DeleteCommand
that corresponds to the user input.
DeleteCommand
comprises of a targetIndex which is the zero based index number of the internship application to be deleted.
Upon execution, DeleteCommand
gets the internship application to be deleted and calls on model::deleteItem
which deletes it from the list.
NOTE: The sequence diagram shows a simplified execution of the DeleteCommand.
The StatusCommand
updates the status of an internship application to PENDING
, ACCEPTED
, or REJECTED
, triggered by commands /pending
, /accept
, or /reject
respectively. The implementation of the status command follows the convention of a normal command, where AddressBookParser
is responsible for parsing the user input string into an executable command.
In this case, AddressBookParser
creates StatusCommandParser
to parse user input string.
The sequence diagram above illustrates the flow for the /accept
command. Similar flows apply for /reject
and /pending
.
AddressBookParser
first obtains the index from the user's input.
AddressBookParser
ensures that there is only one keyword found, which is a number. If no valid keyword is found, AddressBookParser
throws a ParseException
. Otherwise, it creates a new instance of StatusCommand
based on the user input, with the StatusCommand
containing the target index and specified status.
Upon execution, StatusCommand
retrieves the internship application to be updated and calls model::setItem
to update the status within the list.
AddressBookParser
creates SortCommandParser
to parse user input string. AddressBookParser
first obtains the order from the user's input.
AddressBookParser
ensures that there is only 1 keyword found which is the sorting order. If there is no valid keyword found, AddressBookParser
throws a ParseException.
Otherwise, it creates a new instance of SortCommand
that corresponds to the user input.
-SortCommand
comprises of a DateComparator which contains the sorting order, according to date of application, that the internship application list should be sorted by.
Upon execution, SortCommand
calls on model::sortFilteredList
which in turns calls on addressBook::sortItems
.
-sortItems
updates the filteredList
in model
to sort the internship applications in the list according to the order specified by the user.
The implementation of the command follows the convention of a normal command, where AddressBookParser
is responsible for parsing the user input string into an executable command.
AddressBookParser
creates ClearCommand
.
+SortCommand
comprises of a DateComparator
which contains the sorting order, according to date of application, that the internship application list should be sorted by.
Upon execution, SortCommand
calls on model::sortFilteredList
which in turns calls on addressBook::sortItems
.
+sortItems
updates the filteredList
in Model
to sort the internship applications in the list according to the order specified by the user.
The implementation of the command follows the convention of a normal command, where AddressBookParser
is responsible for parsing the user input string into an executable command.
AddressBookParser
creates ClearCommand
.
Upon execution, ClearCommand
calls on model::setAddressBook
with a new address book that has zero internship applications. Finally, ClearCommand
generates a CommandResult
with a confirmation message.
NOTE: The sequence diagram shows a simplified execution of the ClearCommand.
The implementation of the chart command follows the convention of a normal command, where AddressBookParser
is responsible for parsing the user input string into an executable command.
AddressBookParser
creates ChartCommand
.
-Upon execution, ChartCommand
gets the chart data which is encapsulated in CommandResult
The implementation of the command follows the convention of a normal command, where AddressBookParser
is responsible for parsing the user input string into an executable command.
AddressBookParser
creates ExitCommand
-Upon execution, ExitCommand
encapsulates the intent to close the application in CommandResult
.
NOTE:
Model
is not invoked here but included for the sake of clarity.
Target user profile:
Value proposition: manage internships faster than a typical mouse/GUI driven app
Priorities: High (must have) - * * *
, Medium (nice to have) - * *
, Low (future plans) - *
Priority | As a … | I want to … | So that … |
---|---|---|---|
* * * | CS Undergraduate | list all the internship applications | I can view all my past applications |
* * * | Forgetful CS Undergraduate | have a link to HireMe's help page | I can see all the different commands that I can use |
* * * | An efficient CS Undergraduate | type the commands | I do not have to lift my fingers off the keyboard |
* * * | CS Undergraduate | add an internship application | I can add on to the records of all the internships I have applied to |
* * * | CS Undergraduate | delete an internship application | I can remove invalid or irrelevant applications |
* * * | CS Undergraduate | save the internship application data locally | I will not lose my data when I exit the application |
* * * | CS Undergraduate | load the internship from a saved file | I can get back my data when I open the application |
* * * | CS Undergraduate | clear the list of internship application I have saved | I can restart a new list in the next internship application cycle |
* * * | CS Undergraduate | find internship applications by company name | I can quickly locate specific applications for review or updates |
* * * | CS Undergraduate | update the status of an internship application to accepted, pending, or rejected | I can update the status of each application accurately |
* * | Meticulous CS Undergraduate | sort the list of internship applications by date of application | I can prioritize follow-ups with older applications |
* * | Curious CS Undergraduate | see a chart that summarises the statuses of all my applications | I know know the breakdown of each status |
* | Organised CS Undergraduate | view the interview dates for different internships applications | I can update my schedule accordingly |
* | Efficient CS Undergraduate | view my most desired internship applications by favouriting them | I can prioritize my time on checking up on these internship applications |
* | Forgetful CS Undergraduate | remind myself of acceptance deadline | I will not miss the deadline to accept |
{More to be added}
System: HireMe application
Use Case: UC01 - Add a new internship entry
Actor: User
MSS (Main Success Scenario)
The user requests to add a new internship entry.
HireMe creates a new entry.
Use case ends.
Extensions
1a. The user has missing fields in input.
1a1. HireMe shows an error message.
Use case ends.
1b. The user provided some invalid input for field.
1b1. HireMe shows an error message.
Use case ends.
1c. The user provided multiple fields of the same type.
1c1. HireMe shows an error message.
Use case ends.
System: HireMe application
Use Case: UC02 - List all internship entries
Actor: User
MSS (Main Success Scenario)
The user requests to list all internship entries.
HireMe shows all internship entries.
Use case ends.
Extensions
ChartCommand
gets the chart data which is encapsulated in CommandResult
. The implementation of the command follows the convention of a normal command, where AddressBookParser
is responsible for parsing the user input string into an executable command.
AddressBookParser
creates ExitCommand
.
Upon execution, ExitCommand
encapsulates the intent to close the application in CommandResult
.
NOTE:
Model
is not invoked here but included for the sake of clarity.
Target user profile:
Value proposition: HireMe is a free desktop application that helps you manage your extensive list of internship applications.
Priorities: High (must have) - * * *
, Medium (nice to have) - * *
, Low (future plans) - *
Priority | As a … | I want to … | So that … |
---|---|---|---|
* * * | CS Undergraduate | list all the internship applications | I can view all my past applications |
* * * | Forgetful CS Undergraduate | have a link to HireMe's help page | I can see all the different commands that I can use |
* * * | An efficient CS Undergraduate | type the commands | I do not have to lift my fingers off the keyboard |
* * * | CS Undergraduate | add an internship application | I can add on to the records of all the internships I have applied to |
* * * | CS Undergraduate | delete an internship application | I can remove invalid or irrelevant applications |
* * * | CS Undergraduate | save the internship application data locally | I will not lose my data when I exit the application |
* * * | CS Undergraduate | load the internship from a saved file | I can get back my data when I open the application |
* * * | CS Undergraduate | clear the list of internship application I have saved | I can restart a new list in the next internship application cycle |
* * * | CS Undergraduate | find internship applications by company name | I can quickly locate specific applications for review or updates |
* * * | CS Undergraduate | filter internship applications by status | I can quickly view all applications of a specific status to follow up |
* * * | CS Undergraduate | update the status of an internship application to accepted, pending, or rejected | I can update the status of each application accurately |
* * | Meticulous CS Undergraduate | sort the list of internship applications by date of application | I can prioritize follow-ups with older applications |
* * | Curious CS Undergraduate | see a chart that summarises the statuses of all my applications | I know know the breakdown of each status |
* | Organised CS Undergraduate | view the interview dates for different internships applications | I can update my schedule accordingly |
* | Efficient CS Undergraduate | view my most desired internship applications by favouriting them | I can prioritize my time on checking up on these internship applications |
* | Forgetful CS Undergraduate | remind myself of acceptance deadline | I will not miss the deadline to accept |
{More to be added}
System: HireMe application
Use Case: UC01 - Add a new internship entry
Actor: User
MSS (Main Success Scenario)
The user requests to add a new internship entry.
HireMe creates a new entry.
Use case ends.
Extensions
1a. The user has missing fields in input.
1a1. HireMe shows an error message.
Use case ends.
1b. The user provided some invalid input for field.
1b1. HireMe shows an error message.
Use case ends.
1c. The user provided multiple fields of the same type.
1c1. HireMe shows an error message.
Use case ends.
System: HireMe application
Use Case: UC02 - List all internship entries
Actor: User
MSS (Main Success Scenario)
The user requests to list all internship entries.
HireMe shows all internship entries.
Use case ends.
Extensions
1a1. HireMe shows an empty list.
Use case ends.
System: HireMe application
Use Case: UC03 - Delete an internship entry
Actor: User
MSS (Main Success Scenario)
The user requests to delete a particular internship entry.
HireMe deletes the entry.
Use case ends.
Extensions
1a1. HireMe shows an error message.
Use case ends.
System: HireMe application
Use Case: UC04 - Sort all internship applications list
Actor: User
MSS (Main Success Scenario)
The user requests to sort the internship applications list.
HireMe shows all the sorted list of internship applications.
Use case ends.
Extensions
1a. User enters an invalid number of parameters.
Use case ends.
1b. User enters an invalid order.
1b1. HireMe shows an error message.
Use case ends.
1c. User sorts an empty list.
1c1. HireMe shows an empty list.
Use case ends.
System: HireMe application
Use Case: UC05 - Find internship applications by company name
Actor: User
MSS (Main Success Scenario)
The user requests to find internship applications by entering a search pattern (e.g., /find Goo
).
HireMe searches for internship applications with company names that contain words starting with the specified pattern.
HireMe displays a list of all matching internship applications.
Use case ends.
Extensions
1a. The user provides an empty search pattern.
1a1. HireMe displays an error message that explains how to use the find command and what parameters are valid.
Use case ends.
1b. The provided search pattern matches no company names.
1b1. HireMe shows a message indicating that no matching internship applications were found.
Use case ends.
System: HireMe application
Use Case: UC06 - Update the status of an internship application
Actor: User
MSS (Main Success Scenario)
The user requests to change the status of an internship application by specifying an index and the desired status (e.g., /accept 2
, /reject 3
, /pending 4
).
HireMe updates the status of the specified internship application to ACCEPTED
, REJECTED
, or PENDING
.
HireMe displays a confirmation message indicating that the status has been successfully updated.
Use case ends.
Extensions
1a1. HireMe displays an error message that explains how to use the status command and what parameters are valid.
Use case ends.
System: HireMe application
Use Case: UC07 - Load saved internship applications
Actor: User
MSS (Main Success Scenario)
The user starts the application.
HireMe loads the previously saved internship applications.
Use case ends.
Extensions
1a. No save file is found.
1a1. HireMe creates a new empty save file.
Use case ends.
1b. A file with an invalid format is found.
1b1. HireMe shows an error message.
Use case ends.
System: HireMe application
Use Case: UC08 - Auto-save the current state of the internship list
Actor: User
MSS (Main Success Scenario)
The user performs an action that changes the internship list (e.g., adding, editing, or deleting an entry).
The system automatically saves the updated internship list to hireme.json
.
The file is saved successfully without displaying a confirmation message.
Use case ends.
Extensions
1a1. HireMe shows an error message.
Use case ends.
System: HireMe application
Use Case: UC12 - Clear all internship entries
Actor: User
MSS (Main Success Scenario)
The user requests to clear all internship entries.
HireMe clears all internship entries.
Use case ends.
Extensions
1a1. HireMe shows an error message.
Use case ends.
System: HireMe application
Use Case: UC13 - Exit HireMe application
Actor: User
MSS (Main Success Scenario)
The user requests to exit the application.
HireMe application closes and auto-saves the file.
Use case ends.
Extensions
1a1. HireMe shows an error message.
Use case ends.
Application Status:
Action: The task carried out by the HireMe application such as Add, Delete, Update entries.
Command Line Interface (CLI): The user interacts with the computer by typing text commands instead of using a mouse to click on buttons or icons. As if giving instructions to execute a desired action.
Command: The string the user types into the HireMe application’s command bar to carry out a particular action.
Command Bar: The input bar at the top of the HireMe application which allows users to type in a string command.
Company Email: The email of the company that the user is applying for an internship role at.
Company Name: The name of the company that the user is applying for an internship role at.
Graphical User Interface (GUI): The user interacts with the computer using visual elements like buttons, icons and windows.
Role: The role of the internship the user applied for.
Index: The index of the internship application displayed in the list.
Given below are instructions to test the app manually.
Note: These instructions only provide a starting point for testers to work on; -testers are expected to do more exploratory testing.
Initial launch
Download the jar file and copy into an empty folder
Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.
Saving window preferences
Resize the window to an optimum size. Move the window to a different location. Close the window.
Re-launch the app by double-clicking the jar file.
+testers are expected to do more exploratory testing.
Initial launch
Download the jar file and copy into an empty folder
Run java -jar hireme.jar in a terminal.
+Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.
Saving window preferences
Resize the window to an optimum size. Move the window to a different location. Close the window.
Re-launch the app by running java -jar hireme.jar in a terminal.
Expected: The most recent window size and location is retained.
Opening Help window via Command Line
Prerequisite: Help window is not open.
Test case: /help
Expected: Help window opens.
Opening Help window via F1
Prerequisite: Help window is not open.
Test case: Click the F1
key on your keyboard.
Expected: Help window opens.
Opening Help window via Tool Bar
Prerequisite: Help window is not open.
Test case: Click on the Help
button on the Tool Bar, and then click on the Help F1
button on the drop down.
@@ -119,9 +119,8 @@
on why the command is invalid. The error message could be more specific to state the email field is missing.
Improve UI to deal with long texts: The current application does not allow the user to scroll the list displayed on the application.
-If there is a very long text, the text will be cut off and the use would have to maximise the application's window in order to see the full text.
-We plan to implement scroll bars within the list displayed in the application, to allow the user to scroll and see any long texts.
Improve the validator for email
faceb__k@fb.com.sg
) that it might incorrectly flag out as invalid addresses. User confirmation for clear
command
clear
command clears all internship applications without asking for user confirmation. clear
command. If the user confirms, then all internship applications will be cleared. Otherwise, no action will be taken and the internship applications remain. clear
is only carried out deliberately. Backup file for storage
hireme.json
. hireme.json
. hireme.json
ensures data redundancy. Improve UI to deal with long texts:
Improve the validator for email
faceb__k@fb.com.sg
) that it might incorrectly flag out as invalid addresses. User confirmation for clear
command
clear
command clears all internship applications without asking for user confirmation. clear
command. If the user confirms, then all internship applications will be cleared. Otherwise, no action will be taken and the internship applications remain. clear
is only carried out deliberately. Backup file for storage
hireme.json
. hireme.json
. hireme.json
ensures data redundancy. docs/
folder contains the source files for the documentation website.Style guidance:
Converting to PDF
docs/
folder contains the source files for the documentation website.Style guidance:
Converting to PDF
java.util.logging
package for logging.LogsCenter
class is used to manage the logging levels and logging destinations.Logger
for a class can be obtained using LogsCenter.getLogger(Class)
which will log messages according to the specified logging level..log
file.logLevel
setting in the configuration file (See the Configuration guide section).java.util.logging
package for logging.LogsCenter
class is used to manage the logging levels and logging destinations.Logger
for a class can be obtained using LogsCenter.getLogger(Class)
which will log messages according to the specified logging level..log
file.logLevel
setting in the configuration file (See the Configuration guide section).HireMe is a free desktop application designed to make tracking internship applications easy, fast, and accessible for undergraduate students. While it has a GUI (Graphical User Interface), most of the user interactions happen using a CLI (Command Line Interface).
Acknowledgements
HireMe is a free desktop application designed to make tracking internship applications easy, fast, and accessible for undergraduate students. While it has a GUI (Graphical User Interface), most of the user interactions happen using a CLI (Command Line Interface).
Acknowledgements