A self-hosted web app to manage mead brewing recipes, batches, and calculators β complete with stats, backups, and admin tools.
wget https://github.com/anndrox/brew-web/raw/main/brew-web-1.3.1.zip
unzip brew-web-1.3.1.zip -d .
cd brew-web
docker compose up -d --buildAccess the app at: http://localhost:4452
- Setup is required via
/setupon first run - Admin controls and user management via
/settings/admin - Force password reset by placing a file:
/instance/force_reset.flag - For public deployments, use a reverse proxy with SSL (e.g. NGINX + Let's Encrypt)
- β Recipe scaling with structured ingredients
- β Batch logging with gravities, honey, and notes
- β
Built-in brewing calculators:
- ABV, TOSNA, dilution, sweetness, carbonation, temp correction, volume recovery
- β Yeast reference guide with visuals and ratings
- β Batch calendar tracker
- β Role-based admin management
- β Full PostgreSQL backup & restore
- β Settings: theme, font, security
-
Export:
Visit/export-db(admin only) β saves to/backups -
Import:
Upload.sqlvia/admin
β³ Import runs in the background with countdown and refresh -
Safe for
docker compose down -v && up --buildcycles
Key environment variables:
environment:
SECRET_KEY: changeme-in-production # <-- CHANGE THIS brew-web/
βββ app/ # Flask app
β βββ templates/ # Jinja2 templates
β βββ static/ # CSS & JS
β βββ routes/ # Feature blueprints
β βββ models.py # SQLAlchemy models
βββ backups/ # SQL dumps
βββ config.py # App config
βββ docker-compose.yml
βββ Dockerfile
βββ README.md
-
Reset environment:
docker compose down -v && docker compose up --build -
Customize UI:
Modifybase.html,admin.html, orstatic/style.css -
Logs saved to:
/logs/brewweb.log
- Your
pg_dump/psqlcommands must use the same credentials asdocker-compose.yml - Tables are automatically dropped and reloaded on import via
subprocess.Popen() - Alembic is automatically skipped after full restores
- Countdown refresh prevents white screen crash during restore
MIT Β© 2025 Scott Jones





