Hello World: a personal site with a talent tree, built on Nuxt
Why I built my own blog engine, and how the talent tree is drawn.
Why build my own
No off-the-shelf blog felt right: I wanted a talent tree I can light up, multilingual project pages, and a CMS that plugs into my future account center.
Stack
- Nuxt 4: SSR frontend, CMS and API in one app
- SQLite via the built-in
node:sqlite— one file holds everything - GSAP + Lenis for transitions and scrolling
// Talent rule: a prerequisite needs at least 1 point
function canAdd(skill: Skill, ranks: Map<string, number>) {
return skill.requires.every((k) => (ranks.get(k) ?? 0) > 0)
}
The hardest part of blogging is not the code — it is to keep writing.