尚未偵測到更新。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.