Throw anything at it. It holds.

I’m Shayan M Hussain, a backend architect. I build the infrastructure, tools and open source that other developers put their products on.

Backend architect, 7+ years.
Karachi → remote, anywhere.

Observing your request…

Sweep across the stream to flood it. The limiter holds.

Shayan M Hussain, portrait.

The invisible work. The visible difference.

I’m Shayan. I build backend infrastructure, developer tools, and the foundations that let other people build.

  • Backend architect, 7+ years. Karachi, working remote with teams anywhere.
  • Honeycomb Protocol’s Web3 game infrastructure and its SDK generator; GameShift’s payment APIs.
  • Now: open source for Node.js and Bun — hitlimit, bunWay, kaput.

Conditions at the edge

Measuring your link to the edge…

The art was the beginning.

I started with NFT communities. Behind the portraits, I built the smart contracts and full-stack experiences that gave people something to do with what they owned.

Sol Patrol, The Fracture, BONK and Mad Lads are part of that chapter. My work spanned Anchor and Rust on-chain, with GraphQL, Node and React around it.

An asset has an identity, an owner and a life beyond its image.

Pick a portrait to explore. Sol Patrol & Mad Lads connect to my work; Fox collections illustrate the wider ecosystem.

Ownership became a world.

Raffles and staking led me into on-chain games. At Honeycomb, I worked on the infrastructure for profiles, characters, resources and missions behind one API.

A game should be able to send a character on a mission, track its state and return a reward without its designers having to become Solana engineers.

Build your party, pick a destination and bring back resources. Ownership stays with you while the mission changes the asset’s state.

Playable model · no wallet neededInventory 0
ScoutYour character

Choose a character and a place. Then explore.

Scale the world. Shrink the cost.

More players mean more state. I worked on compressed accounts on the SVM: Borsh, zero-copy layouts and Merkle roots, keeping data verifiable while making it far cheaper to put on-chain.

Honeycomb’s published profile benchmark drops from 0.0052100 to 0.0000041 SOL. The important part is keeping verification: alter a record and its proof must fail.

Fold 64 records into one root. Then change a record and see why its proof no longer fits.

64 example records · real Merkle verification

A world of records.

Fold the records together. You keep the ability to prove any one belongs.

64 records ready

The chain needs a way back.

Writing a program is part of the job. Applications also need to find assets and react when their state changes. My work reaches into Rust, gRPC and digital asset tooling.

Honeycomb’s compression pipeline emits state for an indexer, a fork of Metaplex’s Digital Asset Standard API. GameShift added aggregation, indexers, WebSockets and in-game payment APIs.

Request a level-up: backend → on-chain transaction → DAS → database → GraphQL refetch → client. Disconnect DAS to see indexing fall behind while transactions continue.

Interactive pipeline model · synthetic transactions

Example on-chain characterOn-chainlevel 1
Client view of the characterIn your applevel 1
  1. 1Backendbuild transaction
  2. 2On-chainexecute transaction
  3. 3DASdecode & serialize
  4. 4Databaseindexed level 1
  5. 5GraphQLrequest fresh data

A request, all the way back.

Request a level-up. Follow the transaction into the chain, then watch indexed data return through a GraphQL refetch.

A request, all the way back. On-chain level 1, database level 1, client level 1. 0 backend requests pending.

Make the hard part usable.

I built Honeycomb’s GraphQL-to-SDK generator so one schema could reach web developers and teams building in Unity, Unreal Engine and Godot.

That is the thread through my work: smart contracts, state, indexers and the developer tools that connect them. I build the systems other developers can build on.

One schema, several language surfaces. These short examples illustrate the shape of typed SDK output.

Let’s build what’s next

Interactive schema model · illustrative SDK APIs

One schemaProfile.graphql
type Profile {
id: ID!
owner: String!
Add fields to the profile schema
}

Change the schema. Every client follows.

Profile.ts
export interface Profile {
  id: string;
  owner: string;
  level: number;
}
In your browser · no network call

3 profile fields available in all four generated clients. Showing TypeScript type.

From on-chain worlds to the systems behind every request.

What’s next?

The same thinking. A different kind of traffic.

Meet hitlimit

Rate limiting8 stores, zero core dependencies

Rate limiting is the first thing a public API needs and the last thing anyone wants to write twice. hitlimit is one middleware for six frameworks and eight stores, with nothing else to install.

hitlimit

Rate limiting8 stores, zero core dependencies

Spend a request. Then spend too many.

That is the real hitlimit middleware, running in your tab: five requests every ten seconds, then 429.

