October 9, 2022

Introducing Homebox

login-page

Have you ever wanted to reset an IOT device but couldn’t fine the manual? Or maybe you wanted to keep a list of devices you have around the house and makes sure your buying consistent or compatible devices. Well, those are all problems that I’ve experienced. If you’re anything like me, you can see the appeal for a basic inventory system that has a web interface and can be accessed from anywhere. That’s where Homebox comes in.

Homebox is a self-hosted inventory system that allows you to keep track of all your devices. It’s built on Go and SQLite and is designed to be a simple and easy to use solution. It’s also completely free and open source. You can find the source code on GitHub.

This post mostly talks about the ideas around the project, for information on deployment and a feature list you can view the documentation here.

TL;DR: docker run command

docker run --name=homebox \
    --restart=always \
    --publish=3100:7745 \
    ghcr.io/hay-kot/homebox:latest

Core Principals

If you’re in the self-hosting community you’ve probably heard of the other solutions that are out there. I briefly cover some of them in the documentation. I wanted to take a moment to talk about the core principals that I wanted to follow when building this project. I wanted to create something that fills a small specific use case. My other open source project Mealie has suffered from the broad scope of problems that it tries to fix. It’s not only a recipe content management system, but it’s a shopping list, meal-planner, web-scraper with integration OCR and Natural Language Processing. While all of those things are complimentary to recipes, it becomes increasingly more difficult to maintain on my own, even with the support of a great community. I want this project to be different.

The following features are the core parts of Homebox. These are the features that are implemented today. In the next section I’ll talk a little bit more about what’s the future holds, and where the road for this project go and most importantly, where I think this project will reach feature completeness.

Items

Items are your individual devices. They can be anything from a phone to a TV to an empty cardboard box! Items are the core of Homebox, it’s what you’re here for, so it’s important to get them right.

I believe that Items should be as simple as possible. That’s why Homebox only has a 3 fields that are required for an item, Location, Name, and Description, but that doesn’t mean that we can’t have more fields when we need them. Homebox allows you to access advanced fields where you can provide more information about your items including things like insurance status, purchase information, sold information, and warranty information. And of course you can upload attachments to your items as well so you can keep track of receipts, manuals, or anything else you want to associate to your items.

items dashboard items dashboard

Locations

Locations are the first thing you’ll need to add to Homebox. Locations are where you keep your items. For example, you might have a location called “Kitchen” or “Bedroom”. You can add as many locations as you want. Each item has a single location associated with it.

To help you get started, I’ve pre-seeded the database with a few locations. You can delete these locations if you want, but I think they’re a good starting point.

Labels

Labels are a way to categorize your items. For example, you might have a label called “Electronics” or “Kitchen”. You can add as many labels as you want. Each item can have multiple labels associated with it. Labels are a good catch all field that gives you a lot of flexibility on grouping related items.

Additional Features

  • Multitenancy
  • Invite users to share your inventory
  • Easy drag and drop upload for assets
  • CVS asset import

Future and Road Map

These are the ideas that I know I want to implement in the near future. With any project, it’s difficult to know when to call a project complete, but I think these features gives me a good idea of where I want to take this project, from there it will require a lot of thought and feedback from the community to decide what’s next.

Maintenance and Repair Logs

Homebox will provide a way to manage repair logs for an item. This will allow users to track the history of an item like a Water Heater or a Car and manage upcoming maintenance tasks. Some features will include

  • Scheduled maintenance tasks
  • Viewable repair logs
  • See upcoming maintenance tasks
  • Generate QR for items to easily scan and update maintenance logs

Custom Fields

Items will allow the user to specify a custom field that can be added to an item. This will allow users to provide any additional data they require to keep track of their items. For example, a photographer might want to keep track of the Lens Type of an item. This will allow them to add a custom field called “Lens Type” and then add a value to that field for each item.Initially supported value types will be:

  • Text
  • Integer
  • Boolean
  • DateTime

Advanced Search will let you query for items based off flexible criteria.

  • Filter by Location and Labels
  • Fuzzy Search Name and Description
  • Match against specific fields or a custom field

CLI Client / Go SDK

Finally, Homebox should provide a Go SDK and CLI for working with the API. This will allow users to easily integrate Homebox into their existing workflows and provide extended functionality for importing and exporting data.