DEPRECATED: In favor of
newtelco/timeoff
Built on node, express, fomantic-ui, google apis, and 💚
- Vacation Management
- Login via LDAP
- Make Vacation Request
- Admin Portal
- Request Approval or Denial via Email and/or in Admin Portal
- Monthly / Yearly report exports to Excel file
- Show shared Google Cal on homepage for user overview
- Create Google Cal event on Request Approval
General:
- Replace your GCal API Key / User Email with the placeholders in
public/dashboard.js
- Optional: In
public/request.js
lines 88-102, you can uncomment and adjust theCN=Group
and the associated email address in order to prefill the manager selection based on their OU in AD if you'd like.
Prerequisites:
- LDAP / AD
- G Suite Service Account
2.1. Domain-Wide Delegation must be enabled, as well as the Gmail API and Calendar API
2.2. You must set the appropriate API scopes in G Suite Admin.
2.2.1. Get you client ID for your service account, and go to "Security" -> "Advanced Settings" -> "Manage API client access"
2.2.2. Enter your client ID and the following scopes:https://mail.google.com/, https://www.googleapis.com/auth/calendar, https://www.googleapis.com/auth/calendar.events
2.3. Finally, grant the account you've defined underGS_USER
in the config.env file write rights to the vacation calendar you'd like to have vacations added to.
- Clone this repo
- Run
npm install
- Setup DB
mysql -uUSER -p DB_NAME < createDB.sql
- Create config.env
cp config.template.env config.env
and fill out - Run
npm start
- Visit
http://localhost:7555
or reverse proxy that port out
If you would like for this to run in production, I suggest setting up pm2 to run / manage / monitor the process.
- Clone this repo
- Run
npm install
- Setup DB
mysql -uUSER -p DB_NAME < createDB.sql
- Create config.env
cp config.template.env config.env
and fill out - Run
npm run start:dev
This will run
nodemon
- a nice live reloading dev server on port 7666
- Visit
http://localhost:7666
-
I want to make this more "multi-tenant" friendly. According to the 12-factor app methodology, we should be putting everything that is adjustable in the environment / a config file. The javascript variables are mostly taken care of, however, I need to template some more of the HTML and make that configurable as well.
-
Language Strings - Currently the strings in this application an awful mix of German / English. This needs to be standardized on English and the option given for other languages (German, etc.) via extensible strings files.
-
Rethink database requirement - Due to the fact that the requirements for persistence / statefulness of this application are relatively low, I've been debating moving to SQLite instead of a full fledged MySQL DB for this application. However, I have only limited exerience with SQLite so I'm not positive where, in terms of size / amount of data, the break point is between SQLite and MySQL databases and how appoproriate SQLite could be for this. SQLite would make the setup, maintenance, and deployment of this application much easier.
- Just clone this repo, install the dependencies
npm install
and runnpm run start:dev
to get the dev environment up and running.