Grocy
Grocy is a web application for household stock, groceries, chores, recipes, and meal planning.
Why consider Grocy?
Grocy is an open-source, web-based self-hosted groceries and household management solution for your home. It provides inventory tracking, barcode scanning, meal planning, recipe management, and chore tracking via a responsive web interface and RESTful API.
Learn Grocy by building
Practical setup notes, real use cases, and copy-ready examples in one focused guide.
In this guide4 sections
Self-Hosted Household and Grocery Management with Grocy
Managing kitchen inventory, purchase cycles, and household chores often involves disconnected spreadsheets or manual notes. As outlined on the official project page on GitHub, Grocy is a web-based self-hosted groceries & household management solution for your home. By bringing enterprise resource planning principles to household logistics, the software enables individuals and families to keep track of pantry stock, plan meals efficiently, and maintain household equipment from a single unified self-hosted interface.
The application is distributed as open-source software under the permissive terms of the MIT License, granting users full control over their deployment and data storage. Built primarily using PHP and SQLite, the platform avoids heavy relational database overhead, making it lightweight enough to run smoothly on small home servers, single-board computers, or virtual private servers without requiring dedicated database maintenance.
Core Inventory and Barcode Capabilities
Stock management is central to reducing domestic waste and avoiding unnecessary purchases. According to the official website, users can define minimum stock amounts of your loved products and never think about "do I need noodles or are there enough at home?". When stock levels fall below defined thresholds, items are automatically scheduled for replenishment, and expiration date tracking ensures that perishable items are consumed before spoiling.
Entering newly purchased goods is simplified through integrated barcode lookup functionality. As documented in the Grocy README, a plugin for Open Food Facts is included and used by default to fetch product descriptions and metadata automatically. Scanning can be performed using physical handheld USB laser scanners or directly via device cameras using built-in web stream processing.
For tracking distinct items and batch entries, the system provides a specialized identification standard. As detailed in the Grocycode documentation, Grocycode is, in essence, a simple way to reference to arbitrary Grocy entities. This serialization format enables users to print standardized labels and scan barcodes that resolve directly to individual stock entries, specific batteries, or household chores.
Recipe Management and Household Logistics
Meal preparation is integrated directly with live pantry records. Details on the official website emphasize how users can maintain your recipes and see at a glance whether everything you need is in stock at home. The system calculates recipe feasibility based on current quantities, indicates which recipes utilize soon-to-expire ingredients, and can automatically transfer missing ingredients to the shopping list.
Beyond groceries, the platform accommodates broader home maintenance tasks and device documentation. As described on grocy.info, administrators can keep all the instruction manuals and important information about your devices in one place to have them at hand when needed. Additionally, to any entity (like products or chores) any custom fields can be attached, allowing users to track user-defined properties or build custom tracking lists tailored to their specific household routines.
Web Server Configuration and Deployment
Deploying Grocy on a standard web server requires a PHP runtime with several essential modules enabled. As stated in the Grocy README, the required PHP extensions: fileinfo, pdo_sqlite, gd, ctype, intl, zlib, mbstring are necessary to ensure proper operation of image processing, barcode recognition, and database connectivity. The web server document root must point to the public subfolder of the application.
When hosting Grocy behind an Nginx web server, URL rewriting must be configured in your server location block so requests route cleanly through the front controller. The Grocy README instructs administrators to include try_files $uri /index.php$is_args$query_string; in your location block if you use nginx:
try_files $uri /index.php$is_args$query_string;For interface customizations without modifying upstream application code, Grocy supports injecting custom stylesheets and scripts. The Grocy README specifies that 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. This ensures user-defined scripts remain intact across regular software updates.
Upgrades and Long-Term Maintenance
System integrations and third-party extensions interact with the backend through a complete programmatic interface. The project documentation highlights that the web frontend uses exactly this API for pretty much everything. So everything you can do there is also possible via the API. This architecture makes it straightforward to connect external mobile companion apps, barcode printers, or home automation platforms like Home Assistant.
Upgrades are managed by unpacking the latest archive release while preserving your persistent data folder. Stable production builds such as version 4.6.0 execute automatic database schema migrations upon visiting the root web route, ensuring seamless transitions between major feature iterations.
Related tools
More options with a similar category or technology profile.
McFly
Fly through your shell history with an intelligent neural network search engine.
cheat
Interactive command-line cheatsheets for system administrators and software engineers.
Pipenv
Python development workflow for humans uniting Pipfile, pip, and virtualenv.
Rye
Comprehensive Python package and workspace management tool written in Rust.