Food delivery platform
Five apps on one backend for a local delivery service, built to stay fast, secure and cheap to run.
- Role
- Backend engineer, co-founder of the studio
- Apps
- Customer app, driver app, restaurant dashboard, admin console, API
- Stack
- JHipster (Spring Boot), PostgreSQL, Redis, WebSockets, Twilio, Google Maps, Flutter, Next.js
- Focus
- Real-time orders, security, running costs
The problem
A local delivery service needed customers, restaurants and drivers on the same page in real time, on a startup budget where every paid API call counts.
What we built
- Customer and driver apps (Flutter) and web dashboards for restaurants and admins (Next.js), all on one JHipster backend.
- Live orders: status changes are pushed over WebSockets to every screen, from the kitchen to the door.
- SMS updates through Twilio, and product search for restaurant menus.
Keeping running costs down
Maps were the biggest variable cost, so the backend is careful with them:
- The delivery fee is a base price plus a price per kilometre of real road distance.
- The route is computed once and saved on the cart, instead of asking Google again each time the cart is shown.
- Calls request only the three fields the app needs (distance, duration and the route line), which keeps them in Google’s cheapest billing tier.
Security and performance
- Token-based authentication with separate roles for customers, drivers, restaurants and admins.
- Frequent look-ups such as users are cached, so busy hours don’t hit the database for every request.
Delivery pipeline
The Android app is built automatically on every push, and the backend deploys itself to the development server, so testers always have the latest version.