Part-DB-server is a free, open source erp & operations project written in PHP and released under AGPL-3.0. It has 1,767 GitHub stars, 235 forks and 209 open issues, and was last pushed yesterday. On this registry it ranks #6 of 25 tracked projects in ERP & Operations, with 5 head-to-head comparisons available. It gained 3 stars over the last 3 tracked days.

What is Part-DB-server?

What it is

Part-DB is an open-source inventory management system for electronic components. It is a PHP and Symfony web application installed on a web server, so users access it through a browser without extra client software. The repository calls this version a complete rewrite of the legacy Part-DB project, and it is licensed under AGPL-3.0.

It solves the problem of scattered electronic parts records by putting parts, locations, prices, files, projects, and access control in one system. This helps hobbyists, maker spaces, and small companies track private or shared component stock.

Key capabilities

  • Each part record can hold category, footprint, manufacturer, store locations, price information, tags, files, datasheets, and pictures.
  • The system generates barcodes and labels for parts and storage locations, and it can scan barcodes through a webcam with a built-in scanner.
  • User groups, fine-grained permissions, two-factor authentication with Google Authenticator and WebAuthn/U2F keys, and email password reset are supported.
  • Optional SAML single sign-on can connect Part-DB to LDAP or Active Directory through an intermediate service such as Keycloak.
  • KiCAD bill-of-material import, KiCad integration, an API, and an MCP server support project workflows and external tool access.
  • An event log tracks inventory changes and user actions, and parts can be reverted to older versions.
  • MySQL, SQLite, and PostgreSQL are supported database backends, and cloud providers such as Octopart, Digikey, Farnell, LCSC, and TME can provide part information, datasheets, and prices.

Who uses it and how

  • Hobbyists install Part-DB on a web server and browse their private electronic components inventory from any browser.
  • Maker spaces use user groups and permissions to let many members view or edit a shared inventory under controlled access.
  • Small companies track parts, prices, storage locations, and project bills of material, then withdraw components needed for a build.
  • KiCad users import bills of material and use KiCad integration to see available parts inside the design tool.

Getting started

Typical deployment runs Part-DB on a web server with MySQL, SQLite, or PostgreSQL, and a Docker image is published as jbtronics/part-db1. Documentation and a demo are provided for setup and evaluation.

When to use it — and when not to

Part-DB fits users who need a self-hosted, browser-based electronic components inventory and can operate a PHP web application with a database. It is less suitable when no one can maintain the web server, database, optional SSO, or cloud provider access, or configure email password reset. The open issue count and missing contributor data suggest checking maintenance activity before production use.

project readme (upstream, from github) — read inline

PHPUnit Tests Static analysis codecov GitHub License PHP Version

Docker Pulls Docker Build Status Crowdin

Documentation | Demo | Docker Image

Part-DB

Part-DB is an Open-Source inventory management system for your electronic components. It is installed on a web server and so can be accessed with any browser without the need to install additional software.

