This example showcases a TypeScript Next.js 16 website with App Router (app) — using DatoCMS as the data source.
This demo takes advantage of the latest Next.js 16 features.
It uses GraphQL CodeGen to type all of the requests coming from DatoCMS automatically: See how it works here
This project uses the official @datocms/cda-client package for querying the DatoCMS Content Delivery API. This lightweight TypeScript client provides:
TypedDocumentNodeAdditionally, react-datocms is used for real-time updates, responsive images, and SEO metadata handling.
Have a look at the end result live:
Make sure that you have set up the Github integration on Vercel.
Let DatoCMS set everything up for you clicking this button below:
Once the setup of the project and repo is done, clone the repo locally.
In your DatoCMS' project, go to the Settings menu at the top and click API tokens.
Then click Read-only API token and copy the token.
Next, copy the .env.example file in this directory to .env (which will be ignored by Git):
cp .env.local.sample .env.localand set the DATOCMS_READONLY_API_TOKEN variable as the API token you just copied.
Also then set a secret token that is being used for WebPreviews, SEO Previews and Cache invalidation:
URL=http://localhost:3000SEO_SECRET_TOKEN=superSecretTokenDRAFT_SECRET_TOKEN=superSecretTokenCACHE_INVALIDATION_SECRET_TOKEN=superSecretTokenpnpm installpnpm devYour blog should be up and running on http://localhost:3000!
It's strongly suggested to install the GraphQL: Language Feature Support extension, to get autocomplete suggestions, validation against schema, and many more niceties when working with your GraphQL queries.