JAVIS Mobile Ordering App
Designed and delivered a cross-platform mobile ordering app for self-service beverage machines, enabling real-time machine discovery, digital payments, and live order tracking across iOS and Android.
Customers had no way to check machine availability, queue length, or wait time before arriving at a location. Orders were placed on-site with no pre-ordering capability, no digital payment option, and no visibility into order status after placing. The engineering challenge was building a real-time ordering system tightly coupled with live machine state, where stale data or failed payments could not be tolerated.
“By the time customers arrived, machines were often unavailable. There was no way to know until they got there.”
Owned full-stack engineering for the JAVIS mobile ordering platform, from system architecture through production delivery on iOS and Android.
End-to-end system architecture
Designed the full mobile and backend architecture, defining API structure, state management, and data flow for ordering, payments, and real-time machine availability.
Real-time ordering under machine constraints
Built ordering workflows tightly coupled with live machine state, handling inventory discrepancies, machine downtime, and unstable network conditions to keep checkout behavior consistent.
Stripe payment reliability and recovery
Integrated Stripe with retry logic and payment recovery handling, ensuring secure checkout completion even when connections are unstable or interrupted.
Location-based machine discovery
Built Mapbox-powered discovery showing nearby machines with live queue length, wait time, and distance so users could decide before heading out.
Checkout performance optimization
Reduced checkout time by 50% through API optimization, improved state handling, and a simplified ordering flow, making the app faster than ordering on-site.
CI/CD and release pipeline
Owned iOS and Android release pipelines using Expo, EAS, and GitHub Actions, enabling stable deployments and consistent release workflows.
Production delivery and client handover
Led structured production handover with documentation, system walkthroughs, and deployment guidance for the client team taking over the system.
300+
Daily Orders per Machine
Supported high-volume self-service machine transactions
50%
Faster Checkout Time
Reduced through API optimization, state handling, and simplified ordering flow
100+
Concurrent Active Users
Handled simultaneous real-time ordering activity
Live sync
Machine Availability
Ordering state kept aligned with real-world machine status
- 1
Real production usage exposes problems that testing never catches. Inventory discrepancies, machine downtime, and interrupted payments only appeared after launch, reinforcing the value of building error handling into the system from the beginning.
- 2
Checkout speed is a product decision, not an afterthought. Treating speed as a core requirement from day one drove better API design, more efficient state management, and a simpler ordering flow compared to optimizing at the end.
- 3
Payment reliability requires planning for failures, not just successes. The real engineering work was building retry logic and recovery handling that prevented duplicate charges and lost order state under real mobile network conditions.
- 4
External system integration requires reliable synchronization. Machine inventory and status were managed by an external backend system, making reliable synchronization essential to ensure orders were only placed against accurate and up-to-date machine data.