Work
00Selected work

EverythingI've built.

A property platform, a weekly magazine, commerce sites, mobile apps and one research model — each one designed, built and deployed by me. Open any project for the full breakdown.
8 projects5 in production39 technologies
01Pinned
the one to look at first
Featured buildLive2026 — ongoing

Estate Ulagam

A property discovery platform spanning 18 sovereign markets, where nothing reaches a buyer until it has passed editorial review. Multi-currency pricing, a country–state–city taxonomy, and curated collections across villas, high-rise apartments, clear-title land, commercial space and new developments.

  • Built a review-gated publishing pipeline: submissions move through an editorial queue and only reviewed listings are ever readable by the public site.
  • Modelled an 18-market country/state/city taxonomy with per-market featured cities and live reviewed-listing counts.
  • Implemented multi-currency pricing so every listing reads in both its local currency and the visitor's.
ReactTanStack RouterTanStack QueryTypeScriptViteTailwind CSSVercel
estate-ulagam.vercel.app
Estate Ulagam - Property Discovery Platform screenshot

Lead Full-Stack Engineer

02Before the rest of the work

From a conversationto a live URL.

Every project below went through the same seven passes. Not a methodology — just the order things actually have to happen in when one person owns all of it.

Keep scrolling — the stages come to you

Requirements01/07
01Requirements

Work out what it actually needs

Before a line of code: what does this thing have to do, for whom, and what breaks if it does not? Most of what people ask for is a solution to something they have not described yet.

  • Sit with the owner and write down the real job
  • Cut the scope to what a first release must carry
  • Sketch the data model — everything else follows it
RequirementsFigma
02Design

Draw it before building it

Screens, states and the unglamorous ones — empty, loading, error, too much data. Deciding these on a canvas costs minutes; deciding them in React costs days.

  • Every screen, including the ugly states
  • One type scale, one spacing scale, one palette
  • An admin surface the owner can actually run
FigmaTailwind
03Coding

Build it end to end

Schema, server, client, admin. I write the whole vertical slice rather than a layer of it, because the interesting bugs live exactly on the seams between layers.

  • Typed from the database row to the rendered prop
  • Server-rendered so the first paint is real content
  • Mobile builds in Flutter when native is the honest answer
TypeScriptReactPythonFlutterNode.js
04Debugging

Find out what is lying to you

The bug is rarely where the stack trace points. I reproduce it, shrink it until it is boring, then fix the cause rather than the symptom that showed up in the console.

  • Reproduce it before touching anything
  • Shrink the failing case until it is obvious
  • Fix the cause, then leave a note about why
DebuggingLogs
05Testing

Try to break it on purpose

Real devices, bad networks, wrong inputs, double-clicks on the pay button. Anything a user can do by accident, I do on purpose first.

  • The unhappy paths, not just the demo route
  • Payments and uploads under a flaky connection
  • Real phones, not only a desktop viewport
TestingLogs
06Security

Lock it down before anyone else does

Row-level security on every table, signed URLs for private files, roles checked on the server and never only in the UI. A hidden button is not a permission.

  • Row-level security on every table, no exceptions
  • Role checks on the server, never only in the client
  • Secrets in the environment, never in the repository
SecurityRow-level securityPostgreSQL
07Shipping

Put it somewhere real

A domain, a build pipeline, a database that gets backed up, and an owner who can change the content without calling me. That last one is what makes it finished.

  • Deploys on push, with previews on every branch
  • Managed Postgres, storage and auth behind it
  • Handover: the owner edits it themselves from day one
VercelCloudflareSupabaseFirebaseGitHub
TypeScriptReactPythonFlutterNode.jsPostgreSQLSupabaseFirebaseVercelCloudflareTailwindGitHubHugging FaceTensorFlowPrismaFigma
03The rest of it

Everything elseworth showing.

filter by what you care about

7 more projects