Creating Projects
Create new Supabase projects with Supascale.
Supascale makes it easy to create fully-configured Supabase projects with a few clicks.
Create via Web UI
1. Navigate to Projects
Click Projects in the sidebar, then click New Project.
2. Enter Project Details
| Field | Rules | Example |
|---|---|---|
| Project ID | 1-50 chars, lowercase, alphanumeric, hyphens, underscores | my-project |
| Project Name | 1-100 chars | My Project |
| Description | Optional, max 500 chars | Development database |
3. Select Services
Choose which Supabase services to enable:
Core Services (Always Enabled)
These run in every project:
- PostgreSQL - The database
- PostgREST - REST API
- GoTrue - Authentication
- Kong - API Gateway
- Meta - Metadata service
- Studio - Web UI
Optional Services
Enable based on your needs:
| Service | Description | Enable When |
|---|---|---|
| Realtime | WebSocket subscriptions | Need live updates |
| Storage | File storage and CDN | Storing files |
| Edge Functions | Serverless functions | Custom logic |
| PgBouncer | Connection pooling | High connection counts |
| Analytics | Usage analytics | Want metrics |
| Imgproxy | Image transformations | Image processing |
| Inbucket | Email testing | Development only |
4. Create Project
Click Create Project to start. Supascale will:
- Generate Docker Compose configuration
- Create project directory
- Generate secure credentials
- Pull Docker images
- Start containers
- Verify health
Create via API
Use the REST API for programmatic project creation:
Standard Create
curl -X POST https://supascale.example.com/api/v1/projects \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"id": "my-project",
"name": "My Project",
"description": "Created via API"
}'
Response:
{
"success": true,
"data": {
"id": "my-project",
"name": "My Project",
"directory": "/var/supascale/projects/my-project",
"ports": {
"api": 8000,
"db": 5432,
"studio": 3001
},
"status": "running",
"createdAt": "2026-01-19T12:00:00Z"
}
}
Create with Streaming Progress
For real-time progress updates:
curl -X POST https://supascale.example.com/api/v1/projects/create \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-d '{
"id": "my-project",
"name": "My Project",
"services": ["realtime", "storage"]
}'
Returns Server-Sent Events:
event: progress
data: {"step": 1, "total": 6, "status": "running", "message": "Validating configuration..."}
event: progress
data: {"step": 2, "total": 6, "status": "running", "message": "Generating Docker Compose..."}
event: progress
data: {"step": 3, "total": 6, "status": "running", "message": "Pulling images..."}
event: complete
data: {"project": {...}}
Project Directory Structure
Each project is created with this structure:
/var/supascale/projects/my-project/
├── docker-compose.yml # Container configuration
├── .env # Environment variables
└── volumes/ # Persistent data
├── db/ # PostgreSQL data
├── storage/ # File storage
└── functions/ # Edge functions
Generated Credentials
Supascale generates secure credentials for each project:
| Credential | Purpose | Storage |
|---|---|---|
| Database Password | PostgreSQL auth | Encrypted in DB |
| JWT Secret | Token signing | Encrypted in DB |
| Anon Key | Public API access | Encrypted in DB |
| Service Role Key | Admin API access | Encrypted in DB |
View credentials in the project details or via API:
curl https://supascale.example.com/api/v1/projects/my-project?credentials=true \ -H "X-API-Key: your-api-key"
Port Allocation
Supascale automatically assigns ports to avoid conflicts:
| Service | Default Port Range |
|---|---|
| API Gateway | 8000-8999 |
| PostgreSQL | 5432-5532 |
| Studio | 3001-3099 |
Ports are tracked in the database and reused when projects are deleted.
Best Practices
Naming Conventions
- Use descriptive, lowercase IDs:
prod-api,staging-app,dev-test - Use meaningful names for the UI: "Production API", "Staging Application"
Service Selection
- Development: Enable all services for full functionality
- Production: Enable only needed services to reduce resource usage
- Testing: Enable Inbucket for email testing
Resource Planning
Each project consumes approximately:
- 1 GB RAM (varies by services enabled)
- 5 GB disk space (grows with data)
- CPU scales with load
Troubleshooting
Creation Failed
- Check disk space:
df -h - Verify Docker is running:
docker ps - Check Supascale logs:
pm2 logs supascale-web - Verify port availability
Images Won't Pull
- Check internet connectivity
- Verify Docker Hub access
- Check disk space for images
- Try manual pull:
docker pull supabase/postgres
Containers Won't Start
- Check port conflicts:
netstat -tlnp - Review container logs
- Verify memory availability
- Check Docker daemon status