Pull to refresh

Building a Food Delivery App

NIX corporate blog Development of mobile applications *Development Management *
This is the year that everything changed. Companies, and people around the world have been impacted by COVID19 and the way we live, and work has been altered. Organizations have had to react quickly to these changes and many businesses have had to make drastic changes simply to stay afloat.

However, while many businesses were negatively impacted, some areas of the economy have benefited from these changes. One of the areas that has possibly benefited the most is the online delivery industry. This is primarily due to the changes that the governments around the world are mandating of their citizens.

The Impact of Self Isolation

Citizens around the world have been forced to self-isolate. Fortunately, today’s technologies allow many employees to work remotely but there is still a significant financial impact to those individuals that are unable to work from home. Added to these new stresses are others.

With a requirement to stay at home and isolate, many people have taken to online platforms to make their purchases. These platforms were only scoped for a specific load and capacity however and they are struggling to satisfy the increased demand.

At NIX we understand these stresses. We have actually built an online food delivery platform before the pandemic and we know what is required to ensure your solution is suitable.

The NIX Solution

We had the pleasure of working with one of the largest foods and delivery marketplaces in Europe. They are an Uber partner and offer web and mobile ordering from local restaurants and food businesses in many different cities. Users have a very straightforward flow, but it gets a bit more complicated for the admins of the system.

From a user’s point of view, the application is very simple to use. There are some key criteria that were provided that ensured this simplicity.

  • Filtering and Search – the app provided geolocation services which allowed users to quickly find a local restaurant in close proximity.
  • Easy to use interface – menu names and categories are simple and easy to understand. Users can quickly intuit where they need to go within the app.
  • Tracking and Details – complete transaction flow is provided to the user. They know where their dish is in the process from placing the order, to preparation to delivery.
  • Multiple Payment Options – consumers need to have a variety of payment options available and this app provided cash, credit and online payment.
  • Access to Customer Support – the company offers multiple call centers and customers can access and reach out to support through the app. These centers provide a mix of different services from order processing to complaint handling and dealing with issues around deliveries.
  • Promo Codes – customers that do have issues can be compensated through the use of promo codes. In addition promo codes can be used to attract new consumers so the app has that capability built in.

In addition to the above user requirements, the app also had some specific developer features which helped differentiate it from other apps in the marketplace.

  • Scalable – as the client’s market and overall footprint constantly changed, the project also grew in scope and complexity. The service provided needed to meet these changing demands and had several specific deliverables –
    • The system needed to be able to handle high loads based on changing demands
    • The system needed to be adaptable
    • The system needed to offer a way of integrating with other third-party APIs so that restaurants could use their existing systems.
  • Tracking Capabilities – the app needed to track issues and problems and ensure that they were being proactively resolved where possible.

Developing the App – The Process Behind the Magic

NIX was invited to work with an onsite development on certain specific elements of the project. The requirement for NIX was that the system needed to remain functional at load and had to integrate flawlessly with some specific third-party APIs.

  • System Structure – one of the challenges we had to deal with early in the process was the structure of the system itself. The team needed to ensure that all the partner systems worked correctly with the existing platform.

We had to understand how the entire system worked and what needed to be monitored and tracked as quickly as possible. The metrics that needed to be checked included both technical and non-technical ones. For example, by understanding why a restaurant was canceling certain orders more often, we were able to proactively update the stop list of dishes. By doing this, we were able to ensure that dishes that were no longer available did not even appear on the website.

  • Third Party Integration – many restaurants use different POS systems for their orders and inventory management. It was critical for us that the app integrated with these systems in a seamless manner. Initially these integrations were complex as while the general structure was the same, they each had different logic. Over the course of a year, we created many different integrations so that new partners are able to connect without any issues.

We discovered that as the project transitioned to a microservice architecture, the complexity of the integrations increased. This however had a benefit in terms of reliability and flexibility. The addition of new partners is simple now, but it is only simple because of all the hard work that preceded.

  • Dealing with Load – we understood the issue of load intimately and built the system with it in mind. We knew that the underlying infrastructure needed to be able to deal with surges in traffic. These surges could influence anything from the database to the servers and the underlying network itself.

Since the project was regularly changing, we knew that the best solution was through the use of monitoring and adjustments. The DevOps teams were regularly tracking application metrics and we were able to use this data to scale to create automatic scalability solutions.

  • Ongoing Project Communication and Coordination – at NIX we know the importance of well-defined processes and standards for project work. We worked with the client on the establishment of clear processes and guidelines. Once these systems were in place we saw an improvement in communication and throughput.

