Skip to content

datocms/nextjs-starter-kit

Repository files navigation

👉 Visit the DatoCMS homepage or see What is DatoCMS?


Next.js Starter Kit

This project aims to be a great starting point for your Next.js 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 Next.js Draft Mode — Your editors can always view the latest draft version of the content.
  • 🧩 Plugin ready — Support for the fantastic plugins Web Previews 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.
  • 🗑️ Cache invalidation — No need to re-deploy your website after each modification to your content, as it will be automatically updated thanks to DatoCMS webhooks.
  • 🌐 SEO Metadata — Full integration between Next.js and the SEO settings coming from DatoCMS.

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:

Deploy with DatoCMS

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:

  • DATOCMS_PUBLISHED_CONTENT_CDA_TOKEN: CDA Only (Published)
  • DATOCMS_DRAFT_CONTENT_CDA_TOKEN: CDA Only (Draft)
  • DATOCMS_CMA_TOKEN: CMA Only (Read)

Then set SECRET_API_TOKEN as a sicure string (you can use openssl rand -hex 32 or any other cryptographically-secure random string generator). It will be used to safeguard all route handlers from incoming requests from untrusted sources:

Run your project locally

npm install
npm run dev

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

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.

Updating the GraphQL schema

When the DatoCMS schema, which includes various models and fields, undergoes any updates or modifications, it is essential to ensure that these changes are properly reflected in your local development environment. To accomplish this, you should locally run the following command:

npm run generate-schema

Executing this task will automatically update the schema.graphql file for you. This crucial step ensures that gql.tada will have access to the most current and accurate version of the GraphQL schema, allowing your application to function correctly with the latest data structures and relationships defined within your DatoCMS setup.

Updating CMA types (Content Management API)

In addition to the GraphQL schema for content delivery, this project also provides type safety for the Content Management API (CMA). This is useful when you need to programmatically create, update, or manage records.

When your DatoCMS schema changes, regenerate the CMA types by running:

npm run generate-cma-types

This command uses the DatoCMS CLI to generate TypeScript types in src/lib/datocms/cma-types.ts based on your project's schema. The generated types give you:

  • Full autocomplete for record attributes in your IDE
  • Compile-time errors when accessing non-existent fields
  • No manual type casts when working with record properties

End-to-end type safety

This starter kit provides complete type safety for both DatoCMS APIs:

API Purpose Type Generation Output File
CDA (GraphQL) Content delivery/fetching npm run generate-schema schema.graphql
CMA (REST) Content management/creation npm run generate-cma-types src/lib/datocms/cma-types.ts

Both commands are automatically run during npm install via the prepare script.

For more information, see the Type-safe Development with TypeScript documentation.

Next.js 16

This starter kit uses Next.js 16, which includes React 19 and all the latest features and improvements from the Next.js ecosystem.


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:

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •