Software Architect · Technical Lead · Full-Stack Engineer
I build, modernize, and scale web applications and digital platforms -
spanning the full lifecycle from business requirements and system
architecture through development, infrastructure, performance, and
ongoing improvement.
Fig. 1 - Stack SectionEdge → Platform
Request path
L1Edge & Delivery
CloudFrontAkamaiRoute 53WAF / SSLELB
L2Interface
JavaScriptHTML / CSSjQueryCore Web VitalsPWA
L3Application
PHP / MVCGoREST APIsAuth & SSO
L4Search & Cache
SolrElasticsearchAlgoliaRedis
L5Data
MySQLPostgreSQLMongoDBAurora / RDS
L6Platform
AWSDockerNginx / PHP-FPMCloudWatch
Scale: production · Rev. 2026
§ 01
Technical Experience
Hands-on experience across the layers a production system actually
touches - application, interface, data, and infrastructure.
A significant part of my experience comes from working on systems
where architecture has to survive real-world complexity. An event
ticketing platform is not simply an application that sells tickets.
Designing such systems requires looking beyond individual features
and understanding how the entire system behaves as one product.
That is the approach I bring to software architecture.
BudSplit - Free Expense Splitter with UPI Settle-Up
Share the cost, keep the memories.
BudSplit is a free expense-sharing app I designed and
built for friends, flatmates and groups of travellers. Add expenses in
seconds - hotels, fuel, meals, tickets - see who owes whom, and settle
up in one tap with UPI through GPay, PhonePe, Paytm or
any UPI app.
Split equally, by exact amounts, by percentages or by shares - accurate to the last paisa
One expense, several payers: record exactly who paid what
Simplify debts finds the fewest payments to settle the whole group
UPI Pay button opens your UPI app with the payee and amount filled in
Expense categories, guessed from the description, with spend by category
Trip summary with spending per day, saved as PDF or exported to CSV
Fig. 2 - Simplified debts, settled through any UPI app
Dashboard Balances across groups, with one-tap UPI Pay
Balances Who owes whom, with simplified payments
Add expense Paid by anyone, split any way
Trip summary Who paid what, PDF and CSV export
BudSplit screens, shown with demo data.
New · AI
AI trip planner: plan the trip, then split it.
Planning is the hard part of a group trip. Tell BudSplit where you're
going and it drafts the whole plan in seconds, so the group can agree on
it before anyone books anything.
Tell it about the tripWhere, how many days (up to 7) and how many of you. Pick a budget,
a pace and what you enjoy.
Get a day-by-day planMorning, afternoon and evening for each day: places to see, where
to eat and a rough cost per person.
Save it, share it, split itSave the plan to the group so everyone sees it, send it on
WhatsApp, then log what you spend in the same group.
You choose
Budget, mid-range or luxury
Relaxed, balanced or packed days
Interests: food, beaches, history, nature, adventure and more
Start date, starting point and notes like "one of us is vegetarian"
You get
A title and short summary for the trip
Three time slots for every day
A cost estimate per person for each stop
A plan the whole group can open later
Day-by-day itinerary
Budget per person
Saved for the group
Share on WhatsApp
Powered by Google Gemini
AI trip planner Day-by-day plan with costs per person
01 · Groups
Trips, flats & events
Start a group, pick its currency and invite friends by email. They can sign up right from the invitation.
02 · UPI
One-tap UPI settle-up
Add your UPI ID once. Friends who owe you see a Pay button that opens GPay, PhonePe or Paytm, with the amount already filled in.
03 · Splits
Fair, exact splits
Equal, exact, percentage or shares: give a couple 2 shares and a kid 1. Any leftover paisa or cent is assigned in a fixed order, so totals always match.
04 · Debts
Fewer payments
Simplify debts suggests the smallest set of payments that clears every balance, or you can see who owes whom expense by expense.
05 · Summary
Trip summary & export
See who paid what, spending per day and by category, and every expense. Save it as a PDF or download a CSV.
06 · History
Nothing gets lost
Every edit is kept in history, deleted expenses can be restored, and finished trips can be archived.
07 · Friends
Bring your people along
After you create a group, add friends from your other groups in a tap, or invite anyone new by email.
08 · Notifications
Know what changed
An email tells you who added an expense or a payment and how much. One click unsubscribes.
09 · Categories
See where the money went
Food, stay, transport and five more. BudSplit picks one from the description ("taxi" is Transport), and you can filter by category.
Free to use28 currenciesUPI for INR groupsInstallable app on phone (PWA)
Under the hood
Built like a payments system, not a demo.
BudSplit runs on a small PHP framework I wrote for it, with no runtime dependencies. These are the engineering decisions that keep people's money right.
Money in whole paisaAmounts are integers in minor units, never floats. Splits hand out leftover paisa in a fixed order, so totals always match.
Balances that must add upBalances are computed on demand, never stored, and must sum to exactly zero or the request fails.
No double savesIdempotency keys stop a retried request from adding the same expense twice.
Safe concurrent editsVersion checks stop two people overwriting each other. Group changes lock rows in a fixed order, so they never deadlock.
Least-privilege databaseThe app's database account cannot change the schema, and history tables are insert-only.
Full audit trailEvery edit writes an append-only revision. Deletes are soft and can be restored.
Strict Content Security PolicyNo inline scripts or styles. Templates only output escaped values, and tests enforce it.
Tested end to endPHPUnit unit and integration tests, JavaScript tests with node:test and jsdom, and an HTTP smoke test.
§ 03
How I Approach Technology
Good architecture is not just about choosing technologies. It is about
understanding the business problem, users, data, workflows, constraints,
and future requirements before deciding how a system should be built.
My approach is practical and engineering-driven, and rests on three
things: architecture that can evolve,
engineering that holds up in production, and
sharing what I learn from solving hard problems.
Understand the business and functional requirements.
Design systems around clear responsibilities and well-defined workflows.
Build solutions that can evolve as requirements change.
Consider performance, security, scalability, and reliability from the beginning.
Validate architecture through real implementation and testing.
Identify edge cases and failure scenarios before they become production problems.
Continuously improve existing systems rather than treating architecture as a one-time activity.
Where I help
Architecture reviews
Platform modernization
Performance & scaling audits
Technical leadership
Search implementation
Cloud migration on AWS
§ 04
Engineering With AI
I actively use AI-assisted development and engineering workflows to
accelerate development, investigate complex problems, review
implementations, generate technical specifications, and improve
existing systems.
AI-Based Architecture
I use AI to explore multiple system designs quickly, stress-test
data models and workflows against edge cases, and generate
technical specifications before a single line of production
code is written - so architectural decisions are pressure-tested
early, when they are still cheap to change.
Vibecoding, With Guardrails
For prototyping and rapid iteration, I work conversationally with
AI to move from idea to working code fast. But vibecoded output
never ships as-is - it goes through the same review, testing, and
validation as any other code before it touches production.
I see AI as an engineering partner - not a replacement for
engineering judgment. The implementation still needs to be reviewed,
tested, validated against the actual system, and measured against
real requirements.
§ 05
Beyond Code
My interest in technology goes beyond writing code - understanding why
a system behaves the way it does, finding the underlying cause of
problems, simplifying complicated workflows, and designing solutions
that remain practical to operate and maintain.
“Good software is ultimately about creating systems that are useful,
dependable, understandable, and capable of evolving with the business.”
- Dhanesh S R
§ 06
Get in Touch
Have a platform to build, scale or untangle?
I'm happy to talk about architecture, technical leadership,
performance problems and platform modernization. Send a short note
about what you're working on and I'll get back to you.