Skip to content
2023-12-09

partman - an electronic parts database

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!

Parameters

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 SearchingAdvanced Searching

Detailed LogsDetailed 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.

This page is delivered to you from my garage.