Starter to get going with Next.js and Sanity.
- Field Level Translation
- Pages Singletons (each page as a single content type)
This turborepo uses npm as a package manager. It includes the following packages/apps:
cms
: a Sanity v3 appweb
: a Next.js app (usingpages
)tsconfig
:tsconfig.json
s used throughout the monorepo
Each package/app is 100% TypeScript.
This starter has some additional tools already setup for you:
- TypeScript for static type checking
- ESLint for code linting
- Prettier for code formatting
Clone and install dependencies
npm i
Let's setup sanity
project
npm create sanity@latest
Here create a new project, and use the default dataset configuration.
Next in the project output path kill the process with ctrl + c
Go to Sanity Manage open the project and copy the projectId
Copy the .env.template
in a new .env
file in the root project and put the projectId
as a value for
NEXT_PUBLIC_SANITY_PROJECT_ID
SANITY_STUDIO_PROJECT_ID
Now create a staging dataset using
cd apps/cms
npx sanity dataset create staging
The cms app has a desk structure so that each schema within of schemas/pages be a singleton (single content type). the id of each document is the name of the schema.
This starter has a config for manage the localization within each app
The sanity app has a field level translations of which are available
localeString
:object
withstring
fields for each localelocaleText
:object
withtext
fields for each locale
these must be used in as types in fields of schemas that require multilanguage
also are filtered using Language Filter
the languages available for each field
are configured within i18n/lang
The recommended way for run the queries is by sending a lang
variable for extract each translation. example:
*[_type == 'post'] {
...,
'title': title[$lang]
}
To build all apps and packages, run the following command:
npm run build
To develop all apps and packages, run the following command:
npm run dev
Turborepo can use a technique known as Remote Caching to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines.
By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can create one, then enter the following commands:
cd my-turborepo
npx turbo login
This will authenticate the Turborepo CLI with your Vercel account.
Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your turborepo:
npx turbo link
Learn more about the power of Turborepo: