Ever found a mystery can at the back of your pantry, or a freezer container that might be soup… or might be lasagna?
I have — and that’s exactly why Inventoria exists.
With Inventoria, you can:
- Track where your items are stored (pantry, fridge, freezer, etc.)
- See when items will expire
- Add products manually or by scanning a barcode
- Automatically fetch product details from Open Food Facts
| Desktop | Mobile |
|---|---|
![]() |
![]() |
# Create a folder and enter it
mkdir inventoria && cd inventoria
# Download the production docker-compose file
wget https://raw.githubusercontent.com/szakitom/inventoria/refs/heads/main/docker-compose-prod.yml
# Create an environment file
touch .envFill in your .env file using this template:
RUSTFS_ACCESS_KEY=<username>
RUSTFS_SECRET_KEY=<password>
OFF_USER_AGENT=<app name>/<version> (<url or contact>) # required by Open Food Facts terms
# Optional (for cloudflare tunnel)
CF_TUNNEL_TOKEN=<token>
CF_ACCESS_CLIENT_ID=<clientid>
CF_ACCESS_CLIENT_SECRET=<clientsecret>docker compose -f docker-compose-prod.yml -p inventoria-prod up -d --pull alwaysYour app will be available at: http://localhost:3000
⚠️ Before using, create at least one location in the app.
- Refresh Open Food Facts data when barcode exists but product data is missing
- Automated database & S3 backups
- SSE-based expiring items notifications
- Automated Docker builds
- SSR route splitting
- Redirect to Locations page if no locations exist (fresh install)
- Real-time updates (WebSocket?)
- Manage location types (add & edit)
- Edit shelves without replacement
- Restrict location editing to empty ones
- Add error boundary with toast notifications (react-error-boundary)
- Scheduled S3 cleanup
- Swagger API documentation
- Optional text recognition (react-tesseract)
- Code cleanup
mkcert -uninstall
