A Turborepo with Strapi v4 (w/ postgres database) + Next.js powered by docker and docker-compose.
Please make sure you have Docker and docker-compose installed in your machine. Please refer here to install them :
- Docker installation
- Docker compose installation
- Clone this repository :
git clone https://github.com/Elvincth/turbo-strapi-nextjs
- Change directory
cd turbo-strapi-nextjs
- Change directory to our strapi application
cd apps/backend
- Create a .env file which stores strapi and postgres configuration, based on the .env.example file:
cp .env.example .env
-
Define the admin JWT Token
In order to make the admin login work you need to define the secret you want to use in
.env
file
Generate a secure token:
openssl rand 64 | base64 # (linux/macOS users)
# or
node -e "console.log(require('crypto').randomBytes(64).toString('base64'))" # (all users)
Add it to your env variables (apps/backend/.env
):
ADMIN_JWT_SECRET=token_generated_above
To develop all apps and packages, run the following command (in the project root):
docker-compose up -d
To build all apps and packages, run the following commands:
docker exec -it strapi_nextjs_turbo /bin/sh
Then run:
yarn build
This turborepo uses Yarn as a package manager. It includes the following packages/apps:
frontend
: a Next.js appbackend
: Strapi appui
: a stub React component library currently used byfrontend
applicationconfig
:eslint
configurations (includeseslint-config-next
andeslint-config-prettier
)tsconfig
:tsconfig.json
s used throughout the monorepo
This turborepo has some additional tools already setup for you:
- TypeScript for static type checking
- ESLint for code linting
- Jest test runner for all things JavaScript
- Prettier for code formatting
Turborepo can use a technique known as Remote Caching (Beta) 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 (Beta) you will need an account with Vercel. If you don't have an account you can create one, then enter the following commands:
docker exec -it strapi_nextjs_turbo /bin/sh
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: