Mahdi

Skills

Grouped by domain rather than listed as forty badges. Every group links to the project that demonstrates it, because a claim without evidence is just a claim.

Frontend

I build interfaces where the hard part is state, not layout. Server rendering, data fetching and the accessibility details that separate a demo from something a real user depends on.

React
Component design and the rendering model, including SSR and hydration.
TypeScript
strict mode, no exceptions. Types as a design tool, not a lint pass.
TanStack Router
Type-safe routing, loaders, search params and SSR integration.
TanStack Query
Server state, caching and invalidation — the only client state layer I reach for.
Tailwind CSS
Design tokens in CSS variables, then utility classes over them.
shadcn/ui
Owning the component source rather than importing a black box.
Accessibility
Semantic HTML first, focus management, labels tied to inputs.

Backend

Services that stay up: bounded lifecycles, real error paths, and the discipline to write the awkward tests instead of the flattering ones.

Go
Goroutines, context cancellation, and HTTP servers that shut down cleanly.
Node.js
Server functions, streaming responses, deployment to an edge runtime.
API design
Idempotency, versioning, and errors a client can actually act on.
JSON-RPC
aria2's engine boundary — batching calls so one poll is one request.
MCP
Model Context Protocol servers in Go: tools, schemas, stdio and streamable HTTP.
Testing
Tests on the failure paths and on money, not on snapshot sprawl.

Infrastructure

Enough of the deployment story to reason about what runs where, and to keep the boundary between a platform and a framework machine-checked.

Cloudflare Workers
Edge runtime, Vite plugin, and what having no filesystem forces you to rethink.
Vite
Plugins, build-time globbing, and environment config.
Git
Submodules, lock files, and a sync script that rolls back on a red gate.
CI
Typecheck, lint and tests blocking a deploy.
Observability
Structured logs and the errors worth alerting on.

Systems and architecture

I care most about the seams: where one thing stops being able to depend on another, and how you make that boundary hold over time.

Boundary design
A platform seam enforced by a script, not by convention.
Dependency isolation
A framework pinned to a verified revision, with automatic rollback.
Domain modelling
Ubiquitous language written down before the UI exists, and kept honest.
Decision records
ADRs for the choice and the reasoning, not the task list.
Pure functions
Scheduling as `(rules, conditions, now, state) -> Effect` so it is testable.

Learning in public

I keep working notes on the things that surprised me. Most of what I know about a tool came from being wrong about it first.

V
Currently learning. Writing a desktop framework and an app on it.
Writing
Notes and essays, mostly about the edges of tools.