Keeping track of emotions over time for better mental health awareness.
Clone the repo to your machine, and run the following commands.
# build docker containers / start app
docker-compose up -d
# create and migrate database
docker-compose exec web bin/rails db:create db:migrate
# generate credentials (see secrets below)
docker-compose exec web bin/rails g credentials
The last command above will generate config/master.key
and config/credentials.yml.enc
. The credentials file is encrypted, but you can view the contents with a rails command.
# dump the decrypted contents of config/credentials.yml.enc to the terminal
docker-compose exec web bin/rails credentials:show
The output should look similar to this.
secret_key_base: arandomstring
vapid_private_key: yourprivatekey
vapid_public_key: yourpublickey
vapid_subject: https://yourdomain.example
These secrets are all necessary to run the app. The secret_key_base
is used by Rails, but the VAPID keys are necessary to send web push notifications. This process will generate a new set of VAPID keys for you. For more information about VAPID, check out the spec.
ALLOWED_ORIGINS=yourdomain.example
APP_URL=https://yourdomain.example
RACK_ENV=development
RAILS_ENV=development
RAILS_TIME_ZONE=Eastern Time (US & Canada)
SECRET_KEY_BASE=arandomstring
SENTRY_CLIENT_DSN=https://yoursentryclientdsn.example
SENTRY_DSN=https://yoursentryserverdsn.example
VAPID_PRIVATE_KEY=yourprivatekey
VAPID_PUBLIC_KEY=yourpublickey
VAPID_SUBJECT=https://yourdomain.example
There is a workspace export file in this repo at insomnia.json
. To update this file, create a manual export of the workspace with your changes at insomnia-export.json
, and run the following command.
cat insomnia-export.json | jq --sort-keys > insomnia.json
Insomnia exports are minified by default, and there is no guarantee on key order. This will make the diffs easier to reason about.
Do the following to host this app.
This app uses CORS restriction, so you need to specify which domains are allowed to contact this API.
# this env var must be available in the rails app
ALLOWED_ORIGINS='app1.example,app2.example'
As documented above, you can specify multiple domains with a ,
delimiter.
You can generate a new credentials file for production by using the same generator from the development section above. This will generate a config/master.key
file. If you would prefer to use an environment variable for the master key, you can configure it like this.
# used to decrypt your credentials file
RAILS_MASTER_KEY=arandomstring
You can forgo the credentials file entirely by using environment variables.
ALLOWED_ORIGINS=yourdomain.example
APP_URL=https://yourdomain.example
DATABASE_URL=postgres://username:password@yourdatabasehost.example:5432
RACK_ENV=production
RAILS_ENV=production
RAILS_TIME_ZONE=Eastern Time (US & Canada)
SECRET_KEY_BASE=arandomstring
SENTRY_CLIENT_DSN=https://yoursentryclientdsn.example
SENTRY_DSN=https://yoursentryserverdsn.example
VAPID_PRIVATE_KEY=yourprivatekey
VAPID_PUBLIC_KEY=yourpublickey
VAPID_SUBJECT=https://yourdomain.example