cOOPer is a Command Line Interface (CLI) desktop application developed to simplify administrative processes of tech startups such as communication and finance management.
cOOPer was developed in Java following an Object-Oriented Programming (OOP) paradigm, hence the letters OOP in its name.
All the code I contributed for this project can be found at this RepoSense link.
generate
feature
Storage
classes which each had a load()
and save()
method as well as a encode()
and decode()
method.generate
feature
help
and exit
Contribution 6: Added some questions to the ‘FAQ’ section
Ui
, Parser
, Verification
, and Storage
components under the ‘Design’ section
generate
, help
and ‘Launch and Shutdown’ sections to manual testing
Here is an extract of one of my contributions to the User Guide:
Getting Started
This section explains how you can register an account with cOOPer in order to gain access to cOOPer’s features.
How cOOPer is to be used
- The correct way (as of v2.1) of using cOOPer is to run cOOPer on a single desktop with only a single user interacting with cOOPer at a time.
⚠️cOOPer’s features will not work as described in this user guide if multiple users are interacting with cOOPer on multiple desktops at the same time.
Roles
There are two main roles you can hold as a user of cOOPer, namely the admin role or the employee role.
You are eligible to hold the admin role if you hold a high position in the startup. e.g. Chief Executive Officer (CEO), Chief Financial Officer (CFO), Human Resources Manager (HR), accountant etc.
On the other hand, you hold the employee role if you are a basic employee at the startup.
cOOPer offers tailor-made functions and features specific to your role to ensure the correct level of administrative access within the company throughout cOOPer’s usage.
User registration
Upon first-time use of cOOPer, ensure that all members of the startup are registered with the correct role.
Once a member has been registered, they will be able to log in to cOOPer to access its features.
How to register a user:
- When you see the
[Logged out]
label beside cOOPer’s prompt, enterregister [username] /pw [password] /as [role]
.- Upon successful registration, you should see a message informing you of your successful registration.
- You can now log in to access cOOPer’s features specific to your role. Refer to the Login section to find out more about logging in.
ℹ️
[username]
refers to your name,[password]
refers to your password, while[role]
refers to your role as determined here.
- Example input:
>> [Logged out] register Sebastian /pw 123 /as admin
- Expected output:
========================================================================= Sebastian is now successfully registered as an admin! =========================================================================
ℹ️A similar output should be observed when an employee is registered, with the output now showing ‘employee’ instead of ‘admin’.
💡 Just like when you are using any other app with a sign in feature, remember to record down your username and password somewhere (e.g. Sticky Notes, a password manager).
Here is an extract of one of my contributions to the Developer Guide:
Design
💡 The architecture diagram and UML diagrams in this document were created using draw.io. The
.png
templates used to create the diagrams can be found in thedeveloperGuideDiagrams
folder. To create and edit diagrams, access the draw.io website, select ‘Open Existing Diagram’ and open the desired.png
file. Any changes to the diagram will be saved automatically.Overview
cOOPer consists of two main layers: the verification layer and the features layer as shown in the diagram below. cOOPer recognizes different sets of inputs at each layer.
Upon launching the app, the user starts at the verification layer where they can only log in or register. Entering valid credentials will then grant the user access to the features layer where they can input commands like
cf
andavailable
to use cOOPer’s features. At this layer, entering thelogout
command will bring the user back to the verification layer.Architecture
The Architecture Diagram above shows the high-level design of cOOPer and how cOOPer’s components are connected.
Cooper
contains the main method of the program.Cooper
’s responsibilities are as such:
- Upon launching the app,
Cooper
initializes the components and loads stored user data into the components.- While the app is running,
Cooper
reads user input which is then processed by the components to produce a result.- Upon shutting down the app,
Cooper
shuts down the components and performs cleaning up where necessary.Apart from
Cooper
, the rest of the app consists of these seven components:
Ui
: Handles the reading of user input and printing of messages to the terminal.Parser
: Interprets and validates user input.Verification
: Verifies that the user is signing in to cOOPer with valid credentials.Command
: Executes commands which are parsed from user input.Resources
: Manages data for cOOPer’s finance, meetings and forum features while the app is running.Storage
: Loads data from, and saves data to storage files in the computer hard disk.Util
: Provides utility which help with some of cOOPer’s features.Interaction of the architecture components to process user input
- The sequence diagram below provides a general overview of how cOOPer’s components interact with each other when a user enters their sign in details at the verification layer.
ℹ️
userInput
represents the credentials input by the user for verification. For example,register John /pw 12345 /as admin
.
- The next sequence diagram below provides a general overview of how cOOPer’s components interact with each other when a user enters a command at the features layer.
ℹ️
userInput
represents a command input by the user. For example,meetings
.
ℹ️XYZCommand
is an object representing a command recognised by cOOPer. For example,MeetingCommand
.