Over a million developers have joined DZone.
Platinum Partner

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

· Cloud Zone

The Cloud Zone is brought to you in partnership with Mendix. Better understand the aPaaS landscape and how the right platform can accelerate your software delivery cadence and capacity with the Gartner 2015 Magic Quadrant for Enterprise Application Platform as a Service.

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."


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.


The Cloud Zone is brought to you in partnership with Mendix. Discover how Mendix for Mobile App Deveopment makes it incredibly fast and easy for any developer to build engaging multi-channel apps.


Published at DZone with permission of Eric Genesky .

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}