Intro
I like to build small circuits and development boards. This requires me to design and buy PCBs and many, many, tiny electronic components. This itself is not a problem The problem arises when the minimum order quantity is way more than the project requires. If I need 2 0804 100Ω resistors and the suppliers Min. Order Qty. is 100, then I have 98 unused resistors. I experience this with several projects. Sometimes I am ambitious and hink I will build several at a time, but end up only building one, leaving you with a bunch of teeny-tiny components that are often too unique to use anywhere else.
This lead me to attempting to keep track of them so I can design future boards around the components I already have. I have tried different solutions but none of them gave me the simplicity I wanted. This is an attempt to create a solution to that problem.
Trial
I first tried out PartKeepr. It looked to have everything I needed. Web-based, inventory tracking, lots of attributes to store for quick search. I tried out the demo provided and was initially pleasantly surprised by the consistent UI. Not only that, the interactive elements were not blown up in size enough for a toddler to press using their fist on a touch screen.
It was extremely consistent and had features to feed the hungriest of power users. I liked the feel of the Windows XP style icons, rounded panes/tabs, draggable windows, and the webkit provided scroll bars (I hate when websites over-write the page scroll bar).
Just look at how many parameters are available for export!
It had a bunch of things that I was looking for:
- Export
- Custom table views that were saveable (called presets)
- OctoPart integration
- Package management
- Project runs
I never got the OctoPart integration working. Maybe I need to revisit this. I also tried to mess around with Project runs and it seemed to be lacking a lot compared to the rest of the tool.
Rolling my own
Remaking something close to PartKeepr is an overly-ambitious project. It would either take a full-time job or take a metric ton of free time complimented by an overdose of motivation. I had the latter.
I wanted to learn Go (golang) for some time now. I kept hearing about the fast compile times, great multi-platform support, and garbage collected system. All I needed was a little project to get my feet wet (btw, both garbage collected and interpreted programming languages are perfect for grug-brained Mechanical Engineers like myself who have not mastered the computer science spell book). But then I stumbled on PocketBase. My little itch for a simple project turned into a full-stack, full blow, four alarm holiday emergency. I was going to learn Go, PocketBase, typescript, and sqlite all at the same time, and it was going to ship in a single executable!
partman was born.
Demo
Advanced Searching
Detailed Logs
Features
- Advanced Searching
- Detailed Logs
- Organize by Category, Project, and Storage Location
- Octopart integration for metadata and attribute fetching
- Import BoM into inventory and automatically merge/update duplicate components
- Import BoM as a project
- Automatically Deduct Project qty used from inventory
- Export inventory as CSV
- and more!
Final thoughts
Building this app is probably one of my funnest programming projects. I am officially a Full-Stack™ Engineer /s. I put a lot of effort into it and it does exactly what I need. If I need more, or can no longer support it I may go back revisit PartKeepr. Or maybe make a tool to migrate to and from.