Biography
Eight years, six roles, and one pattern that stuck.
The short version is on the about page. This is the long one β where it started, what each role was actually for, the pattern I settled on, and the things I deliberately do not claim.
At a glance
- Based in
- Lahore, Pakistan
- Time zone
- Asia/Karachi
- Now
- Open Source & Community Projects Developer
- Since
- Mar 2026
- Experience
- 8+ years, since January 2018
The long-form biography
One React and TypeScript codebase becomes a web app, an Android app and a browser extension. 23 of them are live right now. Based in Lahore, Pakistan β working with clients worldwide.
Where this started
January 2018, as a frontend developer at NetRoots Technologies in Lahore, building pixel-accurate interfaces from design specs. It was a junior job and it was a real one β which matters, because the version of this story I used to tell said 2018 was when I was learning HTML and CSS as a hobby. That was flattering and it was wrong. The first line on the timeline below is a payslip, not a tutorial.
What followed was four months of WordPress themes, then a year and a half at PNY Trainings on a Laravel and Angular management system, which is where I learned that most of the difficulty in software is not the framework. It is the part where somebody has to keep using the thing after you have finished being interested in it.
The six roles, and what each was for
Five companies and then my own. Two of them overlap in what they taught me and I have not padded them out to look like six distinct chapters.
- Mar 2026 β Present
Open Source & Community Projects Developer Β· Independent
Current
- Building and maintaining his own products full time β 23 live across the web, Google Play and the Chrome, Firefox and Edge extension stores.
- 25 packages published to npm, four of them open source.
- Available for client projects and contracts.
- Jul 2022 β Feb 2026
Senior MERN Stack Developer (Remote) Β· Perkforce
- Owned delivery of Perkforce SaaS features across web and mobile β React, Node.js, TypeScript, Apollo GraphQL client and server.
- Cross-platform mobile through Capacitor, with production store releases.
- Built the Slack app and the Microsoft Teams app integrations.
- Led implementation planning, code review and delivery coordination as team and project lead.
- Mar 2020 β Jun 2022
Team Lead | SaaS App Developer (MERN/MEAN) Β· Zaions
- Delivered multiple full-stack client products β React, Angular, Node.js, Laravel, TypeScript-first.
- Built native and hybrid mobile apps on Node.js/Express with MongoDB and MySQL backends.
- Shipped a production Manifest V3 browser extension for Udemy playback controls.
- Owned end-to-end execution: requirements, architecture, implementation, deployment.
- Oct 2018 β Feb 2020
Web App Developer | Laravel | Angular Β· PNY Trainings
- Delivered a custom management system in Laravel and Angular for educational content and user management.
- Improved performance and reliability by optimising Angular workflows and adding PWA capabilities.
- Pixel-perfect responsive UI in HTML5, CSS3 and JavaScript.
- Jun 2018 β Sep 2018
WordPress Developer | Custom Theme Developer Β· OSO Software Solutions
- Developed and maintained custom WordPress themes and plugins.
- Advanced custom fields and custom theme development for various clients.
- Jan 2018 β May 2018
Frontend Developer | UI Developer Β· NetRoots Technologies
- Pixel-perfect UIs for multiple web projects in HTML5, CSS3 and JavaScript, aligned to design specs.
- Consistent delivery in a fast-paced environment.
The pattern I settled on
Somewhere in the Zaions years I stopped starting from scratch. The shape that stuck is a single React and TypeScript codebase that becomes three products: a web app, an Android app packaged with Capacitor, and a Manifest V3 browser extension. One repository, one set of tests, three store listings.
The argument for it is unglamorous. A fix lands on every surface at once, a feature cannot be quietly missing from the platform nobody opened this week, and β the part that actually decides it β one person can hold the whole thing in their head. Three codebases need three people or a lot of forgetting.
The Perkforce years ran alongside that: four years of SaaS delivery across web and mobile, the Slack app, the Microsoft Teams app, and enough code review and delivery coordination to know which arguments about architecture are worth having.
What it cost
Breadth, honestly. I am a generalist by construction: I know enough of a database, a build system, a store review process and an accessibility tree to ship, and I am not the deepest person in the room on any single one of them. On a team I am most useful owning a vertical slice end to end rather than a horizontal layer across everything.
The constraint I work under
A product should cost nothing to run. Free-tier Firebase or Supabase, work done in the browser wherever the browser can do it, Cloudflare Workers or Laravel where a server is genuinely required, and no paid service sitting in the critical path.
This started as a necessity and turned into a design tool. A constraint that hard forces the question does this feature need a server at all? β and the answer is no far more often than the industryβs defaults suggest. It is also the only reason one person can keep more than twenty products alive simultaneously without a bill that grows faster than the products do.
It rules things out, which is the point. A constraint that never costs you anything was not a constraint.
Where it needs file storage or transactional email, that is FilesHub β a platform I built and operate, precisely so the free-tier rule did not have to bend the first time an app needed to send a password reset.
What I publish
Twenty-five packages on npm under the aoneahsan maintainer, four of them open source. Two are worth naming because they are the ones I would defend in a code review:
- strata-storage β one storage API spanning localStorage, IndexedDB, cookies, SQLite, Keychain and the filesystem, so a call is correct on web and on native without the caller knowing which it is.
- native-update β over-the-air web-bundle updates for Capacitor apps, with checksum and signature verification and automatic rollback when a bundle fails to boot.
Alongside those, 23 products are live across the web, Google Play and the Chrome, Firefox and Edge extension stores, and sixteen documentation sites exist because a package nobody can work out how to install is a package nobody uses.
The work is also registered on ORCID, which is where the citable record of it lives:
What I studied, and what I didnβt
The distinction matters and most portfolios blur it. The first list is education. The second is course completions β they are certificates of having finished a video series, not accreditations, and calling them anything grander would be the same kind of inflation as a fabricated client count.
Four of the five are game development, which is not what I do for a living. They are here because they are true, not because they are relevant.
Education
- 2018β2022
BSc Software Engineering
Virtual University of Pakistan
- 2016β2017
FSc Pre-Engineering
Govt. Shalimar Graduate College, Lahore
- 2013β2015
Matriculation in Science
Govt. Comprehensive Higher Secondary School
Course completions
- 2021
React Native β The Practical Guide
Udemy (Academind)
- 2021
Complete C# Unity Game Developer 2D
Udemy (GameDev.tv)
- 2022
Flutter & Dart β The Complete Guide
Udemy (Academind)
- 2022
Complete C# Unity Game Developer 3D
Udemy (GameDev.tv)
- 2022
Unity Game Tutorial: Board Game β Ludo 3D
Udemy
Four of the five are game development, which is not what I do for a living. They are here because they are true, not because they are relevant.
What I do not claim
An earlier version of this page said I had deployed to the Apple App Store, that a browser extension of mine had thousands of users, and that I was an expert in several things. None of those were checkable and one of them was simply false.
So, plainly:
- No iOS. There is no Apple Developer account and there never has been. Nothing I have built has shipped to the App Store.
- No download or install counts, anywhere on this site. They fluctuate, nobody can verify them, and the number is never the interesting part.
- No client count and no testimonial averages that are not computed from testimonials you can read on this site yourself.
- No skill percentages. The skills page gives a level and a year, because "React 95%" is a decimal place invented to look precise.
- No MongoDB or GraphQL in new work. Both are on my CV, both are real, and both belong to the Perkforce years.
None of that makes the record smaller. It makes it checkable, which is worth more β and every figure on this site can be traced back to a probe, a payslip or a public registry.
Elsewhere
The same person, in the places where the work actually lives. I check these links on a weekly cadence, because profile links rot silently β one of mine was dead for months and nobody noticed, including me.
Last reconciled against the source record on 1 August 2026. Two of the figures on this page are re-probed before every deploy.
That's the story
The evidence for it is on the projects page, the full record is in the CV, and if you would rather skip both and just describe your problem, that works too.