Projects
A project is a container for your application's resources. Each project has its own functions, databases, authentication configuration, and API keys.
A project is a container for your application's resources. Each project has its own functions, databases, authentication configuration, and API keys.
What's in a project
my-app (Project)
├── Functions
│ ├── api-handler
│ ├── process-webhook
│ └── scheduled-task
├── Databases
│ ├── main
│ └── analytics
├── Authentication
│ ├── Auth configuration
│ └── Auth users
├── API keys
│ ├── Anon keys (for frontend)
│ └── Service keys (for backend)
└── Environment variables
├── API_KEY
└── THIRD_PARTY_SECRETProject isolation
Projects are fully isolated from each other:
- Users in Project A cannot access Project B's data
- Functions in Project A cannot access Project B's databases
- API keys from Project A don't work with Project B
This isolation makes projects suitable for:
- Different applications — Each app gets its own project
- Different environments — Separate projects for development, staging, and production
- Different customers — Multi-tenant architectures with project-per-tenant
Resource limits
Volcano enforces hard caps on resource creation:
- Each user can create up to 1,000 projects.
- Each project can contain up to 10,000 functions.
- Each project can contain up to 10,000 frontends.
- Each project can contain up to 10,000 databases on Pro (1 on Free).
See Plans and limits for Free vs Pro limits across every resource.
Create requests that would exceed these caps return 403 Forbidden.
Creating a project
curl -X POST "https://api.volcano.dev/projects" \
-H "Authorization: Bearer $PLATFORM_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "my-app"}'To constrain function deployment to a subset of regions (PRO plan):
curl -X POST "https://api.volcano.dev/projects" \
-H "Authorization: Bearer $PLATFORM_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"my-app","all_regions":false,"selected_regions":["us-east-1"]}'Response:
{
"id": "proj_abc123",
"name": "my-app",
"status": "active",
"created_at": "2024-01-15T10:30:00Z"
}When you create a project, Volcano automatically creates:
- A default anon key for frontend authentication
- A default service key for backend operations
Project region policy
Each project controls where its functions are deployed:
all_regions=true(default): deploy functions to all configured regions.all_regions=false+selected_regions: deploy only to listed regions.
You can update this later via PATCH /projects/{id}. Changes are applied asynchronously and functions will converge to the new region policy.
Listing projects
curl "https://api.volcano.dev/projects" \
-H "Authorization: Bearer $PLATFORM_TOKEN"Response:
{
"data": [
{
"id": "proj_abc123",
"name": "my-app",
"status": "active",
"created_at": "2024-01-15T10:30:00Z"
},
{
"id": "proj_def456",
"name": "staging-app",
"status": "active",
"created_at": "2024-01-10T08:00:00Z"
}
],
"page": 1,
"limit": 10,
"total": 2,
"has_more": false
}Getting a project
curl "https://api.volcano.dev/projects/proj_abc123" \
-H "Authorization: Bearer $PLATFORM_TOKEN"Deleting a project
curl -X DELETE "https://api.volcano.dev/projects/proj_abc123" \
-H "Authorization: Bearer $PLATFORM_TOKEN"Warning: Deleting a project permanently removes all its resources including functions, databases, auth users, and API keys. This action cannot be undone.
When you delete a project, Volcano:
- Deletes all function code from storage
- Removes all Lambda functions from AWS
- Terminates all database instances
- Deletes all auth users and sessions
- Revokes all API keys
What's next
| Guide | Description |
|---|---|
| Creating projects | Detailed project creation guide |
| Functions overview | Deploy serverless functions |
| Databases overview | Provision PostgreSQL databases |
| Authentication overview | Add user authentication |