Back to all posts
13 July 2026
Building this CV site with Nuxt 4
- Nuxt
- Performance
- DX
This site is a small case study in doing a lot with a little. The goal was a personal CV that loads instantly, costs nothing to host, and stays easy to maintain.
The approach
Every page is pre-rendered at build time, so visitors get static HTML. Only one route stays dynamic — the contact form endpoint — because it needs a server-side API key.
export default defineNuxtConfig({
nitro: {
preset: 'node-server',
prerender: { crawlLinks: true, routes: ['/'] },
},
})
What went in
- Nuxt 4 with TypeScript for the app shell
- Tailwind CSS v4 for styling, with theme-aware design tokens
- Nuxt Content for this blog
- Resend for the contact form, behind a rate-limited, validated endpoint
What I optimised for
Performance and accessibility were non-negotiable: self-hosted fonts, responsive images, reduced motion support, and a strict content security policy. The result is a site that feels instant and scores well without any manual babysitting.