e4522e4a896b9f299d2ed92cbf3cb84bd73ce716
				
			
			
		
	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 Dockerfileand exampledocker-compose.yml- Automatic migrations in 
MIX_ENV=prodor Docker image - JS linting with standard.js, HEEx linting with heex_formatter
 - Customizable invite tokens or public registration via 
REGISTRATIONenvironment variable. 
Installation
- Install Docker Compose or alternatively Docker Desktop on your machine.
 - Copy the example 
docker-compose.ymlinto your local machine where you want 
Local Development
- Clone the repo
 - Run 
mix setup - Run 
mix phx.serverto 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 tolocalhost.PORT: External port for urls. Defaults to443.DATABASE_URL: Controls the database url to connect to. Defaults toecto://postgres:postgres@localhost/cannery_dev.REGISTRATION: Controls if user sign-up should be invite only or set to public. Set topublicto enable public registration. Defaults toinvite.
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 tolocalhost.PORT: Internal port to bind to. Defaults to4000and attempts to bind to0.0.0.0. Must be reverse proxied!DATABASE_URL: Controls the database url to connect to. Defaults toecto://postgres:postgres@cannery-db/cannery.ECTO_IPV6: Controls if Ecto should use ipv6 to connect to PostgreSQL. Defaults tofalse.POOL_SIZE: Controls the pool size to use with PostgreSQL. Defaults to10.SECRET_KEY_BASE: Secret key base used to sign cookies. Must be generated withmix phx.gen.secretand set for server to start.REGISTRATION: Controls if user sign-up should be invite only or set to public. Set topublicto enable public registration. Defaults toinvite.
Description
				
					Languages
				
				
								
								
									Elixir
								
								80%
							
						
							
								
								
									HTML
								
								18%
							
						
							
								
								
									JavaScript
								
								0.9%
							
						
							
								
								
									CSS
								
								0.9%
							
						
							
								
								
									Dockerfile
								
								0.2%