[{"data":1,"prerenderedAt":95},["ShallowReactive",2],{"blog-nuxt-series-foundations":3},{"id":4,"title":5,"body":6,"date":75,"description":76,"extension":77,"image":78,"meta":79,"navigation":80,"next":81,"path":82,"prev":83,"seo":84,"series":85,"stem":86,"tags":87,"__hash__":91,"prevPost":83,"nextPost":92},"blog\u002Fblog\u002Fnuxt-series-foundations.md","Building a Nuxt CV, Part 1: Foundations",{"type":7,"value":8,"toc":69},"minimark",[9,13,18,31,35,38,60,63],[10,11,12],"p",{},"Every good build starts with a few decisions you won't want to revisit. This first part sets the\nfoundations for the CV site: the framework, the rendering strategy, and the folder layout that keeps\neverything predictable.",[14,15,17],"h2",{"id":16},"picking-the-stack","Picking the stack",[10,19,20,21,25,26,30],{},"Nuxt 4 gives us Vue 3 with ",[22,23,24],"code",{},"\u003Cscript setup>",", first-class TypeScript, and a file-based router. For a\nsite that's mostly static content read by many people, ",[27,28,29],"strong",{},"static generation"," is the natural fit —\npre-rendered HTML is fast, cheap, and secure.",[14,32,34],{"id":33},"project-layout","Project layout",[10,36,37],{},"A little discipline here pays off later:",[39,40,41,48,54],"ul",{},[42,43,44,47],"li",{},[22,45,46],{},"app\u002Fdata\u002F"," — the CV facts, typed once and reused everywhere.",[42,49,50,53],{},[22,51,52],{},"app\u002Fcomponents\u002Fsections\u002F"," — one component per CV block.",[42,55,56,59],{},[22,57,58],{},"content\u002Fblog\u002F"," — Markdown posts like this one.",[10,61,62],{},"With the skeleton in place, the next part fills it with content.",[64,65,66],"blockquote",{},[10,67,68],{},"Decide the boring things once, up front, so the interesting work never stalls on them.",{"title":70,"searchDepth":71,"depth":71,"links":72},"",2,[73,74],{"id":16,"depth":71,"text":17},{"id":33,"depth":71,"text":34},"2026-07-01","Starting a portfolio from an empty directory — the stack decisions, project layout, and why Nuxt 4 in SSG mode is the right base.","md","\u002Fimages\u002Fblog\u002Fnuxt-series-1.svg",{},true,"nuxt-series-content","\u002Fblog\u002Fnuxt-series-foundations",null,{"title":5,"description":76},"Building a Nuxt CV","blog\u002Fnuxt-series-foundations",[88,89,90],"Nuxt","Architecture","Series","XSgxN6s9p0xFrq6l5ZbT5nN8bSIM41Y-Nb8HweylrrY",{"path":93,"title":94},"\u002Fblog\u002Fnuxt-series-content","Building a Nuxt CV, Part 2: Content",1786402986440]