grocy / grocy Goto Github PK
View Code? Open in Web Editor NEWERP beyond your fridge - Grocy is a web-based self-hosted groceries & household management solution for your home
Home Page: https://grocy.info
License: MIT License
ERP beyond your fridge - Grocy is a web-based self-hosted groceries & household management solution for your home
Home Page: https://grocy.info
License: MIT License
I would like to use grocy to also track things in my household that do not have best before dates (toilet paper rolls for example) but grocy forces me to put in a best before date.
You can of course use an absurd date like 9999-12-31 but I'd love to just put in "none" (or something similar) for convenience.
//Nevermind, I didnt read the readme carefully enough. Sorry about that
References #61
And show somehow which item would be picked automatically.
What do we want to have for stock analysis:
An overview page with
A detail page per product with
On both pages the period (date from - date to) should be selectable.
Is is possible to get a "no expiry checkbox" because there is certain things that does not have expiry dates?
Toilet paper, soap, q-tips etc.
I know that you can press x in the date selection box and it will give you year 2999.
This "trick" is mentioned in the readme.
Just seems a little unpolished in my opinion.
While attempting to install grocy 1.16.0 on a fresh install on CentOS 7.5 with PHP versions 7.2 or 7.3, an error is thrown with the title 'Slim Application Error'.
Grocy webapp shows up.
The following error message is thrown while navigating to the grocy web app
Slim Application Error
The application could not run because of the following error:
Details
Type: PDOException
Code: HY000
Message: SQLSTATE[HY000]: General error: 1 misuse of aliased aggregate best_before_date
File: /var/www/grocy/services/DatabaseService.php
Line: 45
Trace
#0 /var/www/grocy/services/DatabaseService.php(45): PDO->exec('CREATE VIEW sto...')
#1 /var/www/grocy/services/DatabaseMigrationService.php(30): Grocy\Services\DatabaseService->ExecuteDbStatement('CREATE VIEW sto...')
#2 /var/www/grocy/services/DatabaseMigrationService.php(21): Grocy\Services\DatabaseMigrationService->ExecuteMigrationWhenNeeded(8, 'CREATE VIEW sto...')
#3 /var/www/grocy/controllers/LoginController.php(60): Grocy\Services\DatabaseMigrationService->MigrateDatabase()
#4 [internal function]: Grocy\Controllers\LoginController->Root(Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#5 /var/www/grocy/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(41): call_user_func(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#6 /var/www/grocy/vendor/slim/slim/Slim/Route.php(335): Slim\Handlers\Strategies\RequestResponse->__invoke(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#7 /var/www/grocy/middleware/SessionAuthMiddleware.php(25): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#8 [internal function]: Grocy\Middleware\SessionAuthMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\Route))
#9 /var/www/grocy/vendor/slim/slim/Slim/DeferredCallable.php(43): call_user_func_array(Object(Grocy\Middleware\SessionAuthMiddleware), Array)
#10 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\Route))
#11 /var/www/grocy/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\Route))
#12 /var/www/grocy/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response))
#13 /var/www/grocy/vendor/slim/slim/Slim/Route.php(313): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#14 /var/www/grocy/vendor/slim/slim/Slim/App.php(513): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response))
#15 /var/www/grocy/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#16 /var/www/grocy/vendor/slim/slim/Slim/App.php(406): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#17 /var/www/grocy/vendor/slim/slim/Slim/App.php(314): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response))
#18 /var/www/grocy/app.php(54): Slim\App->run()
#19 /var/www/grocy/public/index.php(3): require_once('/var/www/grocy/...')
#20 {main}
Fresh install of CentOS 7.5
Install/enable Remi Repos for PHP 7.2 or 7.3
Install php-pdo (with respect to above versions)
Install grocy to /var/www/grocy
Navigate to webapp
What do we want to have for chores analysis:
An overview page with
A detail page per chore with
On both pages the period (date from - date to) should be selectable.
I have a tablet in my kitchen that shows Grocy 24/7. But I find it difficult to set amount with those tiny arrow buttons. (I dont want to show the on-screen keyboard) What do you think about making them a little bigger for a more touch friendly interface?
Make the colored bars in top of overviews pages clickable.
Clicking one would only show whats stated inside the colored bar
A calendar overview where you could see upcoming habits, product best before dates, battery charge schedules.
If you try and create a quantity unit thats already in the database its gives no errors. It simply does not want to save. A error pop-up would be useful here.
Adding the feature to be able to choose who carried out a habit.
So you would need to add a "Family Members" tab to "Manage Master Data".
This could also be used elsewhere in Grocy to track who did something?
References also #66
Maybe use native tooltips again (they are not bad, Bootstrap/Popper.js tooltips are just nicer) or just disable them on touch input devices (they can also not or only hardly be triggered without being able to hover the element)...
When adding a new recipe to grocy you are only allowed to use quantity units.
So for example, making a cake:
Ingredients required is 250 grams of flour. But the quantity unit might be a pack.
I'm not really sure how we would accomplish this.
Maybe let grocy just see if you have the products in stock and just ignore quantity units?
Hi
Getting this error after login of new installed grocy
Catchable fatal error: Argument 2 passed to Grocy::ExecuteDbStatement() must be an instance of string, string given, called in Grocy.php on line 23 and defined in Grocy.php on line 60
A feature where you could upload a pdf manual for each appliance/ equipment in the household.
Maybe have a in-browser pdf viewer?
Not sure if this will slow down grocy.
Since (at least) v1.8.0 the navbar is overlapping the content at certain resolutions.
I uploaded a video/gif of it here.
You can test it for yourself on your demo page, while using the dev tools of your browser.
Not sure if you'd prefer another issue for that, but the big no-real-button
s on the main site are too big for mobile screens, so that the page becomes horizontally scrollable and the hamburger menu button is out of view when opening the page
In the shopping list when you click the "Add products that are below defined min. stock amount"
It adds the products that are below minimum stock (duh..). It also sets a color for these items.
But its confusing to a new user if he goes into the shopping list and see's items that are colored.
Just need a simple colored bar that says something like "products below min stock"
Adding a purchase price when purchasing products and display a graph of price over a set time period.
Hey there,
when I try to run the version 1.9.2 of grocy, it returns a 500 - Internal Server Error, because of an error in one of the dependencies (cors-middleware).
This is the error I get:
Fatal error:
Uncaught TypeError: Return value of Tuupola\Middleware\CorsMiddleware::origin() must be an instance of Tuupola\Middleware\void, none returned in /var/www/html/vendor/tuupola/cors-middleware/src/CorsMiddleware.php:165
Stack trace:
#0 [internal function]: Tuupola\Middleware\CorsMiddleware->origin(Array)
#1 /var/www/html/vendor/tuupola/cors-middleware/src/CorsMiddleware.php(119): call_user_func(Array, Array)
#2 /var/www/html/vendor/tuupola/cors-middleware/src/CorsMiddleware.php(51): Tuupola\Middleware\CorsMiddleware->hydrate(Array)
#3 /var/www/html/routes.php(88): Tuupola\Middleware\CorsMiddleware->__construct(Array)
#4 /var/www/html/app.php(42): require_once('/var/www/html/r...')
#5 /var/www/html/public/index.php(3): require_once('/var/www/html/a...')
#6 {main} thrown in /var/www/html/vendor/tuupola/cors-middleware/src/CorsMiddleware.php on line 165
My php version is:
root@debian-vm:~# php -v
PHP 7.0.28-1~dotdeb+8.1 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.28-1~dotdeb+8.1, Copyright (c) 1999-2017, by Zend Technologies
I also tried with php 7.1.17 without success.
If you want to try on your own - I created a little installation script to automate the process. Thanks in advance for the help.
I have tried using both docker with a lamp stack or my regular hosted webhost and both times i get a blank page when trying to connect to public/index.php
Is the same for purchase/consume and also for tracking a chore, marking a task as completed, etc.
Maybe just a undo button directly in the green notification popup when executing an action.
Is it possible to create a simple API to add product to the fridge?
My idea is a simple Android App with a barcode scanner, which add items to the fridge.
There is an issue with the date picker in 1.13.1
In the "Inventory" and "Purchase" the date picker is not working. The Icon is also not aligned correctly.
When doing anything (eat all, eat one, perform habit, charge battery etc.) in the overview pages it does not automatically update the colored bars on the top. You need to do a manual refresh of the page to get it to show what has changed.
Its not possible to add ingredients without losing data entered in preparations field.
You have to first write the recipe preparation and click save. Then go back in and edit the recipe to add ingredients.
I think there is something wrong with the login session cookies. I tested several browser.
On Firefox 61.0 i can login, but after i always on the login page again. I can as an example, go to the purchase page, but when i go to the stockoverview page i see the login page again. Some pages are available and some show the login page.
On my mobile device i can login with Brave, but i can't logout. anymore.
The cookies and cache are deleted several times!
On the demo site on the stockoverview page the dropdown "Filter by location" has no function. It is empty. Tested with several different browsers.
At first thank you for that management programm. Great work. ๐
What i would wish is a location overview. To see which products are at which location.
Shouldn't there be a htaccess file?
The URL's are SEO friendly, but there's not htaccess to rewrite them
When I try to access /grocy/public on my Ampps web server, it immediately redirects me to /stockoverview and a not found 404 error. I'm running on Ampps (apache and php 7.1). I followed the instructions with the config.php file. What am I missing?
Is it possible to have some kind of auto refresh if the database changes (watchdog?) ?
I have a tablet in the kitchen that shows grocy 24/7. But sometimes I do updates to grocy on my laptop.
I have to manually refresh the tablet to see changes.
There is no place to actually set the desired charge cycle for batteries.
If you search for something on the stock overview page it will retain the search keyword even if you change to another page. When you return to the stock overview page the search box will be blank, but its still showing the result of what you searched for.
To get it to remove the results you have to search for something new and then remove it (backspace).
The retain feature is actually nice, but would be nice if it would remember the keyword even if changing pages.
Maybe also a "Clear Search" button?
I'm not sure why this isn't a thing with any grocery apps, but I'd love to see an "isle" field attached to products. I'd think most people shop at the same stores the majority of the time.
If adding the isle of items meant you could then sort by isle number as a column you could make shopping trips much more efficient.
To add a product it would be useful to only need the barcode.
grocy could look into different online "barcode to product" databases, like http://opengtindb.org to get all neccesary information.
I have my Grocy now on ubuntu18.04/nginx running on http/80 default-vhost.
It's locally available on http://grocy.mydomain.lan or http://192.168.1.105 or http://sub.mydomain.local and it works.
I do my SSL Termination with HAproxy on https://grocy.mydomain.tld. LETS Certificate with an ALT is already created and working. Grocy is shown.
But now it looks broken. All links are available like "http://grocy.mydomain.tld/node_modules/bootstrap/dist/css/bootstrap.min.css?v=1.18.1" rel="stylesheet">
Blocked loading mixed active content <-- or something like this.
Is it possible to have relative paths to use both, http for internal use and https for external usage?
The ampache project is having a similar problem with absolute/relative paths. ampache/ampache#181
I'm aware i could use a self-signed or any snakeoil certificate to run my local grocy also behind https/443:grocy.mydomain.lan , so the reverse proxy would just show and serve https://grocy.mydomin.tld and my browser wouldn't find a mixed content problem.
If it's possible to have relative paths, or to select "http/https" in absolute paths would be a nice option and feature.
In version 1.18.0 the date picker button in purchase and inventory pages does not work.
When you populate all fields in habit tracking and battery tracking the "OK" button does not change color to green, it stays faded, but it works
Another one of my minor issues.
When you have 1 (one) of a product it will say "products" (plural).
I'm pretty sure you thought about this when you initially developed grocy.
For example: I have posted goods receipt (purchased) 2kg of Flour with BestBeforeDate of 01.06.2019 and also 4 kg of Flour with BestBeforeDate of 01.06.2022. So i can rotate them with FIFO and use the oldest one. (assumed the first one is the piece with the lowest remaining shelf life)
So i have now 6 kg of Flour. Both BestBefore Date are now mixed together and the information is lost. Which one to pick for FIFO is now hard.
https://de.wikipedia.org/wiki/Quant_(Wirtschaft) <-- If a stock is having the same characteristics, it should merge. If not it should be a second stock item with a different BestBeforeDate of the same product.
At the moment i rotate my stock, for examples dried lentils and atm with grocy i'd never know if 99% or just 1% of the stock will be expired tomorrow.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.