All Eat.March 2022 - March 2023
A-Level Project
Cover image for project All Eat.
Project Overview
All Eat, a mobile application designed and developed to address the gap in food delivery apps, the need for a more accessible way to order food for people with food allergies and dietary needs. Through comprehensive interviews with stakeholders including those with allergies and those without, the project aimed at being inclusive for everyone while still having a simple and easy to use interface.

The app uses a profile based system where each user on the app has their own diets and allergies selected and filters out unsafe dishes and removes recommendations which do not fit with the needs. It also features allergy-aware ordering, guest-friendly profiles, live delivery tracking, and post-meal feedback integration, all aimed at creating a safer and intuitive food delivery experience

Following an agile development methodology, allowed for iterative testing and stakeholder to check the product in development to ensure that it still kept with their needs. The project makes use of a 3NF relational database, capturing ingredients for each dish, tags, diets and recommendation meta data including cuisines, and restaurant locations - combined, it allows for more personalised recommendations. Developed in Dart with a Flutter front-end and supported with PHP/MySQL on the backend allowed for seamless integration with the cloud, facilitating syncing in real-time. The final product not only streamlines the ordering process but also a new standard for recommendations
project type
App Development
languages
DartDart
Flutter
MySQL
PHP
tools
Adobe Illustrator
Android Studio
Figma
Visual Studio Code
AnalysisSTAGE 1

Through my use of many food delivery apps, I noticed one key factor that made it difficult to use the apps, the lack of a way to see what I could eat. Especially when I was vegan, these apps made it hard to find new places that were also vegan friendly without looking at each restaurant one at a time. By the time I would find what I was looking for, the usefulness of a food delivery app was eliminated. It wasn't quick nor was it easy.

For people with severe allergies, it makes it close to impossible to order food via a delivery app, with the fear that they are ordering in the blind and although new apps show if something is vegan or vegetarian, it still doesn't show if it contains gluten, nuts etc. As etc. As well, people with severe allergies still have to keep their guard up because they may mis click and order something that they are to and therefore causing them to go to the hospital or die. To make To make things worse is that on most occasions, people order food when they want things quickly and are away from home, without an EpiPen, therefore, making them be in the most vulnerable state.

Some apps do something to help with this by creating a whole category for each dietary need but once again this stops the ease of use because you are left without a way to sort by categories like Italian or Chinese or find specific foods. I want to solve this by allowing users to hide any meals they can't eat, leaving them with only the ones they can eat. Along with the difficulty of finding vegan restaurants, I also ran into another issue when using these food delivery apps: there was no way to see what each person thought of the dish, only a way to rate the restaurant, making it difficult to know what was good and what was bad. To solve this issue, I intend to implement a system that allows each person to rate the dish they ate, and will then recommend it to other people with similar needs and who like similar dishes.

User ResearchSTAGE 2

When it comes to my project, I selected people who were able to provide detailed analysis's and give me user feedback of how to make the app user-friendly. I grouped the users into specific categories based on the part of the app that best suited them.

Experienced Customer

There were many people that had one or two food delivery apps that they used, proffering either the ease of use or the exclusive restaurant offerings for their favourite restaurants. In the area studying, Just Eat was the most preferred app due to the speedy delivery times and the most variety of restaurants offering.

There was a few things that stood out to be a good app including category browsing, the ability to sort by most popular and having ratings for restaurants. Apps which did not include these features lost the interest of the customers and instead went with more reputable apps. A few people mentioned the lack of good recommendations based on the time of day which meant they had to spend more time searching for the restaurant they wanted.

Inexperienced Customer

Inexperienced users of food delivery apps encountered notable challenges that differed from those experienced by more seasoned customers. They generally found these apps to be less intuitive, leading to difficulties in navigating the platforms and placing orders efficiently. A prominent issue for this group was the overwhelming number of restaurant choices, which often resulted in option fatigue, making it challenging for them to make a decision.

Customer with Dietary Needs
From the group with dietary needs the answered ranged significantly based on the type of diet they had:
For people that were vegetarian, pescatarian or vegan they loved the fact that the apps displayed an icon for if an item was part of their diet. They also pointed out that they had a category for their diet but pointed out that they wish it was a filter option as well since if they select that category they can't search for cuisines they are looking for. Users with intolerances and allergies had the same points stating that food delivery apps were hard to use for them since they either have to call each restaurant or are forced to read through the entire list of ingredients for each item.
Market ResearchSTAGE 3

When it comes to food delivery apps, the market is extremely saturated, with most doing the basics, allowing you to pick from a variety of restaurants and get it delivered within an hour. With the number of apps on the market, it makes it hard to choose the best one for you with some giving perks like discounts while others give quick deliveries. Each has its positives and negatives to each other but what all of them do not have, is overall useability for people with allergies (nearly 11% of the US population) and the additional 14% of the UK population that are vegetarian and vegan.

UI DesignSTAGE 3

Taking the time to thoroughly plan and design every aspect ensures that the final product meets user needs, functions seamlessly, and provides a positive user experience. In my case, dedicating a month to designing the food delivery app allowed me to carefully consider user interfaces, features, and usability, ultimately resulting in a more refined and user-friendly application.

Concept 1

For concept 1, I tried to get a rough idea of how food delivery apps work, referencing a variety of different food delivery apps to build this initial idea. With this concept, the idea was to learn the different areas of a food delivery app and explore the parts of the app which were less explored.

Concept 2

Similar to concept 1, my aim was to get a more in-depth understanding of how the current food delivery apps are so effective. To do this, I created a wire diagram of the most used food delivery apps, Just Eat and Uber Eats

