cupadev.json
Add a cupadev.json file at the root of your repository to control how CupaDev builds and runs your project.
Reference
| Field | Type | Description |
|---|---|---|
| buildCommand | string | Command to compile your project. Overrides dashboard setting. |
| installCommand | string | Command to install dependencies. Default: npm install. |
| startCommand | string | Command to start your server (Node.js only). Overrides npm start. |
| port | number | Port your server listens on. Default: 3000. |
| outputDirectory | string | Output directory for static builds. Default: dist or build. |
Templates
Next.js
{
"buildCommand": "next build",
"port": 3000
}React / Vite (static)
{
"buildCommand": "npm run build",
"outputDirectory": "dist"
}Express / Node.js
{
"buildCommand": "npx tsc",
"startCommand": "node dist/index.js",
"port": 3000
}NestJS
{
"buildCommand": "npm run build",
"startCommand": "node dist/main.js",
"port": 3000
}Express monorepo (backend + frontend)
When your repo has a backend/ folder with TypeScript and a frontend/ folder with React/Vite:
{
"buildCommand": "npm run build:frontend && cd backend && npm run build",
"port": 3000
}pnpm monorepo
{
"installCommand": "pnpm install --frozen-lockfile",
"buildCommand": "pnpm run build",
"startCommand": "node dist/index.js",
"port": 8080
}Priority
Values in cupadev.json override settings configured in the dashboard. If a field is absent from the file, the dashboard setting is used.
Tip: The port field is the most common cause of CrashLoopBackOff. If your app listens on a port other than 3000, always set it explicitly.