5.4 KiB
grocy
ERP beyond your fridge
Give it a try
Public demo of the latest version → https://demo.grocy.info
Motivation
A household needs to be managed. I did this so far (almost 10 years) with my first self written software (a C# windows forms application) and with a bunch of Excel sheets. The software is a pain to use and Excel is Excel. So I searched for and tried different things for a (very) long time, nothing 100 % fitted, so this is my aim for a "complete houshold management"-thing.
What it is about
For now my main focus is on stock management, ERP your fridge!
How to install
Just unpack the latest release on your PHP (SQLite extension required, currently only tested with PHP 7.2) enabled webserver (webservers root should point to the /public
directory), copy config-dist.php
to data/config.php
, edit it to your needs, ensure that the data
directory is writable and you're ready to go.
Default login is user admin
with password admin
- see the data/config.php
file. Alternatively clone this repository and install Composer and Yarn dependencies manually.
If you use nginx as your webserver, please include try_files $uri /index.php;
in your location block.
If, however, your webserver does not support URL rewriting, set DISABLE_URL_REWRITING
in data/config.php
(Setting('DISABLE_URL_REWRITING', true);
).
How to update
Just overwrite everything with the latest release while keeping the /data
directory, check config-dist.php
for new configuration options and add them to your data/config.php
(the default from values config-dist.php
will be used for not in data/config.php
defined settings).
Localization
grocy is fully localizable - the default language is English (integrated into code), a German localization is always maintained by me. There is one file per language in the localization
directory, if you want to create a translation, it's best to copy localization/de.php
to a new one (e. g. localization/it.php
) and translating all strings there. (Language can be changed in data/config.php
, e. g. Setting('CULTURE', 'it');
)
Maintaining your own localization
As the German translation will always be the most complete one, for maintaining your localization it would be easiest when you compare your localization with the German one with a diff tool of your choice.
Things worth to know
REST API & data model documentation
See the integrated Swagger UI instance on /api.
Barcode readers
Some fields also allow to select a value by scanning a barcode. It works best when your barcode reader prefixes every barcode with a letter which is normally not part of a item name (I use a $
) and sends a TAB
after a scan.
Input shorthands for date fields
For (productivity) reasons all date (and time) input fields use the ISO-8601 format regardless of localization. The following shorthands are available:
MMDD
gets expanded to the given day on the current year in proper notation- Example:
0517
will be converted to2018-05-17
- Example:
YYYYMMDD
gets expanded to the proper ISO-8601 notation- Example:
20190417
will be converted to2019-04-17
- Example:
x
gets expanded to2999-12-31
(which I use for products which never expire)- Down/up arrow keys will increase/decrease the date by one day
- Right/left arrow keys will increase/decrease the date by 1 week
Keyboard shorthands for buttons
Wherever a button contains a bold highlighted letter, this is a shortcut key.
Example: Button "Add as new product" can be "pressed" by using the P
key on your keyboard.
Barcode lookup via external services
Products can be directly added to the database via looking them up against external services by a barcode.
This is currently only possible through the REST API.
There is no plugin included for any service, see the reference implementation in data/plugins/DemoBarcodeLookupPlugin.php
.
Database migrations
Database schema migration is automatically done when visiting the root (/
) route (click on the logo in the left upper edge).
Adding your own CSS or JS without to have to modify the application itself
- When the file
data/custom_js.html
exists, the contents of the file will be added just before</body>
(end of body) on every page - When the file
data/custom_css.html
exists, the contents of the file will be added just before</head>
(end of head) on every page
Demo mode
When the file data/demo.txt
exists, the application will work in a demo mode which means authentication is disabled and some demo data will be generated during the database schema migration.
Embedded mode
When the file /embedded.txt
exists, it must contain a valid and writable path which will be used as the data directory instead of data/
and authentication will be disabled (used in grocy-desktop).
Screenshots
Dashboard
Purchase - with barcode scan
Consume - with manual search
License
The MIT License (MIT)