Calendaring app for shift-workers to enter their uneven work schedule more easily
assets | ||
config | ||
lib | ||
priv | ||
rel/overlays/bin | ||
test | ||
.dockerignore | ||
.formatter.exs | ||
.gitignore | ||
.iex.exs | ||
Dockerfile | ||
entrypoint.sh | ||
mix.exs | ||
mix.lock | ||
README.md |
Shift73k
Calendaring app for shift-worker shift tracking, with support for CSV export and sharing work schedule with others.
Written in Elixir & Phoenix LiveView, with Bootstrap v5.
Production
To run in production, you'll need to provide several environment variable values:
MIX_ENV=prod \
PHX_SERVER=true \
TZ=America/New_York \
DB_SOCK=[postgres unix socket path] \
DB_NAME=[postgres db name] \
DB_USER=[postgres db user] \
DB_PASS=[postgres db user password] \
SECRET_KEY_BASE=[phoenix secret key base] \
PHX_HOST=[server fqdn (e.g., shift.73k.us)] \
PORT=4000 \
SMTP_RELAY=[smtp server] \
SMTP_PORT=[smtp port] \
SMTP_USER=[smtp username] \
SMTP_PASS=[smtp user password] \
MAIL_REPLY_TO=reply@73k.us \
MAIL_FROM_FRIENDLY=Shift73k \
MAIL_FROM_ADDR=shift73k@73k.us \
ALLOW_REG=[open for registration? true/false] \
iex -S mix phx.server
Rebuilding assets for production
# rebuild static assets:
MIX_ENV=prod mix phx.digest.clean --all
rm -rf ./priv/static/*
npm --prefix assets run build
MIX_ENV=prod mix phx.digest
# then do a new commit and push...
TODO
Proper modal to delete shifts?[2022-08-14]move runtime config out of compile-time config files, to move towards supporting releases[2023-01-28]- bootstrap dark mode?
- update tests, which are way out of date? Also I don't care?
Deploying with docker
The Dockerfile will enable building a new container. I do it all with docker compose, here's an example compose yml:
version: '3.9'
services:
shift73k:
build:
context: ./shift73k # relative path from docker-compose.yml to shift73k repo
network: host
container_name: www-shift73k
restart: unless-stopped
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- /srv/dck/postgres/sock/postgres:/var/run/postgresql # if using unix socket
# env_file: ./shift73k.env # optionally, put your env vars in a separate file
environment:
- PHX_SERVER=true
- TZ=America/New_York
- DB_SOCK=/var/run/postgresql # if using unix socket instead of db url
- DB_NAME=[postgres db name] # if using unix socket instead of db url
- DB_USER=[postgres db user] # if using unix socket instead of db url
- DB_PASS=[postgres db user password] # if using unix socket instead of db url
- SECRET_KEY_BASE=[phoenix secret key base]
- PHX_HOST=[server fqdn (e.g., shift.73k.us)]
- PORT=4000
- SMTP_RELAY=[smtp server]
- SMTP_PORT=[smtp port]
- SMTP_USER=[smtp username]
- SMTP_PASS=[smtp user password]
- MAIL_REPLY_TO=reply@73k.us
- MAIL_FROM_FRIENDLY=Shift73k
- MAIL_FROM_ADDR=shift73k@73k.us
- ALLOW_REG=[open for registration? true/false]
ports:
- 4000:4000