Orchestrating Supabase, UPI-class payments, and native shells without compromise.
The temptation is to treat the backend as a black box and the client as a thin veneer. That fails the moment rupees move. Indian payment psychology — partial advances, retries, reconciliation with SMS receipts — demands a middle layer that is neither naive nor over-engineered.
Supabase gives honest Postgres, auth, and realtime with an escape hatch to edge functions when policy must sit beside data. I keep business rules close to the database when integrity is non-negotiable, and push orchestration outward when latency or third-party whims dominate.
The native shell is not nostalgia; it is trust. Web views excel until they don’t — camera, background location, and payment SDKs still favour disciplined Android. The contract between layers is JSON and cynicism: version everything, assume stale caches, and never ship a demo secret to production.
When these three chords resolve — data, money, device — you get software that survives the first festival weekend. Everything else is commentary.