{"id":13457849,"url":"https://github.com/timeoff-management/timeoff-management-application","last_synced_at":"2025-09-29T07:33:05.001Z","repository":{"id":37587062,"uuid":"45705046","full_name":"timeoff-management/timeoff-management-application","owner":"timeoff-management","description":"Simple yet powerful absence management software for small and medium size business (community edition)","archived":false,"fork":false,"pushed_at":"2024-03-06T17:35:17.000Z","size":2852,"stargazers_count":1019,"open_issues_count":266,"forks_count":630,"subscribers_count":43,"default_branch":"master","last_synced_at":"2025-09-26T09:08:00.242Z","etag":null,"topics":["absence","absence-management","businessapp","calendar","employee-absence","employees","hr","node-js","sequelizejs","sickness","timeoff","web-app"],"latest_commit_sha":null,"homepage":"https://TimeOff.Management","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timeoff-management.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-11-06T20:15:09.000Z","updated_at":"2025-09-26T04:40:07.000Z","dependencies_parsed_at":"2023-02-14T02:46:09.575Z","dependency_job_id":"f1b24a36-36a8-4be7-9d85-790a33e569fd","html_url":"https://github.com/timeoff-management/timeoff-management-application","commit_stats":null,"previous_names":["timeoff-management/application"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/timeoff-management/timeoff-management-application","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timeoff-management%2Ftimeoff-management-application","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timeoff-management%2Ftimeoff-management-application/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timeoff-management%2Ftimeoff-management-application/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timeoff-management%2Ftimeoff-management-application/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timeoff-management","download_url":"https://codeload.github.com/timeoff-management/timeoff-management-application/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timeoff-management%2Ftimeoff-management-application/sbom","scorecard":{"id":885848,"data":{"date":"2025-08-11","repo":{"name":"github.com/timeoff-management/timeoff-management-application","commit":"5b1c1be08038e606bdd6ac5337c937847af1aa11"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.1,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":2,"reason":"Found 5/20 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:17","Warn: containerImage not pinned by hash: Dockerfile:25: pin your Docker image by updating alpine:latest to alpine:latest@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1","Warn: npmCommand not pinned by hash: Dockerfile:23","Info:   0 out of   2 containerImage dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 27 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"81 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-3v6h-hqm4-2rg6","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-cwfw-4gq5-mrqx","Warn: Project is vulnerable to: GHSA-g95f-p29q-9xw4","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-w8qv-6jwh-64r5","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-582f-p4pg-xc74","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-4gxf-g5gf-22h4","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-fr76-2wp8-fp92","Warn: Project is vulnerable to: GHSA-2j2x-2gpw-g8fm","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-2cf5-4w76-r9qv","Warn: Project is vulnerable to: GHSA-3cqr-58rm-57f8","Warn: Project is vulnerable to: GHSA-g9r4-xpmj-mj65","Warn: Project is vulnerable to: GHSA-q2c6-c6pm-g3gh","Warn: Project is vulnerable to: GHSA-765h-qjxv-5f44","Warn: Project is vulnerable to: GHSA-f2jv-r9rf-7988","Warn: Project is vulnerable to: GHSA-c429-5p7v-vgjp","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-jf85-cpcp-j695","Warn: Project is vulnerable to: GHSA-fvqr-27wr-82fm","Warn: Project is vulnerable to: GHSA-4xc9-xhrj-v574","Warn: Project is vulnerable to: GHSA-x5rq-j2xg-h7qm","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-hxm2-r34f-qmc5","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-8hfj-j24r-96c4","Warn: Project is vulnerable to: GHSA-wc69-rhjr-hc9g","Warn: Project is vulnerable to: GHSA-56x4-j7p9-fcf9","Warn: Project is vulnerable to: GHSA-v78c-4p63-2j6c","Warn: Project is vulnerable to: GHSA-6xwr-q98w-rvg7","Warn: Project is vulnerable to: GHSA-r8f7-9pfq-mjmv","Warn: Project is vulnerable to: GHSA-48ww-j4fc-435p","Warn: Project is vulnerable to: GHSA-hwqf-gcqm-7353","Warn: Project is vulnerable to: GHSA-9h6g-pr28-7cqp","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-v923-w3x8-wh69","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-7mwh-4pqv-wmr8","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-wfp9-vr4j-f49j","Warn: Project is vulnerable to: GHSA-m9jw-237r-gvfv","Warn: Project is vulnerable to: GHSA-fw4p-36j9-rrj3","Warn: Project is vulnerable to: GHSA-wrh9-cjv3-2hpw","Warn: Project is vulnerable to: GHSA-8c25-f3mj-v6h8","Warn: Project is vulnerable to: GHSA-vqfx-gj96-3w95","Warn: Project is vulnerable to: GHSA-f598-mfpv-gmfx","Warn: Project is vulnerable to: GHSA-3xc7-xg67-pw99","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-r628-mhmh-qjhw","Warn: Project is vulnerable to: GHSA-9r2w-394v-53qc","Warn: Project is vulnerable to: GHSA-qq89-hq3f-393p","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-7p7h-4mm5-852v","Warn: Project is vulnerable to: GHSA-cf4h-3jhx-xvhq","Warn: Project is vulnerable to: GHSA-qgmg-gppg-76g5","Warn: Project is vulnerable to: GHSA-776f-qx25-q3cc","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-24T10:00:23.464Z","repository_id":37587062,"created_at":"2025-08-24T10:00:23.464Z","updated_at":"2025-08-24T10:00:23.464Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277073505,"owners_count":25755873,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-26T02:00:09.010Z","response_time":78,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["absence","absence-management","businessapp","calendar","employee-absence","employees","hr","node-js","sequelizejs","sickness","timeoff","web-app"],"created_at":"2024-07-31T09:00:38.311Z","updated_at":"2025-09-29T07:33:04.984Z","avatar_url":"https://github.com/timeoff-management.png","language":"JavaScript","funding_links":[],"categories":["Business","JavaScript","📦 Legacy \u0026 Inactive Projects","others"],"sub_categories":[],"readme":"\n# TimeOff.Management\n\nWeb application for managing employee absences.\n\n\u003ca href=\"https://travis-ci.org/timeoff-management/timeoff-management-application\"\u003e\u003cimg align=\"right\" src=\"https://travis-ci.org/timeoff-management/timeoff-management-application.svg?branch=master\" alt=\"Build status\" /\u003e\u003c/a\u003e\n\n## Features\n\n**Multiple views of staff absences**\n\nCalendar view, Team view, or Just plain list.\n\n**Tune application to fit into your company policy**\n\nAdd custom absence types: Sickness, Maternity, Working from home, Birthday etc. Define if each uses vacation allowance.\n\nOptionally limit the amount of days employees can take for each Leave type. E.g. no more than 10 Sick days per year.\n\nSetup public holidays as well as company specific days off.\n\nGroup employees by departments: bring your organisational structure, set the supervisor for every department.\n\nCustomisable working schedule for company and individuals.\n\n**Third Party Calendar Integration**\n\nBroadcast employee whereabouts into external calendar providers: MS Outlook, Google Calendar, and iCal.\n\nCreate calendar feeds for individuals, departments or entire company.\n\n**Three Steps Workflow**\n\nEmployee requests time off or revokes existing one.\n\nSupervisor gets email notification and decides about upcoming employee absence.\n\nAbsence is accounted. Peers are informed via team view or calendar feeds.\n\n**Access control**\n\nThere are following types of users: employees, supervisors, and administrators.\n\nOptional LDAP authentication: configure application to use your LDAP server for user authentication.\n\n**Ability to extract leave data into CSV**\n\nAbility to back up entire company leave data into CSV file. So it could be used in any spreadsheet applications.\n\n**Works on mobile phones**\n\nThe most used customer paths are mobile friendly:\n\n* employee is able to request new leave from mobile device\n\n* supervisor is able to record decision from the mobile as well.\n\n**Lots of other little things that would make life easier**\n\nManually adjust employee allowances\ne.g. employee has extra day in lieu.\n\nUpon creation employee receives pro-rated vacation allowance, depending on start date.\n\nEmail notification to all involved parties.\n\nOptionally allow employees to see the time off information of entire company regardless of department structure.\n\n## Screenshots\n\n![TimeOff.Management Screenshot](https://raw.githubusercontent.com/timeoff-management/application/master/public/img/readme_screenshot.png)\n\n## Installation\n\n### Cloud hosting\n\nVisit http://timeoff.management/\n\nCreate company account and use cloud based version.\n\n### Self hosting\n\nInstall TimeOff.Management application within your infrastructure:\n\n(make sure you have Node.js (\u003e=4.0.0) and SQLite installed)\n\n```bash\ngit clone https://github.com/timeoff-management/application.git timeoff-management\ncd timeoff-management\nnpm install\nnpm start\n```\nOpen http://localhost:3000/ in your browser.\n\n## Run tests\n\nWe have quite a wide test coverage, to make sure that the main user paths work as expected.\n\nPlease run them frequently while developing the project.\n\nMake sure you have Chrome driver installed in your path and Chrome browser for your platform.\n\nIf you want to see the browser execute the interactions prefix with `SHOW_CHROME=1`\n\n```bash\nUSE_CHROME=1 npm test\n```\n\n(make sure that application with default settings is up and running)\n\nAny bug fixes or enhancements should have good test coverage to get them into \"master\" branch.\n\n## Updating existing instance with new code\n\nIn case one needs to patch existing instance of TimeOff.Managenent application with new version:\n\n```bash\ngit fetch\ngit pull origin master\nnpm install\nnpm run-script db-update\nnpm start\n```\n\n## How to?\n\nThere are some customizations available.\n\n## How to amend or extend colours available for colour picker?\nFollow instructions on [this page](docs/extend_colors_for_leave_type.md).\n\n## Customization\n\nThere are few options to configure an installation.\n\n### Make sorting sensitive to particular locale\n\nGiven the software could be installed for company with employees with non-English names there might be a need to\nrespect the alphabet while sorting customer entered content.\n\nFor that purpose the application config file has `locale_code_for_sorting` entry.\nBy default the value is `en` (English). One can override it with other locales such as `cs`, `fr`, `de` etc.\n\n### Force employees to pick type each time new leave is booked\n\nSome 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.\nThat reduce number of \"mistaken\" leaves, which are cancelled after.\n\nIn 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`\nflag to be `true` in the `config/app.json` file.\n\n## Use Redis as a sessions storage\n\nFollow instructions on [this page](docs/SessionStoreInRedis.md).\n\n## Feedback\n\nPlease report any issues or feedback to \u003ca href=\"https://twitter.com/FreeTimeOffApp\"\u003etwitter\u003c/a\u003e or Email: pavlo at timeoff.management\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimeoff-management%2Ftimeoff-management-application","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimeoff-management%2Ftimeoff-management-application","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimeoff-management%2Ftimeoff-management-application/lists"}