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/jks
folder - In the root of the project folder run
mvn package
- In
./frontend-server/src/environments
files change the IP address in the base URL to the address of your REST server (Linux host) - Inside the
./frontend-server
folder runng build --prod
orng serve
(for local run)
In the project folder create environment file .env
with the next sections:
- Profile
PROFILE
- possible valuesprod
ordev
- 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_admin
password
GLOBAL_ADMIN_PASS_HASH
- JWT set URI
- Backend section
- Path to logs volume
LOG_VOLUME_PATH
- (Available only on
prod
profile) 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