The Internal Developer Platform (IDP) is a cloud-native developer portal built on Backstage.io. It serves as the primary gateway for engineering teams to manage the entire software development lifecycle—unifying service catalogs, documentation, and automated scaffolding into a high-performance "Golden Path" ecosystem.
- Service Catalog: A centralized, searchable directory of microservices, websites, and data pipelines with ownership and dependency tracking.
- Software Templates: Rapid scaffolding of new projects (React, FastAPI, etc.) using industry-standard best practices and security defaults.
- TechDocs: High-quality Documentation-as-Code (DaC), rendered adjacent to service components for maximum discoverability.
- AI-Enhanced Governance: Integrated Agent Constitution governing agentic workflows for platform evolution and automated maintenance.
- Identity & Security: Enterprise SSO via Keycloak (OIDC) with granular RBAC mapped to organizational hierarchies.
- Node.js: v20.x or v22.x (v22.x required for Docker build)
- Yarn: v1.x (Classic)
- Docker: Required for running Keycloak and local databases.
Copy the example environment file and configure your secrets:
cp .env.example .envNote: You must configure
APP_BASE_URL,KEYCLOAK_CLIENT_SECRETandGITLAB_TOKENin the.envfile before starting.
If you are running locally, you MUST start these services as we have removed SQLite support to ensure production parity:
docker compose -f docker-compose.dev.yaml up -dEnsure Keycloak is configured according to the Keycloak Setup Guide.
Install all dependencies:
yarn installStart both the Frontend (App) and Backend servers:
yarn dev- App: http://localhost:3000
- Backend: http://localhost:7007
- Keycloak: http://localhost:8080
To run the platform in a production-like environment (with PostgreSQL and optimized Docker image):
-
Build the Image:
docker compose -f docker-compose.prod.yaml build
-
Start Production Services: You can use the provided helper script to pull the latest code, build, and start the services:
./scripts/deploy.sh
Alternatively, run manually:
docker compose -f docker-compose.prod.yaml up -d
This spins up:
- Backstage: The optimized Node.js app serving both frontend and backend.
IMPORTANT: This setup now requires an external PostgreSQL instance (AWS RDS, Azure Generic, etc.). Local SQLite state is not supported for production-grade environments. Ensure
POSTGRES_HOSTand credentials in.envare configured.
IMPORTANT: This setup assumes you have an enterprise-grade Keycloak instance running and accessible. Ensure
KEYCLOAK_BASE_URLin your.envpoints to the correct location.
Detailed documentation for platform engineers:
- Authentication: Keycloak Setup Strategy
- Deployment: Deployment Strategy
- RBAC Policy: RBAC Configuration
├── packages/
│ ├── app/ # Frontend (React)
│ └── backend/ # Backend (Node.js)
├── templates/ # Software Templates (Golden Paths)
│ └── scaffolding-templates/
├── docs/ # Architecture & Setup Documentation
├── app-config.yaml # Main configuration file
└── users.yaml # Local user/group definitions
- Commit Often: We follow a strict "Commit Every Change" policy.
- Linting: Ensure code passes linting before pushing.
- Docs: Update documentation if you change infrastructure or configuration.