A mobile-first web application I built for my wife's dog-walking business. Built with Go and HTMX
To run the app in a docker container, you'll need to create a .env
file in the root directory with the following environment variables:
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=john@example.com
SMTP_PASS=P@ssw0rd
FROM_NAME=John Doe
FROM_ADDRESS=4 Privet Drive, Little Whinging, Surrey
FROM_CITY=London
ACCOUNT_NUMBER=12-3456-7890123-45
BASE_URL=http://invoices.example.com
I recommend using a docker-compose file to run the app. Here's an example:
version: "3"
services:
invoices:
image: ghcr.io/scottmckendry/ccinvoice:main
container_name: invoices
networks:
- traefik
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock
- ./db.sqlite3:/app/db.sqlite3
- ./.env:/app/.env
ports:
3000:3000
restart: unless-stopped
This will run the app on port 3000. I recommend using Traefik as a reverse proxy. Take a look at my setup guide for more information.
Warning
Do not expose the app to the internet without a reverse proxy running authentication middleware. The app does not have any authentication built in.
To run the app locally, create a .env
file matching the example above. Then use the docker-compose file in the root of the repository by running docker compose up
. This will run the app on port 3000. You can then access the app at http://localhost:3000.
The project uses air for live reloading. To run the app locally without docker, run air
in the root of the repository.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.