Skip to content
A dashed recipe template card behind a filled batch label with a lot code, heat gauge, composition bar, and QR code.

A recipe is a template. A batch is the truth.

Self-hosted batch tracking for people who make things in small batches: hot sauce, pickles, jam, whatever you've got growing. Stick a QR code on the bottle and the person holding it gets the story, the ingredients, and a thumbs up or down.

One container. One volume. No external database.

Section titled “One container. One volume. No external database.”
Terminal window
git clone https://github.com/jimmytimmons/mash.git && cd mash
cp .env.example .env
# Generate the two secrets and paste them into .env:
openssl rand -hex 32 # SESSION_SECRET
openssl rand -hex 32 # VOTE_SALT
docker compose up -d

Open http://localhost:3000, sign in, and make something.

Batches, not just recipes

Starting a batch copies the recipe’s ingredients, and then it’s yours to edit. You got 340g of reapers, not the 600g the recipe called for? Mash rescales the rest to match. Editing a recipe next year never rewrites what’s printed on last year’s bottles.

A page per bottle

Every published batch gets a QR code, a lot code like REAPER-2607-A, and a public page: the story, the dates, the composition by weight, a Scoville estimate, and a thumbs up or down.

Labels from any printer

Print a sheet of QR stickers on standard Avery 5160 die-cut labels straight from the browser.

Yours, entirely

SQLite in a single volume. Analytics off by default. Email optional. Nothing phones home.