InvenTree/README.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

190 lines
9.7 KiB
Markdown
Raw Normal View History

2022-05-01 23:46:06 +00:00
<div align="center">
<img src="assets/images/logo/inventree.png" alt="InvenTree logo" width="200" height="auto" />
<h1>InvenTree</h1>
<p>Open Source Inventory Management System </p>
2021-04-21 12:04:46 +00:00
2022-05-01 23:46:06 +00:00
<!-- Badges -->
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/inventree/inventree)
![CI](https://github.com/inventree/inventree/actions/workflows/qc_checks.yaml/badge.svg)
[![Documentation Status](https://readthedocs.org/projects/inventree/badge/?version=latest)](https://inventree.readthedocs.io/en/latest/?badge=latest)
![Docker Build](https://github.com/inventree/inventree/actions/workflows/docker.yaml/badge.svg)
2023-06-03 14:47:06 +00:00
[![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/7179/badge)](https://bestpractices.coreinfrastructure.org/projects/7179)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/inventree/InvenTree/badge)](https://securityscorecards.dev/viewer/?uri=github.com/inventree/InvenTree)
[![Netlify Status](https://api.netlify.com/api/v1/badges/9bbb2101-0a4d-41e7-ad56-b63fb6053094/deploy-status)](https://app.netlify.com/sites/inventree/deploys)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=inventree_InvenTree&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=inventree_InvenTree)
2021-04-21 12:04:46 +00:00
[![Coveralls](https://img.shields.io/coveralls/github/inventree/InvenTree)](https://coveralls.io/github/inventree/InvenTree)
2021-11-21 11:15:49 +00:00
[![Crowdin](https://badges.crowdin.net/inventree/localized.svg)](https://crowdin.com/project/inventree)
2022-05-01 23:46:06 +00:00
![GitHub commit activity](https://img.shields.io/github/commit-activity/m/inventree/inventree)
[![Docker Pulls](https://img.shields.io/docker/pulls/inventree/inventree)](https://hub.docker.com/r/inventree/inventree)
2019-08-15 12:01:57 +00:00
2022-05-01 23:46:06 +00:00
![GitHub Org's stars](https://img.shields.io/github/stars/inventree?style=social)
[![Twitter Follow](https://img.shields.io/twitter/follow/inventreedb?style=social)](https://twitter.com/inventreedb)
[![Subreddit subscribers](https://img.shields.io/reddit/subreddit-subscribers/inventree?style=social)](https://www.reddit.com/r/InvenTree/)
2017-04-11 07:36:51 +00:00
2022-05-01 23:46:06 +00:00
<h4>
<a href="https://demo.inventree.org/">View Demo</a>
<span> · </span>
<a href="https://docs.inventree.org/en/latest/">Documentation</a>
2022-05-01 23:46:06 +00:00
<span> · </span>
<a href="https://github.com/inventree/InvenTree/issues/new?template=bug_report.md&title=[BUG]">Report Bug</a>
<span> · </span>
<a href="https://github.com/inventree/InvenTree/issues/new?template=feature_request.md&title=[FR]">Request Feature</a>
</h4>
</div>
2022-05-01 23:46:06 +00:00
<!-- About the Project -->
## :star2: About the Project
2021-11-10 21:39:28 +00:00
InvenTree is an open-source Inventory Management System which provides powerful low-level stock control and part tracking. The core of the InvenTree system is a Python/Django database backend which provides an admin interface (web-based) and a REST API for interaction with external interfaces and applications. A powerful plugin system provides support for custom applications and extensions.
2021-11-10 21:39:28 +00:00
Check out [our website](https://inventree.org) for more details.
2021-03-01 03:49:13 +00:00
2022-05-01 23:46:06 +00:00
<!-- Roadmap -->
### :compass: Roadmap
2021-03-01 03:49:13 +00:00
Want to see what we are working on? Check out the [roadmap tag](https://github.com/inventree/InvenTree/issues?q=is%3Aopen+is%3Aissue+label%3Aroadmap) and [horizon milestone](https://github.com/inventree/InvenTree/milestone/42).
2022-02-26 22:10:55 +00:00
2022-05-01 23:46:06 +00:00
<!-- Integration -->
### :hammer_and_wrench: Integration
2022-05-01 23:46:06 +00:00
InvenTree is designed to be **extensible**, and provides multiple options for **integration** with external applications or addition of custom plugins:
* [InvenTree API](https://docs.inventree.org/en/latest/api/api/)
* [Python module](https://docs.inventree.org/en/latest/api/python/python/)
* [Plugin interface](https://docs.inventree.org/en/latest/extend/plugins)
* [Third party tools](https://docs.inventree.org/en/latest/extend/integrate)
2022-05-01 23:46:06 +00:00
<!-- TechStack -->
### :space_invader: Tech Stack
<details>
<summary>Server</summary>
<ul>
<li><a href="https://www.python.org/">Python</a></li>
<li><a href="https://www.djangoproject.com/">Django</a></li>
<li><a href="https://www.django-rest-framework.org/">DRF</a></li>
<li><a href="https://django-q.readthedocs.io/">Django Q</a></li>
<li><a href="https://django-allauth.readthedocs.io/">Django-Allauth</a></li>
</ul>
</details>
<details>
<summary>Database</summary>
<ul>
<li><a href="https://www.postgresql.org/">PostgreSQL</a></li>
<li><a href="https://www.mysql.com/">MySQL</a></li>
<li><a href="https://www.sqlite.org/">SQLite</a></li>
<li><a href="https://redis.io/">Redis</a></li>
</ul>
</details>
<details>
<summary>Client</summary>
<ul>
<li><a href="https://getbootstrap.com/">Bootstrap</a></li>
<li><a href="https://jquery.com/">jQuery</a></li>
<li><a href="https://bootstrap-table.com/">Bootstrap-Table</a></li>
</ul>
</details>
<details>
<summary>DevOps</summary>
<ul>
<li><a href="https://hub.docker.com/r/inventree/inventree">Docker</a></li>
<li><a href="https://crowdin.com/project/inventree">Crowdin</a></li>
<li><a href="https://coveralls.io/github/inventree/InvenTree">Coveralls</a></li>
<li><a href="https://app.deepsource.com/gh/inventree/InvenTree">DeepSource</a></li>
<li><a href="https://packager.io/gh/inventree/InvenTree">Packager.io</a></li>
2022-05-01 23:46:06 +00:00
</ul>
</details>
<!-- Getting Started -->
## :toolbox: Deployment / Getting Started
2020-05-12 12:13:50 +00:00
2022-05-01 23:46:06 +00:00
There are several options to deploy InvenTree.
2022-05-01 23:46:06 +00:00
<div align="center"><h4>
<a href="https://docs.inventree.org/en/latest/start/docker/">Docker</a>
2022-05-01 23:46:06 +00:00
<span> · </span>
<a href="https://inventree.org/digitalocean"><img src="https://www.deploytodo.com/do-btn-blue-ghost.svg" alt="Deploy to DO" width="auto" height="40" /></a>
2022-11-25 01:24:24 +00:00
<span> · </span>
<a href="https://docs.inventree.org/en/latest/start/install/">Bare Metal</a>
2022-05-01 23:46:06 +00:00
</h4></div>
Single line install - read [the docs](https://docs.inventree.org/en/latest/start/installer/) for supported distros and details about the function:
Add package-based install method (#3743) * Add runtime * add procfile * add settings for packaging * use heroku buildpack * maybe a hash works? * try brnach instead of tag or hash * remove reference alltogether * maybe this syntax? * switch back to normal buildpack * and heroku again * try official sample * maybe a tar? * just git clone? * lower version * lower version * switch of settings * try this again * maybe install python before? * no sudo? * just build for ubuntu? * set runtime lower and use custom buildpack * remove initial command * add release command * do not collect static while releaseing * switch to custom backend * Update .pkgr.yml * new backend * upgrade runtime version * consolidate env * update python version * add debian as target * fix os name * extend requirements * remove release command * remove ssl dep * add worker command * add scripts * debug listing * make scripts executable * use python3 * add python install * add python as dep * debug step * switch to app home * set paths right * check local command * remove path * update path * add sample install script * more debugging * dbg msg * more enviroment stuff * more dbugging * more defined install script * reduce function * add debug script * and more * remove before * reduce lines * cleanup deps * maybe this way? * rm " * rename env * fix files * use dot annotation * ls * add msgs * move activation * ref? * use source * use point annotation * remove activate * create env and add it to the enviroment * use full paths * move python init * use modern python * use version numbers for ubuntu * add default env vars ( for now) * use export * use shorthand command * add more variables * use apphome reference in paths * add wasyprint dependencies * also use wheels * add gettext for comiling messages * add nginx setting * remove postgres from required stack * refactor fiel configs * make sure parent dirs exsist * add wheels * move python setup again * update packe name * update gunicron command * move to config * try cleaner procfile * use python 3 wheels * update service def * Add enviroment settings to packaging * restart nginx * remove slack * change nginx config name * fix styles * set permissions on update * Add single line install to README * move nginx names back * use production sample as nginx config * fix sed statement * cleaner nginx setup * keep configs in config file instead of packaging index * fix sed connamds to remove spaces * reintroduce spaces * Also disable debug mode * fix file permissions * remove unneeded commands * readd missing spaces * add admin user generation * Show public ipadress in final message * small cleanups * Add log to setup * remove logging * remove logging parts * chown all dirs * run update command as right user already * set path before running command * fix permission setup * switch right assignment * run commands with sudo * pass in envs * preserve only selected enviroment * show enviroment variables * silence curl * fix envs * clean up final message * move nginx file to variable * make admin creation conditional * a bit more overview for setup variables * test if nginx is available * unlink instead of delet * clean up functions * well that was dumb * ok double dumb - now i tested it * use config for admin generation * fix logic * show value - not call it * switch functions to sh * fix syntax * add admin data to exposed envs * remove keeping of admin pwd * switch to true/false * make nginx file location configureable * use gunicorn instead * fix syntax * set base dir * move env to seperate function * Also use/write database settings * use conf values if available * format sh * update passed envs * fix dep * enable installing extra packages via env (ie database backends) * ann more logging steps * add more debuggin steps * get local envs * add more debug and reorder * more code for testing * fix call * Add debug msg * turn install quiet * fix syntax * reduce debugging * add log step * add datestamp * add marker to inv execution * fix syntax * add codeowner
2022-10-15 23:14:18 +00:00
```bash
wget -qO install.sh https://get.inventree.org && bash install.sh
Add package-based install method (#3743) * Add runtime * add procfile * add settings for packaging * use heroku buildpack * maybe a hash works? * try brnach instead of tag or hash * remove reference alltogether * maybe this syntax? * switch back to normal buildpack * and heroku again * try official sample * maybe a tar? * just git clone? * lower version * lower version * switch of settings * try this again * maybe install python before? * no sudo? * just build for ubuntu? * set runtime lower and use custom buildpack * remove initial command * add release command * do not collect static while releaseing * switch to custom backend * Update .pkgr.yml * new backend * upgrade runtime version * consolidate env * update python version * add debian as target * fix os name * extend requirements * remove release command * remove ssl dep * add worker command * add scripts * debug listing * make scripts executable * use python3 * add python install * add python as dep * debug step * switch to app home * set paths right * check local command * remove path * update path * add sample install script * more debugging * dbg msg * more enviroment stuff * more dbugging * more defined install script * reduce function * add debug script * and more * remove before * reduce lines * cleanup deps * maybe this way? * rm " * rename env * fix files * use dot annotation * ls * add msgs * move activation * ref? * use source * use point annotation * remove activate * create env and add it to the enviroment * use full paths * move python init * use modern python * use version numbers for ubuntu * add default env vars ( for now) * use export * use shorthand command * add more variables * use apphome reference in paths * add wasyprint dependencies * also use wheels * add gettext for comiling messages * add nginx setting * remove postgres from required stack * refactor fiel configs * make sure parent dirs exsist * add wheels * move python setup again * update packe name * update gunicron command * move to config * try cleaner procfile * use python 3 wheels * update service def * Add enviroment settings to packaging * restart nginx * remove slack * change nginx config name * fix styles * set permissions on update * Add single line install to README * move nginx names back * use production sample as nginx config * fix sed statement * cleaner nginx setup * keep configs in config file instead of packaging index * fix sed connamds to remove spaces * reintroduce spaces * Also disable debug mode * fix file permissions * remove unneeded commands * readd missing spaces * add admin user generation * Show public ipadress in final message * small cleanups * Add log to setup * remove logging * remove logging parts * chown all dirs * run update command as right user already * set path before running command * fix permission setup * switch right assignment * run commands with sudo * pass in envs * preserve only selected enviroment * show enviroment variables * silence curl * fix envs * clean up final message * move nginx file to variable * make admin creation conditional * a bit more overview for setup variables * test if nginx is available * unlink instead of delet * clean up functions * well that was dumb * ok double dumb - now i tested it * use config for admin generation * fix logic * show value - not call it * switch functions to sh * fix syntax * add admin data to exposed envs * remove keeping of admin pwd * switch to true/false * make nginx file location configureable * use gunicorn instead * fix syntax * set base dir * move env to seperate function * Also use/write database settings * use conf values if available * format sh * update passed envs * fix dep * enable installing extra packages via env (ie database backends) * ann more logging steps * add more debuggin steps * get local envs * add more debug and reorder * more code for testing * fix call * Add debug msg * turn install quiet * fix syntax * reduce debugging * add log step * add datestamp * add marker to inv execution * fix syntax * add codeowner
2022-10-15 23:14:18 +00:00
```
Refer to the [getting started guide](https://docs.inventree.org/en/latest/start/install/) for a full set of installation and setup instructions.
<!-- Mobile App -->
## :iphone: Mobile App
InvenTree is supported by a [companion mobile app](https://docs.inventree.org/en/latest/app/app/) which allows users access to stock control information and functionality.
<div align="center"><h4>
<a href="https://play.google.com/store/apps/details?id=inventree.inventree_app">Android Play Store</a>
<span> · </span>
<a href="https://apps.apple.com/au/app/inventree/id1581731101#?platform=iphone">Apple App Store</a>
</h4></div>
2022-05-01 23:46:06 +00:00
<!-- Contributing -->
## :wave: Contributing
2020-05-20 00:45:43 +00:00
Contributions are welcomed and encouraged. Please help to make this project even better! Refer to the [contribution page](CONTRIBUTING.md).
2022-05-01 23:46:06 +00:00
<!-- Translation -->
## :scroll: Translation
2022-02-08 20:56:31 +00:00
Native language translation of the InvenTree web application is [community contributed via crowdin](https://crowdin.com/project/inventree). **Contributions are welcomed and encouraged**.
2022-05-01 23:46:06 +00:00
<!-- Sponsor -->
## :money_with_wings: Sponsor
2020-05-20 00:45:43 +00:00
If you use InvenTree and find it to be useful, please consider [sponsoring the project](https://github.com/sponsors/inventree).
2022-05-01 23:46:06 +00:00
<!-- Acknowledgments -->
## :gem: Acknowledgements
We would like to acknowledge a few special projects:
- [PartKeepr](https://github.com/partkeepr/PartKeepr) as a valuable predecessor and inspiration
- [Readme Template](https://github.com/Louis3797/awesome-readme-template) for the template of this page
Find a full list of used third-party libraries in [our documentation](https://docs.inventree.org/en/latest/credits/).
2022-05-01 23:46:06 +00:00
## :heart: Support
<p>This project is supported by the following sponsors:</p>
<p align="center">
<a href="https://github.com/MartinLoeper"><img src="https://github.com/MartinLoeper.png" width="60px" alt="Martin Löper" /></a>
<a href="https://github.com/lippoliv"><img src="https://github.com/lippoliv.png" width="60px" alt="Oliver Lippert" /></a>
<a href="https://github.com/lfg-seth"><img src="https://github.com/lfg-seth.png" width="60px" alt="Seth Smith" /></a>
<a href="https://github.com/snorkrat"><img src="https://github.com/snorkrat.png" width="60px" alt="" /></a>
<a href="https://github.com/spacequest-ltd"><img src="https://github.com/spacequest-ltd.png" width="60px" alt="SpaceQuest Ltd" /></a>
<a href="https://github.com/appwrite"><img src="https://github.com/appwrite.png" width="60px" alt="Appwrite" /></a>
<a href="https://github.com/PricelessToolkit"><img src="https://github.com/PricelessToolkit.png" width="60px" alt="" /></a>
<a href="https://github.com/cabottech"><img src="https://github.com/cabottech.png" width="60px" alt="Cabot Technologies" /></a>
<a href="https://github.com/markus-k"><img src="https://github.com/markus-k.png" width="60px" alt="Markus Kasten" /></a>
<a href="https://github.com/jefffhaynes"><img src="https://github.com/jefffhaynes.png" width="60px" alt="Jess Haynes" /></a>
</p>
<p>With ongoing resources provided by:</p>
<p align="center">
<a href="https://inventree.org/digitalocean">
<img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_horizontal_blue.svg" width="201px" alt="Servers by Digital Ocean">
</a>
<a href="https://www.netlify.com"> <img src="https://www.netlify.com/v3/img/components/netlify-color-bg.svg" alt="Deploys by Netlify" /> </a>
<a href="https://crowdin.com"> <img src="https://crowdin.com/images/crowdin-logo.svg" alt="Translation by Crowdin" /> </a>
</p>
2022-05-01 23:46:06 +00:00
<!-- License -->
## :warning: License
Distributed under the [MIT](https://choosealicense.com/licenses/mit/) License. See [LICENSE.txt](https://github.com/inventree/InvenTree/blob/master/LICENSE) for more information.