Calendaring app for shift-workers to enter their uneven work schedule more easily
assets | ||
config | ||
lib | ||
priv | ||
test | ||
.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 \
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)] \
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
TODO
Proper modal to delete shifts?[2022-08-14]- move runtime config out of compile-time config files, to move towards supporting releases
- probably need to use
def get_app_config
style functions instead of@module_var
module variables, (see this)
- probably need to use
- Update tests, which are probably all way out of date. But I also don't care that much for this project...
Deploying
I'm using a dumb & simple docker approach to deploying this now. Nothing automated, the basic steps are:
-
ensure latest assets are built, digested, and committed to the repo
# 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...
-
on server, build a new container, and run it