Skip to content

Simple yet powerful absence management software for small and medium size business (community edition)

License

Notifications You must be signed in to change notification settings

bigheadsmith/timeoff-app

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TimeOff.Management

Web application for managing employee absences.

Build status

Features

Multiple views of staff absences

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 employees can take for each Leave type. E.g. no more than 10 Sick days per year.

Setup public holidays as well as company specific days off.

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

Customisable working schedule for company and individuals.

Third Party Calendar Integration

Broadcast employee whereabouts into external calendar providers: MS Outlook, Google Calendar, and iCal.

Create calendar feeds for individuals, departments or entire company.

Three Steps Workflow

Employee requests time off or revokes existing one.

Supervisor gets email notification and decides about upcoming employee absence.

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

Access control

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

Optional LDAP authentication: configure application to use your LDAP server for user authentication.

Ability to extract leave data into CSV

Ability to back up entire company leave data into CSV file. So it could be used in any spreadsheet applications.

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 employee allowances e.g. employee has extra day in lieu.

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

Email notification to all involved parties.

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

Screenshots

TimeOff.Management Screenshot

Installation

Cloud hosting

Visit http://timeoff.management/

Create company account and use cloud based version.

Docker Compose

Clone the repository

git clone https://github.com/bigheadsmith/timeoff-app.git timeoff-app
cd timeoff-app

Edit configuration variables inside .env.example and save as .env - environment variables table below

cp .env.example .env

Edit docker-compose-example.yaml and save as docker-compose.yaml

cp docker-compose-example.yaml docker-compose.yaml

Run the project

docker compose up --build -d

Environment variables

Variable Description Default value
APP SETTINGS
NODE_ENV Environment of NodeJs development
PORT Port of the application 3000
LOGIN_DEFAULT Display the default login form true
BRANDING_URL URL of the application http://app.timeoff.management/
BRANDING_WEBSITE URL of the company's website http://timeoff.management/
BRANDING_TITLE App title Timeoff.Management
BRANDING_CONTACTEMAIL App contact email address [email protected]
OPTIONS_ALLOWREGISTRATION Allows creation of company account. Set to false after setup true
OPTIONS_SENDEMAIL False=write to email audit but do not send email false
OPTIONS_FORCELEAVESELECT Forces user to select leave type instead of default false
OPTIONS_LOCALECODE en
CRYPTO_SECRET Secret for password hashing changeme
API_KEY
LOCALE_CODE_FOR_SORTING en
GOOGLE_ANALYTICS_TRACKER Google Analytics tracker code
DATABASE SETTINGS
DB_DATABASE Database name timeoff-db
DB_USER Database username timeoff-user
DB_PASSWORD Database password changeme
DB_HOST Database hostname, IP or container ID postgres
DB_DIALECT Database dialect (sqlite, mysql, postgres) postgres
DB_PORT For external DB access
DB_LOGGING Logging of queries false
DB_POOL_MAX Maximum number of connection in pool 5
DB_POOL_MIN Minimum number of connection in pool 0
DB_POOL_ACQUIRE The maximum time, in milliseconds, that pool will try to get connection before throwing error 60000
DB_POOL_IDLE The maximum time, in milliseconds, that a connection can be idle before being released. 10000
DB_RETRY_MAX Maximum attempts the app will retry when connecting to the database 5
DB_RETRY_TIMEOUT Maximum time app attempt when connecting to the database 60000
EMAIL SETTINGS
SMTP_FROM Sender email [email protected]
SMTP_HOST Host of the smtp server localhost
SMTP_PORT Port of the smtp server 25
SMTP_REQUIRE_TLS Use STARTTLS false
SMTP_AUTH_REQUIRED Sets whether the SMTP server requires authentication true
SMTP_AUTH_USER Username for the smtp server. Leave blank or comment for no auth
SMTP_AUTH_PASS Password for the smtp server
SESSION STORAGE SETTINGS
SESSIONS_SECRET Secret for the sessions
SESSIONS_STORE Storage for the sessions (sequelize,redis) sequelize
SESSIONS_REDIS_HOST Redis hostname localhost
SESSIONS_REDIS_PORT Redis port 6379
SLACK SETTINGS
SLACK_TOKEN If set, the Slack token to send message
SLACK_BOT_NAME Name of the bot on Slack
SLACK_ICON_URL Icon of the bot on Slack
GOOGLE LOGIN SETTINGS
LOGIN_GOOGLE Enable the authentication with Google false
GOOGLE_AUTH_CLIENTID Google Auth client ID
GOOGLE_AUTH_CLIENTSECRET Google Auth client secret
GOOGLE_AUTH_DOMAINS Allowed domains

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.

Make sure you have Chrome driver installed in your path and Chrome browser for your platform.

If you want to see the browser execute the interactions prefix with SHOW_CHROME=1

USE_CHROME=1 npm test

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

Any bug fixes 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 install
npm run-script db-update
npm start

How to?

There are some customizations available.

How to amend or extend colours available for colour picker?

Follow instructions on this page.

Customization

There are few options to configure an installation.

Make sorting sensitive to particular locale

Given the software could be installed for company with employees with non-English names there might be a need to respect the alphabet while sorting customer entered content.

For that purpose the application config file has options_localecode entry. By default the value is en (English). One can override it with other locales such as cs, fr, de etc.

Force employees to pick type each time new leave is booked

Some organizations require employees to explicitly pick the type of leave when booking time off. So employee makes a choice rather than relying on default settings. That reduce number of "mistaken" leaves, which are cancelled after.

In order to force employee to explicitly pick the leave type of the booked time off, change is_force_to_explicitly_select_type_when_requesting_new_leave flag to be true in the config/app.json file.

Use Redis as a sessions storage

Follow instructions on this page.

Feedback

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

About

Simple yet powerful absence management software for small and medium size business (community edition)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 81.7%
  • Handlebars 16.3%
  • Other 2.0%