sveltekit-starter-kit Svelte Themes

Sveltekit Starter Kit

πŸ‘‰ Visit the DatoCMS homepage or see What is DatoCMS?


SvelteKit Starter Kit

This project aims to be a great starting point for your SvelteKit projects that need to interact with DatoCMS.

  • πŸ” Fully commented code β€” Every file is commented and explained in detail, it will be impossible to get lost!
  • πŸ’― 100% TypeScript β€” Thanks to gql.tada every GraphQL query is fully typed, and your IDE will help you complete the GraphQL queries.
  • πŸ› οΈ Minimal boilerplate β€” The project is minimal and exposes only what is necessary to get started, without complicated models that need to be removed.
  • 🚫 Zero CSS β€” There is only one CSS import, which you can remove to use your preferred CSS tool.
  • πŸ“ Full support for Draft Mode β€” Your editors can always view the latest draft version of the content.
  • ✏️ Click-to-edit overlays β€” Integrated @datocms/content-link for intuitive content editing. Click on any content element on your website to instantly open the DatoCMS editor for that specific field.
  • 🧩 Plugin ready β€” Full integration with the Web Previews plugin, including Visual Editing mode for seamless in-context editing, and SEO/Readability Analysis.
  • πŸ”„ DatoCMS's Real-time Updates API β€” Your editors can see updated content instantly as soon as you save a new version on DatoCMS.
  • 🌐 SEO Metadata β€” Full integration between SvelteKit and the SEO settings coming from DatoCMS.
  • πŸ“¦ Official CDA Client β€” Uses @datocms/cda-client for performant, type-safe GraphQL queries to the Content Delivery API.
  • πŸ”’ Type-Safe CMA Client β€” Uses @datocms/cma-client with auto-generated types from your schema for full autocomplete and compile-time safety.

How to use

Quick start

  1. Create an account on DatoCMS.

  2. Make sure that you have set up the Github integration on Vercel.

  3. Let DatoCMS set everything up for you clicking this button below:

Local setup

Once the setup of the project and repo is done, clone the repo locally.

Set up environment variables

Copy the sample .env file:

cp .env.local.example .env.local

In your DatoCMS' project, go to the Settings menu at the top and click API tokens.

Copy the values of the following tokens into the specified environment variable:

  • PRIVATE_DATOCMS_PUBLISHED_CONTENT_CDA_TOKEN: CDA Only (Published)
  • PRIVATE_DATOCMS_DRAFT_CONTENT_CDA_TOKEN: CDA Only (Draft)
  • PRIVATE_DATOCMS_CMA_TOKEN: CMA Only (Read)
  • PRIVATE_DATOCMS_BASE_EDITING_URL: Your DatoCMS project URL (e.g., https://your-project.admin.datocms.com). This enables click-to-edit overlays that link content directly to the DatoCMS editor.

Then set both PRIVATE_SECRET_API_TOKEN and PRIVATE_SIGNED_COOKIE_JWT_SECRET by generating two different secure strings (you can use openssl rand -hex 32 or any other cryptographically-secure random string generator):

  • The PRIVATE_SECRET_API_TOKEN will be used to safeguard all API routes from incoming requests from untrusted sources;
  • The PRIVATE_SIGNED_COOKIE_JWT_SECRET will be used to sign the Draft Mode cookies.

Run your project locally

npm install
npm run dev

Your website should be up and running on http://localhost:3000!

Click-to-edit overlays

This starter kit includes @datocms/content-link, which provides intuitive click-to-edit overlays for your content.

How to use

When viewing your website in draft mode, press and hold the Alt/Option key to enable click-to-edit mode. Interactive overlays will appear on all editable content. Release the key to disable the overlays.

This feature works in two powerful ways:

1. Standalone website editing

Click on any content element to instantly open the DatoCMS editor for that specific field in a new tab. This makes it incredibly easy for editors to jump directly to the content they want to modify.

2. Web Previews plugin Visual Editing mode

When using the Web Previews plugin in Visual Editing mode, clicking on content opens the field editor in a side panel right next to your preview. The integration also enables:

  • In-plugin navigation: Users can navigate to different URLs within the Visual mode interface (like a browser navigation bar), and the preview automatically updates to show the corresponding page
  • Synchronized state: The preview and DatoCMS interface stay in perfect sync

This bidirectional communication is established automatically when your preview runs inside the Web Previews pluginβ€”no additional configuration needed.

How it works

The implementation consists of three parts:

  1. Data fetching (src/lib/datocms/queries.ts:43): When fetching draft content, the contentLink: 'v1' option embeds stega-encoded metadata into text fields
  2. ContentLink component (src/lib/components/ContentLink/index.svelte): Creates interactive overlays and handles the Web Previews plugin integration
  3. Layout integration (src/routes/+layout.svelte:40): The ContentLink component is rendered only in draft mode

For more details, see the package documentation.

VS Code

It is highly recommended to follow these instructions for an optimal experience with Visual Studio Code, including features like diagnostics, auto-completions, and type hovers for GraphQL.

Using the Web Previews Plugin

If you're using this starter kit with the popular Web Previews plugin, we already include a CORS-ready endpoint for you, so there's very little setup needed.

You don't have to create or edit any files in this repo. Instead, you only need to specify the "Preview webhook URL" in the plugin settings.

If your site is deployed to www.example.com, then the webhook URL should be https://www.example.com/api/preview-links?token=secretTokenProtectingWebhookEndpointsFromBeingCalledByAnyone.

That endpoint URL corresponds to the file src/routes/api/preview-links/+server.ts in this repo.

The secret token is defined as the env var PRIVATE_SECRET_API_TOKEN in .env.example. If you deployed this starter from our marketplace, its default value will be secretTokenProtectingWebhookEndpointsFromBeingCalledByAnyone. If you manually deployed it, you'll have to set that token. It can be any URL-safe string as long as the PRIVATE_SECRET_API_TOKEN env var and the token query parameter both match.


What is DatoCMS?

DatoCMS - The Headless CMS for the Modern Web

DatoCMS is the REST & GraphQL Headless CMS for the modern web.

Trusted by over 25,000 enterprise businesses, agencies, and individuals across the world, DatoCMS users create online content at scale from a central hub and distribute it via API. We ❀️ our developers, content editors and marketers!

Why DatoCMS?

  • API-First Architecture: Built for both REST and GraphQL, enabling flexible content delivery
  • Just Enough Features: We believe in keeping things simple, and giving you the right feature-set tools to get the job done
  • Developer Experience: First-class TypeScript support with powerful developer tools

Getting Started:

Official Libraries:

Official Framework Integrations

Helpers to manage SEO, images, video and Structured Text coming from your DatoCMS projects:

Additional Resources:

Top categories

Loading Svelte Themes