{"id":13490525,"url":"https://github.com/grocy/grocy","last_synced_at":"2025-05-12T15:33:04.874Z","repository":{"id":38375534,"uuid":"88370518","full_name":"grocy/grocy","owner":"grocy","description":"ERP beyond your fridge - Grocy is a web-based self-hosted groceries \u0026 household management solution for your home","archived":false,"fork":false,"pushed_at":"2025-04-02T18:50:48.000Z","size":23651,"stargazers_count":7420,"open_issues_count":127,"forks_count":609,"subscribers_count":86,"default_branch":"master","last_synced_at":"2025-04-23T17:19:21.990Z","etag":null,"topics":["erp","food","groceries","grocy","home","meal-planner","ownyourdata","php","self-hosted"],"latest_commit_sha":null,"homepage":"https://grocy.info","language":"Blade","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grocy.png","metadata":{"files":{"readme":"README.md","changelog":"changelog/10_1.4.0_2017-06-04.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":["https://grocy.info/#say-thanks"]}},"created_at":"2017-04-15T19:45:44.000Z","updated_at":"2025-04-23T08:02:06.000Z","dependencies_parsed_at":"2023-10-01T21:50:41.580Z","dependency_job_id":"fd2b58f5-7b5e-45fc-a642-b3e58b5d1541","html_url":"https://github.com/grocy/grocy","commit_stats":null,"previous_names":[],"tags_count":80,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grocy%2Fgrocy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grocy%2Fgrocy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grocy%2Fgrocy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grocy%2Fgrocy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grocy","download_url":"https://codeload.github.com/grocy/grocy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253766031,"owners_count":21960837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["erp","food","groceries","grocy","home","meal-planner","ownyourdata","php","self-hosted"],"created_at":"2024-07-31T19:00:47.970Z","updated_at":"2025-05-12T15:33:04.849Z","avatar_url":"https://github.com/grocy.png","language":"Blade","funding_links":["https://grocy.info/#say-thanks"],"categories":["Blade","JavaScript","置顶","Apps","self-hosted","前端开发框架及项目","Table of Contents","php","Food-related projects","Tools","🔧 Utilities \u0026 Miscellaneous"],"sub_categories":["08、家庭与物联网","CRM","管理面板","Other"],"readme":"-----\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg alt=\"Logo\" height=\"50\" src=\"https://raw.githubusercontent.com/grocy/grocy/master/public/img/logo.svg?sanitize=true\" /\u003e\n\u003ch2\u003eERP beyond your fridge\u003c/h2\u003e\n\u003ch3\u003eGrocy is a web-based self-hosted groceries \u0026 household management solution for your home\u003c/h3\u003e\n\u003cem\u003e\u003ch4\u003eThis is a hobby project by \u003ca href=\"https://berrnd.de\"\u003eBernd Bestel\u003c/a\u003e\u003c/h4\u003e\u003c/em\u003e\n\u003c/div\u003e\n\n-----\n\n## Give it a try\n\n- Public demo of the latest stable version (`release` branch) \u0026rarr; [https://demo.grocy.info](https://demo.grocy.info)\n- Public demo of the current development version (`master` branch) \u0026rarr; [https://demo-prerelease.grocy.info](https://demo-prerelease.grocy.info)\n\n## Features\n\nSee the website. \u0026rarr; \u003chttps://grocy.info\u003e\n\n## Questions / Help / Bug Reports / Feature Requests\n\n- General help and usage questions \u0026rarr;  [r/grocy subreddit](https://www.reddit.com/r/grocy)\n- Bug Reports and Feature Requests \u0026rarr; [Issue Tracker](https://github.com/grocy/grocy/issues/new/choose)\n\n_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._\n\n## Community contributions\n\nSee the website for a list of community contributed Add-ons / Tools. \u0026rarr; [https://grocy.info/addons](https://grocy.info/addons)\n\n## How to install\n\n\u003e Checkout [Grocy Desktop](https://github.com/grocy/grocy-desktop), if you want to run Grocy without having to manage a webserver just like a normal (Windows) desktop application.\n\u003e\n\u003e Directly download the [latest release](https://releases.grocy.info/latest-desktop) - the installation is nothing more than just clicking 2 times \"next\".\n\nGrocy is technically a pretty simple PHP application, so the basic notes to get it running are:\n- Unpack the [latest release](https://releases.grocy.info/latest)\n- Copy `config-dist.php` to `data/config.php` + edit to your needs\n- Ensure that the `data` directory is writable\n- The webserver root should point to the `public` directory\n- Include `try_files $uri /index.php$is_args$query_string;` in your location block if you use nginx\n  - Or disable URL rewriting (see the option `DISABLE_URL_REWRITING` in `data/config.php`)\n- \u0026rarr; Default login is user `admin` with password `admin`, please change the password immediately (user menu at the top right corner)\n\nAlternatively clone this repository (the `release` branch always references the latest released version) and install Composer and Yarn dependencies manually.\n\nSee the website for more installation guides and troubleshooting help. \u0026rarr; [https://grocy.info/links](https://grocy.info/links)\n\n### Platform support\n\n- PHP 8.2 or 8.3 (with SQLite 3.34.0+)\n  - Required PHP extensions: `fileinfo`, `pdo_sqlite`, `gd`, `ctype`, `intl`, `zlib`, `mbstring`\n  - _Recommendation: Benchmark tests showed that e.g. unit conversion handling is up to 5 times faster when using a more recent (3.39.4+) SQLite version._\n- Recent Firefox, Chrome or Edge\n\n## How to run using Docker\n\n\u0026rarr; https://hub.docker.com/r/linuxserver/grocy\n\n## How to update\n\n- Overwrite everything with the [latest release](https://releases.grocy.info/latest) while keeping the `data` directory\n- 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)\n\nIf 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).\n\n## Localization\n\nGrocy is fully localizable - the default language is English (integrated into code), a German localization is always maintained by me.\n\nYou can easily help translating Grocy on [Transifex](https://explore.transifex.com/grocy/grocy/) if your language is incomplete or not available yet.\n\nThe 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.\n\nThe [pre-release demo](https://demo-prerelease.grocy.info) 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!\n\nAlso any translation which once reached a completion level of 70 % ([`strings` resource](https://app.transifex.com/grocy/grocy/strings/)) will be included in releases.\n\n_RTL languages are unfortunately not yet supported._\n\n## Motivation\n\nA 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!\n\n## Things worth to know\n\n### REST API\n\nSee the integrated Swagger UI instance on [/api](https://demo.grocy.info/api).\n\nThe web frontend uses exactly this API for pretty much everything. So everything you can do there is also possible via the API.\n\n### Barcode readers \u0026 camera scanning\n\nSome fields (with a barcode icon above) 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.\n\nAdditionally 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](https://github.com/zxing-js/library), 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](https://www.youtube.com/watch?v=veezFX4X1JU) and [there](https://www.youtube.com/watch?v=Y5YH6IJFnfc) are quick video demos of that.\n\n_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._\n\n### Barcode lookup via external services\n\nProducts can be directly added to the database via looking them up against external services by a barcode.\n\nThis 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: \u003chttps://www.youtube.com/watch?v=-moXPA-VvGc\u003e\n\nA plugin for [Open Food Facts](https://world.openfoodfacts.org/) is included and used by default (see the `data/config.php` option `STOCK_BARCODE_LOOKUP_PLUGIN`).\n\nSee that plugin or `plugins/DemoBarcodeLookupPlugin.php` for a commented example implementation if you want to build a plugin.\n\n### Input shorthands for date fields\n\nFor (productivity) reasons all date (and time) input (and display) fields use the ISO-8601 format regardless of localization.\nThe following shorthands are available:\n- `MMDD` gets expanded to the given day on the current year, if \u003e today, or to the given day next year, if \u003c today, in proper notation\n  - Example: `0517` will be converted to `2025-05-17`\n- `YYYYMMDD` gets expanded to the proper ISO-8601 notation\n  - Example: `20250417` will be converted to `2025-04-17`\n- `YYYYMMe` or `YYYYMM+` gets expanded to the end of the given month in the given year in proper notation\n  - Example: `202507e` will be converted to `2025-07-31`\n- `[+/-]n[d/m/y]` gets expanded to a date relative to today, while adding (**+**) or subtracting (**-**) the **n**umber of **d**ays/**m**onths/**y**ears, in proper notation\n  - Example: `+1m` will be converted to the same day next month\n- `x` gets expanded to `2999-12-31` (which is an alias for \"never overdue\")\n- Down/up arrow keys will increase/decrease the date by 1 day\n- Right/left arrow keys will increase/decrease the date by 1 week\n- Shift + down/up arrow keys will increase/decrease the date by 1 month\n- Shift + right/left arrow keys will increase/decrease the date by 1 year\n\n### Keyboard shorthands for buttons\n\nWherever a button contains a bold highlighted letter, this is a shortcut key.\nExample: Button \"**P** Add as new product\" can be \"pressed\" by using the `P` key on your keyboard.\n\n### Installable web app (PWA)\n\nGrocy's web frontend is responsive and an \"installable web app\" ([PWA](https://en.wikipedia.org/wiki/Progressive_web_app), without providing any offline usage capabilities), that provides a pretty native mobile app-like experience without the need for additional tools.\n\n- Quick video demo on Android/Firefox: \u003chttps://www.youtube.com/watch?v=L38drVZfwHs\u003e\n- Quick video demo on Android/Chrome: \u003chttps://www.youtube.com/watch?v=rjLdXUFDNuk\u003e\n\n### Database migrations\n\nDatabase schema migration is done when visiting the root (`/`) route (click on the logo in the left upper edge) as needed and is also triggered automatically if the version has changed (so when an update has been made).\n\n_Please note: Database migrations are supposed to work between releases, not between every commit. If you want to run the current `master` branch (which is the development version), you need to handle that (and more) yourself._\n\n### Disable certain features\n\nIf 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 `config-dist.php`).\n\n### Adding your own CSS or JS without to have to modify the application itself\n\n- When the file `data/custom_js.html` exists, the contents of the file will be added just before `\u003c/body\u003e` (end of body) on every page\n- When the file `data/custom_css.html` exists, the contents of the file will be added just before `\u003c/head\u003e` (end of head) on every page\n\n### Demo mode\n\nWhen the `MODE` setting is set to `dev`, `demo` or `prerelease`, 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 (pass the query parameter `nodemodata`, e.g. `https://grocy.example.com/?nodemodata` to skip that).\n\n### Embedded mode\n\nWhen 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](https://github.com/grocy/grocy-desktop)).\n\nIn embedded mode, settings can be overridden by text files in `data/settingoverrides`, the file name must be `\u003cSettingName\u003e.txt` (e. g. `BASE_URL.txt`) and the content must be the setting value (normally one single line).\n\n## Contributing / Say Thanks\n\nAny help is welcome, feel free to contribute anything which comes to your mind or see \u003chttps://grocy.info/#say-thanks\u003e if you just want to say thanks.\n\n## Roadmap\n\nThere is none. The progress of a specific bug/enhancement is always tracked in the corresponding issue, at least by commit comment references.\n\n[Milestones](https://github.com/grocy/grocy/milestones) are used to indicate in which version the corresponding request was done (`vNEXT` means it's currently planned to do that for the next release).\n\n## Screenshots\n\n### Stock overview\n\n![Stock overview](https://github.com/grocy/grocy/raw/master/.github/publication_assets/stock.png \"Stock overview\")\n\n### Shopping List\n\n![Shopping List](https://github.com/grocy/grocy/raw/master/.github/publication_assets/shoppinglist.png \"Shopping List\")\n\n### Meal Plan\n\n![Meal Plan](https://github.com/grocy/grocy/raw/master/.github/publication_assets/mealplan.png \"Meal Plan\")\n\n### Chores overview\n\n![Chores overview](https://github.com/grocy/grocy/raw/master/.github/publication_assets/chores.png \"Chores overview\")\n\n## License\n\nThe MIT License (MIT)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrocy%2Fgrocy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrocy%2Fgrocy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrocy%2Fgrocy/lists"}