/timeoff.management

Snapshot Goal Repo

Primary LanguageJavaScriptMIT LicenseMIT

Team info:

Goal 181 Respository Link

Teamname: #drunk-civet
Authors: @lumodon, @HJBowers

Quality Rubric

Code Construction: [40 points]

  • Concise commenting
  • Intermediate variables
  • No long functions
  • Well-factored self-documenting code
  • Eslint is setup Code Readability: [40 points]
  • Good names for files, variables classes, methods etc.
  • Consistent white space usage
  • Comments explaining unusual code, bug fixes, code assumptions functions
  • Clean, precise commit messages Code Organization: [20 points]
  • Methods are grouped logically or by accessibility. Basic separation of code into logical folders
  • Code is grouped into regions and well commented with references to other source files. Each physical file has a unique purpose

Specs for Review:

Getting started

Familiarize yourself with the codebase

  1. First step of approaching a new codebase is to read the README.
  2. Next, get the code up and running. Checkout the README and look for instructions to get a local development copy of the repo up and running and play around with it.
  3. Next, read the browse in the t directory. Reading test descriptions (and file names) is a great way to learn what the app can do.
  4. Next, run all the tests locally, to make sure they are passing. (for this repo, there will be several failing tests) You'll need phantomjs installed: npm install phantomjs then run npm test
  5. Next, checkout the database design. Load it up in sql designer and familiarize yourself with the schema.
  6. Finally, look around the other folders and get a sense of how the code is organized, and what the technology stack is: database? front end? test suite? asset management? css framework?

Epics

Epic 1: New role: Approvers

This epics adds a new role: approver. Approvers can approve and reject requests, but don't have all of the admin access that an admin has.

  • As an Admin when I add a new user, I can choose to make them an approver
  • As an Admin if I try to make someone an approver AND an admin I get an error: "User can only be approver or admin, not both"
  • As an approver I can see a menu item in the top navbar next to calendar called "Requests" which links to "/requests"
  • As an admin I can see the requests link as well
  • As an employee I cannot see the requests link
  • As an approver or admin, I can see a notification icon next to the request link that shows the number of pending requests
  • As an approver, I can approve and reject requests
  • As an approver, I do not have access to other admin functions (general, department, LDAP configuration, emails audit)

TimeOff.Management

Web application for managing employees absence.

Stories in Ready

Build status

Features

Multiple views of staff absence

Calendar view, Team view, or Just plain list.

Tune application to fit into your company policy

Add custom absence types: Sickness, Maternity, Working from home, Birthday etc. Define if each uses vacation allowance.

Optionally limit the amount of days employee can take for each Leave type. E.g. no more than 10 days of Sick days per year.

Setup public holidays as well as company specific days off.

Group employees by departments: bring your organisation structure into, set the supervisor for every department.

Third Party Calendar Integration

Broadcast employees whereabout into external calendar providers: MS Outlook, Google Calendar, and iCal.

Create calendar feeds for individual, departments or entire company.

Three Steps Workflow

Employee request time off or revoke existing one.

Supervisor get email notification and decide about upcoming employee absence.

Absence is accounted. Peers are informed via team view or calendar feeds.

Accesss control

There are following types of users: employees, supervisors, and administrators.

Optional LDAP authentification: configure applicationto use your LDAP server for user authentication.

Seamless data migration betweeen different installations

User friendly and simple work-flow for data migration between different TimeOff.Management installations.

Admin user can download the entire company data as a single JSON file.

And then restore the account at different installation by simply uploading the JSON.

Works on mobile phones

The most used customer paths are mobile friendly:

  • employee is able to request new leave from mobile device

  • supervisor is able to record decision from the mobile as well.

Lots of other little things that would make life easier

Manually adjust employees allowance e.g. employee has extra day in lieu.

Upon creation employee receives pro rata vacation allowance, depending on start date.

Users of three types: admins, supervisors, and employees.

Email notification to all involved parties.

Optionally allow employees to see the time off information of entire company regardless the department structure.

Screenshots

TimeOff.Management Screenshot

Installation

Cloud hosting

Visit http://timeoff.management/

Create company account and use cloud based version.

Self hosting

Install TimeOff.Management application within your infrastructure:

(make sure you have Node.js and SQLite installed)

git clone https://github.com/timeoff-management/application.git timeoff-management
cd timeoff-management
npm install
npm start

Open http://localhost:3000/ in your browser.

Run tests

We have quite a wide test coverage, to make sure that the main user paths work as expected.

Please run them frequently while developing the project.

npm test

(make sure that application with default settings is up and running)

Any bugfixes or enhancements should have good test coverage to get them into "master" branch.

Updating existing instance with new code

In case one needs to patch existing instance of TimeOff.Managenent application with new version:

git fetch
git pull origin master
npm run-script db-update
npm start

Feedback

Please report any issues or feedback to twitter or Email: pavlo at timeoff.management