This Turborepo starter is maintained by the Turborepo core team.
Run the following command:
npx create-turbo@latestThis Turborepo includes the following packages/apps:
web: another Next.js app@repo/ui: a stub React component library shared by bothwebapplication@repo/eslint-config:eslintconfigurations (includeseslint-config-nextandeslint-config-prettier)@repo/typescript-config:tsconfig.jsons used throughout the monorepo
Each package/app is 100% TypeScript.
-
Imports: no relative
./or../imports across a folder boundary. Cross-package, import by package name (@repo/ui). Intra-package, use the@/alias to the package'ssrc(@/shared/ui/Field). Same-folder siblings may stay relative. -
apps/websource layout:app/stays route-only (eachpage.tsxis a thin re-export).src/is organised by feature:src/features/<name>/— one flat folder per page-area (global,country,compare): its page component, hook(s), local logic andlocales.ts.src/shared/— cross-feature code:api/,store/,ui/,model/,hooks/,utils/,types/.src/i18n.ts— registers each feature's locale bundles.
Dependency direction:
app/→features/*→shared/. Features never import other features;shared/imports nothing fromfeatures/orapp/.
apps/web reads from the Statistics of the World API
unauthenticated, which caps usage at 1,000 requests/day per IP, and the underlying
data updates on a monthly cadence at most. app/providers.tsx configures the shared
QueryClient accordingly — staleTime: Infinity and refetchOnWindowFocus: false — so
react-query treats a fetched response as good for the rest of the session instead of
silently re-requesting it (e.g. on every tab focus), which would otherwise burn through
the daily budget for no benefit.
This Turborepo has some additional tools already setup for you:
- TypeScript for static type checking
- ESLint for code linting
- Prettier for code formatting
To build all apps and packages, run the following command:
With global turbo installed (recommended):
cd my-turborepo
turbo buildWithout global turbo, use your package manager:
cd my-turborepo
npx turbo build
pnpm dlx turbo build
pnpm exec turbo buildYou can build a specific package by using a filter:
With global turbo installed:
turbo build --filter=webWithout global turbo:
npx turbo build --filter=web
pnpm exec turbo build --filter=web
pnpm exec turbo build --filter=webTo develop all apps and packages, run the following command:
With global turbo installed (recommended):
cd my-turborepo
turbo devWithout global turbo, use your package manager:
cd my-turborepo
npx turbo dev
pnpm exec turbo dev
pnpm exec turbo devYou can develop a specific package by using a filter:
With global turbo installed:
turbo dev --filter=webWithout global turbo:
npx turbo dev --filter=web
pnpm exec turbo dev --filter=web
pnpm exec turbo dev --filter=webTip
Vercel Remote Cache is free for all plans. Get started today at vercel.com.
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:
With global turbo installed (recommended):
cd my-turborepo
turbo loginWithout global turbo, use your package manager:
cd my-turborepo
npx turbo login
pnpm exec turbo login
pnpm exec turbo loginThis 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:
With global turbo installed:
turbo linkWithout global turbo:
npx turbo link
pnpm exec turbo link
pnpm exec turbo linkLearn more about the power of Turborepo: