web-appLive

Ahsan Mahmood Portfolio

com.aoneahsan.app

Ahsan Mahmood Portfolio is a production personal-brand platform โ€” not a one-page bio โ€” that showcases live projects, services, blog, testimonials, and contact/payment surfaces across web and a now-live Google Play Android app, backed by a Supabase admin CMS and engineered to be cited by AI search assistants through prerendered per-route JSON-LD and machine-readable agent files.

2024-12 โ†’ PresentPersonal Project

At a glance

Category
web-app
Status
Live
Started
Dec 2024
Last updated
8 days ago

Identifier

com.aoneahsan.app

Preview

Take a look before you go

The still below is painted first, then the running site loads behind it โ€” so the dialog is never an empty rectangle waiting on a network round trip. Where a site allows framing the live app takes over; where it refuses, the still stays and says so. Nothing is requested until you press.

Ahsan Mahmood Portfolio, as its brand card renders
Open the live siteBack to all projects

About

What this actually is

This is the site you are on, and that makes this page an unusual one to write.

Every other entry in this catalogue asks you to take something on trust, or to follow a link and check. This one does not. If a sentence here is wrong, you can find out without leaving the page, which is a good discipline for a writer and a bad place to be vague.

So what follows is only what this repository proves.

It is a portfolio product rather than a portfolio page. That distinction is the whole design: projects, services, a blog, testimonials, feature requests, contact and payment surfaces and the legal pages are all content managed through an admin panel built into the application, not markup edited in a file and redeployed.

The reason is unglamorous and it is the right reason.

Content that requires a build to change is content that stops changing. It gets stale first and then quietly wrong. Eventually nobody edits it at all, because editing it is a deployment. Putting it behind an admin panel is what keeps it accurate a year later.

The design came first. It was approved in full before any of this existed.

Every page was built first as a static click dummy. Only then was it rebuilt as an application. The application is held to it by a test that compares approved copy unit by unit and fails the build when a sentence drifts. That is a strange amount of machinery for a personal site and it exists because approved words drift silently, which no ordinary gate can see.

The other half is what a crawler gets.

A single-page application renders nothing until its JavaScript runs, so anything that fetches the page without executing it sees an empty shell. Most assistants and several search crawlers do exactly that. So the build emits per-route static HTML carrying the real content with JSON-LD inline, and machine-readable files sit beside it for readers that want the structured version rather than the page.

It runs on Supabase's free tier, and that is a constraint rather than a footnote.

There is no server of mine to keep alive, no function billing by invocation, and no vendor whose pricing can move underneath this. Every list read carries an explicit limit and the database does the filtering and counting, which is the habit that a free-tier quota teaches once and permanently.

A theme customiser is available to everyone, signed in or not.

That one is a preference rather than an achievement, and it is here because a site telling people what I build should let them change how it looks while they read it.

What it cost is the machinery.

A personal site does not need a parity gate, an admin panel, a prerender step or an approval artefact. Most of the work here is not the pages; it is the apparatus that keeps the pages honest as they change. That is a disproportionate amount of engineering for one person's portfolio, and it is the same apparatus that makes the claims on it worth reading.

There is one more thing the page should say about itself, since it is the only entry that can.

The copy you are reading was drafted, reviewed and held before it was published. It was checked against the record it describes, and the claims that could not be sourced were removed rather than softened. That process is why this page is shorter than it could be and why the sentences in it are duller than a marketing page would allow.

Which is the argument, really.

Worth knowing

  • It's a content platform, not a static bio page โ€” admin CMS, blog, feature requests, service detail pages, conversations.
  • The build emits per-route static-HTML pages with JSON-LD `Person` / `WebPage` / `Service` / `BlogPosting` / `SoftwareApplication` / `BreadcrumbList` schemas inlined โ€” AI crawlers don't need JS to parse content.
  • `pricing.md` + `services.md` + `llms.txt` at site root are designed for AI buying agents and ChatGPT-style discovery โ€” most portfolios ship none of these.
  • Lean Android permission footprint: no camera/geolocation plugins, lowering Play Console review risk.
  • Strict zero-cost architecture: Supabase free-tier only, FilesHub for file storage, no paid compute.

Built with

  • React 19
  • TypeScript
  • Vite 8
  • Radix UI Themes
  • TanStack Router
  • TanStack Query
  • Firebase
  • CapacitorJS

Key features

What it does, and what that costs to build

Each of these is a capability the stack genuinely provides. None of them is an outcome nobody measured โ€” there is no "cut onboarding by 40%" on this page, because no one measured onboarding.

  • Firestore-backed projects catalog + admin CMS
  • Service detail pages with Service JSON-LD
  • Public blog with BlogPosting schema
  • Testimonials with AggregateRating schema
  • 87 per-route static HTML pages for AI crawlers
  • Agent-readable pricing.md / services.md / llms.txt
  • Full Radix theme customizer for all visitors

Screenshots

5 slots, 2 of them filled in

These are designed frames, not pictures. Each one records what belongs in the slot and at what width; the capture itself is taken from the running app. Drawing a fake screenshot here would put an image on the site that no build has ever produced.

Timeline

Still being worked on

  1. Dec 2024

    Work started

    The earliest month on record for Ahsan Mahmood Portfolio.

  2. Oct 2026

    Last change

    Status is completed โ€” 8 days ago. Ongoing, so this row moves whenever something lands.

Questions

Common questions

The questions that actually arrive, answered in the first sentence.

Who built this site?
Ahsan Mahmood built it alone, and you are reading the result. The same person designed the pages, wrote the admin panel that manages their content, built the static-HTML generator that feeds crawlers, packaged the Android build and wrote the copy on this page. It is unusual to have a portfolio entry a reader can verify in a single click, and that is the point of naming it: every claim below is checkable from where you are already standing.
Is any of this page written by hand or is it all from a database?
Both, and the split is deliberate. The layout, the wording of every heading and the shape of every section were fixed in a static click dummy before a line of application code existed, and the application is checked against that dummy by a test that compares the approved text unit by unit. What comes from the database is the content: this description, the questions below it, the tags. The design is approved copy and the content is data.
Why does it emit static HTML when it is a React application?
Because the crawlers that matter most do not run JavaScript. A single-page application renders nothing until its bundle executes, so an assistant fetching the page sees an empty shell and reports that there is nothing here. The build emits a per-route static HTML page carrying the real content and inline JSON-LD, which is what a non-executing crawler reads. The alternative is a site that looks fine to a person and is invisible to everything else.
What runs the admin side?
An in-application admin panel, built as part of the product rather than bolted on. Projects, services, blog posts, testimonials and the site's own settings are managed there rather than by editing code and redeploying, which is the difference between a portfolio and a portfolio product. Editing content should not require a build, and anything that does require a build eventually stops being edited at all.
Does this site have an iPhone app?
No. It ships as a web application and as an Android build through Capacitor, and there is no iOS release, because there is no Apple Developer account here and nothing I build has shipped to the App Store. An iPhone opens the site in a browser and gets the whole thing, since everything here is a web page first. The Android build exists because packaging one was cheap once the web application was already correct.

Keep looking

More web apps

  • ZT

    ZTools

    com.zaions.ztools

    A privacy-first developer and power-user toolbox covering 20 categories, where the work happens in your browser rather than on someone's server.

    completedFeatured
  • TA

    TaxEase

    com.aoneahsan.taxease

    Tax compliance workflows for filers, with an admin side for staff.

    completedFeatured
  • LI

    LifeWell

    com.aoneahsan.lifewell

    Health and wellness tracking across web and Android.

    completedFeatured
All 23 projects