Health-e Meal Planner Pro is a web-based application that helps school districts plan meals that meet federal nutrition standards. The software was developed by a Washington-based nutritional consulting firm and was quickly adopted by more than 80 customers around the country. But shortly after launch, the inaugural version of the product ran into some significant performance problems.
The product had been built with Drupal, which was a fine fit for the functionality it needed. However, the whole system was running from a single, massive database (in fact, at its peak, it was the largest instance running on Amazon Web Services). This meant that not only had the application’s processing speeds virtually ground to a halt, but the app had reached its capacity—HMP could add no more customers.
This wasn’t really in line with their business strategy, so the HMP team started looking for a new development team. We were excited to come on board to help bring version 2 of the product to life.
The first thing we learned about HMP was just how many “moving pieces” it has. Each customer’s subscription includes tiered user accounts, multiple facility types, customizable reports, and access to the menu-planning tool itself. On top of the functionality, the software synthesizes a staggering amount of data. In addition the 17,000 ingredients contained in the USDA nutritional database, HMP also stores nutrient data on hundreds of commercial products—not to mention the data created by HMP’s users as they go.
In order to solve their capacity issue, we had to figure out how to serve up that much data and functionality without bringing a server down. We accomplished this by decentralizing the underlying architecture of the application into a Software as a Service model. We created a core database—which stores all of the USDA and commercial data—and then spun up separate databases for every individual HMP customer. This not only spread the processing load across multiple servers, but it also made it possible to scale the software to accommodate new customers.
Once we’d redesigned the infrastructure, we dug into the rest of the product. We brought the entire system forward from Drupal 6 to Drupal 7. We developed a suite of custom modules to handle the various combinations, comparisons, and calculations necessary to support the software’s functions. We rebuilt the entire user interface to make the tool more intuitive for end users of all skill levels. We were also able to migrate all of the user data from version 1 forward to version 2, which required substantial custom development.
After a successful launch of version 2, we’ve been able to stay on as HMP’s development partner. In addition to tackling some interesting bugs uncovered by their ever-growing user base, we are also working with them to evolve the product, develop mobile apps, and release new features regularly.