https://github.com/adamswbrown/azure-architecture-categoriser
Match your applications to Azure architecture patterns. Upload assessment data from Dr. Migrate, answer a few questions, and get ranked recommendations with detailed explanations. Powered the reference architectures from the Azure Architecture Center.
https://github.com/adamswbrown/azure-architecture-categoriser
azure azure-architecture-center dr-migrate drmigrate infrastructure-as-code python
Last synced: 5 months ago
JSON representation
Match your applications to Azure architecture patterns. Upload assessment data from Dr. Migrate, answer a few questions, and get ranked recommendations with detailed explanations. Powered the reference architectures from the Azure Architecture Center.
- Host: GitHub
- URL: https://github.com/adamswbrown/azure-architecture-categoriser
- Owner: adamswbrown
- Created: 2026-01-28T21:21:45.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-02-05T18:01:31.000Z (5 months ago)
- Last Synced: 2026-02-06T03:56:24.705Z (5 months ago)
- Topics: azure, azure-architecture-center, dr-migrate, drmigrate, infrastructure-as-code, python
- Language: Python
- Homepage: https://ca-azarch-recommender-prod.wonderfulbush-cf6d0a82.uksouth.azurecontainerapps.io
- Size: 1.96 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Azure Architecture Recommender
A complete solution for matching applications to Azure architecture patterns based on assessment data.
## What Does This Tool Do?
The **Recommendations App** is a web-based wizard that helps you find the right Azure architecture for your application. Simply upload your application assessment data, answer a few optional questions, and receive ranked architecture recommendations with detailed explanations.

