A production-ready SvelteKit starter template built with shift-left quality practices. Catch bugs early, ship with confidence.
This template embraces the shift-left methodologyβintegrating quality gates at every stage of development rather than catching issues in production. Every commit is linted, every push is tested, and every merge is validated through CI/CD.
Fail fast, fix early.
βββ π .claude
β βββ π rules
β β βββ π coding-conventions.md
β β βββ π svelte-standards.md
β β βββ π typescript-standards.md
β βββ π skills
β β βββ π plan-feature
β β βββ π SKILL.md
β βββ βοΈ settings.json
βββ π .github
β βββ π workflows
β βββ βοΈ main.yml
βββ π .husky
β βββ π pre-commit
β βββ π pre-push
βββ π e2e
βββ π src
β βββ π lib
β β βββ π alerts
β β β βββ π toast.ts
β β βββ π components
β β β βββ π ui
β β β βββ π button
β β β βββ π card
β β β βββ π form-field
β β β βββ π input
β β β βββ π label
β β β βββ π pagination
β β βββ π data
β β βββ π server
β β β βββ π auth.ts
β β βββ π axios.ts
β β βββ π env.ts
β β βββ π utils.ts
β βββ π routes
β β βββ π pokemons
β β β βββ π components
β β β β βββ π PokemonCard.svelte
β β β β βββ π PokemonEmptyState.svelte
β β β β βββ π PokemonGrid.svelte
β β β β βββ π PokemonSearchBar.svelte
β β β βββ π types
β β β β βββ π pokemon.ts
β β β βββ π +page.server.ts
β β β βββ π +page.svelte
β β β βββ π pokemonsPage.svelte.ts
β β βββ π protected
β β β βββ π +page.server.ts
β β β βββ π +page.svelte
β β βββ π +layout.js
β β βββ π +layout.svelte
β β βββ π +page.svelte
β βββ π¨ app.css
β βββ π app.d.ts
β βββ π app.html
β βββ π hooks.client.ts
β βββ π hooks.server.ts
βββ π static
β βββ πΌοΈ favicon.svg
βββ βοΈ .editorconfig
βββ βοΈ .env.dist
βββ βοΈ .gitignore
βββ βοΈ .npmrc
βββ βοΈ .prettierignore
βββ βοΈ .prettierrc
βββ π CLAUDE.md
βββ π README.md
βββ βοΈ components.json
βββ π eslint.config.js
βββ βοΈ package.json
βββ π playwright.config.ts
βββ π playwright.monocart-reporter.ts
βββ βοΈ pnpm-lock.yaml
βββ π svelte.config.js
βββ βοΈ tsconfig.json
βββ π vite.config.ts
.claude/)This project includes a .claude/ configuration folder that enables engineering-grade AI assistance via Claude Code. It encodes the project's coding standards, architectural patterns, and workflows so the AI follows the same rules a senior engineer would.
*.svelte files, TypeScript standards to *.ts files), so the AI always follows the right patterns in the right context.plan-feature generates an engineering checklist before writing code).CLAUDE.md) β A top-level file that gives the AI full context on the architecture, libraries, and quality pipeline..claude/ Structure.claude/
rules/
coding-conventions.md # Brace style, no inline returns
svelte-standards.md # Svelte 5 Runes, SvelteKit patterns, SOLID
typescript-standards.md # satisfies, type guards, strict rules
skills/
plan-feature/
SKILL.md # Engineering checklist workflow
settings.json # Post-edit hooks, tool permissions
CLAUDE.md and .claude/flowchart LR
Code --> PreCommit["Pre-commit: lint-staged"]
PreCommit --> PrePush["Pre-push: E2E tests + Coverage"]
PrePush --> CI["CI Pipeline"]
CI --> Sentry["Sentry Monitoring"]
CI --> Deploy
| Stage | Trigger | Actions |
|---|---|---|
| Pre-commit | git commit |
Prettier + ESLint on staged files |
| Pre-push | git push |
Full Playwright E2E test suite with coverage |
| CI/CD | Push/PR to main | Lint, type-check, test, build |
| Runtime | Production | Sentry error tracking & performance monitoring |
Core
Styling
Quality
Observability
Validation
HTTP
Install dependencies:
pnpm install
Start the development server:
pnpm dev
Build for production:
pnpm build
Preview the production build:
pnpm preview
| Command | Description |
|---|---|
pnpm dev |
Start development server |
pnpm build |
Build for production |
pnpm preview |
Preview production build |
pnpm check |
Run type checks |
pnpm lint |
Lint and check formatting |
pnpm format |
Format code with Prettier |
pnpm test |
Run E2E tests |
pnpm test:show-report |
Open Monocart test report |
pnpm coverage:show-report |
Open V8 coverage report |
E2E tests collect V8 code coverage using Playwright's built-in coverage API and Monocart Reporter.
Report Formats
./coverage/e2e/v8/index.html./coverage/e2e/lcov/code-coverage.lcov.info./coverage/e2e/cobertura/code-coverage.cobertura.xmlCreate a .env file with the following variables:
VITE_API_BASE_URL=your-base-api
VITE_SENTRY_DSN=your-sentry-dsn
SENTRY_DSN=your-sentry-dsn
SENTRY_ORG=your-sentry-org
SENTRY_PROJECT=your-sentry-project
SENTRY_AUTH_TOKEN=your-sentry-auth-token
GitHub Actions workflow triggers on push and pull requests to main: