Every organization I’ve worked with has an application inventory problem. The inventory exists — but it lives in a spreadsheet that was accurate six months ago. It’s been forked by four teams. And developers won’t update it because it gives them absolutely nothing back.
I’ve been looking at this problem for years. The answer, I’ve come to believe, is Backstage — Spotify’s open-source developer portal. Not just as a service catalog, but as the foundation for a modernization tracking system.
Watch the 30-second summary
Auto-generated summary — read the full article below for details.
The Problem: Everyone Needs It, Nobody Owns It
Six teams ask the same fundamental question — “what applications do we have and what state are they in?” — but from different angles:
| Persona | Their question |
|---|---|
| Migration Lead | “List all servers and their dependencies” |
| Security Auditor | “Which data flows contain PII?” |
| CISO | “Which apps have known CVEs? Outdated versions?” |
| FinOps | “How much does this workload cost?” |
| Enterprise Architect | “Which apps support which business process?” |
| Procurement | “Which workloads use this licensed software?” |
Six teams, six urgent questions, one common need — a single living source of truth.
Why Doesn’t It Already Exist?
- It’s nobody’s job. Everyone needs it, no one owns it.
- Spreadsheets fill the gap… badly. Outdated in 3 months, forked by 4 teams.
- Commercial tools are expensive and rigid. CMDB solutions force their data model on you.
- Homegrown solutions die with their creator.
- Every company needs a different data model.
- Developers won’t feed a system that gives them nothing back. This is the killer. If developers see it as overhead, data quality collapses.
What We Actually Need
- Open source — no licensing cost, no vendor lock-in
- Customizable — adapts to YOUR data model
- Developer-friendly — built by devs, for devs
- Extensible — plugins pull data automatically
This already exists. It’s called Backstage.
What Is Backstage?
Backstage is an open-source framework created by Spotify for building developer portals. It’s now a CNCF project with a massive community.
Out of the box it gives you:
- A software catalog — every service, library, and resource in one place
- Tech docs — documentation lives with the code
- Templates — scaffold new services with best practices baked in
- Plugin ecosystem — extend it with anything you need
The key is the plugin architecture. This is what makes it infinitely customizable.
Why Backstage for Modernization?
By migrating from spreadsheets into Backstage, you’re not just digitizing a list. You’re creating a platform that multiple teams can query, extend, and trust.
What makes it work for modernization specifically:
- Single source of truth for security, FinOps, architecture, and procurement
- Maps applications directly to business processes (customer journeys)
- Customizable metamodel — add modernization-specific fields (modernization score, target architecture, migration status)
- Plugins gather metrics automatically — cost data, security posture, technical debt indicators
- Open source = no dependency on a vendor’s roadmap
How to Build It
Step 1: Create a Backstage Application
Standard setup — React frontend, TypeScript backend. Follow the getting-started guide on backstage.io.
Step 2: Customize the Model
Add modernization-specific metadata to the catalog schema:
- Modernization score (0–100%)
- Current architecture classification (legacy / cloud-ready / cloud-native)
- Target architecture
- Business process mapping
- Migration pathway (re-host / re-platform / re-factor / retire)
- Dependencies
Step 3: Optional — Dedicated Reports and UI
Build custom plugins that visualize:
- Portfolio-wide modernization progress
- Pathway distribution (how many apps in each category)
- Cost vs. modernization score scatter plot
- Month-over-month trend
Step 4: Import Data
Two approaches:
| Quick Start | Strategic |
|---|---|
| Export spreadsheet to YAML | YAML catalog file in each Git repo |
| Bulk import into Backstage | Auto-discovered by Backstage |
| Good for day-1 migration | Self-maintaining, developer-owned |
| Data can go stale | Data stays fresh with code |
The strategic approach wins long-term. A catalog-info.yaml in each repository means developers own their metadata alongside their code. This is the gold standard.
Step 5: Deploy
Run Backstage on your infrastructure. It’s a Node.js application — deploy it anywhere you’d deploy a web app.
Measuring the Modernization Index
Once you have applications cataloged with modernization metadata, you can compute a Modernization Index:
Modernization Index = weighted average of:
- Cloud-native service adoption (40%)
- Architecture classification score (25%)
- Security posture (15%)
- Operational maturity (10%)
- Cost efficiency (10%)
Track this per application, per business unit, and across the portfolio. The trends matter more than the absolute number.
AI-Powered Recommendations
With enough data in the catalog, you can generate pathway recommendations:
- Applications with high business value + low modernization score = priority targets
- Applications with similar profiles to recently modernized ones = candidates for the same pattern
- Applications nearing end-of-support = urgent queue
Accelerate with AI
You can dramatically reduce time-to-value by using AI coding assistants to:
- Generate Backstage plugins from descriptions
- Convert spreadsheet exports to YAML catalog files
- Build custom dashboard components
- Scaffold the entire modernization metadata schema
Key Takeaways
- Application inventory is a foundation, not a nice-to-have — six teams need it daily
- Spreadsheets are where application inventories go to die
- Backstage gives you an open-source, developer-friendly platform to replace them
- Start with a spreadsheet import (YAML conversion), evolve to developer-owned catalog-as-code
- The Modernization Index turns the catalog into an actionable tracking system
- If developers don’t get value from the catalog, data quality will collapse — make it useful for them first
Any opinions in this article are my own.
