Opensource Selfhosted Groceries Inventory Manager
  • JavaScript 51.4%
  • Python 38.3%
  • CSS 9.4%
  • Dockerfile 0.6%
  • HTML 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-19 13:02:28 +02:00
backend refactor: docker build from lockfile + configurable host port (FRIDGE_PORT) 2026-10-19 09:51:59 +00:00
docs doc: add UI screenshots (dark dashboard + inventory) to README 2026-10-19 11:02:21 +00:00
frontend fix: load tokens/base css before App so pages.css media queries cascade last 2026-10-19 10:51:05 +00:00
.dockerignore feat: one-service docker packaging + compose volume for SQLite 2026-10-19 09:42:09 +00:00
.gitignore doc: initial project seed (README, .gitignore, MIT LICENSE) 2026-10-19 09:38:20 +00:00
docker-compose.yml refactor: docker build from lockfile + configurable host port (FRIDGE_PORT) 2026-10-19 09:51:59 +00:00
LICENSE doc: design decisions + frozen v1 API contract 2026-10-19 09:42:09 +00:00
README.md doc: add UI screenshots (dark dashboard + inventory) to README 2026-10-19 11:02:21 +00:00

Fridge

Selfhosted, open-source Groceries Inventory Manager — track what you buy, when it expires, what you need to eat now, and what is actually hiding in the back of a drawer.

Think Grocy, but way lighter: one SQLite file, one container, a calm UI, and an API your AI agent can actually use — plan the week's meals from what needs to be eaten, or build your own clients.

Features

  • Inventory — stock entries with quantity, location, purchase date and expiry (auto-computed from per-product default_expiry_days).
  • Eat-now dashboard — already expired on top, then what must be eaten soon, sorted by urgency.
  • Shopping list — product-linked or freeform lines, check off, then one-shot checkout into inventory.
  • Locations — Fridge / Freezer / Pantry / Drawer seeded on first run; add your own (cellar, spice rack…).
  • Agent-friendly API — clean REST, OpenAPI at /api/docs, plus a single-shot GET /api/agent/summary made for AI agents. Full contract: docs/API.md — design decisions: docs/DESIGN.md.

Screenshots

Dark by default (light theme toggles in Settings):

Dashboard Inventory
Dashboard Inventory

Quickstart (selfhost)

docker compose up -d          # → http://localhost:8000

The SQLite database lives in a named volume (fridge-data). No accounts: this is a LAN tool — don't expose it raw to the internet (or proxy it with auth).

Dev setup

# backend (API on :8000, docs at /api/docs)
cd backend
python3 -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt -r requirements-dev.txt
uvicorn app.main:app --reload
pytest

# frontend (Vite dev server on :5173, proxies /api → :8000)
cd frontend
npm install
npm run dev

# production build (served by the API)
npm run build

Project layout

backend/   FastAPI app (SQLite, SQLAlchemy) — app/, tests/
frontend/  React + Vite SPA — src/
docs/      DESIGN.md, API.md (frozen contract)

License

MIT — see LICENSE.