Skip to content

Project Structure

my-app/
├── src/
│ ├── routes/ # Pages and API endpoints
│ │ ├── +page.svelte
│ │ ├── +layout.svelte
│ │ └── about/
│ │ ├── +page.svelte
│ │ └── +page.server.ts
│ ├── lib/ # Shared code (aliased as $lib)
│ │ └── utils.ts
│ ├── app.css # Global styles + Tailwind tokens
│ ├── app.d.ts # Type declarations
│ └── hooks.server.ts # Middleware (optional)
├── public/ # Static assets (served as-is)
├── dist/ # Build output (gitignored)
├── .bosia/ # Generated files (gitignored)
├── .env # Environment variables
└── package.json
FilePurpose
+page.sveltePage component — renders at the route’s URL
+layout.svelteLayout — wraps child pages and layouts
+page.server.tsServer loader — runs load() and metadata() on the server
+layout.server.tsLayout loader — data shared with all child routes
+server.tsAPI endpoint — exports HTTP verb functions
+error.svelteError page — renders when a loader throws
hooks.server.tsMiddleware — intercepts every request
app.cssGlobal styles — Tailwind directives and design tokens
AliasMaps toExample
$libsrc/lib/import { cn } from "$lib/utils"

The .bosia/ directory is created during dev and build. It contains:

  • routes.ts — the route manifest (page and API route mappings)
  • types/ — auto-generated TypeScript types (PageData, ActionData, etc.)
  • env.server.ts / env.client.ts — typed environment variable modules

These files are gitignored. They’re regenerated every time you run dev or build.