Self-hosted baking companion PWA β sourdough logs, dough calculators, bake journal
3.4K
Self-hosted baking companion, installable as a PWA on mobile and desktop.
/calendar.ics with planned bakes and order due dates for any calendar app.cook files, downloadable per recipe too); restore the same zip from Settings. Other Cooklang apps read those files as a plain gram recipe at one size (Cooklang has no baker's percentages); an embedded frontmatter line makes re-import into Bready lossless. Foreign .cook files import through a review screen β masses and millilitres convert, cups and unit counts you confirm by hand, and the result is a flat formula without preferment accounting. The import page also offers optional sample recipes (pizza napoletana, sourdough β plain or with chouriΓ§o, queijo da ilha, cheese, or coffee, cacau and chocolate chips β focaccia, ciabatta) as one-tap Cooklang loads β nothing is saved unless you keep them (docs/recipes/β has the same files)/shop login where they browse your published products (bake-day stock or made-to-order with lead times) and place orders that land in your Sales tab for confirmation/manual (also linked from Settings β About), so it works offline tooAll data is metric grams. UI language is a setting (English and PortuguΓͺs available). One SQLite file + a photos folder = the whole state.
Turn on Sales in Settings for costing, clients, orders, payments and a per-day production sheet; add the client portal on top and clients order from a small self-service shop at /shop. Portal orders arrive pending β you confirm or decline, and stock, production, costing and payments stay in sync. Costing counts energy per oven load and (optionally) your hands-on time, freezes each order's costs at creation so past margins stay honest, and β with the optional pantry β tracks ingredient stock and warns before a short production day; margin alerts flag underpriced products when ingredient prices rise:
flowchart LR
S[Client orders at /shop] --> P(pending)
M[You type an order in] --> O(open)
P -- confirm --> O
P -- decline --> D(declined Β· stock freed)
O -- bake day --> B(baked)
B -- handover --> V(delivered)
See PLAN.mdβ for the full plan. Status: all seven phases complete. Display options include 24h/12h clock and auto/light/dark theme.
git clone https://github.com/PauloJf/bready && cd bready
# edit docker-compose.yml: set ORIGIN and the Dockflare labels for your hostname
docker compose up --build -d
Notes:
ORIGIN must match the public URL (e.g. https://bready.example.com) or form submissions fail SvelteKit's CSRF check.ports block for direct LAN testing.node user (uid 1000), with a read-only root filesystem and all capabilities dropped. The bind-mounted data folder must be writable by uid 1000: mkdir -p data && sudo chown -R 1000:1000 data (existing deployments upgrading from the root-based image need the same chown once).Everything lives in the ./data volume: bready.db (SQLite) plus photos/.
data/ folder (or use Settings β Export for a portable zip of JSON + photos).data/ folder back, start it again.Calculators work offline after first visit; pages you've opened before are cached.
npm install
npm run dev
npm test β unit tests (engine, schedule, auth, starter math)npm run check β typecheckingnpx drizzle-kit generate --name <name> β new migration after schema changes (migrations run automatically at boot)npm run icons β regenerate PWA icons from scripts/icon.htmlStack: SvelteKit (Svelte 5) + SQLite (better-sqlite3/Drizzle), single container, no external services.
Bready is free for personal use under the PolyForm Noncommercial License 1.0.0β β use it, change it, share it, as long as the license notice travels with it. One explicit extra permission: running your own small-scale home bakery on it (that's what the Sales module is for) counts as personal use. Offering Bready itself as a product or service is commercial use and needs separate permission. Because of the noncommercial clause this is source-available rather than OSI open source.
Content type
Image
Digest
sha256:282627456β¦
Size
90.9 MB
Last updated
14 days ago
docker pull gatoserio/bready