Project Architecture
09. Modern Project Types & Directory Structures
Architect production-grade codebases across full-stack applications, static sites, component libraries, and enterprise monorepo workspace hierarchies.
project-structures.ts
// Modern Project Topologies: SvelteKit vs Nuxt 4 vs Monorepos
/* SvelteKit Directory Standard */
// src/
// ├── lib/ <- Reusable components, state, server utilities ($lib)
// │ ├── components/
// │ ├── server/ <- Server-only code ($lib/server, prevents client leak)
// │ └── state/ <- Svelte 5 runes universal stores (.svelte.ts)
// ├── routes/ <- File-based router (+page, +layout, +server, +error)
// ├── app.html <- HTML shell template
// └── hooks.server.ts
/* Nuxt 4 Forward-Compatible Standard */
// app/
// ├── components/ <- Auto-imported Vue components
// ├── composables/ <- Auto-imported reactive state composables
// ├── pages/ <- File-based page routes
// └── layouts/
// server/
// └── api/ <- Nitro server endpointsModern Project Types & Directory Structures
Choosing the right project topology is fundamental to long-term maintainability, code reuse, and team velocity.
- SvelteKit 2 Layout: Enforces strong server-side isolation with
$lib/serverand deterministic page routing with+page.server.tsandhooks.server.ts. - Nuxt 4 Structure: Centralizes frontend components and composables in
app/while isolating backend endpoints inserver/api/. - Monorepo Topologies: Organizes large teams into decoupled
apps/and reusable internalpackages/linked via PNPM workspace catalogs.
Project Directory Explorer Topologies
SvelteKit 2 Production Architecture
Strict client/server separation with Universal Runes, +page server data pipelines, and hooks.
src/
├── lib/
│ ├── components/ <- UI Runes components
│ ├── server/ <- Server-only ($lib/server, secret DB handles)
│ └── state/ <- Shared .svelte.ts Runes reactive stores
├── routes/ <- File-based directory routing
│ ├── +layout.svelte <- Root layout shell
│ ├── +layout.ts <- Universal layout load
│ ├── +page.svelte <- Page view
│ ├── +page.server.ts <- Server load & form actions
│ └── +error.svelte <- Expected & unexpected error UI
├── app.html <- Base HTML template
└── hooks.server.ts <- Global auth, headers & request interception