One step forward two steps back
Chris and I met and had some discussions about a visual theme and layouts. We think we’ve got a target layout idea for v1. At the risk of articulating it incorrectly I’ll let Chris talk about it if he wants to comment (Chris if you want to blog stuff here yourself let me know and we can make that happen).
During the demo for Chris and playing with the site myself I have come to the realization that I have gotten the relationship wrong between ingredients and recipes. Currently we have the notion of an ingredient that says what it is, but nothing really specific beyond that. For example you would have a malt extract ingredient. There was another object called recipe ingredient that had more specific information about manufacture, extract percentages (60/40 wheat to malt or whatever) and quantity. Recipes and inventories were both constructed using the recipe ingredient object. After working with that I found it became a pain in the ass to build a recipe because you need to link it to a specific instance of a recipe ingredient. This meant you had to fill out manufacturer and all that for things in your recipe. This is wrong and just made things a bear. Its also what caused me to take so long to get recipe creation working (since it had a bunch of dependencies on inventory functionality).
I’ve decided to ditch that idea and just construct recipes with the base ingredients. So instead of saying Briess Malt Extract you just say Malt Extract as an ingredient in a recipe. This feels better and is how recipes are usually written. I’ve renamed the recipe ingredients class to be inventory ingredients.
A recipe will control how much of each ingredient it has and what not. There will still be an intermedary object that will encapsulate quanty and the ingredient, this will also be used in the inventory and proably be able to perform converesions (cups to oz etc)). This should reduce the coupling between recipes and inventories and save me a few headaches.