NoSQL Zone is brought to you in partnership with:

Eric is the Editorial Manager at DZone, Inc. Feel free to contact him at egenesky@dzone.com Eric has posted 804 posts at DZone. You can read more from them at their website. View Full User Profile

A Recipe for Success in Flavor Graph, the Neo4j Heroku Challenge Winner

04.01.2012
| 4732 views |
  • submit to reddit

The content of this article was originally written by Andreas Kollegger on the Neo4j blog.


Flavorwocky, an amusing name for a clever idea that highlights the connectedness of everyday life. With a little bit of coding, the simple idea about related flavors became Luanne Misquitta's winning entry for the Neo4j Heroku Challenge. What was her recipe for success?

It Starts With an Idea
"The idea came to me while I was doing nothing in particular," Luanne explains in her blog, "to build a simple app that would help one find ingredients whose flavors complement one another." Foodies everywhere will recognize the classic "pairing of flavors" whether wine with an entree, or cross-cultural fusion recipes. Luanne focused on the generalized notion for ingredients, because "knowing which ingredients have flavor affinities can produce some amazing new dishes."

Why Flavorwocky? Luanne had asked her husband, "what should I call the app?", and he suggested "jabberwocky." Appreciating the playfulness, she adapted it to the domain, exclaiming  "behold — Flavorwocky."

NewImage

To the Whiteboard!
Luanne elaborated on the idea, realizing that "a graph is a good fit for this domain, so, using Neo4j, we model the way ingredients in a great dish pair together based on their flavor affinity." Sketching out the domain was easy, translating directly into the graph. There are high-level Categories for groups like vegetables, spices, and dairy.  Ingredients are related to the category first, then to each through a weighted PAIRS_WITH relationship.  For convenience (anticipating the fun visualization) the Categories also have a color property.

Chicken affinities


The Implementation
To implement the application, Luanne decided on Grails 2.0, using straight-up REST calls to Neo4j. Her husband Aldrin has a nice blog post detailing how to get started with a project using Neo4j+Grails running on Heroku.
To provide a nice user experience, Luanne turned to the d3.js library to visualize the related ingredients.

The result, is a "version of this app [which] captures flavor pairings and how well ingredients pair together, and then allows one to search by ingredient and view complementary combinations. Needless to say, this just scratches the surface of the possible features for an app like this."

Agreed, Luanne. It's insight like yours that inspires new possibilities. Thanks for sharing your work, and congratulations on winning the Challenge.

 

Published at DZone with permission of its author, Eric Genesky. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)