# Inventory System
I have quite a few tools, materials, and consumables. I would like to be able to track them in a system. Why?
- It is hard to remember where everything is stored.
- it is tedious to look up exact replacements, for repair or restock
- when I am in the design/development phase, it is very hard to keep track of identical-looking parts
## Requirements
- the system needs to be searchable from my phone or laptop
- the system needs to store object location (building, room, area, container, etc)
- the system should include URL of where I got it
- the system should generate unique identifiers
- each unique identifier should fit on a printed label, either in plaintext or encoded somehow (e.g. Mini QR)
## Using the System
Unorganized thoughts here for now.
1. I started with UUIDs that include a type (e.g. `OBJ-12345` to mean an Object). This is arbitrary, because with the current scheme of 6 alphanumerics I get `36^6 > 2.1B` IDs. I could generate a single ID every second of the remainder of my life and only use 1% of that.
2. I shouldn't limit my system to objects anyway. Containers, shelves, rooms, buildings, and areas of real estate are also identifiable.
3. I probably shouldn't limit my system to files in the `inventory` folder either. Ideas are identifiable. Diary entries are identifiable. Heck, I could put a `uuid` on every single note in this vault.
Other use-cases:
- locating a tool (which building / toolbox is it in?)
- looking up tool specs while I'm at the hardware store ("what size blade does it take again?")
- tracking loan history
- a dedicated place to put maintenance logs (although...if the maintenance changes the object, should it get a new uuid? how would I track the Ship of Theseus in this system?)
### Use-Case: Iterating on a 3d-printed design
I'm developing this system primarily to aid in keeping track of 3D-printed parts. Everything I print is a crystallized set of inputs that are hard to capture in Sharpie on the bottom of the part itself, so I wanted a way to put a label on the part to link to notes here. See [[test-a1b2c3]] for an example. See [[3DP Versioning]] for discussion of the inputs to a print.
So the first real use-case of this system is "write the UUID on the bottom of a 3d-printed part, in Sharpie". Then, in Obsidian I can track all the configurations that went into making that part exactly how it is (including post-processing like sanding and painting). If the part is for a larger project, I can link the project notes to all relevant printed (or storebought) parts (following our earlier example: [[CUBE#corner joint]]).
I can also quickly link a long-term printing log to the parts printed on that printer ([[3D-Printing-Log]])
## Label Encoding
There are some encodings that I think are neat. These include
- mailpiece-style: [IMb](https://en.wikipedia.org/wiki/Intelligent_Mail_barcode)/[POSTNET](https://en.wikipedia.org/wiki/POSTNET)/[PLANET](https://en.wikipedia.org/wiki/Postal_Alpha_Numeric_Encoding_Technique)/[RM4SCC](https://en.wikipedia.org/wiki/RM4SCC)/[PostBar](https://en.wikipedia.org/wiki/PostBar)
- bullseye-style:
- Litton / RCA / Charecogn (see screenshot below)
- ShotCode ([wiki](https://en.wikipedia.org/wiki/ShotCode))
- "QR code but make it cuter" (see [Matrix codes on wikipedia](https://en.wikipedia.org/wiki/Barcode#Matrix_(2D)_codes)):
- ArUco ([paper](https://docs.opencv.org/4.x/d5/dae/tutorial_aruco_detection.html))
- Aztec Code ([wiki](https://en.wikipedia.org/wiki/Aztec_Code))
- bCode ([paper](https://pmc.ncbi.nlm.nih.gov/articles/PMC5816157/))
- BEEtag ([paper](https://pmc.ncbi.nlm.nih.gov/articles/PMC4558030/))
- MaxiCode ([wiki](https://en.wikipedia.org/wiki/MaxiCode)), if I can do it just with the inner data?
- NexCode

Screenshot taken from a YouTube [video](https://www.youtube.com/watch?v=YVBJg0J1v1s&t=482s) on the Usagi Electric channel, titled "How do barcodes and scanners even work?"
Finally, and this is probably the most practical option: [Micro QR](https://en.wikipedia.org/wiki/QR_code#Micro_QR_code)
Let's compare them!
| encoding | shape | notes | consider? |
| -------------------- | ---------- | -------------------------------------------------------- | --------- |
| IMb | rectangle | too long for 3d-printed parts; can't scan with my phone? | no |
| Litton | semicircle | can't scan with my phone | no |
| RCA | circle | can't scan with my phone | no |
| Charecogn | circle | can't scan with my phone | no |
| ShotCode | circle | can't scan with my phone | no |
| ArUco | square | can't scan with my phone | no |
| Aztec Code, smallest | square | | yes |
| Aztec Code, largest | square | | yes |
| bCode | square | can't scan with my phone | no |
| BEEtag | square | can't scan with my phone | no |
| MaxiCode, Mode 4 | square | can't scan with my phone | no |
| MaxiCode, Mode 5 | square | can't scan with my phone | no |
| NexCode | square | can't scan with my phone | no |
| Micro QR | square | | yes |
I should note that for the ones I can't scan with my phone, I tried the top 5 apps in the App Store (by _quantity_ of ratings). See [[#iOS App]] below.
| encoding | shape | payload length | physical area (assume module of 1mm) | error detection | error correction |
| -------------------- | ------ | ----------------------- | ------------------------------------ | --------------- | ---------------- |
| Aztec Code, smallest | square | 13 digits or 12 letters | 15 mm by 15 mm | yes | yes? |
| Aztec Code, largest | square | 1914 _bytes_ | 151 mm by 151 mm | yes | yes |
| Micro QR | square | up to 120 bits | 17 mm by 17 mm | ? | ? |
## Label Maker
- [x] #project #inventory-mgmt buy a label-maker (see below) [completion:: 2025-12-26]
- Brother QL800 for $125 (300 x 600 DPI)
- DK1219 12mm diameter rounds (1200)
- could be good for circular encodings!
- DK2214 12mm by 30m tape
- DK1221 23mm squares (1000)
- could be good for square encodings!
- Brother P-touch CUBE for $70 (180 DPI)
- TZE231S 12mm by 4m
- Brother P-touch CUBE XP for $350 (360 DPI)
## Data Storage
Obsidian notes, duh. One note per object.
- [x] #project #inventory-mgmt Create a Template to represent an Object [completion:: 2025-12-24]
- [x] #project #inventory-mgmt Create some Object notes! How best to organize them? [completion:: 2025-12-24]
- [ ] #project #inventory-mgmt Create Dataviews to query my Objects
- [x] #project #inventory-mgmt Create a Base for browsing Objects [completion:: 2025-12-24]
- [x] #project #inventory-mgmt Is there a plugin for Obsidian on iOS that uses the camera to read an Aztec Code? [completion:: 2025-12-25]
- Nope. see [[#Label Scanner]] below
- [ ] #project #inventory-mgmt Is there a plugin that can generate an encoding from a payload string? Then I would like to be able to print that image from my phone straight to the label maker...
- yes, for standard QRs only though. If I want Aztec or Mini QR I'll probably have to develop it myself
- [ ] #project #inventory-mgmt can an obsidian template generate a random string? I'd like the uuid to be more human readable than an epoch timestamp
- [x] #project #inventory-mgmt when I 3d-print multiple instances at once (or so close together as to be "identical"), do I use one object file or multiple? Try it out for a minute. [completion:: 2025-12-25]
- [x] #project #inventory-mgmt template for 3d-printed object. think about object categories. [completion:: 2025-12-25]
### Schema Changelog
- 20251225: changed `uuid` default to a blank string. For now I'll manually insert a random-ish code (as from `uuidgen` CLI). Also added the `category` property (the first categories in use are "part", "consumable", and "tool").
- 20251224: started with `name`, `dat acquired`, `current location`, `home location` and `uuid` properties. UUID gets pre-filled by the template string `OBJ-{{time}}`, where Templates uses the `X` format to get seconds since Unix Epoch. This results in a UUID of "OBJ-" followed by 10 digits.
## Label Scanner
I need to be able to scan the encoded uuids quickly and easily.
- third-party iOS apps can read various barcodes, and let me copy the payload into my clipboard. Then I can paste that into Obsidian Search. Clunky, but would technically meet the requirements.
- maybe a barcode scanner that plugs into USB-C and has a "keyboard mode"!
- like the [ScanGenie](https://shop.sb-components.co.uk/products/scangenie-esp32-based-qr-barcode-scanner)
- instead of buying one, I could build new firmware for the [Tiny Code Reader](https://www.adafruit.com/product/5744)
- [x] #wishlist instead of buying one or backporting firmware, I could carry around my own little camera! MEMENTO: [board](https://www.adafruit.com/product/5420), [enclosure](https://www.adafruit.com/product/5843) [completion:: 2025-12-25]
- then I could use the camera to send image data to obsidian to store an image of the object. The camera could maybe also send the label code to the label-maker...
- I already have a pocketable device I could dedicate to this, with a touchscreen and camera. I just need to jailbreak it. It's the [[Pocket-Assistant#Rabbit R1|Rabbit R1]] of course!
### iOS App
| encoding | Code Scanner<br>(native?) | Camera<br>(native) | QR Reader<br>by TapMedia Ltd | QR Code Reader<br>by TinyLab | QR Code Reader: Quick Scan<br>by Komorebi Inc | QR Code Reader/QR Scanner App<br>by MixerBox Inc | QR Code & Barcode Scanner<br>by TeaCapps |
| ------------------- | ----------------------------------------- | ------------------ | ---------------------------- | ---------------------------- | --------------------------------------------- | ------------------------------------------------ | ---------------------------------------- |
| ratings | | | 4.7, 1.4M | 4.7, 666K | 4.7, 152K | 4.7, 139K | 4.6, 88K |
| ShotCode | no | no | no | no | no | no | no |
| Aztec Code, compact | no | no | yes | yes | yes | yes | yes |
| Aztec Code, full | no | no | yes | yes | yes | yes | yes |
| MaxiCode | no | no | yes but it gets it wrong | no | no | no | no |
| Micro QR | no | no | no | no | YES | no | yes |
| payment model | free | free | $5/mo | $10/mo | free | $15/mo | $15 |
| thoughts | QR URLs open the browser with no warning! | | | very annoying ads | very snappy! | ads | ads |
Komorebi is the best of these, by far. Followed by TeaCapps.
Update: It turns out there is another app that might be of use: ScanKey It installs an alternative Keyboard. That way, I can be in another app (like Obsidian), switch to the ScanKey keyboard and read barcodes back into the text field I'm editing (like the search bar). It works on Aztec codes, but not Micro QR.