turbo and which one to start. This guide deploys the web and docs Next.js apps of Turborepo’s starter.
Before you begin
- A Sevalla company with a payment method, and a GitHub, GitLab or Bitbucket account for the repository. See Git providers.
- Node.js 24 or later and pnpm on your computer.
Create the project
Create a monorepo from Turborepo’sbasic example:
apps/web and apps/docs, and shared packages in packages/, such as @repo/ui. Each app’s start script runs next start.
Prepare the project for Sevalla
The rootpackage.json already has what Nixpacks, the default build strategy, needs:
engines.nodeis>=24, so Nixpacks installs Node.js 24 instead of its default, Node.js 18.packageManagernames pnpm, so Nixpacks enables it with Corepack and installs the whole workspace withpnpm i --frozen-lockfilefrom the repository root. Commitpnpm-lock.yaml.
turbo.json, but on its own it builds every app with turbo run build and finds no command to start one app. Each Sevalla application gets these two variables instead:
--filter=web builds the web app and the workspace packages it depends on. next start takes its port from PORT, which Sevalla sets to the web process’s port (8080 by default), so the ports that the dev scripts use don’t matter on Sevalla.
Run pnpm build to check that the monorepo builds locally. Then commit everything and push it to your Git provider:
Deploy to Sevalla
1
Create the application
In the sidebar, click Applications, then click Create > Application. Under Source, click Private repository, then choose the Git provider, the Repository and the Branch. Enter
storefront-web as the Name. Under Location, choose a Data center. Keep the Size at H1 or choose a larger one, then click Create application. The application opens on its Overview tab with the status Not deployed yet: creating an application doesn’t deploy it.2
Add the environment variables
Click the Environment variables tab, then click Add environment variables. Add
NIXPACKS_BUILD_CMD and NIXPACKS_START_CMD with the values for the web application from the table in Prepare the project for Sevalla, keep Available during runtime and Available during buildtime selected, and click Add environment variables.3
Deploy
Click the Overview tab, then click Deploy now under Recent deployments. Check the Branch and click Deploy.
4
Turn on auto-deploy
To deploy every push to the branch automatically, click the Settings tab, then click Update auto-deploy in the Auto-deploy section. Turn on Auto-deploy and click Update auto-deploy. See Deployments.
5
Deploy the docs app
Repeat steps 1 to 4 for a second application named
storefront-docs, from the same repository and branch, with the values for the docs application.Verify the deployment
- On each application’s Deployments tab, wait for the deployment’s status to change to Deployed. The application’s status next to its name changes to Running.
- Click the domain under each application’s name, for example
storefront-web-x7k2m.sevalla.app. Each one opens its own Next.js starter page.


turbo run build for every app means NIXPACKS_BUILD_CMD is missing or wasn’t available during the build.
Deploy changes
With Auto-deploy on, every push to the branch starts a deployment of both applications; otherwise, click Deploy now on each application for each change. Each deployment builds the image, then replaces the web process’s instances. See Deployments.Deploy only the apps that changed
To deploy an application only when its own files change, set its deploy paths:1
Open the deploy paths
Click the application’s Settings tab, then click Update deploy paths.
2
Allow the app's files
Choose Allow paths and add the files the app is built from, as glob patterns. For
storefront-web, add apps/web/**, packages/** and pnpm-lock.yaml. Click Update deploy paths.Connect the apps to each other
Applications in the same location can reach each other over the private network without going through the internet. On one application’s Networking tab, under Connected services, add an internal connection to the other with Add environment variables to the application turned on: Sevalla addsAPP_HOST, the other application’s internal hostname. See Networking.
Add a custom domain
To serve an application from your own domain, such asshop.example.com, add the domain on the application’s Domains tab and create the DNS records that Sevalla shows. Custom domains need a web process larger than H1, so scale the web process first. See Custom domains.