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.
← Back to the descent