During this process, I found was that the restaurant banners usually have priority over the rest, being front and centre. On top of this, restaurants also had the delivery price visible in the summary card, having their restaurant names showing up prominently. With these new wireframes, I set out making a new design, based around these findings, giving comprehensive details of each restaurant. This resulted in the following concept:

After creating this, I got some participants to fill in a form to get their opinion on the designs and immedietely it was clear that the restaurants were given too much space on the screen, taking a while to search through the list of restaurants - furthermore, the spacing of everything, meant that very little information was being conveyed over the space of the phone. From my time with mainly desktop app development, I understood that in order to make a good mobile app, things would need to be condensed to better fit in the size constraints of a much smaller screen that could also be a variety of sizes. This led me to the final concept art which I would use for the app development.

Final Concept

With the final concept, it aims to be different from the competition - instead of having generic recommendations on the homepage, it would include a dedicated recommendations page for restaurants and for foods, using a multi-point recommendation algorithm with the help of machine learning. These points would include


  1. Previously ordered restaurants: By including this as a data point, it helps to understand user patterns, focusing on a more general sense of what the user likes

    1. Restaurant category: Identifies the types of restaurants the user prefers, enabling clustering and ranking of similar restaurants for future recommendations

    2. Distance from restaurant: Balances personalisation with practicality. Users tend to order from nearby restaurants due to shorter delivery times and lower fees. A model can weigh proximity to boost relevant recommendations.

    3. Public restaurant rating: Users typically have a limit to what rating they would be willing to order from - if a restaurant is highly rated by others, the system increases its weight, especially when similar users also liked it.

    4. Food Hygine Rating: Some users are health-conscious, prioritising high hygiene ratings based on a variety of reasons. By checking if the user has a preference towards this, it can adapt based around it and give a higher weight.

  2. Previous orders: The inclusion of previous orders, aids in focusing the model on the speicific meals the user has ordered, helping the recommendation system infer spending habbits and their taste.

    1. Price of food: Spending patterns determine how much they are willing to spend and what bracket they prefer. For example, if they never spend over £40 on an order, it would find foods and restaurants that fit that bracket.

    2. Food ingredients: For a more hyperfocused approach, the algorithm looks at the ingredients of the dishes the user ordered - for example continuous ordering of chicken based meals would recommend more like that. On the backend, each ingredient would get a priority rating to ensure that only core ingredients have weight on the recommendations.

    3. Food names and descriptions: Descriptions, although low priority, may be important for data gathering, looking at the names of the dishes and compare them to user preferernces. With a NLP model, they may be able to convert something like "Spicy burger" into two data points, one that the user likes spice and another for burgers

    4. Discounts applied: If the user often orders when discounts are available, the model can highlight deals and limited-time offers to increase engagement.

    5. Food cuisine: Core to personalisation, the cuisine takes a high weighting, looking at patterns in orders to find which cuisines the user has preference for. For restaurants that sell different types of cuisines this may be very important to data analytics.

  3. Profile Specifics: These data points focus more on the user preferences and ensures that recommendations are accurate.
    1. Allergies & Intollerances: Acting as a hard filter, this removes any recommendations which contains allergins and cannot be removed by a customise option. This is critical to the safety of the users as the main selling factor is safety and convenience even for those with a specific food need

    2. Diet: Based on the user's prefence, it can act as either a filter so that only those restaurants and dishes are recommended, both preventing breaking the diet and enabling healthy choices

    3. Favourited Restaurants: Fourite restaurants act as a direct correlation to what the user wants to see, giving more recommendations from this restaurant than others so they can quickly find what they want

    4. Favourited Foods: Similar to restaurants, it searches for foods that are similar to what has been favourited from other restaurants, acting as a more concrete recommendation over just previous orders

    5. Rated restaurants: Uses explicit feedback to improve recommendations, with high-rated restaurants get boosted, low-rated ones get down-ranked.

    6. Rated foods: Helps the model differentiate between good and bad dishes at a finer granularity than restaurant-level ratings.

  4. Miscelaneous: These include a variety of small factors that may make an impact with what may get recommended

    1. Time: Based on the time of day, different restaurants may get recommended - for example breakfast foods in the morning. These can be made more granular if the user orders specific things depending on either the date in the week or the time in the day

    2. Location: Locations of ordering may change the type of foods the user orders - for example, if at home, they may order more comfort food whilst if they are at a friend's house, they may order more party food. This can go further, taking into account if they go international for a holiday, with recommendations choosing the cuisine of the location to incentivise trying local dishes

    3. Cross-user Preferences: If ordering with a lot of people, it may use other profiles currently on the account to find things that everyone can eat and will enjoy.

The concept introduced the concept of profiles, allowing each person to be on the app, storing their preferences including diet, alleries and preferences in a single location. With this method, you can give temporary access to the profile through a QR code to allow for a more interconnected experience. From personal experience, I found that when ordering from a food delivery app in a group of friends, we would pass around a single phone, stopping any recommendations based around a single person to be available but by having this new system, it would not only keep recommendations but make ordering quicker.

Interactive Mockup
Try out the interactive Figma mockup.

Please note that some areas may not be fully interactable. This mockup is used for the purpose of understanding how the app would look not for full functionality
DevelopmentSTAGE 4

Development of the application used a reciprocal cycles similar to agile development, where a set time was assigned to finish each prototype and each prototype would iterate on the last. This process was determined by the time restraint set by the exam board.

Being my first app that I have made, meant that through the process, I was learning the skills and then applying them throughout the application. Initially, I was struggling to pick which platform to use to develop the app but decided on using Flutter due to it being new and looked like it would work with my needs (Little did I know that during the process I would find that it was missing some core features and would have constant issues due to it being new)

Prototype 1DATABASES AND THE CORE