grocy is a free, open source erp & operations project written in Blade and released under MIT. It has 9,510 GitHub stars, 806 forks and 135 open issues, and was last pushed 27 hours ago. On this registry it ranks #2 of 25 tracked projects in ERP & Operations, with 5 head-to-head comparisons available. It gained 10 stars over the last 3 tracked days.

What is grocy?

Grocy is a self-hosted, web-based groceries and household management application — "ERP beyond your fridge" — for people who want to track pantry stock, shopping and meal planning on hardware they control.

What it is

Grocy is an open-source PHP application, distributed under the MIT license and listed in this registry under Business Software / ERP & Operations. Its code is predominantly Blade templates and it stores data in SQLite, so a household's inventory lives in a local database file on the machine running the app rather than in a vendor's cloud. It is a hobby project by Bernd Bestel, maintained in the open on GitHub with 9,507 stars, 806 forks and 135 open issues at the time of writing, and it carries the self-hosted and ownyourdata topics that describe its positioning. The project website at grocy.info carries the feature list and installation guides, and two public demos are offered — one tracking the stable release branch, one tracking the development master branch.

The problem it addresses is the gap between general-purpose tools and the way a household actually consumes goods. A home has to track stock levels, quantities, expiry dates and what can be cooked from what is on the shelf, and the tools people reach for, such as spreadsheets and notes, model none of that. Grocy applies the stock, quantity and consumption tracking conventions of business ERP systems to a private home instead of a warehouse or retail operation, keeping the resulting data under the operator's control.

Key capabilities

  • Web-based groceries and household management covering stock, shopping and consumption, reflected in the erp, groceries and food topics.
  • Meal planning as a first-class feature area, captured by the meal-planner topic.
  • Runs on PHP 8.5 with SQLite 3.40 or newer, requiring the fileinfo, pdo_sqlite, gd, ctype, intl, zlib and mbstring PHP extensions.
  • Official Docker image linuxserver/grocy for containerised deployment.
  • Grocy Desktop packages the application as a standalone Windows program, downloadable from releases.grocy.info/latest-desktop and published on the Microsoft Store, with no webserver to manage.
  • Fully localizable: English is built into the code, a German localization is maintained by the author, and further translations come from Transifex; the default is set with Setting('DEFAULT_LOCALE', 'de'); in data/config.php, and each user can pick a different language in user settings.
  • File-based configuration and updates: options live in data/config.php, copied from config-dist.php, and on Linux update.sh overwrites an installation with the latest release while writing a .tgz backup to data/backups, deleting backups older than 60 days.

Who uses it and how

  • Home self-hosters who already run a webserver, pointing the document root at public and adding try_files $uri /index.php$is_args$query_string; when nginx sits in front.
  • Container-oriented operators deploying the linuxserver/grocy image rather than managing PHP and its extensions themselves.
  • Windows users who want the desktop build, where installation is described as clicking "next" twice, including those installing from the Microsoft Store.
  • Translators and multilingual households: the pre-release demo accepts any translation at least 70 percent complete and pulls from Transifex at ten minutes past every hour.

Getting started

Unpack the latest release from releases.grocy.info/latest, copy config-dist.php to data/config.php, edit it, make the data directory writable and point the webserver root at public; alternatively run the linuxserver/grocy Docker image or the Grocy Desktop build. The default login is user admin with password admin, which must be changed immediately from the user menu in the top right corner.

How it compares

No list of paid products that Grocy replaces is provided in the facts, and no similar open-source tool is named alongside it. On the evidence available, it stands alone in this registry.

When to use it — and when not to

Self-hosting means operating the stack yourself: a PHP 8.5 webserver with the required extensions and a writable data directory holding a SQLite database, plus keeping that installation current across releases. It is a hobby project by a single author who states that support happens only through the GitHub issue tracker and the r/grocy subreddit, with no private messages or calls, so anyone who needs commercial support or a service-level agreement should look elsewhere. The in-repository README is also thin on feature detail, deferring to the project website with "See the website", so evaluation depends on the public demos rather than the documentation shipped in the repository.

project readme (upstream, from github) — read inline

Logo

ERP beyond your fridge

Grocy is a web-based self-hosted groceries & household management solution for your home

