tl;dr: demo.homERP.flpy.link
Organization
I've always struggled with organization, especially for objects in real life. I find that the hardest part of keeping things organized is ensuring there is a home for every object. This is what I found to be lacking in solutions like grocy or the like.
Idea
The idea I had that I couldn't find in any other solution was that I wanted the stored information of my items to be as portable as possible. The thing I'm really good at organizing is files/folders so I figured, why not do the same here.
Functionality
There were three ways I found that I interface with this kind of information
- Where is an item?
I know what item I need, but I just don't know where it is. - What is an item?
I have found an object, but I don't really remember what it is, how to use it, or where it goes. - What do I know about the item?
I have the item and am looking for manuals, documentation, or notes about it.
So the system should have:
- A search to find an items page that tells me where it is.
- A way to retrieve an items information, even if I don't know what it's called.
- A way to store arbitrary information about an item.
Items
Every object that I want to keep track of needs a little bit of metadata, but some need a lot more than others. Sometimes I just want a photo to jog my memory but other times I need to save warranty info, manuals, usage history, or any number things. The most generic way to store this info would be to just have a folder with whatever files I need to save for any object.
Folders
Having every item represented as a folder has another nice attribute. For items that are storage containers themselves, they can have items "inside" them by just having the folder for the item inside them. What's really sweet about this is that this is incredibly portable as even if whatever webapp I write dies or I lose the source code, I can still browse the items in a regular file browser. Search should even work as the metadata will all be plain text!
Another nice feature of using folders for items is that if there's some weird thing I need to do to move items around that I haven't built into the webapp, I can just write a script or move folders around manually on the local machine.
ID
The problem with having item folders being able to be moved around willy-nilly is that I need some persistent tracked information for each item. I decided to give every item a base64 encoded ID that is saved in an index.md file's metadata. The index.md will also be the text/description of the item that's displayed when browsing. Having a persistent ID means you can print labels with barcodes that when scanned will always point back to the item no matter how much you move it around.
Printing labels also solves the problem of answering what is an item? If the item has a label I can scan I can quickly bring up its page. If it's inside a container that's labeled I can scan that and the item should show up as a child.
Sizing
To make sure I have enough IDs I did a quick birthday calc. The number of items
I also have it regenerate on conflict but it's nice to know merging houses would likely work.
Labels
I really liked the idea of labels and barcodes so I baked that in early on. A short base64 ID is very easy to encode in a Data Matrix barcode.
Running with this idea I included support for barcode printing and reading directly in the webapp to make it as quick and seamless as possible.
Photos
Photos make remembering what something is/where something is a lot easier than having to describe it. I wanted to save a "thumbnail" for as many items as possible so I built that into the new item page. Every item will have a special thumbnail file that is rendered on the page of that item to make it quicker to remember what it is. As this webapp is mainly used on mobile I can implement taking the photo directly on the device rather than needing to upload something I took. The photos don't need to be good, just for recollection.
Implementation
I needed to make accessing the information as easy as possible or else I wouldn't use it. To do this I tried to keep it lightweight and simple with a generic front end.
There is also a focus on mobile UI since this is primarily accessed from tablets/phones while doing house work.
Vibe Coding
Yes this is almost entirely vibe coded. I would like to have the time to devote to cool software like this but there's just not enough hours in the day. Hopefully my grumpy hackernews pilled style rubbed off on Claude to KISS.
MCP
I added an MCP for fun but found it quite useful. Once it's hooked up an agent is able to autonomously search, add, and move items. The most useful task I've found is providing an image of a storage location (shelf, bin, etc.) and having the agent split that photo up and make items for each thing inside with the cropped photo attached. Then I can go in and add any further context/attachments if needed.
Usage
I've found my usage to be on and off as I find the motivation to add things. I'm always thankful for it though when I need to find something!
Source
Check it out on github