Mobile App Dev
● Built large scale systems at Juspay, Amazon,
Trilogy serving millions of users
● Passionate about building Creation tools
I’m Vimal Kumar, CEO of Juspay
Why do commercial apps take months
to develop and millions of $$ to
Why are Apps hard?
Unnatural programming model for
● Event based model complicates transactional apps
● No clarity of flow of control - too many jumps
● Can’t compose flows, smaller to larger, due to async nature
Why are Apps hard?
Frameworks focus on Getting started quick;
Not on fundamentals to Control complexity
● Complexity of serious apps is exponentially increasing.
● Need a strong theory like Functional Programming / Category
theory with extreme focus on composition.
● Hard theories need years of investment to get practical advantage.
Why are Apps hard?
Fragmented Architecture, Need Unification
● Frontend, Backend, Persistence, External service integration,
Analytics, Business Logic, Infrastructure.
● All are handled in different ways. They can be unified with a
few simple building blocks.
Presto’s vision is to enable
Freshers/PMs build and maintain apps
with 10x less time and effort.
It needn’t be this way!
● Conversational UX DSL
● Business Flows as Goal Trees
● PureScript - Pure FP, Category Theory
● Unify, Only 3 Blocks, UI | Flows | Data
UX Flows as Conversational DSL
Business Logic as Goal Trees
● Composable Goals!
● Understandable to
non-tech - Designers,
Introduce Verify Mobile Create VPA Goal: BHIM Onboarding
UI: Step 1 Help
UI: Step 2 Help
API: Trigger OTP
Poll SMS Inbox
Local API: Send
Poll Server for
UI: Ask Mobile
Welcome Dilip to the app
Ask to pay the DTH bill (why not give some incentive!) >
Ask to choose DTH Operator. If a lot, let him search >
Ask for his Customer ID. Show HELP on where to find the Customer ID >
Fetch his Customer Name and latest due bill amount :: LOAD >
Show the bill details and Ask to pay
Commit the payment and Show confirmation status.
Cross Sell Ask if he’d like to set up Auto-deduct OR Payment reminder for future bills >
Goal Tree as a Narrative
DSL Goal Tree - Code Walkthrough
PureScript - Pure FP
● Composition, State Management, Conciseness and Clarity
● CPS (Continuation passing style) for the DSL Goal Trees
● Category Theory - Functors / Monads / Applicatives
Just 3 Building Blocks - Unify
● UI Structure - Visual Components like React
● Goal Tree - Flows as Pure Functions
○ Represents the entire business logic
○ Unified Backend and Frontend
● Data as Types
○ Single set of types for Frontend, Backend, UI, Storage
○ Types mapped to DB data model
Why PureScript and CPS?
PureScript GhcJS ClojureScript
+ Strong FP - Focus on Purity,
+ Types - Few errors, Easy refactoring
+ Solid and easy JS FFI
+ JS Code Small & Reliable
- New and evolving
+ Implements all Haskell’s
features and access to most
- Large size JS and not so
+ Is a Lisp!
+ Strong Developer community
+ Proven runtime
- Lacks Types
- Lacks strong math / category
theory foundation of Haskell
CPS (Continuation Passing) Elm Architecture / Redux Pure FRP
Maps directly to UX flows / flows as
Global state complicates
transactional flows vs CPS manages
local state in stack
More general than CPS but
complicates UX flows. Presto will add
FRP support in future
How is this 10X?
● Reuse of Lego Blocks: UI / Flow / Data components become
extremely reusable across apps as we use Pure FP techniques.
● FP and Types guarantee Reliability for Free, minimizes testing.
● The DSL - Unifies Product / Dev and Design teams, improves
clarity & removes communication overhead.
● Unified UI code for Android / iOS / Progressive Webapp / Desktop
Web removes necessity for multiple UI dev teams
● Unified frontend / backend removes need for separate mobile and
Apps in Production
UPI SDK for top Apps UPI for Petroleum New Juspay Safe
Potential for 100M+ users
School of Functional Programming
● Auto generate UI components from design - Sketch plugin
● UX Goal Tree as an editable Fishbone diagram
Want to contribute? Just mail us at