The "Nerd Starter App" may not have any practical value, however I wanted a way to initialise multiple app frameworks and languages with an example as I dive deeper in different directions over time and also dive deeper into Turbo as a repository management tool for growingly complex scenarios. As such, some pre-requisite installations are assumed:
- nvm (or a node version manager with NodeJS >=20 installed) with pnpm enabled
- rbenv
- This allows us to get Ruby on Rails 7
- Python 3.12
- Note I use Mamba to create an environment here for development
- Scala Build Tool (sbt)
- Java, Maven, Gradle for the Spring Boot app
This is built on top of the official starter Turborepo.
Run the following command:
pnpm install
pnpm dev
The original Turborepo included the following packages/apps:
docs
: a Next.js app- runs on port 3000
web
: another Next.js app- runs on port 3001
@repo/ui
: a stub React component library shared by bothweb
anddocs
applications@repo/eslint-config
:eslint
configurations (includeseslint-config-next
andeslint-config-prettier
)@repo/typescript-config
:tsconfig.json
s used throughout the monorepo
Each package/app is 100% TypeScript.
blog
: A sample Ruby on Rails 7.1 web app- runs on port 3002
sample-api
: A Sample API using NestJS, a progressive Node.js framework for building efficient, reliable and scalable server-side applications- runs on port 3003
sample-play-framework
: A sample API using the Play framework that makes it easy to build web applications with Java & Scala- runs on port 3004
sample-storybook
: A Storybook frontend workshop for building UI components and pages in isolation, this example that works with NextJS- app will run on port 3005
- storybook will run on port 3006
sample-fast-api
: A sample API using the Python-based FastAPI framework, example app- runs on port 3007
spring-boot-demo
: A sample barebone REST API in Java using the Spring Boot framework- runs on port 3008
structurizr
: A structurizr-lite app
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:
cd nrd-starter-app
pnpm build
To develop all apps and packages, run the following command:
cd nrd-starter-app
pnpm 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 nrd-starter-app
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: