InvenTree/README.md

178 lines
7.8 KiB
Markdown
Raw Normal View History

2022-05-01 23:46:06 +00:00
<div align="center">
<img src="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)
![Docker Build](https://github.com/inventree/inventree/actions/workflows/docker.yaml/badge.svg)
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
![Lines of code](https://img.shields.io/tokei/lines/github/inventree/InvenTree)
![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://inventree.readthedocs.io/en/latest/">Documentation</a>
<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
2022-05-01 23:46:06 +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.
2021-11-10 21:39:28 +00:00
2022-05-20 11:20:55 +00:00
InvenTree is designed to be lightweight and easy to use for SME or hobbyist applications, where many existing stock management solutions are bloated and cumbersome to use. Updating stock is a single-action process and does not require a complex system of work orders or stock transactions.
2021-04-21 12:04:46 +00:00
2022-05-01 23:46:06 +00:00
Powerful business logic works in the background to ensure that stock tracking history is maintained, and users have ready access to stock level information.
2021-04-21 12:04:46 +00:00
2022-05-01 23:46:06 +00:00
<!-- Features -->
2021-03-01 03:49:13 +00:00
2022-05-01 23:46:06 +00:00
### :dart: Features
2021-03-01 03:49:13 +00:00
2022-05-01 23:46:06 +00:00
- Organize Parts and BOMs
- Manage Suppliers
- Instant Stock Knowledge
- Extend and Customize to fit your usage
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
2022-05-01 23:46:06 +00:00
* [x] Plugins
* [ ] Improved Importers
* [ ] Custom Workflow Processes
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:
2022-05-01 23:46:06 +00:00
* [InvenTree API](https://inventree.readthedocs.io/en/latest/extend/api/)
* [Python module](https://inventree.readthedocs.io/en/latest/extend/python)
* [Plugin interface](https://inventree.readthedocs.io/en/latest/extend/plugins)
* [Third party tools](https://inventree.readthedocs.io/en/latest/extend/integrate)
<!-- 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://packager.io/gh/inventree/InvenTree">Packager.io</a></li>
2022-05-01 23:46:06 +00:00
</ul>
</details>
<!-- Getting Started -->
## :toolbox: Getting Started
2021-04-30 23:12:36 +00:00
Refer to the [getting started guide](https://inventree.readthedocs.io/en/latest/start/install/) for installation and setup instructions.
2022-05-01 23:46:06 +00:00
<!-- Mobile App -->
## :iphone: Mobile App
2022-05-20 11:20:55 +00:00
InvenTree is supported by a [companion mobile app](https://inventree.readthedocs.io/en/latest/app/app/) which allows users access to stock control information and functionality.
2022-05-01 23:46:06 +00:00
<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>
2020-05-12 12:13:50 +00:00
2022-05-01 23:46:06 +00:00
<!-- Deploy -->
## :train: Deploy
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://inventree.readthedocs.io/en/latest/start/docker/">Docker</a>
<span> · </span>
2022-11-25 01:24:24 +00:00
<a href="https://marketplace.digitalocean.com/apps/inventree?refcode=d6172576d014"><img src="https://www.deploytodo.com/do-btn-blue-ghost.svg" alt="Deploy to DO" width="auto" height="40" /></a>
<span> · </span>
2022-05-01 23:46:06 +00:00
<a href="https://inventree.readthedocs.io/en/latest/start/install/">Bare Metal</a>
</h4></div>
Single line install - read [the docs](https://inventree.readthedocs.io/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 -Nq https://raw.githubusercontent.com/InvenTree/InvenTree/master/contrib/install.sh && 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
```
2022-05-01 23:46:06 +00:00
<!-- Contributing -->
## :wave: Contributing
2020-05-20 00:45:43 +00:00
2022-05-20 11:20:55 +00:00
Contributions are welcomed and encouraged. Please help to make this project even better!
2022-05-01 23:46:06 +00:00
Refer to the [contribution page in the docs ](https://inventree.readthedocs.io/en/latest/contribute/) and check out [contributing.md](CONTRIBUTING.md).
<!-- 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**.
To contribute to the translation effort, navigate to the [InvenTree crowdin project](https://crowdin.com/project/inventree), create a free account, and start making translations suggestions for your language of choice!
2022-05-01 23:46:06 +00:00
<!-- Sponsor -->
## :money_with_wings: Sponsor
2020-05-20 00:45:43 +00:00
2022-05-20 11:20:55 +00:00
If you use InvenTree and find it to be useful, please consider making a donation toward its continued development.
2020-05-20 00:45:43 +00:00
[Donate via PayPal](https://paypal.me/inventree?locale.x=en_AU)
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://inventree.readthedocs.io/en/latest/credits/).
<!-- 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.