Skip to content

Turborepo template with next.js, express, tailwind css, and docker.

Notifications You must be signed in to change notification settings

stratolark/turborepo-api-next

Repository files navigation

Turborepo Next.js, Express, Tailwind CSS, Docker

A Turborepo template based on Turborepo Docker starter and Turborepo Tailwind Starter.

What's inside?

This turborepo uses Yarn as a package manager. It includes the following packages/apps:

Apps and Packages

  • web: a Next.js app
  • api: an Express server
  • ui: ui: a React component library
  • eslint-config-custom: eslint configurations for client side applications (includes eslint-config-next and eslint-config-prettier)
  • eslint-config-custom-server: eslint configurations for server side applications (includes eslint-config-next and eslint-config-prettier)
  • tailwind-config: tailwind-config.js and prettier-tailwind-plugin
  • scripts: Jest configurations
  • logger: Isomorphic logger (a small wrapper around console.log)
  • tsconfig: tsconfig.json;s used throughout the monorepo

Each package/app is 100% TypeScript.

Using this example

Run the following command:

npx degit https://github.com/stratolark/turborepo-api-next turborepo-api-next
cd turborepo-api-next
git init .
git add .
git commit -m "Init"
yarn install
yarn dev or yarn build

Docker

This repo is configured to be built with Docker, and Docker compose. To build all apps in this repo:

# Create a network, which allows containers to communicate
# with each other, by using their container name as a hostname
docker network create app_network

# Build prod using new BuildKit engine
COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose -f docker-compose.yml build --parallel

# Start prod in detached mode
docker-compose -f docker-compose.yml up -d

Open https://localhost:3000.

To shutdown all running containers:

# Stop all running containers
docker kill $(docker ps -q) && docker rm $(docker ps -a -q)

Utilities

This Turborepo has some additional tools already setup for you: