Project Structure
Nept is designed to be zero-configuration for most modern frameworks. However, for advanced use cases, you can define a nept.json file in the root of your project.
The nept.json Configuration
This file tells our build system exactly how to handle your project.
{
"name": "my-awesome-app",
"framework": "nextjs",
"region": "Finland-1",
"build": {
"cmd": "npm run build",
"output": ".next",
"env": {
"NODE_ENV": "production"
}
},
"routes": [
{ "src": "/api/*", "dest": "/api/index.js" },
{ "handle": "filesystem" }
]
}
Configuration Properties
| Property | Type | Description |
| :--- | :--- | :--- |
| name | string | Required. The unique identifier for your project. |
| framework | string | The preset to use (e.g., nextjs, vite, remix). If omitted, we attempt to auto-detect. |
| region | string | The primary region for your origin server. Defaults to Finland-1. |
| build.cmd | string | The command used to build your project. |
| build.output | string | The directory where build artifacts are located. |
| routes | array | Custom routing rules for rewrites and redirects. |
Directory Layout
A typical project structure looks like this:
my-app/
├── nept.json # Configuration file
├── package.json # Dependencies and scripts
├── src/ # Source code
│ ├── components/
│ └── pages/
├── public/ # Static assets
└── .nept/ # Local cache and artifacts (do not commit)
Monorepos
For monorepos (Turborepo, Nx, Yarn Workspaces), place a nept.json in each application's subdirectory. You can then deploy them individually by running nept deploy from the specific package folder.
Ignored Files
Nept respects .gitignore and .neptignore. Use these files to exclude sensitive data or large files (like node_modules) from the upload process.