I built this site in a few hours of vibe coding at the start of 2026. I used a v0 template made by Felix Macaspac. At first it was just a simple page with my name, experience, and contact details, but that was very boring to me. It didn't feel like me. So I kept adding new things. Here is a record of every decision I made, including the ones I made twice, and some that are not final yet.
Why Instrument Serif
I am a frontend developer, and a very picky one. I like very clean, minimalistic design. I liked the simple sans-serif that Felix used in the v0 template, something neutral and technical. That is what most developer portfolios do. But using it did not give the artistic, creative feel I wanted. I wanted my portfolio page to look cool, clean, and artsy.
I kept scrolling through Twitter and found Ava's portfolio. The combination of Instrument Serif and Geist looked very pleasing. I checked whether Next.js supports both fonts (I am too lazy to add new fonts to my projects), and when I saw they were available, I immediately added them. I like the newspaper feel they give.
Big headings also give the website a special feel. There is something about a title that takes up real space on the page. It signals that the design has opinions.
No dark mode toggle
The original template had a dark mode toggle, but I removed it. I don't see the point of it for a portfolio page. I seriously doubt anyone will visit this page so often that they need it in dark mode.
Also, since I like the newspaper style of fonts, dark pages make no sense to me. Dark mode works well for apps you stare at for hours. A portfolio page is not that.
Why the magnets page exists
I collect fridge magnets, and I am very proud of my collection. When I saw Ava's Postage Stamps collection, I wanted to have a page like that on my site. It was fun to create, and it displays my personality in a way a list of jobs never could. I love programming and tech, but I am not a tech nerd like some other developers. I am more on the creative side.
Most portfolios are a list of jobs and a list of projects. That format tells you what someone has done, not who they are. I wanted something on this site that would not fit in a resume, something that signals that the person who built this is a person, not just a set of skills.
I could also never make a portfolio around personal projects, because I don't make them. I have been working at the same company for five years, programming for six to eight hours a day. I have never had the desire to work on a personal project after work. I think my GitHub contributions are a sufficient indicator of my work. The only personal projects I have are small helper scripts that improve my workflow, not exactly eye-catching portfolio material. And putting projects I work on at my company on a portfolio is not allowed; it would break NDA. So the usual portfolio was never really an option.
The tech stack
Next.js 15, Tailwind CSS 4, TypeScript, deployed on Vercel. No database, it's just a static site for now. Nothing interesting to report here. These are the obvious choices for this kind of site and I made them without much deliberation. The deliberation went into the design, not the stack.
I used v0 for the initial structure, which saved me from staring at a blank file for three days and abandoning this portfolio like I had done at least five times before. Then I rewrote most of it. v0 is good at getting you 60% of the way; the remaining 40% is where the actual decisions happen. Also, it's fun to experiment with different designs directly in code.
I also love lucide-react. It's great for simple, clean icons. I'm also a huge shadcn fan. For now, I don't have it in the project, but when I add more features, I will definitely consider it.
Things I second-guessed
The section order. I put the experience section near the top because recruiters look for it first. I guess I need to keep it there, even though I'm not a fan of classic portfolios.
Whether to include a projects section. I do not have one. The projects I am most proud of are things I built at work, which I cannot show in detail.
The hover colour. The blue-purple is #879bd6. I tried a few others. This one felt right without being loud.
Contact options. Currently I use a mailto link. It's the easiest option, but I'm not sure people actually use it, especially on desktop. I have a feeling most people don't use the built-in email app on desktop. They use email in the browser instead. In the contact section, I also added a copy-email button for that reason. I'm not a fan of contact forms either, but it's something I'm still deliberating.
Final thoughts
Building this site was genuinely fun. It started as a few hours of vibe coding and turned into something that actually feels like me, which was the whole point.