ProficientNowTechRFCs

6. Software Templates

RFC-DEVELOPER-PLATFORM-0001                                       Section 6
Category: Standards Track                             Software Templates

6. Software Templates

← Software Catalog | Index | Next: TechDocs →


6.1 Golden Path Philosophy

6.1.1 Concept

Golden paths are opinionated templates that encode organizational best practices. Rather than providing maximum flexibility, golden paths guide developers toward proven patterns.

PrincipleDescription
OpinionatedTemplates make decisions for developers
ConsistentAll projects from a template share structure
CompliantTemplates include required security and operational controls
MaintainedTemplates evolve as standards change

6.1.2 Benefits

BenefitDescription
Faster onboardingNew projects start with working defaults
Reduced cognitive loadDevelopers don't make every decision
ConsistencyUniform project structures across teams
Compliance by defaultSecurity and operational requirements built-in

6.1.3 Invariant Alignment

Per Invariant 5, Software Templates MUST follow organizational golden paths:

EnforcementDescription
Required elementsTemplates include mandatory components
Structure validationOutput conforms to standards
No arbitrary structuresTemplates are prescriptive, not permissive

6.2 Template Structure

6.2.1 Template Components

ComponentPurpose
MetadataTemplate name, description, owner, tags
ParametersUser inputs with validation
StepsActions to execute
OutputResulting artifacts and catalog registration

6.2.2 Parameter Types

TypeDescriptionExample
StringText inputProject name
NumberNumeric inputReplica count
BooleanTrue/falseEnable feature flag
SelectDropdown optionsEnvironment tier
ArrayMultiple valuesTags
Owner PickerTeam selectionOwning team
Entity PickerCatalog entityParent system

6.2.3 Template Categories

CategoryPurposeExamples
ApplicationCreate new applicationNode.js service, Python API
InfrastructureProvision resourcesPostgreSQL database, Kafka topic
DocumentationCreate documentationADR template, runbook
ConfigurationModify existingAdd monitoring, add CI pipeline

6.3 Scaffolder Actions

6.3.1 Built-in Actions

ActionPurpose
fetch:templateRender template files
publish:githubCreate GitHub repository
catalog:registerRegister entity in catalog
debug:logLog debug information

6.3.2 Custom Actions

Custom actions extend template capabilities for platform-specific operations:

ActionPurpose
crossplane:create-claimGenerate Crossplane claim YAML
kafka:create-topicGenerate KafkaTopic resource
argocd:create-applicationGenerate ArgoCD Application
notification:slackSend Slack notification

6.3.3 Action Security

Per Invariant 15, scaffolder actions MUST NOT bypass the authentication chain:

RequirementDescription
Service account usageActions use dedicated service accounts
Audit trailAction execution logged
Secret accessCredentials from Vault, not hardcoded

6.4 GitOps Output Pattern

6.4.1 Output Flow

Per Invariant 4, all self-service actions MUST produce Git commits:

6.4.2 Output Types

Output TypeDestinationReconciler
Application manifestsApplication repoArgoCD
Crossplane claimsInfrastructure repoCrossplane
Kubernetes resourcesGitOps repoArgoCD
Catalog entitiescatalog-info.yamlBackstage discovery

6.4.3 Repository Strategy

StrategyDescription
Single repoAll artifacts in application repository
Mono repoShared infrastructure repository
Multi-repoSeparate repos for app and infrastructure

6.5 Template Catalog

6.5.1 Application Templates

TemplateDescriptionOutput
Node.js ServiceExpress/Fastify microserviceGit repo, Dockerfile, Helm chart, ArgoCD app
Python ServiceFastAPI/Flask microserviceGit repo, Dockerfile, Helm chart, ArgoCD app
Go ServiceGo microserviceGit repo, Dockerfile, Helm chart, ArgoCD app
Java ServiceSpring Boot microserviceGit repo, Dockerfile, Helm chart, ArgoCD app
Static WebsiteSPA or static siteGit repo, Dockerfile, Helm chart, ArgoCD app

6.5.2 Infrastructure Templates

TemplateDescriptionOutput
PostgreSQL DatabasePostgreSQL via CloudNativePG/ZalandoCrossplane Claim, ExternalSecret, Catalog entity
MongoDB DatabaseMongoDB via Percona EverestCrossplane Claim, ExternalSecret, Catalog entity
ClickHouse DatabaseClickHouse for analyticsCrossplane Claim, ExternalSecret, Catalog entity
Redis CacheRedis cache clusterCrossplane Claim, ExternalSecret, Catalog entity
Kafka TopicKafka topic creationKafkaTopic resource, Catalog entity
S3 BucketObject storage bucketCeph RGW bucket, Catalog entity

6.5.3 Schema Templates

TemplateDescriptionOutput
Avro SchemaRegister Avro schemaApicurio schema, Catalog entity
JSON SchemaRegister JSON schemaApicurio schema, Catalog entity
CloudEvents SchemaCloudEvents event schemaApicurio schema, Catalog entity

6.6 Template Governance

6.6.1 Template Ownership

RoleResponsibility
Platform teamCore templates, infrastructure templates
Security teamSecurity-focused templates, review
Domain teamsDomain-specific templates

6.6.2 Template Lifecycle

PhaseDescription
DevelopmentTemplate created, tested in isolation
ReviewSecurity and architecture review
BetaLimited rollout for feedback
GAAvailable to all users
DeprecatedMarked for removal, migration path provided
RetiredRemoved from catalog

6.6.3 Template Versioning

ApproachDescription
Semantic versioningMajor, minor, patch versions
Breaking changesMajor version increment
Backward compatibleMinor version increment
FixesPatch version increment

6.7 Template Permissions

6.7.1 Permission Model

Templates MAY have restricted execution based on:

RestrictionDescription
Template-levelOnly certain groups can use template
Parameter-levelCertain parameters restricted by role
Environment-levelProduction provisioning requires approval

6.7.2 Approval Workflows

Certain templates MAY require approval before execution:

TriggerApproval Required
Production databaseDBA approval
Public ingressSecurity approval
Cross-namespace accessPlatform approval

Document Navigation


End of Section 6 — RFC-DEVELOPER-PLATFORM-0001