Personal blog built with Next.js, TypeScript, and CSS Modules.
- Node.js 24+
npm installnpm run dev # development server (localhost:3000)
npm run build # production build
npm run start # serve static export (out/)
npm run lint # ESLint
npm run typecheck # TypeScript
npm test # unit tests (Vitest)
npm run test:coverage # tests + coverage (80% minimum)Add markdown files to posts/ with frontmatter:
---
title: 'Post Title'
date: 'YYYY-MM-DD'
excerpt: 'Brief description'
---A printable resume lives at /resume, rendered from a single source of truth:
src/data/resume.ts. Edit that file to update contact details, add an
experience, or reorder skills.
Jobs with no bullets and no positions render as compact "earlier roles" at
the end of the Experience section; add either field to promote one to a full
entry.
The page is black and white and prints to A4 portrait via the browser's print
dialog. vercel.json rewrites resume.helderberto.com to /resume; the
subdomain itself is added in the Vercel dashboard (Settings → Domains).
- Fork the repo
- Create a feature branch
- Commit your changes
- Open a Pull Request