Maintained · Nov 2024 – Jan 2025
Portfolio v1
My portfolio, built with Next.js and ShadCN. It has a contact form with spam protection and deploys automatically on Vercel.

Overview
I built this site to show my work. It also taught me a lot about integrations like Formspree, Vercel and reCAPTCHA.
I wanted one place for my story as a software engineer, my projects and a way to reach me. I also got my own domain, ant03, a play on my name.
Goals
The site needed to:
- Deploy automatically on every push.
- Catch bad code before it reaches the repository.
- Accept messages without letting spam through.
- Respect prefers-reduced-motion.
How I built it
I chose Next.js for static generation and file-based routing. I came from Svelte, so the App Router felt familiar. I used ShadCN for accessible components I could customize, with TypeScript throughout.
Husky runs ESLint and Prettier before every commit, so errors get caught early. I deployed on Vercel with GitHub Actions. Every commit builds and deploys on its own, and the site runs on my own domain.
For the contact form I used Formspree with reCAPTCHA v3 to block spam. Zod checks the input before anything is sent.
What I learned
The integrations taught me more than the layout did. Connecting a form service, a spam check and a deploy pipeline felt like building a real application.