Portfolio No. DSR / 2026 · 20+ Years in Practice

Dhanesh S R

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
  1. L1Edge & Delivery
    CloudFrontAkamaiRoute 53WAF / SSLELB
  2. L2Interface
    JavaScriptHTML / CSSjQueryCore Web VitalsPWA
  3. L3Application
    PHP / MVCGoREST APIsAuth & SSO
  4. L4Search & Cache
    SolrElasticsearchAlgoliaRedis
  5. L5Data
    MySQLPostgreSQLMongoDBAurora / RDS
  6. 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.

Backend & Application Development

PHP / MVC Go REST APIs MySQL / PostgreSQL MongoDB Redis Auth & SSO Payments & Webhooks Enterprise Integrations

Frontend & User Experience

JavaScript jQuery HTML / CSS Responsive UI SEO & Core Web Vitals Booking Workflows Progressive Web Apps Service Workers & Offline Handlebars Templates Progressive Enhancement Accessibility (WCAG) Dark Mode & CSS Variables Content Security Policy Asset Build & Cache Busting JS Testing (node:test, jsdom)

Search & Performance

Solr Elasticsearch Algolia Redis Caching DB Optimization Load Testing API Performance

Cloud & Infrastructure

AWS / S3 Aurora / RDS CloudWatch ELB CloudFront Route 53 IAM Nginx / PHP-FPM Docker WAF / SSL
§ 02

Architecture Through Real-World Systems

Detail - Event Ticketing Platform

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.

Event Management Pricing Rules Inventory Payments Coupons GST Booking States QR Codes Ticket Scanning Partial Entry Cancellation Policy Notifications Search Caching Admin Workflows
Featured Build

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
Weekend Trip · 4 friendsExample
Homestay - Asha₹8,000
Fuel - Kiran₹3,200
Dinner - Meera₹2,400
Tickets - Arjun₹1,600
Total · ₹3,800 each₹15,200
Arjun → Asha₹2,200 Pay · UPI
Meera → Asha₹1,400 Pay · UPI
Kiran → Asha₹600 Pay · UPI
Fig. 2 - Simplified debts, settled through any UPI app
BudSplit dashboard showing total balance and Pay with UPI buttons for each group
Dashboard Balances across groups, with one-tap UPI Pay
BudSplit group balances with simplified suggested payments for a Goa trip
Balances Who owes whom, with simplified payments
BudSplit add expense form: paid by and split equally between four friends
Add expense Paid by anyone, split any way
BudSplit trip summary with who paid what, CSV download and PDF export
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.

  1. Tell it about the trip Where, how many days (up to 7) and how many of you. Pick a budget, a pace and what you enjoy.
  2. Get a day-by-day plan Morning, afternoon and evening for each day: places to see, where to eat and a rough cost per person.
  3. Save it, share it, split it Save 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
BudSplit AI trip plan for Munnar and Alleppey: 3 days for 4 friends, with day 1 in Munnar showing tea estates in the morning and Mattupetty Dam in the afternoon, each with a cost per person
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 use 28 currencies UPI for INR groups Installable 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.