Eldum Rétt is an Icelandic subscription service that delivers food boxes complete with recipes and meal plans for home cooking to private households. The idea is to provide extremely flexible and varied offerings for customers of all family sizes that can be ordered and managed completely online, through a website and mobile apps. Eldum Rétt is the market leader in Iceland with thousands of customers and an annual turnover of close to 7 million US dollars.
The original website was built in 2014 on Drupal 7 with Drupal Commerce and wasn’t flexible enough to sustainably accomodate all these requirements. So the decision was made to move the site to Drupal 8 and Drupal Commerce 2 and also add a React Native based mobile app that would communicate with the main Drupal driven website. This project went live in November 2018.
As a customer centric company, Eldum Rétt has very complex requirements for its online services. Customers need to be able to for example to
- individually configure their food boxes with recipes from a selected list
- adjust the number of portions that they want to cook
- select the days of the week they want food delivered for
- manage their delivery times and places
- change their subscription settings, e.g. to pause deliveries during absences
Flexible subscription system
The subscription system capabilities of Eldum Rétt go way beyond what you are used e.g. from Amazon or the like. Any product declared as subscribable can be purchased as a subscription. For each subscription the user can skip certain deliveries or pause them completely. The customer can also reactivate any subscription and the system will make sure that the subscriptions will pick up on the correct intervals again. Furthermore, all subscriptions of any given customer will get bundled into a single order when being billed, ensuring that the customer will get only one bill for all subscriptions that have the same delivery date.
Flexible meal kits and menus
Eldum Rétt allows the flexible configuration of meal kits. Not only the amount of meals and the amount of people served are completely flexible (within configured constraints), but also the system architecture allows for customers to rearrange meals within a delivery. These scenarios are quite complex, as pricing is subject to change on a per-order bases (depending on product pricing).
Eldum Rétt allows for flexible schedules. This means that the type of schedule can be defined.
E.g. it allows not only for the known week-to-week schedules (renewed every thursday and delivered the week after), same week or even same day schedules are possible. Also, schedules with two week (or longer) buying periods and flexible delivery periods are possible. The system will automatically present the client with the available products and matching delivery options.
Shipping and packing system
Eldum Rétt uses a smart packing algorithm. Every product (meal kit or grocery) has its physical dimensions (width, height, depth, weight) stored in the system. The system also has the available boxes "package sizes" stored, and will dynamically calculate the optimal packing of a delivery (and the shipping costs).
Shipping also provides the customer with the option to bundle deliveries of the cart into as few deliveries as possible or the greater flexibility of choosing different deliveries for each product. This also takes in account the shipping availability of the products (e.g. some have home delivery available, others not. This could also depend on the customers postal code).
Eldum Rétt features an advanced notification system. Using Infobip's omni messaging, the system can notify the customer about relevant events (purchases, status changes, payments, pick-up reminders and any other) in defined scenarios: e.g. the first option would be to notify the customer via a push notification to the Eldum rétt app. If the customer does not have the app, the next option could be an email. If the customer does not open the email in a certain period of time, a SMS would be sent.
Notifications are also presented to the customer in an activity log on the website (and app).
API / OAuth
Eldum Rétt has vast API capabilities. OAuth is available for authenticating against the platform (as well as facebook and the like). Furthermore Eldum Rétt has GraphQL built in, which allows extracting literally any information from the system. This is used primarily by the app, but allows any third party system to access the data on the system in a flexible and secure way.
The capabilities of recipe information has been greatly improved compared to the old system. Recipes now contain detailed and structured information:
Cooking instructions with timers: the instructions are separated into steps, which also feature exceptions depending on the amount of persons served. Furthermore, calculation of needed ingredient amounts is completely dynamic (instructions will be correct for any persons served). Also, cooking timers can be defined for any step
Ingredients details: ingredients are stored with their nutritional information (which are dynamically calculated into the recipes per-serving nutritional information and existing allergens).
Other: information about difficulty, ratings, chef, category and cooking time are available
Most of the available data from the old system had to be migrated into Eldum Rétt. This has been a time consuming task, both because of the different data structure (many on-the-fly mappings and dependencies needed to be resolved) and the amount of data sets (more than a quarter million orders, ~ 1.2 million data sets were migrated in total). This also had to happen in a way, that customers would get delivered an order the they placed just a few hours earlier in the old system.
The relaunch of Eldum Rétt on a new platform was necessary to allow the company to explore new market opportunities like selling groceries and flexible meal kits, providing a better user experience through a native app and state of the art customer engagement through a modern messaging framework. This would have not been possible with the old systems technology stack.
The meal kit product features a complexity that is probably close to HelloFresh, Blue Apron or Plated. The subscription and shipping systems are close (even more flexible) than what Amazon offers.
Drupal 8 is a modern software framework that brings a lot of functionality out-of-the-box (world class CMS features as well as a very flexible commerce suite with Drupal Commerce). Eldum Rétt requirements were very extensive, so a lot of functionality needed to be built on top of what Drupal already provides. Thanks to Drupal’s openness it was possible to develop the necessary additional functionalities. Drupal’s extreme extendability through its APIs enabled Eldum Rétt to use Drupal as the main data store for all its products, user data and order information and expose these to mobile apps through which many customers interact with the system.
Key modules/theme/distribution used:
- Commerce Recurring Framework
- Search API
- Advanced queue
- Migrate Plus
- Simple OAuth
Why these modules/theme/distribution were chosen:
Commerce 2 along with commerce recurring constitute the core of Eldum rétt’s Shop system. The modular and extensible API allows complex scenarios like this one to be implemented.
Migrate was used to ensure a smooth transition between the old and the current system, more than a million entities were migrated.
The messaging stack allows flexible and multichannel notifications (push, SMS, email).
GraphQL and OAuth ensures the vast API capabilities for the application.
Advanced queue is used wherever batch operations need to be performed and is mostly relevant for subscriptions.
Contributed patches mostly for commerce and commerce recurring modules. Posted the case study on drupal.org to advocate for Drupal: https://www.drupal.org/case-study/food-delivery-service-built-on-decoupled-drupal-commerce-with-react-native-app