Case Studies

Work that shipped and scaled.

Four deep-dives into systems I architected from scratch — with the real constraints, tradeoffs, and lessons learned along the way.

Case Study 01Offline-first point-of-sale for 500+ retailers

EPOS Retail Platform

Enterprise-scale offline-first EPOS platform supporting 500+ retailers with a custom SQLite sync engine, Adyen payment integration, Kitchen Display System, and native hardware modules — achieving 99.9% system reliability.

React NativeNode.jsAdyenWatermelonDBKotlinSwiftSQLite
500+
Retailers
99.9%
Reliability
60%
Txn Success ↑

The Story

1

Beginning The stakes

A global retail client needed a point-of-sale system that could run in brick-and-mortar stores with unreliable internet. Any downtime meant lost sales and frustrated staff. The stakes: 500+ live retail locations depending on a single mobile app to process every transaction.

2

Middle The constraints

React Native's SQLite ecosystem wasn't ready for the scale we needed out of the box. We needed offline queueing, conflict resolution, and atomic transaction handling — all while maintaining a UI that felt instantly responsive regardless of connectivity state.

3

Climax The tradeoff

The key tradeoff: build a custom sync engine on WatermelonDB vs. use a third-party sync service. I chose custom — because the sync logic needed to understand our business rules (partial order completion, split payments) in ways no generic service could. Six weeks of architecture. Worth every day.

4

End The outcome

99.9% system reliability in production. Transaction success rate improved 60% in low-connectivity environments. Adyen and Stripe integrations reduced payment processing time by 30%. Custom Kotlin/Swift native modules for terminal hardware improved efficiency by 40%.

5

Takeaway The lesson

Offline-first is a UX philosophy, not just a technical feature. Every state transition needs to work without assuming connectivity. The user should never feel the network.

Interactive Demo

📱
Live iOS/Android app running natively in your browser
→ Embed from appetize.io
💡Replace the placeholder below with your Appetize.io embed URL to show a live iOS/Android demo of the EPOS app.
Case Study 02Remote arcade machine control for 25K+ users

Arcade Live — IoT Gaming

Cross-platform gaming platform enabling real-time remote control of physical arcade machines via video streaming, IoT device management, and in-app purchases — driving 20% revenue growth.

ExpoReact Native WebIoTIAPWebSocketsReal-time Video
25K+
Active Users
20%
Revenue ↑
<100ms
Control Latency

The Story

1

Beginning The stakes

A gaming startup wanted to let users play real, physical arcade machines remotely — via smartphone. The stakes were unusual: a control input with 200ms latency feels broken. The entire product's value rests on sub-100ms responsiveness.

2

Middle The constraints

IoT device management at scale is a distributed systems problem wearing a mobile app costume. We needed real-time video streaming, bidirectional control signals, IAP revenue flows, and a UI elegant enough that grandma could figure it out.

3

Climax The tradeoff

WebSocket vs. WebRTC for the control channel. WebSockets were simpler, but WebRTC's peer-to-peer reduced server load and latency. The tradeoff was implementation complexity — but with 25K users, the server cost delta justified it.

4

End The outcome

25,000+ active users on launch. Platform revenue up 20% from IAP. Control latency consistently under 100ms. The app runs on iOS, Android, and web via React Native Web — a single codebase serving three surfaces.

5

Takeaway The lesson

In real-time systems, latency is UX. Every millisecond you shave is a user who doesn't get frustrated and quit. Architect for the latency budget before you write the first component.

Interactive Demo

Interactive code playground — edit and run the code in your browser
→ Embed from snack.expo.dev
💡Embed an Expo Snack below to show the real-time control UI component interactively. Use snack.expo.dev to create and embed.
Case Study 03Subscription travel app with 10K+ active users

Secret World Travel Guide

Subscription-based travel guide with Mapbox navigation, Stripe and IAP dual-payment rails, and Redux Toolkit state architecture — serving 10,000+ active users with 15% faster load times post-optimization.

React NativeRedux ToolkitStripeIAPMapboxTypeScript
10K+
Active Users
15%
Load Time ↓
2x
Payment Rails

The Story

1

Beginning The stakes

A travel startup needed a subscription app to compete with established players in the travel guide space. The key differentiator: curated, local-expert content behind a paywall, with offline map access. The stakes: churn is brutal in subscription apps. Every slow screen is a cancellation.

2

Middle The constraints

Managing subscription state across Stripe (web purchases) and Apple/Google IAP (mobile purchases) — with different refund policies, different entitlement timing, and different webhook behaviors — is a hidden complexity that trips up most implementations.

3

Climax The tradeoff

We needed a unified subscription state machine that treated Stripe and IAP as two different input channels to the same entitlement logic. The architecture: a backend entitlement service that both SDKs wrote to, and the app read from. One source of truth.

4

End The outcome

10,000+ active users. 15% load time improvement through Redux Toolkit normalization. Zero subscription state bugs in 8 months of production. Mapbox offline caching worked seamlessly even in remote hiking areas.

5

Takeaway The lesson

Payments are where complexity hides. Design your entitlement model before your payment integration. The payment provider is an input; entitlement is the business logic. Keep them separate.

Interactive Demo

Screen Recording / GIF
Place a 30–60 second screen recording or GIF here showing the Mapbox navigation and subscription flow.
Recommended: 30–60s · MP4 or GIF · Max 10MB
💡Place a 30–60 second screen recording or GIF here showing the Mapbox navigation and subscription flow.
Case Study 04Secure proctoring for 2,000+ students

Remote Examination Platform

Secure remote exam platform with real-time face detection, screen capture, and audio proctoring — covering 2,000+ students and reducing administrative workload by 30% through automation.

React NativeElectronAzureSQLiteCanvas APIFace Detection
2K+
Students
30%
Admin Work ↓
3x
Proctoring Signals

The Story

1

Beginning The stakes

An education institution needed a lockdown exam system that could run on varied hardware (student's own laptops), with real-time proctoring, secure question distribution, and zero-cheat guarantees. The stakes: academic integrity for 2,000+ students.

2

Middle The constraints

Running a React Native app on desktop via Electron, while preventing screen capture, recording audio, and running ML-based face detection — all without freezing the exam UI — required careful threading and platform-specific native bridging.

3

Climax The tradeoff

Face detection on-device vs. server-side. On-device protected privacy and worked offline, but added CPU load to student machines. We chose on-device with adaptive quality settings — reducing CPU impact by 40% when an exam was in progress.

4

End The outcome

2,000+ students examined without incident. 30% reduction in administrative workload via automated scheduling. The platform became a template for 3 subsequent client deployments.

5

Takeaway The lesson

Security engineering is UX engineering. Every security feature is a constraint on the user experience. The goal is to make the constraint invisible — not absent.

Interactive Demo

Screen Recording / GIF
Place a 30–60 second screen recording showing the proctoring interface and exam flow here.
Recommended: 30–60s · MP4 or GIF · Max 10MB
💡Place a 30–60 second screen recording showing the proctoring interface and exam flow here.