TandoorRecipes / recipes

Application for managing recipes, planning meals, building shopping lists and much much more!
https://docs.tandoor.dev
Other
5.59k stars 594 forks source link

Required Equipment list #301

Open Cellivar opened 3 years ago

Cellivar commented 3 years ago

Several of the recipes I need call for specific types of equipment that I have, but keep stored away as they aren't often used. Things like special attachments for a stand mixer, a crock pot, or other specific items that I would like to know at-a-glance that I need to prepare for.

Other things are items that need to specifically be cleaned or otherwise prepared ahead of time before I start cooking. Sometimes it's annoying to discover partway that I need to emergency clean something to get it ready.

Having a specific section (similar to ingredients) where I can list off what equipment is necessary for a recipe would be handy, especially for special equipment that needs to be prepared ahead of time (or purchased!).

So far I've made use of a 'Prep' step that lists off any special tools necessary. This works for now. A special section (with a list of equipment present in my kitchen I can select from) would be nice indeed.

vabene1111 commented 3 years ago

nice and interesting idea. Could also include something i always wanted which is the weight of kitchen equipment in case you put something into a bowl and forgot to set the scale to zero before.

For now you will have to use the ingredients but this is something i will keep in mind for the future

brhahlen commented 1 year ago

+1 for this. Would definitely be a very useful feature.

the-rene commented 1 year ago

@vabene1111 do you have any further ideas, how this could be implemented?

Those are my initial thougts, what do you think?

I think, the equipment/tools can be handled similiary as the ingredients in the recipe view. In the way, that

Some specific values for equipments/tools may be

I'd really like to contribute, if I find my time to do so. I'm quite a bit experienced in Django, so that side should be no big problem, I guess. But on the Vue.js side, I may need to practice a bit, so it also looks good.

vabene1111 commented 1 year ago

Hi, thanks for your thoughts.

The vue side should be easy as you have plenty of examples to work from I think.

Regarding the concept

Tandoor has suffered a bit odäver time from over complexity so I would try to keep this somewhat simple.

Linking tools to steps sound good to me, what I don't think is required to be able to add any extra attributes besides possibly a quantity since values like weight or size should be something that is stored on the tool directly.

The verbs sound interesting but quite complex to communicate to the user as well so that might be a second step after the first implemtation has proven to be good.

Toughts?

the-rene commented 1 year ago

Yeah, keeping it simple for the first implementation makes sense. Also helps keeping it robust..

since values like weight or size should be something that is stored on the tool directly

Agree, I thought about it while comparing it with ingredients. But I don't see the neccessity either.

Re-thinking it a little bit, while taking a look at the django models, the needed models could look somewhat like this:

class Equipment(ExportModelOperationsMixin('equipment'), models.Model, PermissionModelMixin):
    name = models.CharField(max_length=128, validators=[MinLengthValidator(1)])
    plural_name = models.CharField(max_length=128, null=True, blank=True, default=None)
    # not sure about those, copied from food
    space = models.ForeignKey(Space, on_delete=models.CASCADE)
    objects = ScopedManager(space='space', _manager_class=TreeManager)

class Utensil(ExportModelOperationsMixin('utensil'), models.Model, PermissionModelMixin):
    equipment = models.ForeignKey(Equipment, on_delete=models.CASCADE, null=True, blank=True)
    no_amount = models.BooleanField(default=False)
    amount = models.DecimalField(default=0, decimal_places=16, max_digits=32)
    order = models.IntegerField(default=0)

class Step(ExportModelOperationsMixin('step'), models.Model, PermissionModelMixin):
    name = models.CharField(max_length=128, default='', blank=True)
    instruction = models.TextField(blank=True)
    ingredients = models.ManyToManyField(Ingredient, blank=True)
    utensils = models.ManyToManyField(Utensil, blank=True)
    # [...]

So somewhat like food+inredients, but with less features.

Am I missing something relevant? Also do you have better suggestions for the Names (Utensil, Equipment, Tool, ..?)

vabene1111 commented 1 year ago

Hi, I agree with the model structure makes sense to me.

While I am not 100% happy with the naming I also have no better idea what to name it.

One could use Step Equipment in line with the supermarket category or book entry but I am not sure if that's better.

I think I would use utensil instead of equipment and the StepUtensil for the relation, if we come up with something better we can rename it in the future.

If you need any help getting started with vue let me know.

What I am also unsure about is where to place it in the recipe view because on top we already habe the ingredient and the nutrition's which will be expanded in one of the next updates, maybe one could just integrate it into the same list as the ingredients just with an icon or font distinguishing it.

smilerz commented 1 year ago

Some alternative model names: Tools Equipment Kitchenware Durables Smallware

Cellivar commented 1 year ago

If we take a quick look at major company websites to see the names available it might help.

Here's Target's names.

Screenshot_20230408_205351_Chrome

Ikea:

Screenshot_20230408_205621_Chrome

Bed Bath and Beyond

Screenshot_20230408_205749_Chrome

When I first raised this as a feature request the idea was not to list things like a spatula when mixing a cake or a skillet for a dinner meal. It was for a weird offset spatula when making a special dessert, or the correct size of stand mixer bowl to make sure is pulled out of storage before I realize I need it halfway through the recipe.

In general I think of these things as _Cookware and Utensils_. Both of these names are in the Target list. Ikea uses "Kitchenware" instead but feels vague out of context. BB&B doesn't have a specific section for handheld things, just cookware.

For the user facing side I would suggest "Cookware" or "Cookware amd Utensils". It's clearly separate from ingredients that way.

vabene1111 commented 1 year ago

Makes sense, also some of it will be lost in translation anyway

For the models I would like to stick with utensils and step utensils for now.

Kamiikaze commented 8 months ago

I was thinking about the same suggestion. Is this still being worked on?

the-rene commented 8 months ago

No, didn't get to finish my beginning :/ I want to look again into it to at least get my initial changes up to date with the current state, but I could not find the time and motivation to do so right now.

vabene1111 commented 8 months ago

I recommed not working on this right now, I am working on migrating the whole frontend which will mean many breaking changes, utensils should be added after that.

supaeasy commented 2 months ago

I use the servings label field for this (as I cannot figure out a use case for it's original purpose)

supaeasy commented 2 months ago

In schema.org there are two ways of defining this: