Adnan AhsanThe personal website of our founder, with his work, writing and current focus
iadnanahsan.com is the personal website of Adnan Ahsan, founder of Awan Forge: what he has built, what he writes and what he is working on now. We designed and built it as a static Next.js site whose build stops when a project’s status and its link disagree.

- Client
- Adnan Ahsan
- Sector
- Personal publishing
- Year
- 2026
- Platforms
- Website, Mobile web
- Services
- Product and UX design, Web development
The one page that states who Adnan Ahsan is. It holds his biography, a list of what he has built with each project’s status today, his articles with an RSS feed, and a now page that prints the date it was last true. It also tells search engines which public profiles are his.
Built for
- People looking him up by his name or by his handle, iadnanahsan.
- Clients and collaborators checking what he has built before they get in touch.
- Search engines and AI search tools that need one reliable source about him.
- Readers of his writing, on the site or through the feed.
The problem
A personal site goes out of date in predictable ways: links die, a project stops running, and a page that says currently stops being current. None of that fails a type check, and the author rarely notices, because he already knows what the page was meant to say.
Search engines decide who a person is partly from the profiles linked to them. A profile with the same handle that belongs to someone else tells them two different people are one. The Facebook account at his handle is not his.
Awan Forge has its own website, and the company was renamed from Stability in 2026. This site had to state that relationship in the same words on every page and in its structured data, and leave the studio’s own story to awanforge.com.
Goals
- 01Give every project a status that is true today: live, building, private or retired.
- 02Stop the build when a status and its link disagree.
- 03Link only profiles confirmed to be his, and record how each one was confirmed.
- 04State the Awan Forge relationship once, for the pages and the structured data.
- 05Load no analytics, no cookies and no third-party requests.
Our role
We designed and built the site, and run it on our own server, where it has been live since 22 September 2026.
What we delivered
- Visual identity: three typefaces with one job each, with light and dark themes
- Home, about, work, writing and now pages, with a page for each project and each article
- Project list with statuses the build enforces
- Articles in MDX, an RSS feed and links generated between articles and projects
- Content check that runs before every build
- Structured data for the person, the company, the site and each page
- Social card rendered from the same typeface as the page
- Deployment behind nginx and Cloudflare, with a runbook in the repository
How we worked
- 01
Order the site by the questions a stranger asks
The navigation runs About, Work, Writing, Now: who he is, what he has built, what he thinks and what he is doing today. Details about the studio, its prices and how a project runs stay on awanforge.com.
- 02
Give each typeface one job
Anybody, at its widest setting and a light weight, sets the name and nothing else. Instrument Sans sets everything written as language, and Azeret Mono sets everything that is data: dates, statuses, domains and the handle. The name’s size was measured in a browser so it fills the column at every width.
- 03
Write the rules into a check
A script runs before every build. It fails on a live project with no link, a private project with one, a duplicate slug, an article dated in the future or an article file that is not registered, and it warns when the now page is more than 90 days old.
- 04
Confirm every profile
Each linked profile records how it was confirmed: the page was loaded and names him, or he confirmed it himself where a site blocks automated checks. A handle that matched but belonged to someone else was left out.
Screens and features
Work, writing and now, in one dark system
Each project carries a live marker and one plain sentence about where it stands today.

A now page, kept current
What is being worked on at the moment, dated, with the same work list on a phone.

A status on every project
Each project is marked live, building, private or retired. A live project links to the product. A private one, such as a client platform behind a login, never has a link.
A now page that shows its date
The page prints the day its entries were last confirmed, and the homepage shows one present-tense line beside that same date.
Light and dark, with no flash
The site follows the device setting until the visitor picks a theme. A small script in the page head applies the choice before the first paint, and the switch plays a reveal that is skipped for reduced motion.
Articles and projects linked both ways
Naming a project in an article’s details adds the link on the article and on the project’s page, so neither list is kept by hand.
The company relationship, stated from both sides
The structured data names Adnan as the founder of Awan Forge and Awan Forge as his employer, with Stability recorded as the company’s previous name.
A share card that matches the page
Shared links show a card rendered with the same width and weight of Anybody as the page, from static font files, because the card renderer cannot vary a variable font.
Technical choices
What the product is built with, and why.
- Next.js 16 and React 19, fully prerendered
- Every page is static HTML built ahead of time. There is no database, no API and no server rendering a request.
- Plain CSS with custom properties
- The design depends on type width, line length and the alignment of a column of dates. Custom properties handle those directly, so one stylesheet is the whole system and there is no CSS framework.
- TypeScript 6
- TypeScript 7 was tried and reverted, because typescript-eslint did not support it yet, and linting mattered more than the upgrade.
- Fonts self-hosted through next/font
- All three families are variable and under the SIL Open Font License, and they are served from the site itself, so a page makes no request to a font service.
Need a personal site that stays accurate?
Build checks, structured data and pages that state only what is true are work we enjoy. Tell us who the site is about.