52 lines
1.7 KiB
Markdown
52 lines
1.7 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
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
|
|
|
|
- [X] ~~*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](https://stephenbussey.com/2019/01/03/understanding-compile-time-dependencies-in-elixir-a-bug-hunt.html))
|
|
- [ ] 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:
|
|
|
|
1. ensure latest assets are built, digested, and committed to the repo
|
|
|
|
```shell
|
|
# rebuild static assets:
|
|
rm -rf ./priv/static/*
|
|
npm --prefix assets run build
|
|
MIX_ENV=prod mix phx.digest
|
|
# then do a new commit and push...
|
|
```
|
|
|
|
2. on server, build a new container, and run it
|