The self-hosted firearm tracker app
Go to file
2022-01-23 22:51:56 -05:00
assets add maintain attrs hook 2022-01-23 22:51:56 -05:00
config only automigrate in prod env 2022-01-23 22:51:56 -05:00
lib fix dialyzer, credo and format 2022-01-23 22:51:56 -05:00
priv mix format 2022-01-23 22:51:54 -05:00
test fix dialyzer, credo and format 2022-01-23 22:51:56 -05:00
.credo.exs add default credo 2021-09-12 17:57:56 -04:00
.formatter.exs add heex formatter 2022-01-23 22:50:06 -05:00
.gitignore update to phoenix 1.6 2022-01-22 14:18:29 -05:00
.tool-versions add heex formatter 2022-01-23 22:50:06 -05:00
docker-compose.yml update readme and docker-compose.yml 2022-01-23 22:51:56 -05:00
Dockerfile add touchless docker deploys 2021-09-04 16:16:39 -04:00
mix.exs add standard js for linting and tests 2022-01-23 22:51:56 -05:00
mix.lock add heex formatter 2022-01-23 22:50:06 -05:00
README.md update readme and docker-compose.yml 2022-01-23 22:51:56 -05:00

Cannery is a personal ammo manager that adjusts to your own needs.

  • Easy to Use: Cannery lets you easily keep an eye on your ammo levels before and after range day
  • Secure: Self-host your own instance, or use an instance from someone you trust.
  • Simple: Access from any internet-capable device

Features

  • User Registration/Sign in via phx_gen_auth
  • Dockerfile and example docker-compose.yml
  • Automatic migrations in MIX_ENV=prod or Docker image
  • JS linting with standard.js, HEEx linting with heex_formatter
  • Customizable invite tokens or public registration via REGISTRATION environment variable.

Installation

  1. Install Docker Compose or alternatively Docker Desktop on your machine.
  2. Copy the example docker-compose.yml into your local machine where you want

Local Development

  1. Clone the repo
  2. Run mix setup
  3. Run mix phx.server to start the development server

Configuration

For development, I recommend setting environment variables with direnv.

MIX_ENV=dev

In dev mode, Cannery will listen for these environment variables on compile.

  • HOST: External url to generate links with. Set these especially if you're behind a reverse proxy. Defaults to localhost.
  • PORT: External port for urls. Defaults to 443.
  • DATABASE_URL: Controls the database url to connect to. Defaults to ecto://postgres:postgres@localhost/cannery_dev.
  • REGISTRATION: Controls if user sign-up should be invite only or set to public. Set to public to enable public registration. Defaults to invite.

MIX_ENV=prod

In prod mode (or in the Docker container), Cannery will listen for these environment variables at runtime.

  • HOST: External url to generate links with. Set these especially if you're behind a reverse proxy. Defaults to localhost.
  • PORT: Internal port to bind to. Defaults to 4000 and attempts to bind to 0.0.0.0. Must be reverse proxied!
  • DATABASE_URL: Controls the database url to connect to. Defaults to ecto://postgres:postgres@cannery-db/cannery.
  • ECTO_IPV6: Controls if Ecto should use ipv6 to connect to PostgreSQL. Defaults to false.
  • POOL_SIZE: Controls the pool size to use with PostgreSQL. Defaults to 10.
  • SECRET_KEY_BASE: Secret key base used to sign cookies. Must be generated with mix phx.gen.secret and set for server to start.
  • REGISTRATION: Controls if user sign-up should be invite only or set to public. Set to public to enable public registration. Defaults to invite.