Loren Lisk

A Choice for Knowing Where Things Are

An NFC inventory for physical storage

A personal project, 2025 to now, and one of the apps running on the homelab cluster.

Why

Two problems, one app. The first is knowing which bin something is in without opening every bin to find out. The second is keeping records that are ready for an insurance claim before anything goes wrong: a serial number, a replacement value and a receipt for each item worth claiming.

Tags

Each bin carries a cheap 13.56 MHz NFC sticker. Chrome on Android reads the sticker's immutable factory UID through Web NFC, so nothing is ever written to a tag. The UID is the bin's identity.

Lesson learned: a handheld barcode and RFID scanner in keyboard-emulation mode is still supported, but as an optional accessory rather than the default. It is a UHF reader, and a UHF reader cannot read 13.56 MHz tags. Different band, no amount of configuration fixes that.

The core loop

Tap a bin to open it, then for each item either take a photo (the main path, since most things never get a tag) or scan a tag. With no bin open, a scan looks the item up and tells you where it lives, instead of creating an orphan item that belongs nowhere.

Background vision

After a photo upload, a background worker asks a self-hosted vision model to describe what is in the frame and writes the description to the item. The upload itself returns almost immediately, so nothing in the scan loop waits on a model. If the model is offline, the job is held and retried later, never dropped.

Two flows: a phone tap goes to the app, which writes to the database. A photo goes onto a queue, which a worker sends to the vision model. Phone tap (NFC) App Database Photo upload Queue Vision model

History

An audit walks a bin and marks each expected item present or missing, and anything found that wasn't expected as extra. Moves, audits and description changes each append an event, and committing an audit never wipes earlier history. Around that:

Claim gaps

A claim gaps view lists every item missing a serial, a replacement value or a receipt, with each row linking straight to that item's edit page. It turns "am I covered?" into a to-do list.

Platform

"If I had more time, I would have made this shorter."

Top Of Page