hitlimit({ limit: 5, window: '10s', response: { message: 'Slow down cowboy!' } })
Spec sheet
  • 8 storage backends: memory, SQLite, Redis, Valkey, DragonflyDB, PostgreSQL, MongoDB, MySQL.
  • Zero dependencies in the core. Six frameworks, with a Bun-native build (@joint-ops/hitlimit-bun).
  • Tiered limits and auto-ban for repeat offenders. About 3.3K downloads a month.

bun add @joint-ops/hitlimit · Source on GitHub

200
No requests yet. The vessel is full.

 

Lead intelligenceIn progress · private

A list of businesses is not a list of leads. Quarry works out what each one is missing and what to sell them, and shows the evidence behind every point of the score.

Quarry

Lead intelligenceIn progress · private

A lead score that shows its working.

Finds local businesses, fills in what's known about them (contacts, owner, reviews, website, ads, domain, competitors) and scores them as sales leads for sellers of digital services. It reuses everything it already knows, so the same or a similar search never fetches the same data twice. Self-hosted, runs in Docker.

value = top[0] * 0.6 + top[1] * 0.25 + top[2] * 0.15
Spec sheet
  • The formula and weights are Quarry’s own (scoring.py, audit 1.9.0, and config/services.toml), ported to run in your tab. With Kopi Corner’s facts from the doc, the port gives the doc’s answer: 95, Hot.
  • All code, no AI. Every flag quotes the fact behind it, and the same facts always give the same score.
  • Reuse, from a real run: previewing “cafes in Taman Molek, Johor Bahru” found 76 businesses already known, reused 27, and planned 6 Maps loads.
  • Built with Muhammad Rehan Rasool. In progress; the repo is private.
Kopi Corner · Café · Taman Molek, JBmade-up business, from Quarry’s scoring doc
Change what Quarry knows
Website
Reviews on Maps

Priority95Hot

Sell them a first website

Pitch “Its website is https://www.instagram.com/kopicorner; 2 of 3 competitors above you have a website; you don’t.”

75×0.6 + 70×0.25 + 30×0.15 + phone 3 + mobile 5 + 50+ reviews 10 + 200+ reviews 10 = 95

  • no_own_domain Its website is https://www.instagram.com/kopicorner
  • low_reply_rate 14 of 19 1–2★ reviews unanswered
  • rating_slipping 3.6★ over the last 90 days vs 4.1★ all-time
  • competitors_above 2 of 3 competitors above you have a website; you don’t.

Priority 95, Hot.

Browser extensionHands-free reading, Chrome and Firefox

Reading a long page shouldn’t need a hand on the wheel. Scroller moves any page at the pace you read, and remembers the speed you like on each site.

scroller

Browser extensionHands-free reading, Chrome and Firefox

Press S. Read with your hands free.

The page on the right runs Scroller’s own content script. Start it, change the speed, and hold Shift to pause.

target.scrollBy({ top: px * s.dir, behavior: 'instant' })
Spec sheet
  • The page loads Scroller 1.3.0’s own content scripts (core, pages, session), unmodified, with a stand-in for chrome.storage. The pill in its corner is the extension’s.
  • Any speed from 1 to 5000 px/s, remembered per site. On text pages it switches to words per minute, measured from that page’s font, line height and column.
  • Next chapter on its own, night mode, a sleep timer. Chrome and Firefox from one Manifest V3 codebase.
  • The panels are drawn for this page; they are not from a real comic.

Install it · Source on GitHub

40 px/s · stopped
Speed
Feel

Click the page, then: S start/stop · hold Shift to pause · [ ] slower, faster

All work

ls -l ~/projects

7 projects. You have seen 3; 4 more are one click away.

See all work

Why me

Don’t take my word for it. Ask the site.

It has been briefed, and it doesn’t do modesty.

  1. shayan.site

    Shayan is busy building something, so you get me. Pick a question. I will be brief and I will be right.

7+
years building backends
1,000×
cheaper on-chain state at Honeycomb
4
SDK languages from one schema
3
hackathon podiums: Sandstorm and Civic won, Grizzlython third
2,423
tests in bunWay
3.3K
hitlimit downloads a month

Stack TypeScript, Node.js, Bun, NestJS, GraphQL, WebSockets

Shayan, seen from behind in a yellow hoodie, looking across a still mountain lake at dawn, snow peaks mirrored in the water under a pastel sky.

Let’s build what’s next.

Every system I have built started as somebody’s request. Send me yours.

Write to me
Status
HTTP/1.1 200 OK
X-Served-By
Shayan M Hussain · Karachi
X-Availability
open to remote work, worldwide

All work

you@browser

A terminal, in a web page. It really runs what you type.

 

help (or --help) every command, and what it does

ssh guest@shayan log in to the portfolio: files, projects, a secret

 

Or press one of the suggestions under the prompt.

try