17 — TOOLING · 2026
Lab Inventory
A single-file Flask app that knows what is in every drawer: per-item records and QR labels, printable cabinet labels and a low-stock view.
- Built
- An inventory app for 56 drawers, with QR labels and printed drawer tiles.
- Stack
- Flask, SQLite, ReportLab, a Python tile generator.
- State
- In use.
IN USE · UPDATED 16 JUL 2026
Carter Barnes · cloud engineer, federal Azure · Contact








What it is
Fifty-six drawers across four cabinets is an unsearchable pile of components. This makes it searchable: every item gets a record, a QR code and a label, and a low-stock view says what to reorder before I run out mid-build.
It is one Python file and one SQLite database. Every quantity change is logged as a movement, with a reason and, when there is one, the project the parts went to.
How it works
- App
- Flask and SQLite in one app.py; it starts with a double-click.
- Labels
- ReportLab PDF sheets with a QR code per item. Scan it, get the record.
- Reorder
- Each item carries a reorder threshold; the reorder page lists everything at or under it.
- Cabinet tiles
- Two-part 3D-printed drawer labels: a 0.6 mm base and 0.8 mm raised text, part name large with a two-word description. Text shrinks to fit the tile.
- Tile generator
- The drawer map is a list of part names and descriptions in one script. Edit a string, re-run it, and the plates regenerate, laid out to fit the A1's bed.
By the numbers
- 56
- drawers across four cabinets
- 104
- unique parts on record
- 386
- pieces counted
- 1.4 mm
- printed tile: 0.6 base, 0.8 raised text
Decisions
- 01
The physical output is the product
A database that lives only on a screen changes nothing; a label on a drawer does.
- 02
Single file, single database, minimal dependencies
Right for a tool with one user. Few dependencies to rot, and it will still run in three years.
What I learned
- 01
QR codes solve the naming problem
There is no good short name for the 4.7 kΩ 1% 0805s from the second reel. There is a good QR code for it.
- 02
Drawer tiles are plain text you can read from the chair
Item records keep their QR codes, but the printed drawer tiles moved to plain text: big type you can read from the chair.
