## Project Overview
Static blog built with SvelteKit, MDsveX, and Tailwind CSS v4. Uses `@sveltejs/adapter-static` for static site generation.

## Development Commands
```bash
pnpm install          # Install dependencies
pnpm dev              # Start dev server (default: http://localhost:5173)
pnpm build            # Build for production
pnpm preview          # Preview production build
pnpm check            # Type-check with svelte-check
pnpm check:watch      # Type-check in watch mode
pnpm format           # Format code with Prettier
pnpm lint             # Lint with ESLint and Prettier
```

## Architecture

### Routing Structure
```
src/routes/
├── +layout.svelte          # Root layout with Nav component
├── +page.svelte           # Blog listing (homepage at /)
├── +page.ts              # Loads all posts from ./posts/*.md
├── posts/
│   ├── *.md              # Blog post markdown files (with frontmatter)
│   └── [slug]/
│       ├── +page.svelte  # Individual post renderer
│       └── +page.ts      # Dynamic post loader
├── about/
│   └── +page.md          # About page (markdown)
└── music/
    └── +page.md          # Music page (markdown)
```

### Blog Post Structure
- Posts are markdown files in `src/routes/posts/*.md`
- Required frontmatter: `title`, `date`, `excerpt`
- Posts accessed at `/posts/{slug}` where slug is filename without `.md`
- Blog listing at root `/` shows all posts sorted by date (newest first)

### Navigation
Navigation component at `src/lib/components/Nav.svelte` with links:
- Blog (/) - default landing page
- About (/about)
- Music (/music)

### MDsveX Configuration
- Configured in `svelte.config.js` to process `.md` and `.svx` files
- Extensions: `['.svelte', '.md', '.svx']`
- Preprocessors: `vitePreprocess()` and `mdsvex()`

## Development Guidelines
- Use Svelte 5+ with runes (`$props`, `$state`, `$derived`, etc.)
- TypeScript with strict mode enabled
- Tailwind CSS v4 classes only (no custom CSS unless necessary)
- Use pnpm as package manager
- Self-explanatory code without comments
- Short, concise function and variable names
- Careful state management to avoid infinite loops

## Technology Stack
- SvelteKit 2.x with static adapter
- Svelte 5.x (runes-based)
- MDsveX for markdown processing
- Tailwind CSS v4 with @tailwindcss/typography
- TypeScript with strict mode
- ESLint + Prettier for code quality
- Vite for build tooling