This is a hobby project by Bernd Bestel


Give it a try

Features

See the website. →

Questions / Help / Bug Reports / Feature Requests

Please don't send me private messages or call me regarding anything Grocy. I check the issue tracker and the subreddit pretty much daily, but don't provide any support beyond that.

Community contributions

See the website for a list of community contributed Add-ons / Tools. → https://grocy.info/addons

How to install

Checkout Grocy Desktop, if you want to run Grocy without having to manage a webserver just like a normal (Windows) desktop application.

Directly download the latest release (also available via the Microsoft Store) - the installation is nothing more than just clicking 2 times "next".

Grocy is technically a pretty simple PHP application, so the basic notes to get it running are:

  • Unpack the latest release
  • Copy config-dist.php to data/config.php + edit to your needs
  • Ensure that the data directory is writable
  • The webserver root should point to the public directory
  • Include try_files $uri /index.php$is_args$query_string; in your location block if you use nginx
    • Or disable URL rewriting (see the option DISABLE_URL_REWRITING in data/config.php)
  • → Default login is user admin with password admin, please change the password immediately (user menu at the top right corner)

Alternatively clone this repository (the release branch always references the latest released version) and install Composer and Yarn dependencies manually.

See the website for more installation guides and troubleshooting help. → https://grocy.info/links

Platform support

  • PHP 8.5 (with SQLite 3.40+)
    • Required PHP extensions: fileinfo, pdo_sqlite, gd, ctype, intl, zlib, mbstring
  • Recent Firefox, Chrome or Edge

How to run using Docker

https://hub.docker.com/r/linuxserver/grocy

How to update

  • 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 where appropriate (the default values from config-dist.php will be used for not in data/config.php defined settings)

If you run Grocy on Linux, there is also update.sh (remember to make the script executable via 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).

Localization

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 on Transifex if your language is incomplete or not available yet.

The default language can be set in data/config.php, e. g. Setting('DEFAULT_LOCALE', 'de'); and there is also a user setting (see the user settings page) to set a different language per user.

The pre-release demo is available for any translation which is at least 70 % complete and will pull the translations from Transifex 10 minutes past every hour, so you can have a kind of instant preview of your contributed translations. Thank you!

Also any translation which once reached a completion level of 70 % (strings resource) will be included in releases.

RTL languages are not yet supported.

Motivation

A household needs to be managed. Before Grocy I did this (for almost 10 years) using my first self written software (a C# Windows forms application) and with a bunch of Excel sheets. The software was a pain to use at the end 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!

Things worth to know

REST API

See the integrated Swagger UI instance on /api.

The web frontend uses exactly this API for pretty much everything. So everything you can do there is also possible via the API.

Barcode readers & camera scanning

Some fields (with a barcode icon) 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.

Additionally it's also possible to use your device camera to scan a barcode by using the camera button on the right side of the corresponding input field (powered by ZXing, totally offline / client-side camera stream processing. Please note due to browser security restrictions, this only works when serving Grocy via a secure connection (https://)). Here and there are quick video demos of that.

My personal recommendation: Use a USB barcode laser scanner. They are cheap and work 1000% better, faster, under any lighting condition and from any angle.

Barcode lookup via external services

Products can be directly added to the database via looking them up against external services by a barcode.

This can be done in-place using the product picker workflow "External barcode lookup" (the workflow dialog is displayed when entering something unknown in any product input field) Quick video demo:

A plugin for Open Food Facts is included and used by default (see the data/config.php option STOCK_BARCODE_LOOKUP_PLUGIN).

See that plugin or plugins/DemoBarcodeLookupPlugin.php for a commented example implementation if you want to build a plugin.

Input shorthands for date fields

For (productivity) reasons all date (and time) input (and display) 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, if > today, or to the given day next year, if
  • Quick video demo on Android/Chrome:

D

readme truncated — read the full docs on github

Frequently asked questions

Is grocy free to use?

grocy is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does grocy do?

ERP beyond your fridge - Grocy is a web-based self-hosted groceries & household management solution for your home

What is grocy written in?

grocy is primarily written in Blade. Its source is publicly available at https://github.com/grocy/grocy, and it has 9,510 GitHub stars.