User Guide
Welcome to CodeContact
Taking charge of your PROject Management!
Seamlessly integrate contact, client, and project management, simplifying access to coding-related contacts, facilitating collaboration, and offering command-line efficiency for project managers.
CodeContact is a desktop app for managing contacts, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, CodeContact can get your contact management tasks done faster than traditional GUI apps. CodeContact aims to put the P.R.O in project management by enabling project managers to be:
- Productive
- Reliable
- Organised
Here’s an overview of how CodeContact can help you streamline your project management processes.
- Store and edit information about developers and clients related to projects
- Store and manage projects and their deadlines
- Assign projects to developers and clients
If you are familiar with CodeContact, jump to our Table of Contents to find out what you are looking for!
If you are new here, you may start with learning How to navigate this guide and visit the Quick Start guide to onboard onto CodeContact smoothly!
Table of Contents
- Navigating this guide
- Features
- FAQ
- Known issues
- Command summary
How can this guide help me?
If you are a new user, we hope to first inform you on how you can get started using CodeContact.
As you use CodeContact, you may also have questions on how to perform certain actions within the application. This guide thus contains a comprehensive list of Features offered with CodeContact, as well as explanations on when and how to use them.
Further questions are also answered within a FAQ section below.
Confused about the terms or formatting used in this guide? Learn how to navigate this guide here.
Confused about the visual display of CodeContact? Learn how to navigate the user interface of CodeContact here.
Navigating this guide
Glossary
Definitions
Term | Definition |
---|---|
Parameter | Parameters are specific details you would include about the developer/client/project.(eg. name, date joined, description). |
Command | An input from the user that tells CodeContact to perform an action (i.e. add a client). |
GUI | Graphical User Interface (GUI) represents the visual display of CodeContact that users can see. |
GUI Component | A subsection of the Graphical User Interface. For more information on specific GUI components, refer to this section. |
CLI | Command Line Interface (CLI) represents a text-based user interface to interact with the application. |
Character | Any letter or symbol that is recognized by the computer, and can form a line of text (eg. a , + , $ ). |
JSON | Javascript Object Notation |
JAR file | Java Archive File |
CSV file | Comma-separated Values File |
Scroll back to Table of Contents
Parameter Information
Within the tables below, you can find out more about the parameters that CodeContact supports. These parameters come in handy when crafting commands in CodeContact.
Here are some notes about these parameters.
- Each parameter comes with constraints. These constraints detail the specific formats of text that
each parameter accepts as valid user input.
- Not following these constraints will result in an error when entering the command.
- Nonetheless, CodeContact will not stop working. Rather, a message will be provided to you on how to correct your command.
Common Parameters
Parameter | Description | Constraints | Valid Examples | Invalid Examples |
---|---|---|---|---|
n/ |
name of developer/client/project | alphanumeric characters and spaces, and it should not be blank | Tom Hanks, Elizabeth 2 | 成龍, 潔 いさぎ 世 よ 一 いち, Ganesh s/o Ravichandran |
p/ |
phone number of developer/client | 8 numeric characters, and it should not be blank | 94566835 | 123, 432, 5678@ |
e/ |
email of developer/client | alphanumeric characters, contains an @ and it should not be blank | amy@gmail.com | amy!gmail.com, amy$gmail |
a/ |
address of developer/client | alphanumeric characters and spaces, and it should not be blank | 311, Clementi Ave 2, #02-25 | 成龍, 潔 いさぎ 世 よ 一 いち |
r/ |
role of developer/client | alphabetical characters and spaces, and it should not be blank | Developer | 成龍, 潔 いさぎ 世 よ 一 いち |
pr/ |
project name | alphanumeric characters and spaces, and it should not be blank, used in the context or Developer/Client when assigned to project(s) | CS2103T | 成龍, 潔 いさぎ 世 よ 一 いち |
Developer Parameters
Parameter | Description | Constraints | Valid Examples | Invalid Examples |
---|---|---|---|---|
g/ |
github username of developer | alphanumeric characters, follows github username convention and it should not be blank | johng, amy123 | g, y |
d/ |
date joined of developer | numeric characters in dd-MM-yyyy format, should not be a future date, and it should not be blank | 11-11-2023 | 19-11-2024, 1/1/2023 |
s/ |
salary of developer | positive integers of at least 4 digits, should not be blank | 5000 | 5000.0, 4321.32.22 |
rt/ |
rating of developer | numeric characters between 0 to 5 | 5, 3.5 | -0, -1, 6 |
Client Parameters
Parameter | Description | Constraints | Valid Examples | Invalid Examples |
---|---|---|---|---|
o/ |
organisation name of client | alphanumeric characters and spaces, and it should not be blank | 谷歌 | |
do/ |
document link of client | alphanumeric characters and spaces, and it should not be blank, follows standard hyperlink format | google.com | 谷歌.com |
Project Parameters
Parameter | Description | Constraints | Valid Examples | Invalid Examples |
---|---|---|---|---|
dr/ |
description of project | alphanumeric characters and spaces, and it should not be blank | App to allow for different juices to be ordered | 成龍, 潔 いさぎ 世 よ 一 いち |
dl/ |
deadline of project | alphanumeric characters and spaces, and it should not be blank | 19-12-2023, Design backend, HIGH, 0 | 19.1.2023, 潔 いさぎ 世 よ 一 いち, NONE, 5 |
pri/ |
priority of deadline | HIGH, MEDIUM, LOW | HIGH, MEDIUM, LOW | 5, 3.5, -1, high, M |
Format
General Formatting
Here are the explanations behind the formatting we use through this guide.
- Words in
grey blocks (like these)
usually represent any of the following:- Text used in commands, such as
add-developer
- Keys on your keyboard like
Enter
- File names such as
CodeContact.jar
- Text used in commands, such as
This is a blue box. It can be used for additional tips or more useful information.
This is a warning box. It can be used to give more details on the warnings and limitations of features.
Command Formatting
Format | Explanation | Example |
---|---|---|
words in [UPPER_CASE] with square brackets |
parameter values that are supplied by the user | add-developer n/NAME n/PHONE |
Items with … after them |
parameters that can be used multiple times (or omitted completely) | add-developer [pr/PROJECT]... |
Scroll back to Table of Contents
Navigating the Graphical User Interface (GUI)
CodeContact comes with a GUI to allow for nice visual feedback for our users. Here is a quick run-through of the different sections of our GUI, as well as some notes regarding the use of the GUI.
Quick Orientation
Here is a quick summary of each GUI component within CodeContact:
Name | Description |
---|---|
Menu Bar | Contains dropdown menu options for the CodeContact application. |
Command Box | Allows users to enter CodeContact commands. |
Result Display | 1. Provides CLI-based feedback upon a user command. 2. Allows users to see if their command was successful or not. 3. Provides error messages to guide users on how to use CodeContact commands. |
Tabs | Allows users to see different lists of information on clicking on the relevant tabs. The tabs will also automatically switch to the correct tab corresponding to the command executed. |
Developers/Clients/Projects card | Displays a list of Developer, Client or Project Cards. This list can be manipulated through commands like find and list . |
Deadlines progress | Displays the progress of deadlines for a certain project. |
Deadline list with details | Displays the details of the deadline in a table form. |
Re-sort | Click on the respective words, there will be a small black arrow that appears. You can press to resort the data eg. show date from furthest to nearest day. |
Notes on GUI
If you executed a find
command in developer tab and switched to the client tab, when you return to the developer tab the find results will be cleared and
the whole list of developers will be shown again. This is the intended behavior of CodeContact as we hope that this can save you the time
from always needing to call the list command.
Quick start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
CodeContact.jar
. -
Copy the file to the folder you want to use as the home folder for your CodeContact.
-
Open a command terminal,
cd
into the folder you put the jar file in, and use thejava -jar CodeContact.jar
command to run the application. -
A GUI similar to the below should appear in a few seconds. Note how the app might contain some sample data.
-
For new users, learn to use CodeContact through our Tutorial.
-
Refer to the Features below for details of each command.
Scroll back to Table of Contents
CodeContact Tutorial (for new users)
This is a tutorial for first-time CodeContact users.
- Launch CodeContact. You may refer to the instructions here.
- On launch, CodeContact will not contain any developer or client records.
- You will be asked to enter a password to unlock CodeContact.
- Enter the command
unlock pw/Password123!
in the command box.
- Enter the command
- You can change the password to unlock CodeContact.
- Enter the command
change-password pw/Password123! npw/<yourNewPassword>
in the command box.
- Enter the command
You can always lock and unlock CodeContact using the lock
and unlock
commands.
- Let us try adding a project to our CodeContact.
- Enter the
command
add-project n/AndroidApp dr/App to allow for different juices to be ordered dl/19-12-2023,Design backend,HIGH,0 dl/25-12-2023,Design frontend,MEDIUM,0
.
- Enter the
command
- We can then add a developer to our CodeContact.
- Enter the
command
add-developer n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 r/Developer pr/AndroidApp s/4500 d/01-11-2023 g/johng rt/3
. - Try adding more developers with different details for each parameter!
- Remember to add a new project or role if you wish to add new developers with other roles and project.
- Enter the
command
- We can also add a client to our CodeContact.
- Enter the
command
add-client n/Amy p/88765423 e/amy@example.com a/31, Clementi Ave 6, #03-12 r/Client pr/AndroidApp o/Google do/google.com
. - Try adding more clients with different details for each parameter!
- Remember to add a new project or role if you which to add new client with other roles and project.
- Enter the
command
- Let us try editing the name of a developer stored in CodeContact.
- Enter the command
edit-developer 1 n/Jhonny
. - Try editing other parameters or developers and projects too!
- More details of what you can edit can be found here.
- Enter the command
- We can also easily find for information in CodeContact.
- Enter the command
find-developer n/John s/4500
. - Try looking for other information and search with multiple parameters!
- More details of what you can find can be found here.
- Enter the command
- You can always show the full list after finding in CodeContact.
- Enter the command
list-developer
,list-client
orlist-project
.
- Enter the command
- You can delete developers, clients or projects in CodeContact.
- Enter the command
delete-developer 3
to delete the 3rd developer in CodeContact. - More details on how delete works can be found here.
- Enter the command
- If you realise that you did not delete this developer, you can undo this action in CodeContact.
- Enter the command
undo
and it will revert your previous actions.
- Enter the command
- If you realise you actually want it deleted, you can redo this action in CodeContact.
- Enter the command
redo
and it will redo your previous actions.
- Enter the command
Congratulations! You are now ready to use CodeContact!
To view all our features, you may visit our Features section.
Scroll back to Table of Contents
Features
Security Features | Locking Access to features | Unlocking Access to features | Changing personal password |
---|---|---|---|
Password Protection | lock |
unlock |
change-password |
Additional Features | Finding Help | Clearing data | Exiting program |
---|---|---|---|
Miscellaneous Features | View Help help |
Clear entries clear |
Exit program exit |
Security Features
Password Protection
Project Managers have the ability to grant themselves exclusive access by denying access by others to CodeContact with a personal and customizable password.
Lock : lock
Locks the system by hiding all the information in the tabs on the GUI. It also disables parsing of commands
except unlock
, help
, and delete
.
Format: lock
When command succeeds, CLI shows:
Locked all data
Scroll back to Table of Contents
Unlock : unlock
Unlocks the system by making all the information visible and allows all commands to be parsed.
Format: unlock pw/Password123!
- Default password is
Password123!
. - You are highly recommended to change to a different password.
When command succeeds, CLI shows:
Unlocked all data
Scroll back to Table of Contents
Change password : change-password
Allows for password to be changed, given the current password and new password matches criteria.
Format: change-password pw/CURRENT_PASSWORD npw/NEW_PASSWORD
- Password must be at least 8 characters long and contain at least one digit, one lowercase letter, one uppercase letter, and one special character.
Example of usage: change-password pw/Password123! npw/NewPass987!
When command succeeds, CLI shows:
Password changed successfully.
Scroll back to Table of Contents
Management Features
Add
Add developer : add-developer
Adds a new developer to the address book.
Format: add-developer n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [d/DATE_JOINED] r/ROLE s/SALARY [pr/PROJECT_NAME]... g/GITHUB_ID rt/RATING
- Adds the developer with the given details to the address book.
- Not specifying any
PROJECT_NAME
will add the developer without assigning them to any projects. - Not specifying the
DATE_JOINED
will automatically use today’s date as the date joined. -
NAME
cannot be the same as another existing developer’s name in the address book. Checks are case-insensitive. - If specified,
PROJECT_NAME
should be the exact name of an existing project. - Note that for
RATING
values that are not in increments of 0.5 (eg. 3.2 or 3.8 instead of 3.0 or 3.5), the decimal portion may not be reflected as clearly in the coloured stars.
Example of usage: add-developer n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 r/Developer pr/AndroidApp pr/CustomWebsite s/4500 d/11-11-2023 g/johng rt/3
- Adds a new developer
John Doe
with the respective details, who is assigned to the projectsAndroidApp
andCustomWebsite
, given that they already exist in the address book.
When command succeeds, CLI shows:
New developer added: John Doe;
Phone: 98765432;
Email: johnd@example.com;
Address: 311, Clementi Ave 2, #02-25;
Date Joined: 11-11-2023;
Role: Developer;
Salary: 4500;
Projects: CustomWebsite AndroidApp
Entered details of a developer incorrectly? You can always undo the action with the undo
command!
Scroll back to Table of Contents
Add client : add-client
Adds a new client to the address book.
Format: add-client n/NAME p/PHONE e/EMAIL a/ADDRESS r/ROLE [pr/PROJECT]... o/ORGANISATION do/DOCUMENT
- Adds the client with the given details to the address book.
- Not specifying any
PROJECT_NAME
will add the client without assigning them to any projects. -
NAME
cannot be the same as another existing client’s name in the address book. Checks are case-insensitive. - If specified,
PROJECT_NAME
should be the exact name of an existing project.
Example of usage: add-client n/Jack Doe p/98765432 e/jackd@example.com a/311, Clementi Ave 2, #02-25 r/Developer pr/AndroidApp pr/CustomWebsite o/Google do/google.com
- Adds a new client
Jack Doe
with the respective details, who is assigned to the projectsAndroidApp
andCustomWebsite
, given that they already exist in the address book.
When command succeeds, CLI shows:
New client added: Jack Doe;
Phone: 98765432;
Email: jackd@example.com;
Address: 311, Clementi Ave 2, #02-25;
Organisation: Google;
Role: Developer;
Document: google.com;
Projects: CustomWebsite AndroidApp
Entered details of a client incorrectly? You can always undo the action with the undo
command!
Scroll back to Table of Contents
Add project : add-project
Adds a new project to the address book.
Format: add-project n/NAME dr/DESCRIPTION [dl/DEADLINE_DATE,DEADLINE_DESCRIPTION,PRIORITY,IS_DONE]...
- Adds the project with the given details to the address book.
- Not specifying any deadline will add the project without assigning deadlines to it.
-
NAME
cannot be the same as another existing project’s name in the address book. Checks are case-insensitive.
Example of usage: add-project n/JuiceApp dr/App to allow for different juices to be ordered dl/19-12-2023,Design backend,HIGH,0 dl/25-12-2023,Design frontend,MEDIUM,0
- Adds a new project
JuiceApp
with the respective details.
When command succeeds, CLI shows:
New project added: JuiceApp;
Description: App to allow for different juices to be ordered;
Deadlines:
1. Design backend by: 19-12-2023, priority: HIGH (undone)
2. Design frontend by: 25-12-2023, priority: MEDIUM (undone)
Entered details of a project incorrectly? You can always undo the action with the undo
command!
Scroll back to Table of Contents
Delete
Delete developer : delete-developer
Deletes developer in the address book.
Format: delete-developer INDEX
Example of usage: delete-developer 2
- Deletes second developer in the developer list from the developer list and from the address book.
When command succeeds, CLI shows:
Deleted Developer: Bernice Yu;
Phone: 99272758;
Email: berniceyu@example.com;
Address: Blk 30 Lorong 3 Serangoon Gardens, #07-18;
Date Joined: 16-11-2020;
Role: Developer;
Salary: 6000;
Projects: Appollo Orbital
if second developer in the list was Bernice Yu.
Deleted a wrong developer? You can always undo the action with the undo
command!
Delete client : delete-client
Deletes client in the address book.
Format: delete-client INDEX
Example of usage: delete-client 3
- Deletes third client in the client list from the client list and from the address book.
When command succeeds, CLI shows:
Deleted Client: George Lim;
Phone: 76543210;
Email: george@example.com;
Address: Blk 789 Woodlands Ave 6, #03-03;
Organisation: MNO Company;
Role: Developer;
Document: https://www.mno.com/;
Projects: CodeContact
if second client in the list was George Lim.
Deleted a wrong client? You can always undo the action with the undo
command!
Delete project : delete-project
Deletes the details of an existing project in the address book and updates developer and client project details accordingly.
Format: delete-project INDEX
Example of usage: delete-project 2
- Deletes second project in the project list from the project list and from the address book.
- Deletes project from developers’ and clients’ project lists if they were assigned to this project.
When command succeeds, CLI shows:
Deleted Project: TeamTrekker;
Description: A team collaboration tool;
Deadlines:
1. Phase 2 by: 13-11-2021, priority: MEDIUM (undone)
if second project in the list was TeamTrekker.
Deleted a wrong project? You can always undo the action with the undo
command!
Scroll back to Table of Contents
Edit
Edit developer details : edit-developer
Edits the details of an existing developer in the address book.
Format: edit-developer INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [d/DATE_JOINED] [r/ROLE] [s/SALARY] [pr/PROJECT_NAME]... [g/GITHUB_ID] [rt/RATING]
- Edits the developer at the specified
INDEX
in the currently displayed developer list. - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- When editing projects, the existing assigned projects of the developer will be removed i/e. adding of projects is not cumulative.
- You can remove all the developer’s projects by typing
pr/
without specifying any project name after it. -
NAME
cannot be the same as another existing developer’s name in the address book. Checks are case-insensitive. - You can, however, edit the casing of an existing developer’s
NAME
. -
PROJECT_NAME
should be the exact name of an existing project. - Note that for
RATING
values that not in increments of 0.5 (eg. 3.2 or 3.8 instead of 3.0 or 3.5), the decimal portion may not be reflected as clearly in the coloured stars.
Example of usage: edit-developer 2 p/98989898 pr/Project2 pr/Project3
- Edits
Amy
’s phone number to98989898
and changes the projects assigned to her toProject2
andProject3
.
When command succeeds, CLI shows:
Edited Developer: Amy
Phone: 98989898
Email: amy@u.nus.edu
Address: NUS UTOWN
Date Joined: 06-09-2023
Role: Developer
Salary: 6999
Projects: Project3 Project2
You can always undo the action with the undo
command!
Scroll back to Table of Contents
Edit client details : edit-client
Edits the details of an existing client in the address book.
Format: edit-client INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [pr/PROJECT_NAME]... [o/ORGANISATION]
- Edits the client at the specified
INDEX
in the currently displayed client list. - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- When editing projects, the existing assigned projects of the client will be removed i/e. adding of projects is not cumulative.
- You can remove all the client’s projects by typing
pr/
without specifying any project name after it. -
NAME
cannot be the same as another existing client’s name in the address book. Checks are case-insensitive. - You can, however, edit the casing of an existing client’s
NAME
. -
PROJECT_NAME
should be the exact name of an existing project.
Example of usage: edit-client 3 e/bob@gmail.com
- Edits
Bob
’s email tobob@gmail.com
.
When command succeeds, CLI shows:
Edited Client: Bob;
Phone: 87654321;
Email: bob@gmail.com;
Address: Blk 123 Banana Road;
Organisation: Google;
Document: google.com
Projects: ProjectA
You can always undo the action with the undo
command!
Scroll back to Table of Contents
Edit project details : edit-project
Edits the details of an existing project in the address book.
Format: edit-project INDEX [dr/DESCRIPTION] [dl/DEADLINE]...
- Edits the project at the specified
INDEX
in the currently displayed project list. - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- When editing deadlines, the existing deadlines will be removed ie. adding of projects is not cumulative.
- You can remove all the current deadlines by typing
dl/
without specifying any deadline. - The name of a project cannot be edited.
Example of usage: edit-project 1 dl/19-12-2023,Design backend,HIGH,0
- Deletes existing project deadlines and adds new deadline
Design backend by: 19-12-2023, priority: HIGH (undone)
.
When command succeeds, CLI shows:
Edited Project: JuiceApp;
Description: Juice ordering app;
Deadlines:
1. Design backend by: 19-12-2023, priority: HIGH (undone)
You can always undo the action with the undo
command!
Scroll back to Table of Contents
Import
Import developers’ details : import-developer
Takes in a CSV file and populates the internal list of developers if the file is formatted correctly.
Format: import-developer [FILENAME]
- Note that the CSV file has to be in the same folder as the JAR file for the command to function correctly.
- The CSV file has to strictly follow the column header names and order for the import to function appropriately.
- The command will abort if any of the rows have invalid data format.
- Example of valid CSV:
Name, Contact Number, Email, Address, Date Joined, Role, Salary, GithubId, Rating, Projects,,
faiz,87654321,faiz@u.com,utown,12-12-2020,Developer,3333,Faizgit,5,AndroidApp,ProjectB,
John,123456789,john@email.com,123 Main St,01-01-2021,Developer,4000,JohnDesigns,4,AndroidApp,ProjectB,
Sarah,987654321,sarah@email.com,456 Elm St,05-10-2019,Developer,6000,SarahManager,5,AndroidApp,ProjectB,ProjectC
Alex,555555555,alex@email.com,789 Oak St,03-01-2022,Developer,5500,AlexDev,4,AndroidApp,ProjectB,
Emily,111111111,emily@email.com,321 Pine St,08-10-2018,Developer,4800,EmilyAnalyst,4,AndroidApp,ProjectB,
Michael,999999999,michael@email.com,567 Birch St,06-03-2020,Developer,7000,MichaelEngineer,5,AndroidApp,ProjectB,
Example of usage: import-developer developers.csv
- Imports
developers.csv
and adds a new developer for each row of data.
When command succeeds, CLI shows:
New developer added: faiz;
Phone: 87654321;
Email: faiz@u.com;
Address: utown;
Date Joined: 12-12-2020;
Role: Developer;
Salary: 3333;
Projects: ProjectB AndroidApp
for each developer successfully added.
Scroll back to Table of Contents
Import clients’ details : import-client
Takes in a CSV file and populates the internal list of clients if the file is formatted correctly.
Format: import-client [FILENAME]
- Note that the CSV file has to be in the same folder as the JAR file for the command to function correctly.
- The CSV file has to strictly follow the column header names and order for the import to function appropriately.
- The command will abort if any of the rows have invalid data format
- Example of valid CSV:
Name, Contact Number, Email, Address, Role, Organisation, Document, Projects,
Mahi,87554321,mahi@u.com,utown,HR,Google,docs.google.com/abd,AndroidApp,ProjectB
Jane,654321876,jane@email.com,456 Oak St,HR,Acme Corp,acme.com/docs,AndroidApp
Robert,987123456,robert@email.com,789 Elm St,HR,Tech Solutions,techdocs.com/123
Maria,321987654,maria@email.com,123 Maple St,HR,Innovate Inc,innovate.com/docs
Chris,876543219,chris@email.com,567 Pine St,HR,Data Insights,datainsights.com/docs
Laura,888555555,laura@email.com,101 Birch St,HR,Software Systems,software.com/docs
Example of usage: import-client clients.csv
- Imports
clients.csv
and adds a new client for each row of data.
When command succeeds, CLI shows:
New client added: Mahi;
Phone: 87554321;
Email: mahi@u.com;
Address: utown;
Organisation: Google;
Role: HR;
Document: docs.google.com/abd;
Projects: ProjectB AndroidApp
for each client successfully added.
Scroll back to Table of Contents
Find
Find developer details : find-developer
Finds the details of an existing developer in the address book.
Format: find-developer [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [d/DATE_JOINED] [r/ROLE] [s/SALARY] [pr/PROJECT_NAME] [g/GITHUB_ID] [rt/RATING]
- Finds for developers based on the attributes provided.
- At least one of the optional fields must be provided.
- Existing values will be compared to the input values, and the results will include any items that match the provided criteria.
- You can combine multiple attributes for a more specific search.
- The search is case-insensitive, so you can use any case for the search criteria.
Example of usage: find-developer pr/2103T rt/5.0
- Prints developers in 2103/T project with a 5-star rating.
When command succeeds, CLI shows:
This is the one developer with matching information.
followed by the matching developer’s details in the GUI.
Scroll back to Table of Contents
Find client details : find-client
Finds the details of an existing client in the address book.
Format: find-client [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [o/ORGANISATION] [pr/PROJECT] [d/DOCUMENT]
- Finds for clients based on the attributes provided.
- At least one of the optional fields must be provided.
- Existing values will be compared to the input values, and the results will include any items that match the provided criteria.
- You can combine multiple attributes for a more specific search.
- The search is case-insensitive, so you can use any case for the search criteria.
Example of usage: find-client o/Google r/Senior developer
- Prints clients from Google with the Senior developer role.
When command succeeds, CLI shows:
These are the 2 clients with matching information.
followed by the matching clients’ details in the GUI.
Scroll back to Table of Contents
Find project details : find-project
Finds the details of an existing project in the address book.
Format: find-project [pr/PROJECT_NAME] [dr/DESCRIPTION] [dl/DEADLINE]
- Finds for projects based on the attributes provided.
- At least one of the optional fields must be provided.
- Existing values will be compared to the input values, and the results will include any items that match the provided criteria.
- You can combine multiple attributes for a more specific search.
- The search is case-insensitive, so you can use any case for the search criteria.
Example of usage: find-project pr/JuiceApp
- Print projects with the name JuiceApp.
When command succeeds, CLI shows:
This is the one project with matching information.
followed by the matching project’s details in the GUI.
Scroll back to Table of Contents
Find deadlines : find-deadline
Finds deadlines in project tab based on date and/or priority.
Format: find-deadline [d/DATE] [pri/PRIORITY]
- When finding deadlines based on
DATE
, the project tab displays deadlines due before or on the specified date. - When finding deadlines based on
PRIORITY
, only that priority (HIGH
,MEDIUM
,LOW
) deadlines are shown.
Example of usage: find-deadline d/20-11-2023 pri/MEDIUM
- Shows deadlines due before or on
20-11-2023
and withMEDIUM
priority.
When command succeeds, CLI shows:
These are the 3 projects with matching information.
Scroll back to Table of Contents
List
List information : list
Shows a list of all developers in the address book.
Format: list-TYPE
- Lists the specific type of thing you are asking.
Example of usage:list-developer
- Lists all the developers.
Acceptable parameters:
-
developer
to list the developers -
client
to list the clients -
project
to list the projects
When command succeeds, CLI shows:
Listed all developers
Scroll back to Table of Contents
Add roles
Add developer roles : add-developer-role
Adds new developer roles into the system.
Format: add-developer-role ROLE_NAME
- Adds the ROLE_NAME to list of developer roles.
- There are 3 preset roles in the list of roles:
Frontend Developer
,Backend Developer
,Developer
. - You will not be able to add a developer to a role that does not exist in this list of developer roles.
Note :This command is not case-sensitive, even if Developer
is a role, developer
can still be added.
If you wish to check what roles are there, you can key in delete-developer-role <anything random>
, <anything
random>
should not be an existing role.
Example of usage: add-developer-role Tester
- Adds the Tester role to list of developer roles.
- You can now add developers with Tester as their roles.
When command succeeds, CLI shows:
New role for developer added: Tester
Scroll back to Table of Contents
Add client roles : add-client-role
Adds new client roles into the system.
Format: add-client-role ROLE_NAME
- Adds the ROLE_NAME to list of client roles.
- There are 4 preset roles in the list of roles:
HR
,Manager
,Developer
,Client
. - You will not be able to add a client to a role that does not exist in this list of client roles.
Note :This command is not case-sensitive, even if HR
is a role, hr
can still be added.
If you wish to check what roles are there, you can key in delete-client-role <anything random>
, <anything
random>
should not be an existing role.
Example of usage: add-client-role Boss
- Adds the Boss role to list of developer roles.
- You can now add clients with Boss as their roles.
When command succeeds, CLI shows:
New role for client added: Boss
Scroll back to Table of Contents
Delete roles
Delete developer roles : delete-developer-role
Delete developer roles from the system.
Format: delete-developer-role ROLE_NAME
- Deletes the ROLE_NAME to list of developer roles.
- There are 3 preset roles in the list of roles:
Frontend Developer
,Backend Developer
,Developer
. These roles cannot be deleted. - You will not be able to delete a developer role if there are developers in the list with that role.
Example of usage: delete-developer-role UI Manager
- Deletes the UI Manager from the list of developer roles.
- You can no longer add developers with UIDesigner as their roles.
When command succeeds, CLI shows:
Role for developers deleted: UIDesigner
Scroll back to Table of Contents
Delete client roles : delete-client-role
Delete client roles from the system.
Format: delete-client-role ROLE_NAME
- Deletes the ROLE_NAME to list of developer roles.
- There are 4 preset roles in the list of roles:
HR
,Manager
,Developer
,Client
. These roles cannot be deleted. - You will not be able to delete a client role if there are clients in the list with that role.
Example of usage: delete-client-role Boss
- Deletes the Boss from the list of developer roles.
- You can no longer add clients with Boss as their roles.
When command succeeds, CLI shows:
Role for clients deleted: Boss
Scroll back to Table of Contents
Mark
Mark project deadline as done : mark-deadline
Marks the indicated deadline for the project as done.
Format: mark-deadline PROJECT_INDEX DEADLINE_INDEX
-
PROJECT_INDEX
andDEADLINE_INDEX
must be valid indexes of existing projects and deadlines.
Example of usage: mark-deadline 2 1
- Marks the 1st deadline of the 2nd project in the currently displayed project list as done.
When command succeeds, CLI shows:
The deadline has been marked as completed!
Scroll back to Table of Contents
Mark project deadline as undone : unmark-deadline
Marks the indicated deadline for the project as undone.
Format: unmark-deadline PROJECT_INDEX DEADLINE_INDEX
-
PROJECT_INDEX
andDEADLINE_INDEX
must be valid indexes of existing projects and deadlines.
Example of usage: unmark-deadline 2 1
- Marks the 1st deadline of the 2nd project in the currently displayed project list as undone.
When command succeeds, CLI shows:
The deadline has been marked as undone!
Scroll back to Table of Contents
Undo
Undo : undo
Undo the previous command you entered.
Format: undo
- Each time you type undo, you move back one stage.
- If you made 5 changes, and you wish to undo, you can enter the command
undo
5 times. The system will remind you when you cannot undo anymore. -
undo
works for alledit
,add-TYPE
anddelete
commands.
Example of usage: undo
- You just deleted a new developer, and you wish to
undo
.
When command succeeds, CLI shows:
Undo successful! The change below has been undone:
Deleted Developer: Amy;
Phone: 83566674;
Email: amy@example.com;
Address: 42, Clementi Ave 7, #02-2;
Date Joined: 23-11-2023;
Role: Frontend Developer;
Salary: 5000;
Projects: CustomWebsite AndroidApp
Scroll back to Table of Contents
Redo : redo
Redo the previous command you undid.
Format: redo
- Each time you type redo, you move forward one stage.
- You can only
redo
if you haveundo
before. - If you undid 5 changes, and you wish to redo, you can enter the command
redo
5 times. The system will remind you when you cannot redo anymore. -
redo
works for alledit
,add-TYPE
anddelete
commands.
Example of usage:
- You just
undo
delete developer, and you wish toredo
to add it back. When command succeeds, CLI shows:
Redo successful! The change below has been redone:
Deleted Developer: Amy;
Phone: 83566674;
Email: amy@example.com;
Address: 42, Clementi Ave 7, #02-2;
Date Joined: 23-11-2023;
Role: Frontend Developer;
Salary: 5000;
Projects: CustomWebsite AndroidApp
Scroll back to Table of Contents
Additional Features
Miscellaneous Features
Listed below are some miscellaneous features that are available in CodeContact to improve your user experience.
Viewing help : help
Shows a message explaining how to access the help page.
Format: help
Scroll back to Table of Contents
Clearing all entries : clear
Clears all entries from the address book.
Format: clear
Scroll back to Table of Contents
Exiting the program : exit
Exits the program.
Format: exit
Scroll back to Table of Contents
Feedback System [coming in v2.0]
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 CodeContact home folder.
Q: How can I launch CodeContact if the clicking on the JAR file does not work?
A: There are two possible methods to launch CodeContact.
- Method 1: For users familiar with the command prompt
- Open the command prompt.
- Navigate to the directory where the JAR file is located using cd [JAR file location].
- Type
java -jar CodeContact.jar
and press enter. - CodeContact should launch.
- Method 2: For users that wish to create a script to launch CodeContact (Recommended)
- Create a new text file.
- Type the following into the text file:
java -jar [JAR file location]/CodeContact.jar
. - Save the text file as CodeContact.bat (Windows) or CodeContact.sh (MacOS/Linux).
- Change the admin settings of the script to allow it to run as a program:
- Windows: Right-click on the script and select Properties. Under General , check the box that says Allow this file to run as a program.
- MacOS/Linux: Open the terminal and navigate to the directory where the script is
located. Type
chmod +x [script name]
and press enter (chmod +x
changes permissions of the script to allow it to be executed).
- Double-click on the script to launch CodeContact.
- CodeContact should launch.
Q: How can I check my java version?
A: Open a command prompt and type java -version
. If you do not have Java installed, you
can download it here.
Scroll back to Table of Contents
Known issues
-
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 tampering with the storage files, if you tamper with the storage files leading to incorrect format, the application will not be able to
read the data and will throw an error. The remedy is to delete the
addressbook.json
file created by the application before running the application again.
Scroll back to Table of Contents
Command summary
Action | Format, Examples |
---|---|
lock | lock |
unlock | Format: unlock pw/PASSWORD Example: unlock pw/Password123!
|
change password | Format: change-password pw/CURRENT_PASSWORD npw/NEW_PASSWORD Example: change-password pw/Password123! npw/Password123!
|
add developers | Format: add-developer n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [d/DATE_JOINED] r/ROLE s/SALARY [pr/PROJECT_NAME]... g/GITHUB_ID rt/RATING Example: add-developer n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 r/Developer pr/AndroidApp pr/CustomWebsite s/4500 d/11-11-2023 g/johng rt/3 |
add clients | Format: add-client n/NAME p/PHONE e/EMAIL a/ADDRESS r/ROLE [pr/PROJECT]... o/ORGANISATION do/DOCUMENT Example: add-client n/Jack Doe p/98765432 e/jackd@example.com a/311, Clementi Ave 2, #02-25 r/Developer pr/AndroidApp pr/CustomWebsite o/Google do/google.com |
add projects | Format: add-project n/NAME dr/DESCRIPTION [dl/DEADLINE_DATE,DEADLINE_DESCRIPTION,PRIORITY,IS_DONE]... Example: add-project n/JuiceApp dr/App to allow for different juices to be ordered dl/19-12-2023,Design backend,HIGH,0 dl/25-12-2023,Design frontend,MEDIUM,0 |
edit developers | Format: edit-developer INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [d/DATE_JOINED] [r/ROLE] [s/SALARY] [pr/PROJECT_NAME]... [g/GITHUB_ID] [rt/RATING] Example: edit-developer 2 p/98989898 pr/Project2 pr/Project3 |
edit clients | Format: edit-client INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [d/DATE_JOINED] [r/ROLE] [s/SALARY] [pr/PROJECT_NAME]... [g/GITHUB_ID] [rt/RATING] Example: edit-client 3 p/bob@gmail.com |
edit projects | Format: edit-project INDEX [dr/DESCRIPTION] [dl/DEADLINE]... Example: edit-project 1 dl/Finish Feature-A by: 09-09-2023 |
find developers | Format: find-developer pr/<Project Name> Example: find-developer pr/2103/T |
find clients | Format: find-client n/<Name> Example: find-client n/Amy |
find projects | Format: find-project dr/description Example: find-project dr/school semester project |
find deadlines | Format: find-deadline [d/DATE] [pri/PRIORITY] Example: find-deadline d/20-11-2023 pri/MEDIUM |
delete developer | Format: delete-developer INDEX Example: delete-developer 1 |
delete client | Format: delete-client INDEX Example: delete-client 1 |
delete project | Format: delete-project INDEX Example: delete-project 1 |
import developer | Format: import-developer [FILENAME] Example: import-developer developers.csv |
import client | Format: import-client [FILENAME] Example: import-client clients.csv |
add developer role | Format: add-developer-role ROLE_NAME Example: add-developer-role UIDesigner |
add client role | Format: add-client-role ROLE_NAME Example: add-client-role Boss |
delete developer role | Format: delete-developer-role ROLE_NAME Example: delete-developer-role UIDesigner |
delete client role | Format: delete-client-role ROLE_NAME Example: delete-client-role Boss |
list | Format: list-developer list-project list-client
|
mark deadline | Format: mark-deadline PROJECT_INDEX DEADLINE_INDEX Example: mark-deadline 2 1 |
unmark deadline | Format: unmark-deadline PROJECT_INDEX DEADLINE_INDEX Example: unmark-deadline 2 1 |
undo | undo |
redo | redo |
clear | clear |
exit | exit |
help | help |