Skip to main content

Templates

Templates are the golden paths of the Prangana platform. Each template is a versioned, production-ready blueprint that defines how a service is created — including its repository structure, CI/CD pipeline, Kubernetes manifests, and parameter schema.

Templates are stored in the Prangana Registry and served to Nexus via the Registry API.

tip

To provision a service from a template, see the Provision a service guide. To browse templates in Nexus, navigate to Templates in the sidebar or use the Command palette (Cmd K → type the template name).

Template structure

FieldDescription
idUnique template identifier
nameMachine-readable name (e.g. nodejs-api)
titleHuman-readable title (e.g. "Node.js API")
descriptionWhat the template creates
ownerTeam or individual responsible for the template
typeTemplate category (e.g. api, web, job, infrastructure)
versionsArray of available versions

Template versions

Each template can have multiple versions. A version contains:

FieldDescription
versionVersion string (e.g. v1)
titleVersion-specific title
descriptionWhat this version creates
runtimeOptionsSupported runtimes (e.g. ["node18", "node20"])
parameterSchemaJSON Schema defining the parameters this version accepts
parameterDefaultsDefault values for parameters
uiSchemaUI hints for rendering the parameter form
parameterCountNumber of parameters
stepCountNumber of provisioning steps
hasSkeletonWhether the template includes a code skeleton
hasDefaultsWhether default parameter values are provided
hasSchemaWhether a parameter schema is defined

Available templates

The Prangana Registry ships with the following built-in templates:

TemplateTypeDescription
nodejs-apiAPINode.js REST API with TypeScript, health checks, and Kubernetes manifests
nodejs-web-appWebNext.js web application with Tailwind CSS and Kubernetes deployment
fullstack-nextjsWebFull-stack Next.js application with API routes and Kubernetes deployment
python-apiAPIFastAPI Python service with Docker and Kubernetes support
java-spring-boot-apiAPISpring Boot Java API with Maven, health endpoints, and K8s manifests
dotnet-apiAPI.NET 8 minimal API with Docker and Kubernetes deployment
go-apiAPIGo HTTP API with Docker multi-stage build and Kubernetes manifests
postgres-apiAPIPython FastAPI with PostgreSQL integration and Docker Compose
azure-functionFunctionAzure Functions Python app with timer and HTTP triggers
servicebus-consumerJobAzure Service Bus consumer in Python with Kubernetes deployment
k8s-cronjobJobKubernetes CronJob with Python worker and configurable schedule
event-drivenJobEvent-driven worker service with message broker integration
worker-serviceJobLong-running background worker service with Kubernetes deployment
terraform-moduleInfrastructureReusable Terraform module with variable definitions and pipeline

Template skeleton

Each template with hasSkeleton: true includes a complete code skeleton that is scaffolded into a new Git repository when a service is provisioned. The skeleton includes:

  • Application source code
  • Dockerfile for containerization
  • Kubernetes manifests (deployment.yaml, service.yaml)
  • CI/CD pipeline definitions (Azure Pipelines and GitLab CI)
  • mkdocs.yml for service documentation
  • catalog-info.yaml for service catalog registration
  • values.schema.json for parameter validation

Parameter schema

Template parameters are defined using JSON Schema. When you provision a service, Nexus renders a form from the schema and validates your input before submitting to Fabric.

Common parameters across templates:

ParameterDescription
serviceNameName of the service — used as the repository name and Kubernetes resource name
cloudProviderTarget cloud (azure, gcp, aws)
regionDeployment region
namespaceKubernetes namespace
replicaCountNumber of pod replicas
containerPortPort the container listens on

Example parameter schema

{
"type": "object",
"required": ["serviceName", "namespace"],
"properties": {
"serviceName": {
"type": "string",
"title": "Service name",
"description": "Used as the repository name and Kubernetes resource name"
},
"namespace": {
"type": "string",
"title": "Kubernetes namespace",
"default": "default"
},
"replicaCount": {
"type": "integer",
"title": "Replica count",
"default": 2,
"minimum": 1,
"maximum": 10
},
"containerPort": {
"type": "integer",
"title": "Container port",
"default": 3000
}
}
}
Template parameter form not showing fields?

If the parameter form is empty, the selected template version does not have a parameterSchema (hasSchema: false). Try selecting a different version — look for versions with the schema badge on the Templates page. See Troubleshooting for more details.

Registry API

OperationDescription
List templatesGET /api/registry/templates

The registry endpoint does not require authentication — it reads directly from the template catalog on the server.

Example: Registry response

{
"registryRoot": "TemplateRegistry/templates",
"templateCount": 14,
"templates": [
{
"id": "nodejs-api",
"name": "nodejs-api",
"title": "Node.js API",
"description": "Production-ready Node.js REST API with TypeScript",
"owner": "platform-team",
"type": "api",
"versions": [
{
"version": "v1",
"title": "Node.js API v1",
"runtimeOptions": ["node18", "node20"],
"parameterCount": 6,
"stepCount": 5,
"hasSkeleton": true,
"hasDefaults": true,
"hasSchema": true
}
]
}
]
}