Part-DB is an Open source inventory management system for your electronic components
Find a file
Jan Böhmer 6225d2c9b3 Implemented an easy to use APIFilter for tags
This makes the process of filters more easily and intuitive. This fixes issue #750
2024-11-05 00:07:25 +01:00
.docker Pass the docker envs for oemsecrets to Part-DB 2024-11-03 21:46:53 +01:00
.github Bump docker/build-push-action from 5 to 6 (#631) 2024-06-19 23:33:43 +02:00
assets Improved size and position of back to top button to avoid overlapping with buttons, etc. 2024-11-03 23:58:06 +01:00
bin Updated phpunit-bridge recipe 2023-12-03 23:24:33 +01:00
config Responsive tweaks (#755) 2024-11-03 23:14:52 +01:00
docs Document APP_SECRET and PostgreSQL specific bits in configuration variables (#727) 2024-10-16 23:59:53 +02:00
migrations Fixed the NatSortKey function where regex characters were improperly escaped in the old migration 2024-07-28 17:08:55 +02:00
public Use a svg file as default user avatar instead of SVG. Also changed path generation logic 2023-12-10 21:25:40 +01:00
src Implemented an easy to use APIFilter for tags 2024-11-05 00:07:25 +01:00
templates Improved size and position of back to top button to avoid overlapping with buttons, etc. 2024-11-03 23:58:06 +01:00
tests Remove project path in twig label error messages to prevent information leakage 2024-08-23 22:28:29 +02:00
translations New translations messages.en.xlf (Polish) 2024-10-19 22:40:21 +02:00
uploads Keep uploads/ folder, as an exception is thrown if a user tries to move attachment to secure folder if it is not existing. 2020-05-22 13:05:47 +02:00
.dockerignore Do not copy the content of public/media to docker image 2024-03-10 20:49:33 +01:00
.env OEMSecrets provider interface v.1.0 (#679) 2024-09-09 00:59:44 +02:00
.env.docker Renamed demo environment to docker 2023-02-04 23:40:24 +01:00
.env.test Use sqlite database for testing by default 2023-12-24 15:27:05 +01:00
.gitattributes Properly redirect the stdout of php-fpm to the docker logs 2023-06-11 00:09:00 +02:00
.gitignore Updated phpstan/phpstan recipe 2023-10-06 13:05:06 +02:00
.php_cs.dist Fixed code style. 2020-01-04 20:24:09 +01:00
.scrutinizer.yml Really fixed .scrutinizer.yml 2019-11-09 14:35:54 +01:00
.yarnclean Updated yarn dependencies... 2019-03-19 15:24:44 +01:00
CODE_OF_CONDUCT.md Added code of conduct. 2019-03-27 16:36:16 +01:00
codecov.yml Update codecov.yml 2023-10-24 18:27:30 +02:00
composer.json Use jbtronics/translation-editor bundle instead of php-translation/symfony-bundle for profiler translation editing 2024-09-08 20:03:33 +02:00
composer.lock Updated dependencies 2024-11-03 20:03:24 +01:00
CONTRIBUTING.md Improved README and docs 2023-02-12 23:37:09 +01:00
crowdin.yml Update Crowdin configuration file 2023-01-30 16:31:01 +01:00
Dockerfile Use debian bookworm, PHP 8.2 and node 20 for the docker image by default 2024-09-08 19:40:43 +02:00
Dockerfile-frankenphp feat(docker): Refactor Dockerfile (#683) 2024-09-08 19:13:13 +02:00
ecs.php Apply symplify checkers. 2020-08-21 21:38:31 +02:00
LICENSE Changed license to AGPL3+ 2020-02-22 18:14:36 +01:00
package.json Added recent searches to search 2024-02-27 00:39:38 +01:00
phpstan.dist.neon Exclude the translation dumper fix files, to avoid phpstan issues, which we cannot control 2024-10-13 23:23:48 +02:00
phpunit.xml.dist Increased phpunit memory limit to 1G 2024-06-06 20:04:50 +02:00
Procfile Revert "Use Opcache preloading on heroku server." 2020-03-31 18:24:35 +02:00
README.md Updated requirements in README file and mention PostgreSQL support in features 2024-06-21 10:39:44 +02:00
rector.php Dont replace our test 'GET' strings with a class constant 2024-06-22 00:36:30 +02:00
SECURITY.md Update SECURITY.md 2023-02-26 19:23:58 +01:00
symfony.lock Updated dependencies 2024-09-09 21:42:03 +02:00
VERSION Bumped version to 1.14.2 2024-10-17 00:20:48 +02:00
webpack.config.js Fixed wrong path for assets managed by webpack and loaded via twig asset() function. 2024-01-06 01:06:56 +01:00
yarn.lock Updated dependencies 2024-11-03 20:03:24 +01:00

Scrutinizer Code Quality 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 < 1.0) based on a modern framework and is the recommended version to use.

If you find a bug, please open an Issue on GitHub, so it can be fixed for everybody.

Demo

If you want to test Part-DB without installing it, you can use this Heroku instance. (Or this link for the German Version).

You can log in with username: user and password: user.

Every change to the master branch gets automatically deployed, so it represents the current development progress and is may not completely stable. Please mind, that the free Heroku instance is used, so it can take some time when loading the page for the first time.

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
  • 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.

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 6, this includes a minimum PHP version of PHP 8.1
  • 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 (>= 18.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 reverse proxy is on a different server (or it cannot access Part-DB via localhost) you have to set the TRUSTED_PROXIES env variable to match your reverse proxy's IP address (or IP block). You can do this in your .env.local or (when using docker) in your docker-compose.yml file.

Donate for development

If you want to donate to the Part-DB developer, see the sponsor button in the top bar (next to the repo name). There you will find various methods to support development on a monthly or a one-time base.

Built with

Authors

  • Jan Böhmer - Initial work - GitHub

See also the list of contributors who participated in this project.

Based on the original Part-DB by Christoph Lechner and K. Jacobs

License

Part-DB is licensed under the GNU Affero General Public License v3.0 (or at your opinion any later). This mostly means that you can use Part-DB for whatever you want (even use it commercially) as long as you publish the source code for every change you make under the AGPL, too.

See LICENSE for more information.