尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A running inventory of what's stocked in the Hamilton apartment kitchen, photographed and tagged so it's easy to check before a grocery run or before starting a recipe.
Open index.html directly in a browser, or enable GitHub Pages for this repo (Settings → Pages → deploy from main / root) to get a shareable link.
index.html / styles.css / app.js — a searchable, filterable gallery of every ingredient, each scoped to its own photoimages/ — one photo per ingredient (resized/compressed from the original kitchen photos)data.json — the same ingredient data in plain JSON, kept in sync with the copy embedded in index.htmlmeal-prep.html / meal-prep.js — a weekly log of meal-prep sessions: what was made, how many containers, and per-container macrosmeal-prep-log.json — the same meal-prep data in plain JSON, kept in sync with the copy embedded in meal-prep.htmlrecipes.json — recipes, each ingredient cross-referenced to an entry in data.jsonrecipes/ — the same recipes as plain markdown, readable straight from GitHubThe site shows each recipe above the inventory. Every ingredient line is marked against what's actually in the kitchen — ✅ in stock, 🛒 on the shopping list — and the header counts how many you still need, so you can tell at a glance whether you can cook it tonight. A recipe with nothing left to buy opens expanded.
To add one: append an entry to recipes.json, mirror it into the
<script id="recipe-data"> block in index.html, and set each ingredient's
item field to the exact name of the matching entry in data.json. An
ingredient whose item doesn't match anything tracked shows as ❔ rather than
silently claiming to be in stock. Drop a markdown copy in recipes/ for
reading on GitHub.
data.json (source of truth) and mirror the change into the <script id="ingredient-data"> block in index.html.images/, referencing its filename in the image field."status": "have" or "need", and add "low": true for anything running out.Items for one specific grocery run get a "trip" field (e.g. "trip": "Shopping Aug 20").
Any need item whose trip matches CURRENT_TRIP in app.js is pulled out of the
general shopping list into its own section at the top of the page. To start a new trip,
tag the items and update CURRENT_TRIP.
Every ingredient now has a photo. The ones that were never photographed in the
kitchen use freely-licensed stand-ins from Wikimedia Commons — all of them are
listed in images/CREDITS.md, and several are share-alike. They show the right
ingredient, not the specific product on the shelf, so replace any of them with a
real photo when you take one: same filename in images/, then drop its line
from CREDITS.md.
entries array in meal-prep-log.json (source of truth) and mirror it into the <script id="meal-prep-data"> block in meal-prep.html.date (YYYY-MM-DD, drives the week grouping), meal, type (breakfast/lunch/dinner/snack/bedtime), servings (number of containers), perServing macros, ingredients, and optional notes.localStorage, same as the shopping list.Every card has a checkbox. Tap it as you drop an item in your cart — the card dims and the name gets struck through. Checked state is saved in your browser's localStorage, so it survives closing the tab and reopening later. The Shopping List tab shows a running "X of Y checked off" count, and a Clear checked-off items link appears whenever anything is checked so you can reset before your next trip.
Note: this is per-browser/device, not synced anywhere — it won't follow you across a different phone or laptop.