https://github.com/Part-DB/Part-DB-server Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Customer Stories + White papers, Ebooks, Webinars + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. {{ message }} Part-DB / Part-DB-server Public * * Notifications * Fork 44 * Star 415 Part-DB is an Open source inventory management system for your electronic components License AGPL-3.0 license 415 stars 44 forks Activity Star Notifications * Code * Issues 32 * Pull requests 1 * Discussions * Actions * Projects 4 * Wiki * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Wiki * Security * Insights Part-DB/Part-DB-server This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 8 branches 20 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/P] Use Git or checkout with SVN using the web URL. [gh repo clone Part-D] Work fast with our official CLI. Learn more about the CLI. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @jbtronics jbtronics Use the column order stored in localStorage during the initial datata... ... e66ff40 Aug 20, 2023 Use the column order stored in localStorage during the initial datata... ...bles ajax call. This way we still have the right ordering when changing pages. This fixes issue #345 e66ff40 Git stats * 2,877 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .docker Renmed SAMLP_SP_PRIVATE_KEY to SAML_SP_PRIVATE_KEY August 1, 2023 15:31 .github Disable translation file linting as it causes problems with empty tra... June 29, 2023 23:37 assets Use the column order stored in localStorage during the initial datata... August 20, 2023 00:41 bin Updated symfony/phpunit-bridge recipe. October 2, 2021 21:04 config Allow to globally disable update checking/connection with Github August 4, 2023 23:55 docs Renmed SAMLP_SP_PRIVATE_KEY to SAML_SP_PRIVATE_KEY August 1, 2023 15:31 migrations Dont skip the Sqlite migration. Do nothing instead July 31, 2023 22:30 public Upgraded recipe of symfony/apache-pack February 11, 2023 22:29 src Fixed PartKeepr import for storagelocation attachments August 19, 2023 23:52 templates Show a notification on homepage and server info page if there is a ne... August 4, 2023 23:49 tests Show a notification on homepage and server info page if there is a ne... August 4, 2023 23:49 translations Show a notification on homepage and server info page if there is a ne... August 4, 2023 23:49 uploads Keep uploads/ folder, as an exception is thrown if a user tries to mo... May 22, 2020 13:05 .dockerignore Added a guide how to install Part-DB via docker. March 14, 2021 23:44 .env Renmed SAMLP_SP_PRIVATE_KEY to SAML_SP_PRIVATE_KEY August 1, 2023 15:31 .env.docker Renamed demo environment to docker February 4, 2023 23:40 .env.test Use correct database for testing env. October 2, 2021 21:10 .gitattributes Properly redirect the stdout of php-fpm to the docker logs June 11, 2023 00:09 .gitignore Update .gitignore January 30, 2023 13:01 .php_cs.dist Fixed code style. January 4, 2020 20:24 .scrutinizer.yml Really fixed .scrutinizer.yml November 9, 2019 14:35 .yarnclean Updated yarn dependencies... March 19, 2019 15:24 CODE_OF_CONDUCT.md Added code of conduct. March 27, 2019 16:36 CONTRIBUTING.md Improved README and docs February 12, 2023 23:37 Dockerfile Properly redirect the stdout of php-fpm to the docker logs June 11, 2023 00:09 LICENSE Changed license to AGPL3+ February 22, 2020 18:14 Procfile Revert "Use Opcache preloading on heroku server." March 31, 2020 18:24 README.md Added documentation for the octopart provider. July 31, 2023 22:43 SECURITY.md Update SECURITY.md February 26, 2023 19:23 VERSION Allow to globally disable update checking/connection with Github August 4, 2023 23:55 codecov.yml Allow bigger drops on code coverage. April 6, 2020 18:47 composer.json Updated dependencies August 1, 2023 15:34 composer.lock Updated dependencies August 1, 2023 15:34 crowdin.yml Update Crowdin configuration file January 30, 2023 16:31 ecs.php Apply symplify checkers. August 21, 2020 21:38 package.json Use symfony/ux-translator to translate password_strength_estimator ba... June 28, 2023 16:00 phpstan.neon Ignore the remaining issues June 18, 2023 00:28 phpunit.xml.dist Removed config/bootstrap.php which was left over from symfony 4.4 and... May 28, 2023 01:01 psalm.xml Fixed static analysis issue. March 14, 2021 19:03 rector.php Added declare strict types to all files June 11, 2023 18:59 symfony.lock Added proper OAuth authentication for digikey and other providers July 16, 2023 03:07 webpack.config.js Updated symfony/stimulus-bridge recipe June 11, 2023 19:58 yarn.lock Updated dependencies August 1, 2023 15:34 View code [ ] Part-DB Demo Features Requirements Installation Reverse proxy Donate for development Built with Authors License README.md 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 managment 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. Currently, it is still missing some (minor) features from the old version (see UPGRADE.md) for more details, but also many huge improvements and advantages compared to the old version. If you start completely new with Part-DB it is recommended that you use the version from this repository, as it is actively developed. 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 maybe 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. [part_info] [parts_list] 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 and French (experimental)) * 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 setuped. * 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 datastructure. 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 happens 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 and SQLite 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 or TME) to automatically get part information, datasheets and prices for parts With these features Part-DB is useful to hobbyists, who want to keep track of their private electronic parts inventory, or makerspaces, where many users have 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 5, this includes a minimum PHP version of PHP 8.1 * A MySQL (at least 5.7) /MariaDB (at least 10.2.2) database server if you do not want to use SQLite. * Shell access to your server is highly suggested! * 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 some very rough outline of the installation process, see here for a detailed guide 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. If you have put Part-DB into a sub-directory on your server (like part-db/), you have to edit the file webpack.config.js and uncomment the lines (remove the // before the lines) .setPublicPath('/part-db/build') (line 43) and .setManifestKeyPrefix('build/') (line 44). You have to replace / part-db with your own path on line 44. 6. Install client side dependencies and build it: yarn install and yarn build 7. Optional (speeds up first load): Warmup cache: php bin/console cache:warmup 8. 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: This steps tamper with your database and could potentially destroy it. So make sure to make a backup of your database. 9. 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 informations). Run php bin/console cache:clear when you changed something. 10. Access Part-DB in your browser (under the URL you put it) and login 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 inital database creation, however you can set the inital 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 sets 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 proxies 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 * Symfony 5: The main framework used for the serverside PHP * Bootstrap 5 and Bootswatch: Used as website theme * Fontawesome: Used as icon set * Hotwire Stimulus and Hotwire Turbo: Frontend Javascript Authors * Jan Bohmer - Inital 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. About Part-DB is an Open source inventory management system for your electronic components Topics mysql php database symfony electronics inventory inventory-management symfony-application part-db inventory-system inventory-management-system symfony5 Resources Readme License AGPL-3.0 license Code of conduct Code of conduct Security policy Security policy Activity Stars 415 stars Watchers 22 watching Forks 44 forks Report repository Releases 20 Version 1.6.1 Latest Aug 1, 2023 + 19 releases Sponsor this project * * https://www.paypal.me/do9jhb Learn more about GitHub Sponsors Packages 0 No packages published Contributors 10 * @jbtronics * @dependabot[bot] * @coeka * @japm48 * @Pyromane * @dependabot-preview[bot] * @sascha988 * @hmatuschek * @jsuelwald * @suuppl Languages * PHP 81.8% * Twig 10.1% * JavaScript 6.3% * CSS 1.5% * Dockerfile 0.2% * Shell 0.1% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time.