A local-first pantry that tells you what's about to go bad — and what to cook before it does.
Your fridge is not a graveyard. Shelf-Life keeps track of what you own, nudges you before things expire, and suggests meals you can actually make tonight — no subscription, no cloud, no account. Just you and your slightly-too-ambitious grocery hauls.
Dashboard — what to use first, and tonight's top picks.
Suggestions — meals ranked by how much of the recipe you already have.
- Dashboard — a "use me first" list sorted by how close things are to the edge.
- Inventory — track items, quantities, and expiry dates; freshness badges do the mental math for you.
- Suggestions — meals you can make right now from what's already in the kitchen.
- Recipes — browse the built-in recipe book, filtered by what you actually have.
- Leftovers — log leftovers so they don't quietly evolve at the back of the fridge.
- Weekly plan — line up the week so nothing gets wasted.
It's a static site. No build step, no dependencies, nothing to install.
git clone https://github.com/your-username/shelf-life.git
cd shelf-life
# then just open index.html in your browserPrefer it online? Drop it on GitHub Pages, Netlify, or any static host — it's all front-end.
Everything lives in your browser's localStorage. No servers, no accounts, no telemetry, nothing leaving your device. Want a backup or to move between browsers? Use Export / Import in Settings. Clear your browser data and it's gone — that's the deal, and it's on purpose.
Plain HTML, CSS, and vanilla JavaScript. Zero frameworks, zero dependencies, zero npm install.
shelf-life/
├─ index.html # the whole app shell
├─ css/ # styles
└─ js/ # data, storage, the freshness engine, and views
Issues and PRs are welcome. One house rule: keep it dependency-free and local-first. If a feature needs a server, it probably belongs in a different tool.
MIT — do what you like, just keep the notice.
Made with care as part of Reuben's little toolbox.

