Speedy / Pronto

Real time ordering app for Zizzi' and ASK Italian

ReactGatsbyWebSocketsECSDynamoDBRESTGraphQLStripeDevOps

As the tech lead for the Speedy/Pronto real-time ordering app, I was responsible for leading the development and overseeing the technical direction of an app used across 300+ restaurants, including Zizzi’s and ASK Italian. The app allowed customers to place real-time orders directly from their devices, enhancing the dining experience with speed and convenience.

The frontend was built using Gatsby and Material UI. Gatsby provided excellent performance, with fast load times thanks to static site generation at build time. However, the large number of pages that needed to be generated resulted in long build times, which was one of the trade-offs we had to manage.

On the backend, we leveraged a suite of Node.js microservices that communicated with third-party APIs like Stripe for payment processing and Comtrex for ordering and table management. To enhance user experience, we implemented WebSockets, which allowed customers at the same table to see each other’s orders in real-time. However, scaling the WebSocket server posed challenges, as it was stateful and required grouping users into rooms, making it difficult to scale horizontally. For more details on how I tackled this issue, you can read about it in this article.

When I came on as tech lead, one of my key contributions was introducing a DevOps mindset to improve our CI/CD processes. By optimising our continuous integration and deployment pipelines, we significantly increased the cadence of releases, allowing the team to ship updates faster and more reliably.

Additionally, I took an active role in mentoring junior developers, helping them grow their skills and eventually progress into senior roles. This not only improved the overall skill set of the team but also fostered a culture of continuous learning and growth.