Lessons Learned

Working on this platform was an excellent project. There were many lessons learned in the course of the work performed as the path to success was a bit more winding than we expected.

One of the main lessons we took from this is the need to move from a minimum viable product (MVP) to something more robust and attractive. Being able to deliver this level of quality out the gate is not something all developers can do – it required the resources of a large corporation for us to ensure success. There are however some lessons that any business can consider:

  • Define the metrics to measure – it is vital to know what is critical to your business and what is not as important. This applies across the whole system and needs to include the user interface also. With the user interface, simple objective metrics will not do. The tools you use need to understand where the users are looking on the app, the buttons they are pushing and the ones they are not. Any changes to the interface need to be tested with smaller focus groups first and all data and information collected, collated and analyzed. It’s necessary to understand that not all changes will have a positive impact so adjustments might be necessary.
  • Make sure Admins have tools – admin interfaces are basic requirements but are often ignored or forgotten. They need to be continually improved and maintained as they can have huge benefits. For example, a small saving of a second or two for an operation does not sound like a huge benefit. When this is multiplied across all the employees in your team though the benefits can be significant.
  • Monitor, Monitor, Monitor – you cannot be paranoid enough when it comes to the system. Disc’s run out of space, systems get hacked and it’s possible for malicious attacks to happen. Added to this are the internal issues when developers create suboptimal queries or even non-impactful changes have unforeseen consequences. Track everything that’s happening and come up with automated solutions to rectify them where possible.
  • Measure the right things – it’s important to define the right tech metrics for your project from the start. By doing so you can understand how you are progressing at each developmental stage. In addition, metrics will help you define when you are on the right track or not and whether your actions are making a situation better or worse.
  • Business metrics matter too – while system and technical metrics are important, business metrics need to be considered also. For a food delivery app you’d want to know the number of orders processed, the average amount spent and the number of rejections at a specific restaurant as a start. Basically you’re looking for anything that has an impact on the bottom line and has something to do with money.
  • Keep logs – failures and issues are at times inevitable. Without a way of replicating an issue, investigation can take days if not longer. This is where detailed application, network and infrastructure logs can help. With logging enabled an in place, diagnosis of problems can be improved dramatically.
  • Understand Capacity and Load – this pandemic is a perfect example of extra capacity. Ensure that your plans include sufficient leeway to handle this load and even more across servers, networks and infrastructure. As a developer it is important to ask this question at the start of the project and as it develops to ensure that you always have enough capacity available.
  • Scope creep is real – projects change over time as do the teams working on them. As teams increase in size and the projects change, how and what gets implemented might need adjusting.
  • Review the code – code review needs to be part of the SOP (standard operating practice). This helps improve knowledge sharing internally but is also just good practice and a way of catching defects.
  • Build code that can be deleted – change is somewhat inevitable and it is important that your organization has a plan for dealing with change. With large projects like this, it is actually better to write code that can be removed without impacting the larger project versus code that needs to reconfigured. By writing code in small discreet «chunks» it is easy to throw out what isn’t working and replace it with new code that better fits the situation.
  • Understand the importance of documentation – documentation is critical. The more people involved in a project, the greater its importance becomes. When documentation is non-existent or inaccurate, teams can spend days trying to decipher the code. While it’s a task that is not enjoyed by many, it is extremely important to have well written documentation.

Project Roll Out

This project has been an unqualified success for NIX. Based on current data, the service is used in over 14,000 restaurants and is available in 33 cities. Some of the major chains that are using the service include TGI Friday’s and McDonald’s and it is only growing in popularity.

As a web service, this means that the load is only going to increase, and the product will need to adapt to the load. During the current pandemic, more restaurants and cafés want to join the service also which will further stress the system, but the NIX developers are ready for this.

Online and digital services have seen a surge in popularity and growth during this pandemic. Barclaycard for example reported that while restaurants were negatively impacted by 6.7% in February, during the same time, takeaways and fast food sales rose by 8.7%. This was the start of the lockdown and the pattern over the months that followed reflected the same trends.

Restaurants need to know and understand that online is not just a «nice to have» anymore, but is now a «must have» if they want to survive and thrive. If you are interested in creating your own delivery app, contact us immediately. We have done it before and know how to ensure you will be successful also.
Total votes 8: ↑6 and ↓2 +4
Views 1.2K
Comments Leave a comment


1,001–5,000 employees