an electronic parts inventory manager
Go to file
King Kévin 0860ddd4bc add attachement support 2023-01-26 11:55:56 +01:00
public add attachement support 2023-01-26 11:55:56 +01:00
.gitignore add attachement support 2023-01-26 11:55:56 +01:00 doc: add project goal 2023-01-23 14:03:46 +01:00
credentials.json conf: add example credentials 2023-01-23 14:06:25 +01:00
schema.sql add attachement support 2023-01-26 11:55:56 +01:00
server.rb add attachement support 2023-01-26 11:55:56 +01:00

partdb is an electronic parts manager.


I wished for a part manager with the following properties:

  • self hosted: I do not wish to rely on an external service (which could become unreachable or simply disappear)
  • web interface: this removes the need of yet another window running while designing boards, and just integrates well with the remaining part searching activity (e.g. on manufacturer and distributor web pages)
  • customizable: simply because everyone has a different designing work flow, and wants to optimize their tools according to it (particularly myself)

One matching solution I found is PartKeepr. I used it for several year, and it could still be OK for my needs. But some aspects are just not that optimal anymore:

  • it is not developed anymore since 2018 (a docker image keeps it runnable)
  • logging in, and searching for parts is slow
  • customizing it is really hard (views, features, ...)
  • you always have to edit the part and click several times to copy any kind of value

I recently also discovered Binner. It does not allow to add custom part properties, or third parties distributors. But it's a young project and seems promising.

Because they did not fit by power user demands, I decided to implement my own solution. partdb is very crude, but it works, particularly for me.


Part information is:

  • stored in a MariaDB/mySQL database
  • retrieved using a sinatra HTTP/REST server
  • displayed using minimal HTML+JS pages


install software dependencies (here for Arch linux):

sudo pacman -S mariadb
sudo pacman -S ruby-sinatra ruby-webrick
pikaur -S ruby-mysql2

configure database

sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo mysql
CREATE USER 'partdb'@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON partdb.* TO 'partdb'@localhost;
mysql --user=partdb --password=password --database=partdb < schema.sql

put the database access information in credentials.json and run server.rb. now go to http://localhost:4244 and you are ready to use it.