GithubHelp home page GithubHelp logo

timeoff-management / timeoff-management-application Goto Github PK

View Code? Open in Web Editor NEW
911.0 42.0 563.0 2.79 MB

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

Home Page: https://TimeOff.Management

License: MIT License

JavaScript 83.30% CSS 0.48% Dockerfile 0.11% SCSS 0.53% Handlebars 15.58%
web-app businessapp employees absence timeoff calendar node-js absence-management employee-absence sickness sequelizejs hr

timeoff-management-application's Introduction

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.

Self hosting

Install TimeOff.Management application within your infrastructure:

(make sure you have Node.js (>=4.0.0) 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.

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 locale_code_for_sorting 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

timeoff-management-application's People

Contributors

alfredopalhares avatar ampem avatar bbadjari avatar borfast avatar fery avatar gerrypower avatar javierabreu avatar jdambron avatar jekuno avatar jjasonkal avatar jnormington avatar johan162 avatar mback2k avatar nunorafaelrocha avatar officeschwarts avatar pavelito avatar realshaunoneill avatar rixx avatar vpp avatar vpp-ffx avatar waffle-iron avatar wulfboy-95 avatar zefixlluja avatar zoenolan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

timeoff-management-application's Issues

Ability to "holiday prohibition" dates

As our customer suggested:

...

One feature you may like to put on your list is the ability to prevent booking on certain days.

For example, towards the end of every May we run a huge exhibition, we don't allow staff to book holiday a week either side of this event. Would be great to allow a " holiday prohibited" date range.

...

Maybe it is not to block holidays completely but to highlight that at request submission and performing decision? So if some really necessary absences still to take place - it is possible to do so.

Fix a typos

On the calendar view Upcomming months is misspelled. it should be "Upcoming Months".

Hints on registration page

Add bootstrap tool tips with brief field description next to field on registration page.

More important is to update the wording on the registration page to make it clear that it is registration of new COMPANY not just a user.

Make some email notifications optional

Add a way for disabling some of emails on company level. It should be done as a set of checkboxes on company settings.

Emails like "notify approver for decision" etc.

By default all emails should be enabled.

As per feedback:

ability to enable and disable sending emails via web interface. Like the Ldap or at least web option on the fly to "mute" the mail sender when doing some "administrative" tasks. Currently I have to comment the config file and reboot the service.

Consider adding "Share all absences" flag to the company

As one of our customers suggested:

"How are view permissions setup? I want everyone in my company to see everyone else’s calendar regardless of the department they are in."

It sounds like very reasonable requirement and could be implemented cheaply as a flag on Company with effect on Team view. If set the Team View will show entire company not just peers. Consider to just to amend "All departments" item to show actually all departments but not employees from department current user can manage.

Fix a ugly output ini tests

There are some moment.js usage that is going to be deprecated, following is from test runs:

Basic leave request
Deprecation warning: moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to moment/moment#1407 for more info.
Arguments: [object Object]
Error
at Function.createFromInputFallback (/home/travis/tom/node_modules/moment/moment.js:850:105)
at configFromString (/home/travis/tom/node_modules/moment/moment.js:970:32)
at configFromInput (/home/travis/tom/node_modules/moment/moment.js:1473:13)
at prepareConfig (/home/travis/tom/node_modules/moment/moment.js:1456:13)
at createFromConfig (/home/travis/tom/node_modules/moment/moment.js:1423:44)
at createLocalOrUTC (/home/travis/tom/node_modules/moment/moment.js:1505:16)
at local__createLocal (/home/travis/tom/node_modules/moment/moment.js:1509:16)
at utils_hooks__hooks (/home/travis/tom/node_modules/moment/moment.js:16:29)
at /home/travis/tom/lib/model/mixin/user/absence_aware.js:24:16
at Function..map..collect (/home/travis/tom/node_modules/underscore/underscore.js:172:24)
at _get_calendar_months_to_show (/home/travis/tom/lib/model/mixin/user/absence_aware.js:23:16)
at promise_calendar (/home/travis/tom/lib/model/mixin/user/absence_aware.js:42:36)
at router.get.base_date (/home/travis/tom/lib/route/calendar.js:107:14)
at Layer.handle as handle_request
at next (/home/travis/tom/node_modules/express/lib/router/route.js:100:13)
at Route.dispatch (/home/travis/tom/node_modules/express/lib/router/route.js:81:3)
at Layer.handle as handle_request
at /home/travis/tom/node_modules/express/lib/router/index.js:234:24
at Function.proto.process_params (/home/travis/tom/node_modules/express/lib/router/index.js:312:12)
at /home/travis/tom/node_modules/express/lib/router/index.js:228:12
at Function.match_layer (/home/travis/tom/node_modules/express/lib/router/index.js:295:3)
at next (/home/travis/tom/node_modules/express/lib/router/index.js:189:10)
at /home/travis/tom/node_modules/express/lib/router/index.js:191:16
at Function.match_layer (/home/travis/tom/node_modules/express/lib/router/index.js:295:3)

Consider adding holiday approvers on individual bases rather than on departments

As one of our customers suggested:

"It would be very helpful to be able to be to assign an approver individually for each employee rather than having the approver combined with the department."

We need to think how to add this feature without having big impact on current structure of model.

Not sure about solution at this moment yet.

Non allocated days off to be shown differently.

As per customer request:

"Quick question from one of my team leaders, are we able to have the sick days displayed on the team view page with a different colour on the shading?"

In ideal world we need to make colour picker on the leave type setup page.

That is to be done later as needs more work.

Meanwhile make holidays that are not counted toward allocation be presented differently .

Accrued allowance feature

Currently the application allocate the number of free time off days at the start of the year and employee is able to spend them at any point.

Few customers asked for feature when the allowance is accrued based on how far in the current year we are now.

"... We would need some notion of accrued time. Instead of having a fixed amount of time available at the beginning of the year, we officially accrue time based on an annual rate. If you had 12 vacation days per year, you would accrue 1 day per month (or more precisely, a certain amount per day). This is useful for 2 cases ..."

To implement this feature we do not need to do any DB changes other than adding new flag to the company level - that enables/disables it.

The business logic needs to be amended such a way that when requesting new leave system checks if user still within accrued number of available days.

That feature overlaps with some functionality discussed in #37

Progressive allowance feature

This is what of one of the customers wrote:

"In our case, time off is based on length of employment."

As it looks to me it is not complex to add feature of "time in company based allowance", that it with every year of being with a company employee gets extra day off until lets say 5.

That change would require few changes of DB structure:

  • add flag that enables the feature on company level
  • add the limit of how many extra days is possible to gain in such a way; again on the company level

The code that calculates the amount of available allowance needs to perform extra calculations: count of how many years the employee is with current company and based on that add extra days.

Fix deprecation error

express deprecated req.param(name): Use req.params, req.body, or req.query instead lib/route/login.js:94:23
express deprecated req.param(name): Use req.params, req.body, or req.query instead lib/route/login.js:101:22
express deprecated req.param(name): Use req.params, req.body, or req.query instead lib/route/login.js:106:26

Multi location companies

Consider adding concept of locations into companies.

So it is possible to have different sets of bank holidays within same organisation. E.g. if company has offices in different countries.

Here is a comment of one of our customers:

"... Our company is international, which brings a load of complications concerning different calendars and vacation time rules for each country. To generalize it, being able to define different sets of public holidays and determining which set a person gets is the sort of flexibility that we would need.... "

UPD.

Consider generalising concept of department into a "group" of employees.

Each such group could bring particular attribute to employee, such as bankholiday set, visibility etc.

Employees are to be part more then one of such departments/groups.

User adjustments to allow half days

Got an email from customer:

in the adjustments, It won't let me enter half days adjustment?

Can you help?

When entering, for example, 1.5 in adjustment, it shows the message
"you must enter a valid value"

Add new bank holiday

When adding new bank holiday and enter invalid data, e.g. leave name blank, after form submission page report success, but nothing is added.

Respect end date for employee

Prevent her from:

  • login into system
  • showing on the team view page
  • showing in the list of possible approvers
  • reduce code duplication
  • Make sure when updating deactivated user to be active again, system checks that such user does not exist in other companies.

Clean up app.js

We need to clean up the structure of app.js:

  • how 500 page is handled
  • moove session secret into config
  • move handlebars setup into midleware

Update email footer to get rid of Pavlo

As some customers complained the name Pavlo is not relevant to the emails from TimeOff.Management

Lets change the email signature to be just "TimeOff.Management"

My calendar bank holidays

When my calendar page shows only four upcoming months and some of them are in new year, bank holidays from those months are not shown, even though when year is expanded to full they are shown.

UI: add_new_leave_type_btn overlap

Not sure if intentional but the "Add new" button is overlapping the "Save changes" button.

Before changing button padding:

hud5und

## After changing button padding:

toqdmgp

Move to DO hosting

Fed up with troubles with Webfaction hosting.

Constant outages.

Move the website onto DO hosting.

Transferring unused holidays to next year

System should automatically transfer all remaining vacation days to the next year.

Alternatively when calculating employee allowance previous year should be taken into consideration.

Some notes on implementation:

  • Linking table to user: carried_over_allowance. With fields: id, user_id, year, carried_over_allowance, suggested_allowance
  • Supervisor automatically sees missing carry overs on the my requests page (the section to be renamed into My messages)
  • Employee details page allows to amend carried over but not to exceed the suggested value. In case when user want to have more, suggest manual allowance adjustments
  • Send email to employee when her allowance was carried over
  • Department or Company has a property that could define max amount of carried over days

Consider increasing granularity of the leaves by splitting days into hours.

As one of our customers suggested:

"> I can provide one suggestion for a feature. It’d probably require a

bit of an overhaul and rethinking of some things, but it seems
important if you want to continue growing this for wider usage. Most
places I’ve worked for have broken down personal and vacation time
to hours, not days. Right now it seems as if your system entirely
considers things in the concept of day, and not hours, and that would
need to be reworked before we can deploy it (we have some accruals
like 4.75 hours, not in even “day” amounts). Do you think this is
something you’d ever consider moving to, or are you fairly stuck on
the unit being days? "

We need to consider that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.