nextcloud / cookbook

🍲 A library for all your recipes
https://apps.nextcloud.com/apps/cookbook
GNU Affero General Public License v3.0
536 stars 93 forks source link

Rate recipes #323

Open AlexWerz opened 4 years ago

AlexWerz commented 4 years ago

Is your feature request related to a problem? Please describe. No!

Describe the solution you'd like I would like to be able to rate recipes and sort search results and categories by rating.

Describe alternatives you've considered Adding a rating to the name of the recipe. But that alters also the alphanumeric sorting and overall looks bad.

christianlupus commented 4 years ago

To get an impression of your wish:

Maybe other questions are to come.

AlexWerz commented 4 years ago

Should this be only for your personal rating or somehow shared with other users? I am not sharing recipes with other users. So my family would rate a dish and I would add that rating to a recipe. Another possibility would be that all users of the Nextcloud instance can rate a recipe and you can show the average rating. This should not present all ratings from all users (not like Amazon where you have a rating and a comment).

Should the rating system be something like a grade/point system (0 to 10 points or 1 to 5 stars for ex.) or a textual one (think of reviews)? I would not use text as it is hard to filter according to text. I would like to use a 1 to 5 stars system with 1 star increments. If you are using a rating for all users you would need an average. Then I would also use 0,5 stars increments.

Do you have an idea how this could graphically be represented to the user? A sketch might help. I would use Unicode characters. ☆ (Unicode 2606) and ★ (Unicode 2605). Example: ★★★☆☆ would be 3 of 5 stars

If you have more questions feel free to ask.

My thougts Why not start with a rating system for a single user. Only one rating per recipe. Show 1 to 5 stars, 0 if unrated. Use the stars I mentioned above.

In a second step you could enhance the system and let all users be able to rate. But only show an average rating (with tha approach you will not have to store all ratings seperatly with username).

If needed you can refine the system by allowing every user to rate AND to add a comment to the rating (think of Amazon reviews).

Does that help?

sam-19 commented 4 years ago

I have created a system like this for another Nextcloud app. I would sincerely suggest using a 10 point system (or five stars with half star increments). Having only five stars, as I did at first, lead to endless frustration between trying to pick between 3 and 4 stars (the most common grades) and ended with almost all recipes having a three star rating, at least for me. And if someone wants to use full stars, they can also do just that. Assigning the grade is simple: first click on a star either assigns a full or half star, consecutive clicks toggle between full and half.

christianlupus commented 4 years ago

I just found there is a contentRating in https://schema.org/Recipe. This we can use directly.

sam-19 commented 4 years ago

I created a pull request for this, so we can work out the details of this implementation.

GutHib commented 3 years ago

+1

Nice idea, and looking forward to it.

PtolemyIV commented 3 years ago

This would be a fantastic feature - combination of ratings and also the ability to have a "notes" style feature for whenever you cook a particular recipe to record date it was cooked on, any particular modifications made to the recipe and feedback from other eaters

christianlupus commented 3 years ago

See #8 as well.

Bugsbane commented 3 years ago

Personally I would use this to have any logged in NC user (all my family) rate a recipe when they tried making it, and then ideally have it display an average number of stars with who rated it.

Eg ★★★☆☆ average rating by You, Fido and Mom, or ☆☆☆☆☆ not rated yet.

If you clicked on any of the stars it would change your rating, then when the mouse stopped being above the stars it would display the average rating again.

GutHib commented 3 years ago

Just to chime in on the details of this... I think there is quite a difference between rating your own stuff vs. stuff on somebody elses website. Low ratings are for the powerless - if I had a bad experience and there's nothing else I can do, I leave a low rating or a bad review.

In my own data storage, all I need 5 stars, 4 1/2 stars, 4 stars, and a delete button. Seriously, life is way too short for collecting mediocre recipes.

For me personally, it would also be more useful to keep track on the various cooking attempts and the differences in preparation/outcome rather than keeping an average like it's a big public site. If I gave it five stars but Fido screwed it up, then to me it's still a five-star-recipe (albeit one that is hard to get right).

Bugsbane commented 3 years ago

In my use case all the stars are definitely needed as it isn't just me using the recipes, I would like to share with my whole family. It may be that I love the recipe (5 stars) but another family member tried it and hated it (1 star). If I'm having family over for a celebration holiday dinner though, I want to know who likes what, so I can plan a menu that the people who will be there all enjoy.

caemor commented 1 year ago

A shared rating system would be great. Is this currently blocked by #1110?

christianlupus commented 1 year ago

The ratings need to be stored in the database. Otherwise, it will have to iterate the files in the file system on each app opening. That will be a killer in terms of loading time.

Adding new columns to the DB is generally possible but in the current state more of a hack than a good idea. Each piece of information needs to be migrated to a new DB structure when the DB structure is fixed to comply with the NC dev documentation best practice. This is e.g. needed for #120.

Redsandro commented 4 months ago

I came here to suggest this. Even the most simple 1-5 rating without sharing would be helpful.

Since it's for personal sorting and remembering reasons, I would consider the rating a personal note, in which case it could be in tandem with https://github.com/nextcloud/cookbook/issues/782.