App Development

Correct Change

Android & iOS
Less than 1 month

Correct Change is the perfect tool for working out change.

Seriously, it is. If you ever find yourself having to work out the correct amount of change to give a friend, relative or customer but find yourself getting stuck; this is the app for you.

How did it start?

Whilst working as a delivery driver for Dominos Pizza, I feared getting cash deliveries, purely because I wasn't able to work out the correct amount of change whilst the customer stared at me.

I know, it's pretty silly, but I know I'm not the only one who has this issue. Like many of my other apps, the reason for creating this app was purely to provide a solution to a problem I was having.

There's 2 types of deliveries that the drivers get at Dominos:

  1. Paid Deliveries
  2. Cash Deliveries

Now, paid deliveries are pretty great, you grab your pizzas, drive to the customer, pick up your pizza, knock on the door, give them the pizza (sometimes be given a small tip) and be on your way. This is THE perfect delivery, nothing to worry about and nothing that can go wrong (I mean, you could drop a pizza, but we won't talk about that).

Cash Deliveries on the other hand, do EVERYTHING you can to stay away from these; or atleast that's the mentality I had. There's nothing worst than getting to the customers door step and being given a handful of change (most of which is definitely from the back of the sofa), having to stand there and count this change using only your hands whilst holding a stack of pizzas as well with literally nowhere to put this money. Then if you're like me, you've lost count about 5 times and finally have the amount of cash they've given you but can't actually do the math to subtract the order total from the cash given so you know how much change they need. They also decide to be generous and tell you "keep £1 for yourself"; great so now I've got to try and work that out too. Just to top it all of as well, they're stood there, staring, the. entire. time.

So yeah, it's a pretty interesting scenario and you can see why I'd grew to dislike them.

The Temp-Solution

Most of these cash deliveries I was able to avoid, the ones I couldn't I started to work out all of the possible outcomes for change the client could give. I'm not kidding, I would work out EVERY scenario that could happen so I was ready for whatever cash they gave me.

This was pretty great for a while, I'd always be ready. But a lot of the time I spend listening to audio books or the radio whilst driving to orders was then taken up by me trying to memories the change outcomes and it quickly became less enjoyable.

That's essentially what sparked the idea, I started to think there must be a better way, I'm doing the same thing every time, surely I can automate it. And then it struck me, I'll just build an app.

Planning the app

So, I knew the app had to be nice and clean, easy to use and quick to develop.

It needed 3 simple screens:

  1. How much the order costs.
  2. How much cash they gave you.
  3. How much change to give them.

    Ontop of that, I should probably add a 4th screen just incase they decide to tip so we can re-calculate the change (this happened quite a lot which is awesome).
  4. How much they tipped.

But that was it, there wasn't much else the app needed to do. Obviously, it needed to be maintainable and scalable but we'll talk about that later.

Selecting a framework

Most of the apps I build are developed using React Native; It's a JavaScript framework created by the guys at Facebook which results in a single JavaScript codebase that uses react components and bridges them into their native corresponding components on the Android or iOS platform.

Put simply, this means I can develop an app using a single codebase and target both the Android and iOS stores with the exact same code (for those of you that don't know; typically Android & iOS development is done in 2 seperate languages).

Due to the simplicity of the project and the scalable nature it needed to adopt I knew React Native would once again be the perfect fit.

Scalability and Maintainability

Now, I've mentioned this a couple times so I'll quickly go over this.

One of the great things about using a single codebase is making features or updates is super simple and doesn't take long.

With a super simple app like correct change, i need to bare in mind features will have to be rolled out to get more trafffic, although the app concept is solid and people (or atleast myself) would use it for years to come, custom features are what keep people returning.

For example;

  • Dominos drivers need to keep track of the amount of deliveries they do in a workday, at the end of the day they let the manager know and they calculate the mileage allowance based on deliveries done.
  • Dominos drivers also need to keep track of how much cash they've taken, typically they just count it at the end of the day.

Both of these are features that the app should and could easily accommodate, but instead of taking more time to develop in the future I'll just bare this in mind so it's easy to add later.

Component Driven Development

One of the key technologies that ensures scalability and maintainablility is the component driven development style that react native uses; put simply, everything you write in the code is a component, this makes it super simple to swap out and add new features; you just write a new component and drop it in.

For example;

  • In any restauraunt kitchen, each of the kitchen appliances (cooker, fridge, kettle, sink etc) are fully independent and function on their own. If one of them breaks or get's outdated, you just take it out and replace it without harming anything else.

It's the same with the correct change app, If i need to replace one of the screens (which is unlikely), or add a new screen (which is likely) then i'll just add a new component.

Put all of that together and you've got a component driven app that's extremely scalable and maintainable.


The correct change app doesn't use any monetization currently, however it's got google ads integreated. I'm a strong believer that building a trusting relationship with customers is important and during the launch of such a super simple app it's not that wise to bomb users with ads. Therefore, I've integrated it but left it off until one day when I see a reason to enable it.

Where to find it?

Well, that's pretty much it!


Quick Showcase