About

Hi β€” I'm Ahsan Mahmood.

I'm a full-stack software developer in Lahore, Pakistan. I have been shipping production software since January 2018 β€” five companies, and since March 2026 my own. I build the whole product: the data model, the security rules, the interface, the Android packaging, the store submission, and the documentation somebody has to read afterwards.

Ahsan Mahmood, photographed in a light grey suit against a plain background.

LahorePakistan Standard Time (UTC+5)Remote worldwideIndependent since Mar 2026

The long-ish version

If you only read one section, read this one. Everything below it is evidence for what it claims.

What I actually do

Most of what I ship follows one pattern: a single React and TypeScript codebase that becomes a web app, an Android app and a browser extension. Not three teams and three repositories that drift β€” one codebase, packaged three ways with Capacitor and Manifest V3, so a fix lands everywhere at once and a feature is not silently missing on the surface nobody checked.

That is a claim about maintenance more than about speed. I still maintain products I built years ago, which is a very effective way of finding out which decisions were actually good.

Where the backend goes

Where a product needs a server it is Laravel or Cloudflare Workers. Where it needs file storage or transactional email it is FilesHub, a platform I built and operate myself. Where it needs a database it is usually Firebase or Supabase on a free tier, with the query budget treated as a real constraint rather than a formality β€” an unbounded list read is a bug on the first day and an outage on the day the collection grows.

The constraint I choose

A product should cost nothing to run. Free-tier infrastructure, work done in the browser wherever the browser can do it, and no paid service in the critical path. That is not frugality for its own sake β€” it is what makes it possible for one person to keep 23 things alive at the same time without a monthly bill that grows faster than the products do.

It rules things out, and I would rather say which:

  • No iOS. There is no Apple Developer account, so I do not ship to the App Store and do not claim to.
  • No feature that needs a paid API in the middle of it, unless you are paying for that API and know you are.
  • No architecture that only works while traffic is small β€” the free tier is a budget, not an excuse.

How an engagement usually starts

With a call, before anything is quoted. I would rather tell you on that call that I am the wrong person for the work than discover it together in month two. When I am the right person, you get one accountable person β€” whoever wrote the security rules is also the one who answers when the store listing is rejected.

The parts that usually get skipped are the parts I care about: honest store listings, documentation somebody can follow, and links that resolve.

Four numbers, four sources

These are the only figures I publish. Two of them are re-probed before every deploy, because they move β€” and a stale number is the easiest thing on a page to disprove.

Professional experience
8+

since January 2018

Maintained on npm
25

registry probe, 2026-08-01

Delivered since 2018
55+

the numbered CV list

Live today
23

web, Play and the extension stores

2 of 4 move over time and are re-probed against the live registry and the store listings before each deploy, rather than being trusted from a file.

Where it ships

The same codebase, packaged five ways. Counts come from the July 2026 probe and are re-verified before publish.

20

web apps

Web applications live today β€” hiring and health platforms, a laboratory information system, a link-management SaaS, exam preparation, tax compliance, a Slack archiver and several developer toolboxes. React and TypeScript throughout, deployed to Firebase Hosting or Cloudflare Pages.

How I work

  1. 01

    Scoped on a call, before it is quoted

    A fixed number attached to an unscoped brief is a number one of us is going to be unhappy about. The call is free and it is where I say whether I am the right person.

  2. 02

    One person accountable for all of it

    The person who modelled the data is the person who wrote the security rules, packaged the Android build and answered the store reviewer. Nothing is handed over a wall, so nothing falls off it.

  3. 03

    Run it before calling it done

    A green build is not evidence that a feature works. I exercise the actual flow as a real, non-admin user β€” which is how the interesting failures get found, because they are invisible to every static check.

  4. 04

    Say what it does not do

    In the store listing, in the docs, and on this page. Every limitation you read here was cheaper to write down than to discover.

  5. 05

    Leave it maintainable by someone else

    Full IP transfer, documentation that matches the code, and a handover that assumes I am not available. If the project only runs while I am on it, I have not finished.

What I reach for

5 things carry almost everything. The rest of the list β€” with how long I have used each, rather than a percentage β€” is on the skills page.

React 19TypeScriptCapacitor 8Supabase Β· PostgresTailwind v4

The full list

Worth being explicit about

Not in my stack
MongoDB and GraphQL. Both are real on my CV and both belong to the Perkforce years β€” I do not build new products on either.
Not a designer
I build interfaces and I care about them. Brand design and illustration are somebody else's craft.
Not a data scientist
I wire products up to models. I do not train them.

Things people ask me first

Are you available right now?

Yes. Since March 2026 I have been independent, working on my own products full time and taking client projects alongside them. Fixed price, milestone, retainer or fractional β€” whichever fits the shape of the work.

Do you work with teams, or only solo?

Both. I have led delivery for a small team as a project lead, and I have shipped entire products alone. On a team I am most useful owning a vertical slice end to end rather than a layer across everything.

What time zone are you in?

Pakistan Standard Time, UTC+5. I work asynchronously by default and routinely schedule calls across US, UK, EU and Australian hours.

Can you take over a codebase somebody else wrote?

Yes, and it is a common engagement. It starts with an audit β€” code quality, security rules, performance, dependency health β€” and produces a prioritised roadmap before a line is changed.

Do you ship to iPhone?

No. I have no Apple Developer account, so nothing I build has gone to the App Store. Android and the web are the surfaces I can genuinely take through to release.

Why is there no client list on this page?

Because most of it is not mine to publish. The clients that are public β€” through my CV, npm and the app stores β€” appear on the projects page with the work attached. An anonymous β€œ15+ happy clients” badge proves nothing, so it is not here.

Have a look, or say hello

The projects page has everything with a link that resolves. If you would rather just describe the problem, the contact form goes straight to me and I reply within one business day.