Skip to main content

Available Templates

This page lists all built-in templates shipped with ForgePortal. Each template is a multi-step wizard that scaffolds files, opens PRs, and registers entities in the catalog.

info

Templates are seeded automatically on first start. You can view and run them under Templates in the UI. Administrators can add custom templates โ€” see Writing Templates.


Service Templatesโ€‹

node-service โ€” Node.js Microserviceโ€‹

Creates a production-ready Node.js (TypeScript) microservice.

Type: template ยท Kind output: service

ParameterTypeRequiredDescription
namestringYesService name (e.g. payment-service)
descriptionstringNoShort description of the service
ownerstringYesTeam or user owning the service
lifecycleenumNoexperimental | production | deprecated (default: experimental)
githubOrgstringYesGitHub/GitLab org or user to create the repo in
repoVisibilityenumNoprivate | public (default: private)

Generated files:

  • package.json โ€” Node.js project (TypeScript, Fastify)
  • src/index.ts โ€” Minimal Fastify HTTP server
  • Dockerfile โ€” Multi-stage production image
  • .github/workflows/ci.yml โ€” Lint + test CI pipeline
  • README.md โ€” Documentation stub
  • entity.yaml โ€” ForgePortal catalog registration

Steps:

  1. Create repository in SCM
  2. Push scaffolded files
  3. Open initial PR (chore: scaffold service)
  4. Register entity in catalog

spring-boot-service โ€” Spring Boot Serviceโ€‹

Creates a Spring Boot (Java) microservice skeleton.

Type: template ยท Kind output: service

ParameterTypeRequiredDescription
namestringYesService name
groupIdstringYesMaven group ID (e.g. com.acme)
artifactIdstringYesMaven artifact ID
ownerstringYesTeam or user owning the service
githubOrgstringYesTarget GitHub/GitLab org

Generated files: pom.xml, src/main/java/โ€ฆ/Application.java, Dockerfile, .github/workflows/ci.yml, entity.yaml


go-service โ€” Go Microserviceโ€‹

Creates a Go microservice with a standard project layout.

Type: template ยท Kind output: service

ParameterTypeRequiredDescription
namestringYesService name
modulestringYesGo module path (e.g. github.com/acme/my-service)
ownerstringYesTeam or user
githubOrgstringYesTarget org

Generated files: go.mod, main.go, Dockerfile, .github/workflows/ci.yml, entity.yaml


Infrastructure Templatesโ€‹

create-database โ€” Provision a Databaseโ€‹

Creates a PostgreSQL or MySQL database with multi-destination support.

Type: template ยท Kind output: resource

ParameterTypeRequiredDescription
namestringYesDatabase name (e.g. orders-db)
engineenumYespostgresql | mysql
destinationenumYeslocal-docker | docker-compose | kubernetes | aws-rds
ownerstringYesOwning team
namespacestringKubernetes onlyTarget Kubernetes namespace
storageSizestringKubernetes onlye.g. 10Gi
instanceClassstringAWS RDS onlye.g. db.t3.medium
regionstringAWS RDS onlyAWS region

Generated output per destination:

DestinationGenerated
local-dockerdocker-run.sh with docker run command
docker-composedocker-compose.yml service block
kuberneteshelm-values.yaml (Bitnami chart) + install instructions
aws-rdsTerraform module in infra/databases/ + PR

See full guide โ†’ Provision a Database


create-cache โ€” Provision a Redis Cacheโ€‹

Creates a Redis cache with multi-destination support.

Type: template ยท Kind output: resource

ParameterTypeRequiredDescription
namestringYesCache name (e.g. session-cache)
destinationenumYeslocal-docker | docker-compose | kubernetes | aws-elasticache
ownerstringYesOwning team
namespacestringKubernetes onlyTarget namespace
nodeCountnumberAWS onlyNumber of cache nodes
regionstringAWS onlyAWS region

create-message-queue โ€” Provision a Message Queueโ€‹

Creates a RabbitMQ or Kafka instance.

Type: template ยท Kind output: resource

ParameterTypeRequiredDescription
namestringYesQueue name (e.g. events-queue)
engineenumYesrabbitmq | kafka
destinationenumYeslocal-docker | docker-compose | kubernetes
ownerstringYesOwning team
namespacestringKubernetes onlyTarget namespace

create-k8s-cluster โ€” Provision a Kubernetes Clusterโ€‹

Creates a Kubernetes cluster locally (kind, k3d) or on a cloud provider (EKS, GKE, AKS).

Type: template ยท Kind output: resource

ParameterTypeRequiredDescription
namestringYesCluster name (e.g. dev-cluster)
destinationenumYeskind | k3d | eks | gke | aks
kubernetesVersionstringNoe.g. 1.29
nodeCountnumberNoWorker nodes (default: 1 for local, 3 for cloud)
regionstringCloud onlye.g. us-east-1 (EKS), europe-west1 (GKE)
ownerstringYesOwning team

Generated output per destination:

DestinationGenerated
kindkind-config.yaml + setup.sh
k3dk3d-config.yaml + setup.sh
eks / gke / aksTerraform module in infra/clusters/ + PR

See full guide โ†’ Provision a Kubernetes Cluster


create-monitoring-stack โ€” Prometheus + Grafanaโ€‹

Deploys a full observability stack (Prometheus, Grafana, Alertmanager).

Type: template ยท Kind output: resource

ParameterTypeRequiredDescription
namestringYesStack name (e.g. prod-monitoring)
destinationenumYeskubernetes | docker-compose
namespacestringKubernetes onlye.g. monitoring
grafanaAdminPasswordstringYesInitial Grafana admin password
ownerstringYesOwning team

Generated output: helm-values.yaml (kube-prometheus-stack) or docker-compose.monitoring.yml + pre-configured dashboards


create-helm-chart โ€” Scaffold a Helm Chartโ€‹

Generates a complete Helm chart for an existing service and pushes it to your infra repo.

Type: template ยท Kind output: resource

ParameterTypeRequiredDescription
serviceNamestringYesName of the service to chart
imageRepostringYesContainer image (e.g. ghcr.io/acme/my-service)
portnumberNoContainer port (default: 3000)
ingressEnabledbooleanNoGenerate ingress resource (default: false)
ownerstringYesOwning team
infraRepostringYesInfra repo to push the chart into

Internal Templatesโ€‹

The following templates are used internally by ForgePortal fix actions and are not visible in the Templates UI:

TemplateUsed by
forge-fix-fileScorecard fix actions โ€” creates a PR to add a missing file

Writing Your Own Templatesโ€‹

See Writing Templates for the full reference on template parameters, action steps, Handlebars variables, and how to register a custom template via forgeportal.yaml.