Nuxt 4
SSR profile, prerendered for GitHub Pages.
This site is a Nuxt 4 app with Nitro on the server, Vue 3 in the browser, and a single content layer in shared/ so dev SSR and static publish stay in sync.
Stack
- Nuxt 4 — app router, layouts, file-based pages
- Vue 3 — composition API, script setup, Pug templates
- Nitro — SSR server, API routes, GitHub Pages preset
- TypeScript — shared types across app and server
- Pug + SCSS — templates and the nocturnal atelier visual system
Layout
apps/portfolio/ app/ pages, layouts, components, composables, SCSS server/api/ Nitro GET routes shared/ profile, practice, experience content nuxt.config.ts SSR, prerender, head meta
Data flow
- Content is authored in shared/ as typed modules.
- Nitro exposes the same data at /api/profile, /api/practice, /api/experience.
- Composables (useProfile, usePractice, useExperience) fetch those routes during SSR.
- pnpm build:pages prerenders HTML + JSON payloads for GitHub Pages at the domain root.
Deploy
development runs CI (typecheck + build). A squash PR promotes tomain, which publishes through GitHub Actions. Manual deploy is available from the Actions tab.