Overview
This project portfolio documents my contributions to the development of the CS2113 project, as part of my team T16-2.
Summary of contributions
-
Major enhancement: added
department
attribute for each person added into ProManage. In addition, added the ability tolist
all people and events, with the option to view people based on their departments via thelist
command.-
What it does: allows the user to
list people
and events. In addition, the user has the option tolist
people based on their departments. -
Justification: This feature facilitates personal information collection for users. Users can easily view all the personal information of the relevant people he/she is looking for. Similarly, the user can view all information of all events.
-
Highlights: This feature considers which
department
the person is in. The user can also view the personal information of people from multiple departments.
-
-
Minor enhancement:
-
added a
designation
attribute to each person added into ProManage. Essentially, for v1.4, each person is either a manager or an employee. -
improved the
login
command, allowing existing users of ProManage to login with their email. This helps to increases user friendliness.
-
-
Code contributed: [https://nuscs2113-ay1819s1.github.io/dashboard/#=undefined&search=jeevz10&sort=displayName&since=2018-09-12&until=2018-11-03&timeframe=day&reverse=false&repoSort=true]
-
Other contributions:
-
Project management:
-
Helped to Managed releases on GitHub
-
Help raised issues project dashboard on GitHub https://github.com/CS2113-AY1819S1-T16-2/main/issues/28 https://github.com/CS2113-AY1819S1-T16-2/main/issues/30 https://github.com/CS2113-AY1819S1-T16-2/main/issues/44 https://github.com/CS2113-AY1819S1-T16-2/main/issues/136
-
Wrote additional tests to increase coverage from 82% to 84% https://github.com/CS2113-AY1819S1-T16-2/main/pull/114
-
-
Documentation:
-
Updated the User Guide to include
list
command and updated theadd
,edit
andlogin
commands -
Contributed to the updates on the User Guide: https://github.com/CS2113-AY1819S1-T16-2/main/pull/25 https://github.com/CS2113-AY1819S1-T16-2/main/pull/57 https://github.com/CS2113-AY1819S1-T16-2/main/pull/82 https://github.com/CS2113-AY1819S1-T16-2/main/pull/155
-
Updated the Developer Guide to include
list
, introduction, project scope, uses stories, use cases and non-functional requirements andlist
feature: https://github.com/CS2113-AY1819S1-T16-2/main/pull/6 https://github.com/CS2113-AY1819S1-T16-2/main/pull/57 https://github.com/CS2113-AY1819S1-T16-2/main/pull/82 https://github.com/CS2113-AY1819S1-T16-2/main/pull/155
-
-
Community:
-
PRs reviewed (with non-trivial review comments): https://github.com/CS2113-AY1819S1-T16-2/main/pull/134
-
-
Contributions to the User Guide
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. |
Introduction
ProManage is a professional desktop application for companies that specialises in executing projects that undergoes a long and tedious planning phase. This is particularly useful for companies that have a distinct structure and chain of command. For each project, there is a project team, which is usually led by a Manager. The company would usually consist of a flexible number of departments such as Admin, Logistics, Programmes, Finance, Publicity, Marketing and Safety. ProManage targets these respective project teams, and allow Manager and Employees to manage their teams and events.
Our application aims to ease the mode of task, event allocation and management by providing an all-in-one platform for the project team. It saves companies' time and money. Our customers will feel at ease communicating with one another in their project team setting. There is no better way to work than a CLI application that facilitates workflow than ProManage! More importantly, ProManage is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). ProManage can help you manage project scheduling effectively. Interested? Jump to the [Quick Start] to get started. Enjoy!
Login the app: login
Priority level: default
Login to the app as one of the following identity: manager
or employee
or as EMAIL
.
The user can only login into ProManage if his/her email has been registered in the ProManage system before.
Once login, you will not be able to login again unless the user chooses to logout.
Format: login identity
Example:
login manager
login as johnd@example.com
Listing all personnel of the company : list
Shows a list of all the personnel, all the events, or those people in the specific department in the project team
Format/Prompts:
Enter command to list all people: list all people
Enter a command to list all the events: list all events
Enter a command to list all people and events: list all
Enter a command to list people in the specific DEPARTMENT
: list dep DEPARTMENT
Example:
list dep Admin
list dep Admin Finance
Command Summary
-
Help:
help
-
Login:
login IDENTITY
where IDENTITY is either manager or employee orlogin as existingemail@example.com
-
Logout:
logout
-
Add Employee:
add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS dep/DEPARTMENT des/DESIGNATION [t/TAG]…
-
Edit Employee :
edit PERSON_INDEX [p/PHONE_NUMBER] [a/ADDRESS] [dep/DEPARTMENT] [des/DESIGNATION] [t/TAG]…
-
Delete Employee :
delete PERSON_INDEX
-
Find Employee :
find KEYWORD [MORE_KEYWORDS]
-
List :
list all
ORlist all people
ORlist all events
orlist dep DEPARTMENT
-
Sort :
sort KEYWORD
-
Add Event :
addEvent n/NAME d/DESCRIPTION l/LOCATION date/DATE s/START_TIME e/END_TIME
-
Edit Event :
editEvent EVENT_INDEX [n/NAME] [d/DESCRIPTION] [l/LOCATION] [date/DATE] [s/START_TIME] [e/END_TIME]
-
Delete Event :
deleteEvent EVENT_INDEX
-
Find Event :
findEvent KEYWORD [MORE KEYWORDS]
-
Invite :
invite PERSON_INDEX to/EVENT_INDEX
-
Remove :
remove PERSON_INDEX from/EVENT_INDEX
-
Select Employee :
select PERSON_INDEX [date/DATE] [m/MONTH] [y/YEAR]
-
Select Event :
selectEvent EVENT_INDEX
-
Show Mine:
showmine
-
History :
history
-
Undo :
undo
-
Redo :
redo
-
Clear :
clear
-
Exit :
exit
Contributions to the Developer Guide
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project. |
List Feature
Current Implementation
The list
feature allows users to filter through all the individual people in ProManage and understand which department
they are from. The command currently has 4 sub-features; list all
, list all people
, list all events
and list dep DEPARTMENT
. The user can list all the
people and events in ProManage by simply typing list all
. Alternatively, the user can filter through ProManage and get the
relevant Person’s information by listing those of the specified department. The user can list multiple departments such
as list dep Admin Finance
. As of now, each person can only be inside one department.
The listing of people from the respective departments is facilitated by the class: Departments
,
a list of departments of type String
.
The following is a more detailed description of the classes involved:
-
Department
-
Each
Person
object has aDepartment
, which is the department in which the person is in. -
This class is essentially another piece of information about the person.
-
Each
Person
can only be in oneDepartment
.
-
Execution of Command
Given below is an example usage scenario and how the list mechanism works.
Step 1. The user executes list dep Admin
to list only the people in the Admin department. The command text is passed
to an instance of the LogicManager
class.
Step 2. The LogicManager
instance calls ProManage#parsecommand
, which parses the list
command prefix
"list".
Step 3. ListCommandParser#parse
parses the type of command that is called upon and if applicable, the departments
listed. The list command can take in either all
, all people
, all events
or dep
. all
means that are no predicates and 'dep' means specific
departments are about to be listed. An instance of the ListCommand
encapsulating the type of ListCommand
and if
applicable, the predicates involved, is then returned to Logic Manager
.
Step 4. Logic Manager
then executes this ListCommand
by calling ListCommand#execute
.
Step 5. The filtered person list is first obtained by calling PersonModel#updateFilteredPersonList
. Based on the departments, the list of Person
are selected.
Step 9. The ListCommand#execute
finally returns a CommandResult
with a success message.
The sequence diagram below illustrates the execution of the list
command.
Future Improvements
Listing people who stay in the same town
The current list
command does not utilize the address of each person. Thus, to make data more easily accessible, ProManage can implement Google Maps API and mark out where each employee stays on the map.
-
Utilize Google Maps API and store the map -
list map
Listing people’s birthdays
The current person has no date of birth attribute. Thus, a date of birth attribute could be implemented. On top of that, ProManage can display the current date and time. Along with this, it can list out the upcoming birthdays of the personnel in the company.
-
Implement date of birth attribute and display current date and time the moment the application is launched. List out upcoming birthdays -
list birthdays
Appendix A: Product Scope
Target user profile:
-
Companies have project management teams. Delegation of tasks and events can become complicated.
-
Project teams comprises of project managers, and the various sub branches : Admin, Logistics, Programmes, Publicity, Marketing and Safety.
-
This application aims to provide an all in one platform to ease the mode of task and event allocation.
-
prefer desktop apps over other types
-
can type fast
-
prefers typing over mouse input
-
is reasonably comfortable using CLI apps
Project Manager:
-
In charge of overall project.
-
He/She has the autonomy to add/edit/view/delete all of the events and tasks of his/her employees.
Employees:
-
He/she is only entitled to view all of the events of himself/herself within the department.
Value proposition:
-
Facilitates workflow faster than a typical mouse/GUI driven app.
-
Saves consumers' efficiency, money and time tremendously.
Appendix B: User Stories
Priorities: High (must have) - * * *
, Medium (nice to have) - * *
, Low (unlikely to have) - *
Priority | As a … | I want to … | So that I can… |
---|---|---|---|
|
New Project Manager |
See usage instructions |
Refer to instructions when I forget how to use the ProManage |
|
Project Manager |
Add a new person |
Maintain a record of that employee |
|
Project Manager |
Delete a person |
Remove employees that left the company |
|
Project Manager |
Edit a person’s details |
Change the relevant information |
|
Project Manager |
Find a person by name |
Locate details of people without having to go through the entire list |
|
Project Manager |
Find a person by email |
Locate people through their unique work email address |
|
Project Manager |
List the people in alphabetical order by name or by department |
View the whole list of relevant people |
|
Project Manager |
Add a new event |
Maintain a record of that event |
|
Project Manager |
Delete an event |
Remove events that are no longer relevant |
|
Project Manager |
Edit the information of an event |
Update the relevant information |
|
Project Manager |
View a colleague’s events |
To monitor my colleague’s event schedule before I plan an event |
|
Project Manager |
View an employee’s events on a certain date, month or year |
To view the employee’s events on a certain date, month or year |
|
Project Manager |
View a colleague’s events on a certain date, month or year |
To check if he/she is free for an important meeting |
|
Project Manager |
Invite an employee to events |
Add the person to the a department meeting |
|
Project Manager |
Invite an employee to events |
Add the person to the a company outing |
|
Project Manager |
Remove people from the event |
Remove irrelevant people from an event |
|
Project Manager |
Remove people from the event |
Remove people who I accidentally invited |
|
Project Manager |
Find an event |
Locate details of the event without having to look through the entire list |
|
Project Manager |
Sort the event list by name |
View the events by alphabetical order |
|
Project Manager |
Sort the event list by time and date |
View what are the more recent events of the event list |
|
Project Manager |
Select an event |
To know more information about the event |
|
Project Manager |
History of commands |
To view the commands previously inserted into ProManage |
|
Project Manager |
Undo command |
Undo my previously entered command |
|
Project Manager |
Redo command |
Redo my previously undo command |
|
Project Manager |
View events related to myself |
To avoid looking through the entire event list to find out which events I need to attend |
Use case: Add Event
MSS
-
User requests to create an event.
-
ProManage displays input format and requests user to enter event input details according to format.
-
User enters event details.
-
Program displays users input and confirm the input with user.
-
User confirms with ProManage
-
ProManage adds event to user’s event list.
Use case ends.
Extensions
-
3a. User input incorrect format.
-
3a1. ProManage shows an error message.
Use case resumes at step 2.
-
Non Functional Requirements
-
Should work on any mainstream OS as long as it has Java
9
or higher installed. -
Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.
-
A user new to the program should be able to navigate and utilize the CLI easily.
-
Experienced CLI users should be able to be familiar with all the commands and navigation within the program.
-
A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.
-
User cannot be in multiple departments.
-
The program should respond within 2 seconds after creation, editing, and deletion of events.