About this project

Stash is a self-hosted, single-household home inventory system that treats items primarily as barcode/QR-code-labeled things. Rather than serving as a recipe or meal-planning tool, it focuses on fast restock/consume flows, low-stock and expiry tracking, printable labels, and optional automation via outbound webhooks. Key capabilities: - Continuous camera scanning in Restock (+1) and Consume (−1) modes with format hints, higher resolution, autofocus, audible beep, haptic feedback, and a low-light flash toggle. Unknown barcodes automatically create a new item and open a quick sheet for location and threshold. - Unified item+barcode model supporting UPC/EAN, self-issued internal QR codes (deep-linking to the item), Matter pairing codes, and manual serial numbers. A single print button sends only the selected barcode symbology, which matters when an item carries multiple codes. - Asset mode for single physical devices, with condition tracking, serial-number barcode entry, and a maintenance-history log; asset items are excluded from shopping-list and low-stock logic. - Nested locations and categories rendered as an indented tree, with search, filters, sorting, pagination, and remembered last-used filter/sort state. Bulk operations let you move or delete selected items at once. - Item detail includes quantity, low-stock threshold, expiry/warranty dates, price with a default currency, inline name/unit editing, attachments, and adjustment/maintenance logs. - File attachments for receipts, manuals, warranties, and photos. Any image can become the item’s representative avatar; uploads are auto-resized. - Dashboard highlighting total inventory value, low-stock items, expiring-soon items, and recently added items, plus an onboarding checklist for locations, notifications, and public URL. - Shopping list built from low-stock items or manually added entries, with memos and a bought checkbox; items drop off automatically once stock rises above their threshold. - Optional pluggable product lookups (Open Food Facts, UPCItemDB, Naver Shopping) per scan, or disabled entirely. - CSV import/export, including barcode values, for bulk entry and spreadsheet round-trips. - Label printing as single PNG or A4 label-sheet PDF, with a search box on the picker; Korean typography is supported via a bundled Noto Sans KR subset. - Web Push notifications for expiry/warranty events and a weekly low-stock digest. - Soft delete with undo toast, restore, and 30-day auto-purge. - Offline-friendly PWA: cached app shell, cached item responses, and an offline scan queue that syncs when connectivity returns. - Outbound inventory webhook for printer or Home Assistant automations, with last delivery failures visible in Settings and optional HMAC-SHA256 signature verification. - Multi-user family accounts with admin/general roles, first-admin bootstrap, one-time admin password reset, log out everywhere, backup/restore, and ko/en i18n with light/dark theme. Not in scope: recipe/meal planning, per-household multi-tenancy within a single process. Deployment is available as Docker Compose or as a one-click Proxmox LXC installer. A local development setup uses PostgreSQL, Prisma migrations, and separate API/web dev servers. Images are published to GitHub Container Registry, and production notes cover subpath serving, health checking, and secret management.