PantryPilot

Development

No build step, no backend, no dependencies for the app itself — it’s a static site. Node is only needed to run the test suite and this docs site.

Project structure

index.html            Page shell and all static markup
css/style.css          Styling
js/recipes-data.js     Seed recipe catalog (16 recipes)
js/state-store.js      Reactive, localStorage-backed state store
js/actions.js          Shared domain logic -- the single source of truth
js/webmcp-tools.js     WebMCP tool schemas + document.modelContext registration
js/ui.js               Human-facing rendering and event wiring
js/main.js             Bootstraps the app and registers tools
tests/                 node:test unit suite against js/actions.js
docs/                  This documentation site (MkDocs)

See Architecture for how these pieces fit together.

Running it locally

git clone https://github.com/akashtalole/PantryPilot.git
cd PantryPilot
python3 -m http.server 8000
# open http://localhost:8000

Running the tests

Core domain logic (js/actions.js) has a unit test suite (32 tests) covering dietary conflict enforcement, shopping-list aggregation/pantry offsetting, budget math, the plan-week bulk planner (empty-day-only filling, no-repeats, budget-aware skipping, dietary safety), nutrition filtering/summaries, expiry-aware pantry ranking, and the undo system (including that a single action’s cascaded internal updates only ever produce one undo step):

npm test

Deploying

Deployable anywhere that serves static files — Netlify, Vercel, Cloudflare Pages, GitHub Pages, Render. _headers (Netlify) and netlify.toml / vercel.json set the Permissions-Policy: tools=(self) header WebMCP tooling expects. This matches the default same-origin tool policy, but is set explicitly for clarity per the Chrome WebMCP docs.

Working on this docs site

This site is built with MkDocs and the Material theme, and deploys automatically to GitHub Pages on every push to main that touches docs/ or mkdocs.yml (see .github/workflows/docs.yml).

To preview it locally:

pip install mkdocs-material
mkdocs serve
# open http://localhost:8000

Security notes

Per the WebMCP security guide:

License

MIT — see LICENSE.