Mobile-first vegan meal-prep generator
- JavaScript 88.8%
- CSS 6.3%
- HTML 4.9%
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| components | ||
| js | ||
| styles | ||
| vendor | ||
| icon.svg | ||
| index.html | ||
| README.md | ||
| registry.yaml | ||
Slop Bowl
Mobile-first vegan meal-prep generator. Configure goals, sauces, and proteins; generate weeks of bowl plans; get a shopping list scoped to week 1; keep a persistent pantry.
Fully client-side — no npm, no bundler, no build step. Vanilla ES modules,
web components, Tailwind (vendored browser build in vendor/tailwind.js),
localStorage persistence.
Run
Serve the repo root with any static file server, e.g.
python3 -m http.server
or point Caddy at the directory. No server-side logic.
How it works
- Goals (high protein, high fibre, 500–700 kcal, travel safe, eat cold) are toggles in Config. Kcal/travel/cold filter the bowl pool; protein/fibre weight the scoring.
- Generation samples hundreds of candidate weeks of (bowl, protein)
pairs — protein choice changes the macros — then selects in three stages:
keep weeks near the best protein+fibre totals, among those maximise
micronutrient diversity (food-group coverage via
MICRO_GROUPS, with a rotation penalty against repeating last week's bowls), then tie-break on fewest new shopping items (pantry items count as free). Bowls may repeat up to 3× per week. - Persistence is localStorage behind
js/storage.js(slop-pantry,slop-config,slop-plan). The adapter is async so it can be swapped for a network API later without touching the rest of the app.