# Turborepo starter This Turborepo starter is maintained by the Turborepo core team. ## Using this example Run the following command: ```sh npx create-turbo@latest ``` ## What's inside? This Turborepo includes the following packages/apps: ### Apps and Packages - `web`: a [Next.js](https://nextjs.org/) app - `service`: a [NestJS](https://nestjs.com/) backend API - `cli`: a Node.js command-line interface for automation and scripting - `@repo/ui`: a stub React component library shared by the `web` application - `@repo/eslint-config`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`) - `@repo/typescript-config`: `tsconfig.json`s used throughout the monorepo Each package/app is 100% [TypeScript](https://www.typescriptlang.org/). ### Centralized Configuration & Data - All persistent settings and configuration are stored in a single SQLite database at `data/config.db` at the monorepo root. - All apps (service, CLI, web) read and write settings/configuration from this central database. - This ensures a single source of truth for configuration and enables seamless integration between all parts of the stack. **If you move or rename the database, update the path in `apps/service/src/db.service.ts` and any other relevant locations.** ### Utilities This Turborepo has some additional tools already setup for you: - [TypeScript](https://www.typescriptlang.org/) for static type checking - [ESLint](https://eslint.org/) for code linting - [Prettier](https://prettier.io) for code formatting ### Build To build all apps and packages, run the following command: ``` cd my-turborepo # With [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation) installed (recommended) turbo build # Without [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation), use your package manager npx turbo build yarn dlx turbo build pnpm exec turbo build ``` You can build a specific package by using a [filter](https://turborepo.com/docs/crafting-your-repository/running-tasks#using-filters): ``` # With [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation) installed (recommended) turbo build --filter=web # Without [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation), use your package manager npx turbo build --filter=web yarn exec turbo build --filter=web pnpm exec turbo build --filter=web ``` ### Develop To develop all apps and packages, run the following command: ``` cd my-turborepo # With [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation) installed (recommended) turbo dev # Without [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation), use your package manager npx turbo dev yarn exec turbo dev pnpm exec turbo dev ``` You can develop a specific package by using a [filter](https://turborepo.com/docs/crafting-your-repository/running-tasks#using-filters): ``` # With [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation) installed (recommended) turbo dev --filter=web # Without [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation), use your package manager npx turbo dev --filter=web yarn exec turbo dev --filter=web pnpm exec turbo dev --filter=web ``` ### Remote Caching > [!TIP] > Vercel Remote Cache is free for all plans. Get started today at [vercel.com](https://vercel.com/signup?/signup?utm_source=remote-cache-sdk&utm_campaign=free_remote_cache). Turborepo can use a technique known as [Remote Caching](https://turborepo.com/docs/core-concepts/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](https://vercel.com/signup?utm_source=turborepo-examples), then enter the following commands: ``` cd my-turborepo # With [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation) installed (recommended) turbo login # Without [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation), use your package manager npx turbo login yarn exec turbo login pnpm exec turbo login ``` This will authenticate the Turborepo CLI with your [Vercel account](https://vercel.com/docs/concepts/personal-accounts/overview). Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your Turborepo: ``` # With [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation) installed (recommended) turbo link # Without [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation), use your package manager npx turbo link yarn exec turbo link pnpm exec turbo link ``` ## Useful Links Learn more about the power of Turborepo: - [Tasks](https://turborepo.com/docs/crafting-your-repository/running-tasks) - [Caching](https://turborepo.com/docs/crafting-your-repository/caching) - [Remote Caching](https://turborepo.com/docs/core-concepts/remote-caching) - [Filtering](https://turborepo.com/docs/crafting-your-repository/running-tasks#using-filters) - [Configuration Options](https://turborepo.com/docs/reference/configuration) - [CLI Usage](https://turborepo.com/docs/reference/command-line-reference)