← Back to all products
$49
Platform Developer Portal
Internal developer portal with service catalog, API docs, onboarding guides, and self-service infrastructure templates.
YAMLMarkdownTerraformPythonCI/CD
📄 Product Preview
Try the interactive reader and demo tools below, or get the full product with all content unlocked.
📖 Interactive Reader (Free Preview) ⚙ Try Demo Tools 📦 Download Free Sample📁 File Structure 37 files
platform-developer-portal/
├── LICENSE
├── README.md
├── catalog/
│ ├── catalog-info-api-gateway.yaml
│ ├── catalog-info-notification-service.yaml
│ ├── catalog-info-payment-service.yaml
│ └── catalog-info-user-service.yaml
├── docs/
│ ├── api/
│ │ ├── payment-service-openapi.yaml
│ │ └── user-service-openapi.yaml
│ ├── onboarding/
│ │ ├── getting-started.md
│ │ ├── golden-path.md
│ │ └── service-ownership.md
│ └── techdocs/
│ ├── docs/
│ │ ├── architecture.md
│ │ └── index.md
│ └── mkdocs.yml
├── free-sample.zip
├── guide/
│ ├── 01-idp-fundamentals.md
│ ├── 02-service-catalog-design.md
│ ├── 03-software-templates-and-golden-paths.md
│ ├── 04-api-documentation-and-techdocs.md
│ └── 05-self-service-infrastructure.md
├── index.html
├── infra/
│ └── modules/
│ ├── ecs-service/
│ │ ├── README.md
│ │ ├── main.tf
│ │ └── variables.tf
│ ├── rds-postgres/
│ │ ├── README.md
│ │ ├── main.tf
│ │ └── variables.tf
│ └── s3-bucket/
│ ├── README.md
│ ├── main.tf
│ └── variables.tf
├── src/
│ ├── __pycache__/
│ │ ├── catalog_linter.cpython-312.pyc
│ │ └── catalog_validator.cpython-312.pyc
│ ├── catalog_linter.py
│ └── catalog_validator.py
└── templates/
├── new-api-service.yaml
├── new-backend-service.yaml
└── new-frontend-app.yaml
📖 Documentation Preview README excerpt
Platform Developer Portal Kit
A comprehensive internal developer portal (IDP) starter kit inspired by Backstage.
Includes service catalog definitions, scaffolding templates, API documentation,
golden-path onboarding guides, self-service infrastructure modules, and a
Python-based catalog validator.
What's Inside
This kit provides everything needed to bootstrap an internal developer portal:
- Service Catalog (Backstage-compatible YAML) — catalog-info.yaml entries for multiple example services showing ownership, dependencies, lifecycle, and API definitions
- Software Templates (Scaffolder YAML) — Ready-to-use scaffolder templates for creating new services, APIs, and frontend applications following your golden path
- API Documentation (OpenAPI 3.1) — Example OpenAPI specs showing best practices for documenting internal and external APIs
- Golden Path Onboarding Guides — Markdown guides for new developers: getting started, service ownership, and the "paved road" for shipping software
- Self-Service Infrastructure (HCL/Terraform) — Reusable Terraform modules for common infrastructure patterns (ECS services, RDS databases, S3 buckets)
- TechDocs Structure — MkDocs-ready documentation structure for publishing technical documentation through your portal
- Catalog Validator (Python, stdlib only) — Linter and validator for catalog-info.yaml files ensuring consistency and completeness
File Tree
platform-developer-portal/
├── README.md
├── LICENSE
├── catalog/
│ ├── catalog-info-api-gateway.yaml
│ ├── catalog-info-user-service.yaml
│ ├── catalog-info-payment-service.yaml
│ └── catalog-info-notification-service.yaml
├── templates/
│ ├── new-backend-service.yaml
│ ├── new-api-service.yaml
│ └── new-frontend-app.yaml
├── docs/
│ ├── onboarding/
│ │ ├── getting-started.md
│ │ ├── golden-path.md
│ │ └── service-ownership.md
│ ├── techdocs/
│ │ ├── mkdocs.yml
│ │ └── docs/
│ │ ├── index.md
│ │ └── architecture.md
│ └── api/
│ ├── user-service-openapi.yaml
│ └── payment-service-openapi.yaml
├── infra/
│ └── modules/
│ ├── ecs-service/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ └── README.md
│ ├── rds-postgres/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ └── README.md
│ └── s3-bucket/
│ ├── main.tf
│ ├── variables.tf
*... continues with setup instructions, usage examples, and more.*
📄 Code Sample .py preview
src/catalog_linter.py
"""
Catalog Linter — Best Practice Checks for Backstage Catalog Entries
Goes beyond structural validation to check for organizational best practices:
- Annotation completeness (monitoring, CI/CD, documentation links present)
- Tag hygiene (consistent taxonomy, no duplicates)
- Description quality (minimum length, no placeholder text)
- Ownership patterns (no orphaned services, balanced team load)
- Dependency documentation (APIs declared for all integrations)
Use this alongside the validator — the validator catches structural errors
that would break Backstage, while the linter catches quality issues that
make the catalog less useful for its human consumers.
"""
from __future__ import annotations
import re
from dataclasses import dataclass, field
from pathlib import Path
from typing import Any, Optional
class LintSeverity:
"""Lint finding severity as string constants."""
ERROR = "error"
WARNING = "warning"
INFO = "info"
STYLE = "style"
@dataclass
class LintFinding:
"""A single lint finding for a catalog entry."""
severity: str
rule_id: str
message: str
entity_name: str = ""
file_path: str = ""
suggestion: str = ""
def __str__(self) -> str:
sev = self.severity.upper().ljust(7)
suggestion = f"\n Suggestion: {self.suggestion}" if self.suggestion else ""
return f" [{sev}] {self.rule_id}: {self.message}{suggestion}"
# Annotations that production services should have for full observability
RECOMMENDED_ANNOTATIONS = {
"github.com/project-slug": "Link to source code repository",
# ... 382 more lines ...