This repository now contains a starter project for a home refrigerator inventory system:
- A Raspberry Pi backend API for tracking inventory and accepting UPC scan events.
- A companion Android app skeleton to view inventory and scan/add items from a phone.
pi-server/— FastAPI + SQLite service intended to run on Raspberry Pi.android-app/— Android Studio project skeleton (Jetpack Compose + Retrofit + ML Kit dependencies).
GET /healthfor liveness checks.GET /inventoryto list fridge inventory.POST /inventoryto create a UPC item.PATCH /inventory/{id}to update name/quantity.POST /scan/upcto upsert/increment quantity when a UPC is scanned.
cd pi-server
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reloadThen open docs at http://<pi-ip>:8000/docs.
Most USB UPC scanners act like keyboard input (HID). You can run a tiny daemon that reads scanner input and POSTs to /scan/upc.
Pseudo workflow:
- Read barcode text from scanner input.
- Send
{ "upc": "..." }toPOST /scan/upc. - Inventory updates immediately for both Pi and phone clients.
- Compose-based
MainActivitywith simple inventory list UI. - Retrofit repository for
GET /inventoryandPOST /scan/upc. - Barcode scanning dependency setup (ML Kit + CameraX) and placeholder manager.
- Manual UPC input button for immediate backend integration while camera flow is finalized.
- Open
android-app/as a project. - Set the backend IP in
MainActivity.kt:InventoryRepository(baseUrl = "http://192.168.1.100:8000/")
- Build/run on Android device.
- Add camera preview and continuous UPC capture in Android (
BarcodeScannerManager+ CameraX frame pipeline). - Add auth (PIN or local network token) between app and Pi API.
- Add item metadata enrichment (name/category) from UPC lookup provider.
- Add expiry date support and low-stock notifications.
- Package Pi service as a
systemdservice for always-on startup.
If you want, next I can scaffold:
- A dedicated scanner daemon in
pi-scanner/for HID readers, and - A Docker Compose setup so the backend is one-command deployable on Raspberry Pi.