ERP beyond your fridge
Give it a try
- Public demo of the latest stable version → https://demo.grocy.info
- Public demo of the latest pre-release version (current master branch) → https://demo-prerelease.grocy.info
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 household management"-thing. ERP your fridge!
How to install
There is now grocy-desktop if you want to run grocy without a webserver just like a normal (windows) desktop application.
Just unpack the latest release on your PHP (SQLite (3.8.3 or higher) extension required, currently only tested with PHP 7.2) enabled webserver (webservers root should point to the
public directory), copy
data/config.php, edit it to your needs, ensure that the
data directory is writable and you're ready to go, (to make writable
chown -R www-data:www-data data/). Default login is user
admin with password
admin, please change the password immediately (see user menu).
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
How to run using Docker
See grocy/grocy-docker for instructions.
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). Just to be sure, please empty
If you run grocy on Linux, there is also
update.sh (remember to make the script executable,
chmod +x update.sh and ensure that you have
unzip installed) which does exactly this and additionally creates a backup (
.tgz archive) of the current installation in
data/backups (backups older than 60 days will be deleted during the update).
grocy is fully localizable - the default language is English (integrated into code), a German localization is always maintained by me.
You can easily help translating grocy at https://www.transifex.com/grocy/grocy, if your language is incomplete or not available yet.
(Language can be changed in
data/config.php, e. g.
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.
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:
MMDDgets expanded to the given day on the current year, if > today, or to the given day next year, if < today, in proper notation
0517will be converted to
YYYYMMDDgets expanded to the proper ISO-8601 notation
20190417will be converted to
YYYYMM+gets expanded to the end of the given month in the given year in proper notation
201807ewill be converted to
xgets expanded to
2999-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
Database schema migration is automatically done when visiting the root (
/) route (click on the logo in the left upper edge).
Disable certain features
If you don't use certain feature sets of grocy (for example if you don't need "Chores"), there are feature flags per major feature set to hide/disable the related UI elements (see
Adding your own CSS or JS without to have to modify the application itself
- When the file
data/custom_js.htmlexists, the contents of the file will be added just before
</body>(end of body) on every page
- When the file
data/custom_css.htmlexists, the contents of the file will be added just before
</head>(end of head) on every page
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.
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).
In embedded mode, settings can be overridden by text files in
data/settingoverrides, the file name must be
<SettingName>.txt (e. g.
BASE_URL.txt) and the content must be the setting value (normally one single line).
Purchase - with barcode scan
Consume - with manual search
The MIT License (MIT)