Back to templates

Template details

Turborepo Svelte Starter

Official Turborepo starter with two SvelteKit apps, a shared UI library, and ESLint/TypeScript configs.

About this template

The Turborepo Svelte Starter is an official monorepo template maintained by the Turborepo core team that scaffolds two SvelteKit applications, a shared Svelte component library, and reusable ESLint and TypeScript configurations, all written in TypeScript.

What is the Turborepo Svelte Starter?

This starter demonstrates how to structure a multi-app JavaScript/TypeScript repository using Turborepo, a build system written in Rust. It is distributed through the Turborepo GitHub repository and can be scaffolded with npx create-turbo@latest -e with-svelte. The generated repository contains two SvelteKit apps named docs and web, a ui package that serves as a stub Svelte component library, an eslint-config package, and a typescript-config package.

Key Features

  • Dual SvelteKit applications — The docs and web apps are both built on SvelteKit, giving you a ready-made structure for two front-end applications that share code.
  • Shared UI component library — The ui package provides a stub Svelte component library consumed by both apps; it explicitly supports Svelte runes in .svelte.ts files, which the default SvelteKit generated tsconfig does not cover.
  • Reusable ESLint setup — The eslint-config package bundles eslint-plugin-svelte and eslint-config-prettier, letting all apps and packages use a consistent linting configuration.
  • Centralized TypeScript config — The typescript-config package contains a custom tsconfig file that can be referenced by every app and package in the monorepo.
  • 100% TypeScript — Every app and package in the starter is written in TypeScript for static type checking across the entire repository.
  • Preconfigured tooling — The repository comes with ESLint for linting, Prettier for code formatting, and TypeScript for type checking already set up.
  • Turborepo task pipeline — The starter uses Turborepo's build system to run tasks across apps, caching results and avoiding redundant work.

Who is it for?

  • SvelteKit developers who want to see an official multi-app monorepo structure with two SvelteKit front ends.
  • Teams adopting a monorepo who need a reference for splitting code into shared ui, eslint-config, and typescript-config packages.
  • Developers evaluating Turborepo who want a minimal, maintained example that shows how a Rust-based build system orchestrates builds and lints for multiple JavaScript/TypeScript packages.

Use cases

  • Building a documentation site and a main web app together: the docs and web SvelteKit apps can be developed and deployed independently while still sharing the ui component library.
  • Setting up a shared component library for Svelte: the ui package is a starting point for compiling Svelte components, including runes support, before publishing to a package registry.
  • Standardizing code quality across a monorepo: reuse the bundled ESLint and TypeScript configurations in every app and package to keep lint and type settings consistent.

How does it work?

Run npx create-turbo@latest -e with-svelte to clone the starter. After scaffolding, the monorepo contains the apps and packages directories. Each app or package defines its own workspace, and Turborepo's cache and task runner coordinate commands like build, lint, and test across all of them.

FAQ

Is the Turborepo Svelte Starter free to use?

Yes, the starter is part of the open-source Turborepo repository maintained on GitHub by the Turborepo core team. You can use it as a starting point for your own projects.

Does the starter include a component library?

The ui package is a stub Svelte component library shared by both the docs and web apps. It is intentionally minimal, but it demonstrates how to package Svelte components and handle .svelte.ts runes files.

What apps are included?

The starter includes two SvelteKit applications: docs and web. Both are TypeScript apps, and they consume the local ui package.

What tooling is preconfigured?

TypeScript for type checking, ESLint for linting, and Prettier for formatting are already configured. The ESLint setup includes eslint-plugin-svelte and eslint-config-prettier.

screenshot of Turborepo Svelte Starter on template0.com