CASE STUDY A3 · Mobile
iStudio
Cross-platform mobile app with real payment rails.
Android/iOS app for Internship Studio built with React Native (Expo), integrating Razorpay and Cashfree payment gateways.
2
payment gateways behind one flow
THE PROBLEM
Internship Studio's enrollment and payments flow lived on the web only; students live on phones. The company needed a mobile app with real Indian payment rails, not a webview wrapper.
WHAT I BUILT
A cross-platform React Native (Expo) app shipping to both stores from one codebase: program browsing, enrollment, and payments through Razorpay and Cashfree with server-verified transactions.
ARCHITECTURE
React Native (Expo) ──► API backend ├─ Razorpay SDK ─┐ └─ Cashfree SDK ─┴─► server-side verification
- Payment success is only ever declared server-side after signature verification — the client's opinion of a transaction is treated as a rumor.
STACK — AND WHY
React Native + Expo
One codebase, both stores, OTA updates.
Razorpay + Cashfree
Redundant Indian payment rails — when one gateway has a bad day, enrollment doesn't.
THE HARD PARTS
Two payment gateways, one state machine
Each gateway has its own callback quirks and failure modes; both feed a single server-side transaction state machine so the app logic never branches on gateway identity.
WHAT IT TAUGHT ME
- Never trust a client-side payment callback. Verify signatures server-side and treat the app as a display layer.