Skip to main content

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

FieldDescription
idUnique identifier (UUID)
nameHuman-readable project name (e.g. "Retail Checkout")
slugURL-safe identifier derived from the name
statusCurrent project state (e.g. active)
deploymentStrategyHow services in this project are deployed (simple, standard, advanced)
organizationIdThe organization this project belongs to
createdByUser ID of the creator
createdAtISO 8601 creation timestamp

Deployment strategies

When creating a project, you choose a deployment strategy that applies to all services within it:

StrategyDescription
SimpleLightweight delivery path, good for internal tools and low-risk services
StandardBalanced default with standard guardrails and rollout expectations
AdvancedHigher-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

RuntimeEngine
Kubernetes (AKS, GKE, EKS)kubernetes
Azure Container Instancesaci

Kubernetes target settings

SettingDescription
namespaceKubernetes namespace for the service
releaseNameHelm release name
replicaCountNumber of pod replicas
containerPortPort the container listens on
ingressHostHostname for the ingress rule
ingressClassIngress controller class
serviceTypeKubernetes service type (ClusterIP, LoadBalancer, etc.)

ACI target settings

SettingDescription
resourceGroupAzure resource group
locationAzure region
cpuCoresCPU allocation
memoryInGbMemory allocation in GB
containerPortPort the container exposes
dnsLabelPrefixDNS 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.

FieldDescription
idUnique identifier (UUID)
nameEnvironment name (e.g. dev, staging, prod)
orderInteger position in the promotion sequence
projectIdThe 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.

Plan gate

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.

tip

See the Create a project guide for a step-by-step walkthrough of the Project Wizard.

Deleting a project

Deleting a project in Atlas does not automatically deprovision services. Delete all services first, then delete the project.

API operations

OperationDescription
List projectsGET /api/projects
Get projectGET /api/projects/:projectId
Create projectPOST /api/projects
Update projectPUT /api/projects/:projectId
Delete projectDELETE /api/projects/:projectId
Get deployment settingsGET /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"
}