partdb is an electronic parts inventory manager. usage ===== Once the service is installed, there is a single page to search, add, delete, or update parts. The only aspect not handled by the web frontend is the attachments. Just add the files directly on the server under `public/attachments//`. Distributors also need to be managed directly in the database. Since this does change very often, it isn't too much of a hassle. An example is in `populate.sql`, also with some other entries. To import an LCSC part, simply go to the `/import/lcsc/Cxxxx` page and the part will be added to the database. 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:4245 and you are ready to use it. the port is defined in `server.rb`. use a proxy web server to handle the authentication, TLS, compression, ...