The version in this repository is a complete rewrite of the legacy Part-DB (Version

Features

  • Inventory management of your electronic parts. Each part can be assigned to a category, footprint, manufacturer, and multiple store locations and price information. Parts can be grouped using tags. You can associate various files like datasheets or pictures with the parts.
  • Multi-language support (currently German, English, Russian, Japanese, French, Czech, Danish, and Chinese)
  • Barcodes/Labels generator for parts and storage locations, scan barcodes via webcam using the builtin barcode scanner
  • User system with groups and detailed (fine granular) permissions. Two-factor authentication is supported (Google Authenticator and Webauthn/U2F keys) and can be enforced for groups. Password reset via email can be set up.
  • Optional support for single sign-on (SSO) via SAML (using an intermediate service like Keycloak you can connect Part-DB to an existing LDAP or Active Directory server)
  • Import/Export system for parts and data structure. BOM import for projects from KiCAD is supported.
  • Project management: Create projects and assign parts to the bill of material (BOM), to show how often you could build this project and directly withdraw all components needed from DB
  • Event log: Track what changes happen to your inventory, track which user does what. Revert your parts to older versions.
  • Responsive design: You can use Part-DB on your PC, your tablet, and your smartphone using the same interface.
  • MySQL, SQLite and PostgreSQL are supported as database backends
  • Support for rich text descriptions and comments in parts
  • Support for multiple currencies and automatic update of exchange rates supported
  • Powerful search and filter function, including parametric search (search for parts according to some specifications)
  • Automatic thumbnail generation for pictures
  • Use cloud providers (like Octopart, Digikey, Farnell, LCSC or TME) to automatically get part information, datasheets, and prices for parts
  • Retrieve part information from arbitrary shop websites, using either conventional data extraction from structured metadata, or AI based data extraction. A browser plugin allows to quickly submit parts from any website to your Part-DB instance, and even allows to circumvent anti-bot measures on shop websites.
  • API to access Part-DB from other applications/scripts
  • Integration with KiCad: Use Part-DB as the central datasource for your KiCad and see available parts from Part-DB directly inside KiCad.
  • MCP Server for letting AI agents and chats access your Part-DB instance to allow them to answer questions about your inventory

With these features, Part-DB is useful to hobbyists, who want to keep track of their private electronic parts inventory, or maker spaces, where many users should have (controlled) access to the shared inventory.

Part-DB is also used by small companies and universities for managing their inventory.

Requirements

  • A web server (like Apache2 or nginx) that is capable of running Symfony 7, this includes a minimum PHP version of PHP 8.2
  • A MySQL (at least 5.7) /MariaDB (at least 10.4) database server, or PostgreSQL 10+ if you do not want to use SQLite.
  • Shell access to your server is highly recommended!
  • For building the client-side assets yarn and nodejs (>= 22.0) is needed.

Installation

If you want to upgrade your legacy (< 1.0.0) version of Part-DB to this version, please read this first.

Hint: A docker image is available under jbtronics/part-db1. How to set up Part-DB via docker is described here.

Below you find a very rough outline of the installation process, see here for a detailed guide on how to install Part-DB.

  1. Copy or clone this repository into a folder on your server.
  2. Configure your webserver to serve from the public/ folder. See here for additional information.
  3. Copy the global config file cp .env .env.local and edit .env.local:
    • Change the line APP_ENV=dev to APP_ENV=prod
    • If you do not want to use SQLite, change the value of DATABASE_URL= to your needs ( see here) for the format. In bigger instances with concurrent accesses, MySQL is more performant. This can not be changed easily later, so choose wisely.
  4. Install composer dependencies and generate autoload files: composer install -o --no-dev
  5. Install client side dependencies and build it: yarn install and yarn build
  6. Optional (speeds up first load): Warmup cache: php bin/console cache:warmup
  7. Upgrade database to new scheme (or create it, when it was empty): php bin/console doctrine:migrations:migrate and follow the instructions given. During the process the password for the admin is user is shown. Copy it. Caution: These steps tamper with your database and could potentially destroy it. So make sure to make a backup of your database.
  8. You can configure Part-DB via config/parameters.yaml. You should check if settings match your expectations after you installed/upgraded Part-DB. Check if partdb.default_currency matches your mainly used currency (this can not be changed after creating price information). Run php bin/console cache:clear when you change something.
  9. Access Part-DB in your browser (under the URL you put it) and log in with user admin. Password is the one outputted during DB setup. If you can not remember the password, set a new one with php bin/console app:set-password admin. You can create new users with the admin user and start using Part-DB.

When you want to upgrade to a newer version, then just copy the new files into the folder and repeat the steps 4. to 7.

Normally a random password is generated when the admin user is created during initial database creation, however, you can set the initial admin password, by setting the INITIAL_ADMIN_PW env var.

You can configure Part-DB to your needs by changing environment variables in the .env.local file. See here for more information.

Reverse proxy

If you are using a reverse proxy, you have to ensure that the proxies set the X-Forwarded-* headers correctly, or you will get HTTP/HTTPS mixup and wrong hostnames. If the

readme truncated — read the full docs on github

Frequently asked questions

Is Part-DB-server free to use?

Part-DB-server is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Part-DB-server do?

Part-DB is an Open source inventory management system for your electronic components

What is Part-DB-server written in?

Part-DB-server is primarily written in PHP. Its source is publicly available at https://github.com/Part-DB/Part-DB-server, and it has 1,767 GitHub stars.