PROJECT: ProManage


Overview

This project portfolio documents my contributions to the development of the CS2113 project, as part of my team T16-2.

Summary of contributions

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 or login 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 OR list all people OR list all events or list 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 a Department, 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 one Department.

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.

ListSequenceDiagram

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

  1. User requests to create an event.

  2. ProManage displays input format and requests user to enter event input details according to format.

  3. User enters event details.

  4. Program displays users input and confirm the input with user.

  5. User confirms with ProManage

  6. 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

  1. Should work on any mainstream OS as long as it has Java 9 or higher installed.

  2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.

  3. A user new to the program should be able to navigate and utilize the CLI easily.

  4. Experienced CLI users should be able to be familiar with all the commands and navigation within the program.

  5. 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.

  6. User cannot be in multiple departments.

  7. The program should respond within 2 seconds after creation, editing, and deletion of events.