partdb is an electronic parts manager. goals ===== 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](https://partkeepr.org/). 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](https://binner.io/). 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. components ========== Part information is: - stored in a MariaDB/mySQL database - retrieved using a sinatra HTTP/REST server - displayed using minimal HTML+JS pages installation ============ 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 DATABASE partdb; CREATE USER 'partdb'@localhost IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON partdb.* TO 'partdb'@localhost; exit 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.