A SvelteKit 5 + Tailwind frontend with i18n (Paraglide) and dark mode enabled by default.
@tailwindcss/vite, no separate config)@sveltejs/adapter-node (Node.js deployments)# Start dev server (port 3000, with hot reload)
npm run dev
# or with browser auto-open:
npm run dev -- --open
# Production build (generates .svelte-kit, /build, and optimized JS/CSS)
npm run build
# Preview production build locally (runs on port 3000 by default)
npm run preview
# Sync SvelteKit config (auto-runs on `npm install`)
npm run prepare
This is a fresh project with no test suite or linter configured. Do not assume these exist.
src/
├── app.html # HTML shell (dark mode preset)
├── hooks.js # Paraglide i18n route localization
├── routes/
│ ├── +layout.svelte # Root layout component
│ ├── +page.svelte # Home page (Flowbite Alert, language switcher, dark mode toggle)
│ └── layout.css # Route-level styles
└── lib/
├── index.js # $lib alias exports (currently empty)
├── paraglide/ # i18n (auto-generated, DO NOT EDIT)
│ ├── messages.js # Locale-aware message functions
│ ├── runtime.js # getLocale(), setLocale(), deLocalizeUrl()
│ └── messages/*.js # en-us, es-mx translations
└── assets/ # Static assets
.svelte-kit/ — SvelteKit type hints & config cache/build/ — Production output (Node.js adapter)vite.config.js.timestamp-* — Vite cachevite.config.js)npm run preview)All code must use Svelte 5 runes by default. The Vite config enforces this for all files except those in node_modules:
runes: ({ filename }) =>
filename.split(/[/\\]/).includes('node_modules') ? undefined : true
Effect on Component Writing:
$state() instead of let for reactive variables$derived for computed values$effect() for side effects (replaces onMount, afterUpdate){#snippet name()} syntax (shown in +page.svelte)Action: Any new .svelte files must use runes. Violating this breaks dev/build.
@tailwindcss/vite plugin (not postcss)@tailwindcss/forms, @tailwindcss/typographyapp.html (class="dark" on <html>)tailwind.config.js (handled entirely via Vite plugin)@sveltejs/adapter-node for Node.js deployments/build/$env module for runtime env varsConvention: No established commit message convention yet. Keep it clear and atomic.
No CI/CD: No .github/workflows/ or other CI pipeline configured
No Tests: No test framework or test scripts in package.json
Minimal jsconfig: Inherits TypeScript config from .svelte-kit/tsconfig.json but doesn't enforce type checking (checkJs: false)
flowbite-svelte{#snippet} blocks (Svelte 5 pattern)<style> blocks for scoped styles)dark: prefix (already enabled on root)+page.svelte (and optionally +page.js, +layout.svelte) in src/routes/[path]/+page.server.js (not configured; would need adapter setup).env file (gitignored)import { env } from '$env/dynamic/public' or $env/static/publicVITE_ for client access--profile if neededLast Updated: Verified against current project state (5 commits, i18n enabled, no typos, clean build)