Projects
A project is the top-level organizational unit in Nexus. Projects are backed by Atlas and represent a logical grouping of services, environments, and deployment targets.
What a project contains
| Field | Description |
|---|---|
id | Unique identifier (UUID) |
name | Human-readable project name (e.g. "Retail Checkout") |
slug | URL-safe identifier derived from the name |
status | Current project state (e.g. active) |
deploymentStrategy | How services in this project are deployed (simple, standard, advanced) |
organizationId | The organization this project belongs to |
createdBy | User ID of the creator |
createdAt | ISO 8601 creation timestamp |
Deployment strategies
When creating a project, you choose a deployment strategy that applies to all services within it:
| Strategy | Description |
|---|---|
| Simple | Lightweight delivery path, good for internal tools and low-risk services |
| Standard | Balanced default with standard guardrails and rollout expectations |
| Advanced | Higher-control path for production-critical services that need extra review |
The strategy is stored in Atlas and influences how Fabric orchestrates deployments for services in the project.
Deployment targets
Each project can have one or more deployment targets — the infrastructure environments where services are deployed. A target defines:
- Provider — The cloud provider and runtime (e.g. Azure Kubernetes Service, Azure Container Instances)
- Region — The cloud region (e.g.
centralindia,westeurope) - Environment — Whether this is a production or non-production target
- Management mode — How the infrastructure is managed (platform-managed vs. bring-your-own)
Supported runtimes
| Runtime | Engine |
|---|---|
| Kubernetes (AKS, GKE, EKS) | kubernetes |
| Azure Container Instances | aci |
Kubernetes target settings
| Setting | Description |
|---|---|
namespace | Kubernetes namespace for the service |
releaseName | Helm release name |
replicaCount | Number of pod replicas |
containerPort | Port the container listens on |
ingressHost | Hostname for the ingress rule |
ingressClass | Ingress controller class |
serviceType | Kubernetes service type (ClusterIP, LoadBalancer, etc.) |
ACI target settings
| Setting | Description |
|---|---|
resourceGroup | Azure resource group |
location | Azure region |
cpuCores | CPU allocation |
memoryInGb | Memory allocation in GB |
containerPort | Port the container exposes |
dnsLabelPrefix | DNS label for the public FQDN |
Environments
Projects support multi-environment deployment when the MultiEnvironment subscription feature is enabled. Environments are ordered tiers (e.g. dev → staging → prod) that services progress through.
| Field | Description |
|---|---|
id | Unique identifier (UUID) |
name | Environment name (e.g. dev, staging, prod) |
order | Integer position in the promotion sequence |
projectId | The project this environment belongs to |
Each environment can have its own deployment target overrides, allowing you to point different tiers at different cloud accounts, regions, or clusters without creating separate projects.
The Environments section in project settings is shown only when your subscription includes MultiEnvironment. Contact hello@prangana.io to enable it.
Services deployed to a production environment require an approved production deployment before Fabric proceeds. See Production approvals for the full workflow.
Project lifecycle
Projects are created through the Project Wizard and can be edited or deleted from the Projects page.
See the Create a project guide for a step-by-step walkthrough of the Project Wizard.
Deleting a project in Atlas does not automatically deprovision services. Delete all services first, then delete the project.
API operations
| Operation | Description |
|---|---|
| List projects | GET /api/projects |
| Get project | GET /api/projects/:projectId |
| Create project | POST /api/projects |
| Update project | PUT /api/projects/:projectId |
| Delete project | DELETE /api/projects/:projectId |
| Get deployment settings | GET /api/projects/:projectId/deployment-settings |
All project API calls require an Authorization: Bearer <token> header and an x-organization-id header.
Example: Create project request
POST /api/projects
Authorization: Bearer <token>
x-organization-id: <org-id>
Content-Type: application/json
{
"name": "Retail Checkout",
"deploymentStrategy": "standard"
}
Example: Create project response
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"organizationId": "org-uuid",
"name": "Retail Checkout",
"slug": "retail-checkout",
"status": "active",
"deploymentStrategy": "standard",
"createdBy": "user-uuid",
"createdAt": "2026-05-13T07:00:00Z"
}