decode SIG-003.log
SIG-003 · January 28, 2026 · 7 min
Nuxt 4 layout: data, pages, and server boundaries
Nuxt
Nuxt 4 rewards folders that mirror how you think about the product. I keep marketing pages thin, push reusable logic into composables, and treat server routes as optional adapters — not the source of truth.
Data lives in app/data
Projects, case studies, and blog posts are typed modules imported directly. That means zero network waterfall on navigation and predictable builds on Netlify.
Pages orchestrate, components render
index.vue composes hero, stats, and teasers. Detail routes validate slugs and redirect when missing. SEO meta stays next to the page that owns the content.
useSeoMeta({
title: `${post.title} — Amir Maghami`,
description: post.excerpt,
});- Pinia for CV-style editable state; static data for portfolio content.
- ClientOnly for canvas, cursor, and scroll plugins.
- icon.clientBundle.scan for offline icon sets in production.