Most people probably won’t have thought much about the technologies that go into delivering something like the Nandoca app, and that’s fine. If we’ve done our job right, you shouldn’t ever need to be aware of what’s going on behind the scenes.
We love to share stuff though, and creating opportunities for Nandocas to learn, develop and progress, both within Nando’s and beyond, is one of the things we’re really excited about doing with the app. With that in mind, for those who are interested, here’s a whistle-stop tour of some of the technologies we’re using. We’ve included some links to where you might start if you wanted to pick up some of this stuff yourself. If you have any questions, we’d love to hear from you - you can contact our app team at firstname.lastname@example.org.
If you’re interested in exploring React Native, this tutorial might be a good place to start.
Most users won’t see the admin system, but the app would be useless without it and making it has been a big part of the developers’ work. It’s where we manage users’ accounts, import the rotas and write the articles you see in the app. We’re using Phoenix to build it, which is a web framework built on Elixir. We chose Phoenix because it’s a lightweight framework that allowed us to build a simple website quickly, and being built on Elixir makes it very fast and scalable.
There are lots of online Elixir tutorials available, here’s the official one which we found pretty good. For Phoenix, again the official docs are quite helpful, or here’s a nice looking walkthrough that shows you how to make a simple chat app.
There’s a lot that goes on behind the scenes to get the app to you and keep it working, and there have been a lot of technology decisions about how to set this up. We’re still in the early staging of building the app, so we’re constantly re-evaluating these technologies as we progress from prototype, to alpha and beta, and then onto live versions.
We use AWS to host the admin system, and the database that sits behind it. This gives us the flexibility to change the amount of computing power we need at any one time, letting us provide a consistent and secure service without the overhead of purchasing our own servers. We’re using Terraform to describe our AWS infrastructure in code, which helps make our set up consistent and maintainable. If you want to learn what AWS is all about, we’d recommend you create a free account and have a play around with the services available on their free tier, which you can access for 12 months (don’t provide any payment details, just in case).
We use Docker containers for deploying the admin system. This gives us a consistent environment for developing and running the site. Docker is open source and free to download, so you can grab a copy a have a go at firing up your own containers.
We’re currently using Fastlane and HockeyApp to deploy and distribute the app. These have given us a way to make early versions of the app available to a controlled set of trial users. We’re now investigating how to make the app available on the Apple and Android app stores, which will be a better way to distribute when we’ve got a larger user base. App distribution is probably not something you want to get into until you have to - it’s a bit of a pain! But here’s Apple’s app review guidelines in comic book format!
We use Github to store, protect, manage and share all our code. It lets the team of developers work on the same codebase at the same time, review each other’s code and keep track of old versions in case we need to revert anything. Github is a hosting service that uses Git, the most widely used version control system. To use Github, you can create a free account, and here’s a simple getting started guide for Git.
We use Mixpanel and Google Analytics to track the use of the app. This helps us find ways we can improve the app experience. As we scale up, we’re thinking of moving to Segment for tracking, which will allow us more control over how we store and use the data about app usage, and will be more economical for larger numbers of users. Web analytics is a massive subject. The sites we’ve linked above all have a lot of information, and a quick google search will throw up a load of blog posts - here’s one.
As we move from the Alpha version of the Nandoca app to Beta, there are some interesting technical challenges to overcome. At the moment, we’re looking at integrating more closely with Nando’s systems to automate the movement of data. One aspect of this will make importing rotas much more efficient. The work here will be mainly on the admin system and infrastructure; we’ll be provisioning a new AWS service and integrating with it. Another big piece of work will transform the onboarding experience for new users, and to do that we need to integrate with Auth0, which involves considerable reworking of both the app and the admin system.
Nandoca app dev team