March 3, 2005

An open source cookbook

Author: Sean Michael Kerner

There are a number of different open source cookbook-related applications currently under active development in the community; a few of them even actually deal with food. If you're hungry for some open source code that will help feed you, Gourmet Recipe Manager and PHPRecipeBook are two applications that can help satiate your appetite.

Grecipe

Gourmet Recipe Manager ("Gourmet") is a GTK-based recipe management application originally intended for GNOME, though now it has a fully operational Windows installer as well. Gourmet is written in Python and is licensed under the GPL. We evaluated version 0.7.1, which was released on January 16.

Gourmet is a single-user desktop application that manages recipe listings and provides search, import, export, and shopping list capabilities.
The program doesn't come loaded with any recipes, though it does have the ability to import Mealmaster-format recipes (supposedly a relatively common format for recipes), which in my evaluation seemed to work reasonably well. Inputting new recipes is an easy process that is fairly intuitive. The new recipe card input window allows users to input details (food category, preparation time, rating, source of recipe), cooking instructions, and optional modification to the recipe. At the bottom of the recipe card is the ingredients portion of Gourmet that lets you specify the amount needed as well as the shopping category for the ingredient.

Gourmet's shopping list is a great feature that is populated via the recipe cards. Individual ingredients or whole recipes can be added to the shopping list, which also includes a "Pantry Items" inventory listing so you can check off what you already have and what you're missing. The Gourmet-generated shopping list can be printed (though not emailed directly via the application) and is well-organized by the same categories that are specified on the recipe card. By putting a well-organized shopping list in your hand, Gourmet may help to make trips to the supermarket more efficient than your current method (scrawled listing of ingredients in no particular order written on a crumpled piece of paper, right?).

Gourmet Recipe Manager in action -- click to enlarge

You can search for recipes with Gourmet either by clicking on one of the index headings and browsing alphanumerically (by recipe title, category, cuisine, rating, source, servings, prep time) or via a search dialogue box. Recipes can be shared via email or exported as either text, HTML, Mealmaster or in Gourmet's own XML file format.

Gourmet does not have much in the way of help menus or documentation, though the program is fairly intuitive, so it really doesn't need much.

PHPRecipeBook

PHPRecipeBook is a Web-based, multi-user recipe and meal planning application licensed under the GPL. We evaluated version 2.26, which was released on February 19.

PHPRecipeBook requires either Postgres (version 7.2.3) or MySQL (3.23+), PHP 4.2.x+, and Apache 1.3.x or 2.x. You install the application by uncompressing the archive (it's already compiled so you won't have to make anything) and putting it onto your Web server (www.yourdomain.com/phprecipebook). There is no installer script provided to set up the database, so you'll need to set that up in either Postgres or MySQL, though there are SQL scripts included to set up the tables and parameters. You then need to tweak the config.inc.php file to reflect your database settings.

As opposed to a desktop application like Gourmet that is limited to essentially one PC, PHPRecipeBook has a multi-user setup that includes a user and group administration tool to register and set user permissions. Like Gourmet, PHPRecipeBook gives users the ability to add, edit, and search recipes, as well as export required items to a shopping list. Unlike Gourmet, PHPRecipeBook does not include a Pantry listing of what you already have.

The requisite alphabetical listing of recipes is also there, but category listing searching with PHPRecipeBook is somewhat different from Gourmet's, in that recipes are grouped by the course (appetizer, beverage, breakfast, dessert, entree, lunch, side dish, and snack) and the base ingredient (beef, bread, egg, fruit, grain, lamb, pasta, pork/ham, poultry, seafood, and vegetable).

The ingredient listing in PHPRecipeBook is already populated with a long list of common items, so you're not starting from scratch as you do in Gourmet. A shortcoming of the PHPRecipeBook ingredient setup, though, is that you cannot simply type in the ingredients right in the recipe card. Instead, if the ingredient isn't already in the list, you have to go out of the recipe input to the add it via an ingredient screen, an extra step I found annoying.

Like Gourmet, PHPRecipeBook will import Mealmaster-format recipes, but it can't export to that format. The only format offered in the current version is the program's own XML format. You can print the recipe as well, and I suppose that a simple "save as" in your favorite browser would give you an HTML or text version.

PHPRecipeBook's Meal Planner -- click to enlarge

PHPRecipeBook also offers the ability to scale a recipe up to a greater number of servings than is listed on the recipe card. Though it may be simple math, it's a nice little feature to have. One of the other interesting recipe features is that you can apply a cost to the meal based on the ingredients you use (for which you specify a cost per ingredient).

The Meal Planner function is perhaps PHPRecipeBook's most distinctive feature. It allows users to schedule what recipes will be for which meals on which days, with daily, weekly, and monthly views. The meal planner also feeds the shopping list with the ingredients required for all the recipes scheduled in the planner. If you plan properly, you'll never have to knock on your neighbors door for a cup of flour again (unless you really want to).

Help for PHPRecipebook is provide online -- little "?" icons sprinkled throughout the application explain what various things do. There are also four pages of offline documentation in a user manual and a two-page developers manual.

Why bother?
What really is a recipe cookbook? Essentially it's a collection of source code (ingredients) compiled together (cooking directions) into a robust application suite (cookbook). Cookbooks have been around since the dawn of time and have always grown by virtue of recipes that are often times shared among friends or passed down by families and communities. It's entirely appropriate in this nascent millennium that recipes continue to be shared electronically, in a truly open source way.

Both Gourmet Recipe Manager and PHPRecipeBook more than adequately fulfill the basic needs of adding, editing, and sharing recipes and generating shopping lists. I wouldn't say that either of these programs is better than the other; they're just different. For a local user who wants a simple desktop application, Gourmet will certainly suffice. For multi-user environments and for the ability to generate meal plans, PHPRecipeBook is a great application.

Whether you elect to try or use Gourmet Recipe Manager or PHPRecipeBook, bon appetit!

Click Here!