**The 3-step process:**
1. **Upload & Review** - Upload your Dr. Migrate context file and review the detected technologies, servers, and modernization assessment
2. **Answer Questions** - Optionally answer clarifying questions to improve recommendation accuracy (e.g., availability requirements, security level, cost priorities)
3. **Get Results** - Receive ranked Azure architecture recommendations with:
- Match scores showing how well each architecture fits your needs
- Detailed explanations of why each architecture is recommended
- Potential challenges and considerations
- Links to official Microsoft documentation
- PDF report export for stakeholders
The tool matches your application profile against **~50 reference architectures** from the [Azure Architecture Center](https://learn.microsoft.com/azure/architecture/browse), using multi-dimensional scoring across factors like runtime model, modernization depth, security requirements, and cost optimization.
---
## Prerequisites: Application Context File
This tool accepts **two types of input files**, both generated from [Dr. Migrate](https://drmigrate.com):
### Option 1: App Cat Context Files (Java/.NET Applications)
For Java and .NET applications, Dr. Migrate uses [AppCat](https://learn.microsoft.com/en-us/azure/migrate/appcat/dotnet) (Microsoft's application assessment tool) to evaluate Azure readiness. This generates a context file containing:
- **Application Overview** - Application name, type, business criticality, and recommended migration treatment
- **Detected Technologies** - Runtime environments, frameworks, databases, and middleware
- **Server Details** - Infrastructure metrics, OS information, and Azure VM readiness
- **App Modernization Results** - Platform compatibility and recommended Azure targets
### Option 2: Dr. Migrate Data Exports (ALL Applications)
For applications **without Java/.NET components**, you can generate context data directly from Dr. Migrate's AI Advisor. This enables architecture recommendations for your **entire portfolio** - not just Java/.NET apps.
Simply paste the provided LLM prompt into Dr. Migrate AI Advisor, save the JSON response, and upload it. The tool auto-detects the format and converts it automatically.
See the [Dr. Migrate Integration Guide](https://adamswbrown.github.io/azure-architecture-categoriser/drmigrate-integration.html) for the full LLM prompt and details.
### Integration with Dr. Migrate
This tool **integrates with** Dr. Migrate's workflow - it is not a feature of Dr. Migrate itself. The workflow is:
1. **In Dr. Migrate**: Either assess with AppCat (Java/.NET) OR use AI Advisor to export data (all apps)
2. **In this tool**: Upload the context file to get architecture recommendations
3. **Back to Dr. Migrate**: Use the recommendations to inform your migration strategy
## Components
The application is a unified multi-page Streamlit app with three pages:
| Page | Purpose | For Who |
|------|---------|---------|
| **Recommendations** | Upload context files and get architecture recommendations | End users / customers |
| **Catalog Stats** | Browse and analyze the architecture catalog | All users |
| **Catalog Builder** | Generate custom catalogs from Azure Architecture Center | Admins / power users |
**Note:** The Recommendations page uses the Architecture Scorer as its backend engine. The CLI is also available for automation and scripting.
## Prerequisites
- **Python 3.9+** - Required to run the application
- **Git** - Required to clone the Azure Architecture Center repository when generating catalogs
- **pip** - Python package manager for installing dependencies
## Quick Start (Typical User Flow)
### Step 1: Install
```bash
# Clone this repository
git clone https://github.com/adamswbrown/azure-architecture-categoriser.git
cd azure-architecture-categoriser
# Install with GUI support
pip install -e ".[recommendations-app,gui]"
```
### Step 2: Launch the Application
```bash
# Launch the unified app (port 8501)
./bin/start-recommendations-app.sh
# Or on Windows:
.\bin\start-recommendations-app.ps1
```
### Step 3: Generate a Catalog (if needed)
If no catalog exists, the app will prompt you to generate one:
1. Go to the **Catalog Builder** page in the sidebar
2. Click **Clone Repository** to get Azure Architecture Center
3. Click **Generate with Defaults** to create `architecture-catalog.json`
### Step 4: Get Recommendations
1. Go to the **Recommendations** page (main page)
2. Upload your Dr. Migrate context file
3. Answer optional clarification questions
4. Download your PDF report
---
## Docker (Recommended for End Users)
The easiest way to run the application is via Docker - no Python installation required.
### Quick Start with Docker
```bash
# Pull and run the container
docker run -p 8501:8501 ghcr.io/adamswbrown/azure-architecture-categoriser:latest
```
Then open: http://localhost:8501
Use the sidebar to navigate between pages:
- **Recommendations** - Upload context files and get architecture recommendations
- **Catalog Stats** - View analytics and browse the catalog
- **Catalog Builder** - Generate custom catalogs with advanced filtering
### Using Docker Compose
```bash
# Clone the repo (for docker-compose.yml)
git clone https://github.com/adamswbrown/azure-architecture-categoriser.git
cd azure-architecture-categoriser
# Start services
docker compose up -d
# View logs
docker compose logs -f
# Stop
docker compose down
```
### Building Locally
```bash
# Build the image
docker build -t azure-architecture-categoriser .
# Run it
docker run -p 8501:8501 azure-architecture-categoriser
```
### What's Included in the Container
- Python 3.11 runtime
- All dependencies (Streamlit, ReportLab, etc.)
- Both applications (Recommendations + Catalog Builder)
- Pre-built architecture catalog
- Git (for catalog updates)
---
## Alternative: CLI for Automation
For scripting, CI/CD pipelines, or batch processing, use the CLI directly:
```bash
# Install base package (no GUI)
pip install -e .
# Build catalog
catalog-builder build-catalog \
--repo-path ./architecture-center \
--out architecture-catalog.json
# Score an application
architecture-scorer score \
--catalog architecture-catalog.json \
--context my-app-context.json
```
## Installation
```bash
# Clone this repository
git clone https://github.com/adamswbrown/azure-architecture-categoriser.git
cd azure-architecture-categoriser
# Base installation (CLI tools)
pip install -e .
# With web app
pip install -e ".[recommendations-app]"
# With GUI catalog builder
pip install -e ".[gui]"
# Development
pip install -e ".[dev]"
```
## Architecture
```
┌─────────────────────────────────────────────────────────────────────────┐
│ Azure Architecture Recommender │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ ┌──────────────────────────────────────┐ │
│ │ Catalog Builder │ │ Recommendations App │ │
│ │ GUI │ │ (Customer UI) │ │
│ │ │ │ │ │
│ │ One-time setup │ │ ┌──────────────────────────────┐ │ │
│ │ to generate │────────▶│ │ Architecture Scorer │ │ │
│ │ catalog │ │ │ (Backend Engine) │ │ │
│ └──────────────────┘ │ │ │ │ │
│ │ │ │ Matching + Scoring + Q&A │ │ │
│ ▼ │ └──────────────────────────────┘ │ │
│ ┌──────────────────┐ └──────────────────────────────────────┘ │
│ │ architecture- │ │ │
│ │ catalog.json │ ▼ │
│ │ (~50 reference │ ┌──────────────────────────────────────┐ │
│ │ architectures) │ │ PDF Report / JSON Export │ │
│ └──────────────────┘ └──────────────────────────────────────┘ │
│ │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
│ For automation/scripting: architecture-scorer CLI (same engine) │
└─────────────────────────────────────────────────────────────────────────┘
```
## Typical Workflow
1. **One-Time Setup: Build Catalog**
- Launch Catalog Builder GUI
- Clone Azure Architecture Center repository
- Generate `architecture-catalog.json` (~50 reference architectures)
2. **Assess Application** (in Dr. Migrate)
- Use Dr. Migrate to assess your application with AppCat
- Export the context JSON file
3. **Get Recommendations**
- Launch Recommendations App
- Upload your context file
- Answer optional clarification questions
- View ranked recommendations with explanations
4. **Export & Share**
- Download PDF report for stakeholders
- Download JSON for integration with other tools
5. **Periodic: Refresh Catalog**
- Click "Refresh Catalog" in Recommendations App when catalog is stale
- Or re-run Catalog Builder for custom filtering
## Key Features
- **~50 Reference Architectures** from official Azure Architecture Center (production-ready patterns)
- **Quality Indicators** - Each architecture marked as curated, AI-enriched, or example (learning/POC)
- **Explainable Recommendations** - See why each architecture fits or struggles
- **Confidence Levels** - Know how certain the recommendations are
- **Interactive Questions** - Improve accuracy by answering clarifying questions
- **PDF Reports** - Professional reports for stakeholders
- **Configurable Scoring** - Tune weights and thresholds via config file or UI
- **Multiple Interfaces** - Web app for users, CLI for automation
## Sample Data
The repository includes 25 sample context files demonstrating different migration scenarios:
| Scenario | Description |
|----------|-------------|
| Java Refactor to AKS | Spring Boot microservices to Kubernetes |
| .NET Replatform | Web app to Azure App Service |
| Legacy Tolerate | VB6 application requiring VM hosting |
| Healthcare HIPAA | Regulated application with compliance requirements |
| AI/ML Platform | Machine learning workload with GPU needs |
| Mainframe COBOL | Legacy mainframe with modernization blockers |
| Startup Cost-Optimized | Serverless/consumption-based architecture |
| Multi-Region Active-Active | Mission-critical global deployment |
Generate or regenerate sample files:
```bash
# macOS/Linux
./bin/generate-sample-data.sh
# Windows PowerShell
.\bin\generate-sample-data.ps1
# List all available scenarios
./bin/generate-sample-data.sh --list
```
See [examples/context_files/README.md](examples/context_files/README.md) for the full list.
## Documentation
**📖 [Full Documentation on GitHub Pages](https://adamswbrown.github.io/azure-architecture-categoriser)** ← Start here for guides and references!
### Key Guides
| Document | Description |
|----------|-------------|
| [Getting Started](https://adamswbrown.github.io/azure-architecture-categoriser/getting-started.html) | Installation and first run |
| [Recommendations App](https://adamswbrown.github.io/azure-architecture-categoriser/recommendations-app.html) | Customer-facing web app guide |
| [Catalog Builder](https://adamswbrown.github.io/azure-architecture-categoriser/catalog-builder.html) | Building architecture catalogs |
| [Architecture Scorer](https://adamswbrown.github.io/azure-architecture-categoriser/architecture-scorer.html) | Scoring engine details |
| [Dr. Migrate Integration](https://adamswbrown.github.io/azure-architecture-categoriser/drmigrate-integration.html) | Get recommendations for ALL apps |
| [Configuration](https://adamswbrown.github.io/azure-architecture-categoriser/configuration.html) | Full configuration reference |
| [Design Decisions](https://adamswbrown.github.io/azure-architecture-categoriser/design/) | Why does it work this way? |
| [Azure Deployment](https://adamswbrown.github.io/azure-architecture-categoriser/azure-deployment.html) | Deploy to Azure Container Apps |
## Repository Structure
```
azure-architecture-recommender/
├── bin/ # Launcher scripts
│ ├── start-recommendations-app.sh/.ps1 # Launch recommendations app
│ ├── start-catalog-builder-gui.sh/.ps1 # Launch catalog builder GUI
│ └── generate-sample-data.sh/.ps1 # Generate test context files
├── src/ # Source code
│ ├── catalog_builder/ # Catalog generation CLI
│ ├── catalog_builder_gui/ # Catalog Builder GUI
│ ├── architecture_scorer/ # Scoring engine
│ └── architecture_recommendations_app/ # Customer web app
├── docs/ # Documentation
│ ├── design/ # Design decisions & specifications
│ │ ├── decisions/ # Architecture Decision Records (ADRs)
│ │ ├── glossary.md # Key terms
│ │ └── README.md # "Why does it work this way?"
│ ├── images/ # Screenshots
│ └── *.md # Component docs
├── infra/ # Infrastructure as Code
│ ├── main.bicep # Azure deployment template
│ └── modules/ # Bicep modules
├── tests/ # Tests
│ └── generate_sample_data.py # Sample data generator
├── examples/ # Example files
│ └── context_files/ # Sample context files (25 scenarios)
└── architecture-catalog.json # Generated catalog
```
## Version
**Current: v1.4.0** (2026-02-04)
Latest features:
- **Dr. Migrate Integration** - Get recommendations for ALL applications (not just Java/.NET)
- Auto-detection of Dr. Migrate vs App Cat file formats
- LLM prompt for extracting data from Dr. Migrate AI Advisor
- CLI commands for batch context file generation
See [CHANGELOG.md](CHANGELOG.md) for full release history.
## License
MIT