Employee rostering and work scheduling web service
- Enterprise, Department or Shift administration differentiation
- Automated schedule generation with pre-established patterns
- Easy export to excel report
- Customizable statistics display
- Angular
- Material
- RxJS
- ExcelJs
- Java
- Spring Boot
- Spring Data
- Spring Security
- EhCache
- Postgres
- Nginx
- Docker
git clone https://github.com/averude/Scheduler.git
- Generate JKS and put it into the
./auth-server/src/main/resources/jksfolder - In the root of the project folder run
mvn package - In
./frontend-server/src/environmentsfiles change the IP address in the base URL to the address of your REST server (Linux host) - Inside the
./frontend-serverfolder runng build --prodorng serve(for local run)
In the project folder create environment file .env with the next sections:
- Profile
PROFILE- possible valuesprodordev - Database section:
- DB driver class name
DB_DRIVER_CLASS_NAME - DB volume path
DB_VOLUME_PATH - DB URL
DB_URL - DB name
DB_NAME - DB user
DB_USERNAME - DB user password
DB_PASSWD - Postgres password
POSTGRES_PASSWORD
- DB driver class name
- Security section
- JWT set URI
JWT_SET_URI - Key store file
KEY_STORE_FILE - Key store password
KEY_STORE_PASSWORD - Key alias
KEY_ALIAS - JWK kid
JWK_KID - Token validity seconds
VALIDITY_SECONDS - The
bcrypt-ed hash ofglobal_adminpassword
GLOBAL_ADMIN_PASS_HASH
- JWT set URI
- Backend section
- Path to logs volume
LOG_VOLUME_PATH - (Available only on
prodprofile) Graylog host and GELF port
GRAYLOG_HOST
GRAYLOG_GELF_PORT
- Path to logs volume
- Frontend section
- Path to dist volume
FRONTEND_VOLUME_PATH
- Path to dist volume
.env file example
# dev or prod
PROFILE=dev
# Database
DB_DRIVER_CLASS_NAME=org.postgresql.Driver
DB_URL=jdbc:postgresql://database-server:5432
DB_NAME=schedulerdb
DB_USERNAME=scheduler
DB_PASSWD=scheduler
DB_VOLUME_PATH=path_to_project_folder/database
POSTGRES_PASSWORD=postgres
GLOBAL_ADMIN_PASS_HASH=some_hash
# Security
JWT_SET_URI=http://auth-server:5000/.well-known/jwks.json
KEY_STORE_FILE=scheduler-jwt.jks
KEY_STORE_PASSWORD=scheduler
KEY_ALIAS=scheduler-oauth-jwt
JWK_KID=scheduler-key-id
VALIDITY_SECONDS=21600
# Backend
LOG_VOLUME_PATH=path_to_project_folder/logs
#GRAYLOG_HOST=graylog_addr
#GRAYLOG_GELF_PORT=graylog_port
# Frontend
FRONTEND_VOLUME_PATH=path_to_project_folder/frontend-server/dist/scheduler
Up containers via docker-compose up -d and then in browser
open link according to the way you served frontend (it might be http://localhost:4200 for local run or http://your_linux_host_ip for serving with Nginx)
login: global-admin
pass: according_to_the_hash_in_env


