This Portfolio
The site you're on — rebuilt on the modern Next.js App Router.
- Next.js 16
- React 19
- TypeScript
- Sass
- Resend
- Vercel
Overview
This very site. It began as a hand-coded static page, became a React/Next.js app, and was most recently rebuilt on the Next.js App Router with React 19 and strict TypeScript.
It's server-rendered by default, with small islands of client JavaScript only where something actually needs to move.
Highlights
Server-first architecture
Every page prerenders as static HTML. Client JavaScript is limited to three islands — the mobile nav, the typing effect on this page's cousin, and the contact form — which keeps the site quick to load and cheap to serve.
Email without a backend
The contact form posts to a typed route handler that sends through Resend, with a honeypot for bots and reply-to wired to the sender. No database, no third-party form widget.
Content as data
Projects and skills live in typed modules, so adding a project like this one is a data change — not a template rewrite. The screenshots on this page were captured and optimized as part of the same pass.
A closer look

