PieJson
The following settings are available from your app's Settings tab in the dashboard.
| Setting | Description |
|---|---|
| Name | Display name for your app. Also determines the .pie.host subdomain (auto-slugged, set at creation). |
| Git URL | SSH URL of your repository (e.g. git@github.com:you/repo.git). |
| Deploy Key | The SSH key PieApp uses to clone your repository. |
| Plan / Size | The compute tier your app runs on. Can be changed at any time. |
| Env file | Contents of the .env file in your project root |
| PHP Version | For PHP apps: 7.0 through 8.3. Changing this forces a cold rebuild. |
| Node Version | For Node.js apps: the Node.js version to use during the build. |
| Node Entry File | For Node.js apps: the entry point file (e.g. server.js). |
| Node Port | The port your Node.js process listens on. |
| Public Directory | For frontend/static apps: the directory to serve (default: /). Set to dist or build if your build outputs there. |
| HTTPS Redirect | Automatically redirect http:// to https://. Enabled by default. |
Environment Variables
Environment variables are passed into your container at build and runtime as a .env file.
Enter them in the Environment tab of your app, one per line in KEY=VALUE format:
APP_ENV=production
DB_HOST=your-db-host
DB_PASSWORD=secret
API_KEY=abc123
Variables are injected before the build step runs, so they are available during npm run build, composer install, or any custom build command.
Build Configuration
Build Commands
Commands that compile or bundle your application.
Examples:
npm run build
php artisan config:cache && php artisan route:cache
Commands run in the order they are listed. If any command exits with a non-zero status, the deployment is marked as failed.
Cold deployment: Changing the PHP version or force-deploying will trigger a full image rebuild from scratch, ignoring any cached layers.
pie.json
pie.json is an optional configuration file you can place in the root of your repository. PieApp reads it at the start of every deployment.
Use it to declare your app type, override auto-detection, and configure cron jobs — all in one place, tracked in version control.
Full reference
{
"type": "frontend | nodejs | php",
"subtype": "nextjs | nuxt | react | vue | svelte | angular | express | fastify | nestjs | koa | node | laravel | wordpress | customphp",
"crons": [
{
"schedule": "* * * * *",
"command": "/path/to/command"
}
]
}
| Key | Required | Description |
|---|---|---|
| type | No | Override the auto-detected app type. |
| subtype | No | Override the auto-detected framework/subtype. |
| crons | No | Array of cron job definitions. See Cron Jobs below. |
Type / Subtype values
| type | Valid subtype values |
|---|---|
| frontend | nextjs, nuxt, react, vue, svelte, angular |
| nodejs | express, fastify, nestjs, koa, node |
| php | laravel, wordpress, customphp |
If pie.json is absent or does not specify a type, PieApp auto-detects by inspecting your repo:
- Presence of artisan + composer.json → php / laravel
- Presence of wp-config.php → php / wordpress
- package.json dependencies → matched against known frameworks (Next.js, Vue, Express, etc.)
- composer.json only → php / customphp
- Everything else → frontend
Cron Jobs
Define scheduled tasks inside pie.json under the crons key. Each entry requires a schedule (standard 5-part cron expression) and a command (the shell command to run).
{
"crons": [
{
"schedule": "* * * * *",
"command": "/usr/bin/php /app/artisan schedule:run >> /dev/null 2>&1"
},
{
"schedule": "0 2 * * *",
"command": "/usr/bin/php /app/artisan queue:restart"
}
]
}
For more details and cronjob examples, see PieApp Cronjobs
Help
Facing difficulties? Use the chat box on the bottom-right corner of this page to reach us.
On this page
