Hey, I'm Adamm.
I enjoy building and designing for the web.



Here are a few of my list projects.
Fresh from the build log.
$ git log --oneline blog/
- 4cd97c5(HEAD -> main) teaching this page to animate itself with GSAP ▍
- 90cee39Migrating to Tailwind v4: From Config File to CSS [CSS]
- b169c75Migrating This Site to Next.js 16: Lessons Learned [NextJS]
- 9d76c59Understanding React Server Components [React]
- d3205b6TypeScript Strict Mode Without Tears [TypeScript]
- 1ac55e3Practical Tailwind Theming with Semantic Design Tokens [CSS]
- # full history → /blog
Software engineer, end to end.
From design systems to system design.
Years of shipping for the web: UI architecture and design systems up front, APIs, data, and services behind — and clean boundaries holding it all together.
HTML
CSS
Javascript
Typescript
React
NextJS
TailwindCSS
Sass
Zustand
NodeJS
ExpressJS
NestJS
Go
PostgreSQL
Git
Have a play.
A tiny ecosystem — everything idles, everything reacts. Poke a doodle, or drag one into another. Some pairs have chemistry.
poke · drag · combine · reset · ↑ ↑ ↓ ↓ ← → ← → b a
Opinions I'll defend.
- design systems
A design system is an API. Version it, break it loudly.
// components come and go — tokens and contracts stay
- architecture
Good architecture makes code easy to delete.
// strict layers, one-way imports — clever is a liability
- backend
Design the contract before the code.
// schema first, handlers later — an API is a promise
- data
Your database outlives your framework. Design it like it.
// three frameworks later, the schema is still here
- systems
If it can be prerendered, it should be.
// this whole site is static files on a CDN — zero servers to babysit
- typescript
Strict mode is cheaper than the bugs it prevents.
// turn it on day one; it never gets easier later
// formed the hard way — in production


