{"id":43909414,"url":"https://github.com/adamswbrown/azure-architecture-categoriser","last_synced_at":"2026-02-06T20:10:12.750Z","repository":{"id":335289653,"uuid":"1144618218","full_name":"adamswbrown/azure-architecture-categoriser","owner":"adamswbrown","description":"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.","archived":false,"fork":false,"pushed_at":"2026-02-05T18:01:31.000Z","size":2060,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-06T03:56:24.705Z","etag":null,"topics":["azure","azure-architecture-center","dr-migrate","drmigrate","infrastructure-as-code","python"],"latest_commit_sha":null,"homepage":"https://ca-azarch-recommender-prod.wonderfulbush-cf6d0a82.uksouth.azurecontainerapps.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adamswbrown.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-28T21:21:45.000Z","updated_at":"2026-02-05T18:01:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/adamswbrown/azure-architecture-categoriser","commit_stats":null,"previous_names":["adamswbrown/azure-architecture-categoriser-"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adamswbrown/azure-architecture-categoriser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamswbrown%2Fazure-architecture-categoriser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamswbrown%2Fazure-architecture-categoriser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamswbrown%2Fazure-architecture-categoriser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamswbrown%2Fazure-architecture-categoriser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adamswbrown","download_url":"https://codeload.github.com/adamswbrown/azure-architecture-categoriser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamswbrown%2Fazure-architecture-categoriser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29174584,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T19:56:27.068Z","status":"ssl_error","status_checked_at":"2026-02-06T19:56:18.934Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure","azure-architecture-center","dr-migrate","drmigrate","infrastructure-as-code","python"],"created_at":"2026-02-06T20:10:12.000Z","updated_at":"2026-02-06T20:10:12.725Z","avatar_url":"https://github.com/adamswbrown.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Azure Architecture Recommender\n\nA complete solution for matching applications to Azure architecture patterns based on assessment data.\n\n## What Does This Tool Do?\n\nThe **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.\n\n![Azure Architecture Recommendations App](docs/images/architecture%20recommendations-gui.png)\n\n**The 3-step process:**\n\n1. **Upload \u0026 Review** - Upload your Dr. Migrate context file and review the detected technologies, servers, and modernization assessment\n2. **Answer Questions** - Optionally answer clarifying questions to improve recommendation accuracy (e.g., availability requirements, security level, cost priorities)\n3. **Get Results** - Receive ranked Azure architecture recommendations with:\n   - Match scores showing how well each architecture fits your needs\n   - Detailed explanations of why each architecture is recommended\n   - Potential challenges and considerations\n   - Links to official Microsoft documentation\n   - PDF report export for stakeholders\n\nThe 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.\n\n---\n\n## Prerequisites: Application Context File\n\nThis tool accepts **two types of input files**, both generated from [Dr. Migrate](https://drmigrate.com):\n\n### Option 1: App Cat Context Files (Java/.NET Applications)\n\nFor 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:\n\n- **Application Overview** - Application name, type, business criticality, and recommended migration treatment\n- **Detected Technologies** - Runtime environments, frameworks, databases, and middleware\n- **Server Details** - Infrastructure metrics, OS information, and Azure VM readiness\n- **App Modernization Results** - Platform compatibility and recommended Azure targets\n\n### Option 2: Dr. Migrate Data Exports (ALL Applications)\n\nFor 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.\n\nSimply 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.\n\nSee the [Dr. Migrate Integration Guide](https://adamswbrown.github.io/azure-architecture-categoriser/drmigrate-integration.html) for the full LLM prompt and details.\n\n### Integration with Dr. Migrate\n\nThis tool **integrates with** Dr. Migrate's workflow - it is not a feature of Dr. Migrate itself. The workflow is:\n\n1. **In Dr. Migrate**: Either assess with AppCat (Java/.NET) OR use AI Advisor to export data (all apps)\n2. **In this tool**: Upload the context file to get architecture recommendations\n3. **Back to Dr. Migrate**: Use the recommendations to inform your migration strategy\n\n## Components\n\nThe application is a unified multi-page Streamlit app with three pages:\n\n| Page | Purpose | For Who |\n|------|---------|---------|\n| **Recommendations** | Upload context files and get architecture recommendations | End users / customers |\n| **Catalog Stats** | Browse and analyze the architecture catalog | All users |\n| **Catalog Builder** | Generate custom catalogs from Azure Architecture Center | Admins / power users |\n\n**Note:** The Recommendations page uses the Architecture Scorer as its backend engine. The CLI is also available for automation and scripting.\n\n## Prerequisites\n\n- **Python 3.9+** - Required to run the application\n- **Git** - Required to clone the Azure Architecture Center repository when generating catalogs\n- **pip** - Python package manager for installing dependencies\n\n## Quick Start (Typical User Flow)\n\n### Step 1: Install\n\n```bash\n# Clone this repository\ngit clone https://github.com/adamswbrown/azure-architecture-categoriser.git\ncd azure-architecture-categoriser\n\n# Install with GUI support\npip install -e \".[recommendations-app,gui]\"\n```\n\n### Step 2: Launch the Application\n\n```bash\n# Launch the unified app (port 8501)\n./bin/start-recommendations-app.sh\n\n# Or on Windows:\n.\\bin\\start-recommendations-app.ps1\n```\n\n### Step 3: Generate a Catalog (if needed)\n\nIf no catalog exists, the app will prompt you to generate one:\n1. Go to the **Catalog Builder** page in the sidebar\n2. Click **Clone Repository** to get Azure Architecture Center\n3. Click **Generate with Defaults** to create `architecture-catalog.json`\n\n### Step 4: Get Recommendations\n\n1. Go to the **Recommendations** page (main page)\n2. Upload your Dr. Migrate context file\n3. Answer optional clarification questions\n4. Download your PDF report\n\n---\n\n## Docker (Recommended for End Users)\n\nThe easiest way to run the application is via Docker - no Python installation required.\n\n### Quick Start with Docker\n\n```bash\n# Pull and run the container\ndocker run -p 8501:8501 ghcr.io/adamswbrown/azure-architecture-categoriser:latest\n```\n\nThen open: http://localhost:8501\n\nUse the sidebar to navigate between pages:\n- **Recommendations** - Upload context files and get architecture recommendations\n- **Catalog Stats** - View analytics and browse the catalog\n- **Catalog Builder** - Generate custom catalogs with advanced filtering\n\n### Using Docker Compose\n\n```bash\n# Clone the repo (for docker-compose.yml)\ngit clone https://github.com/adamswbrown/azure-architecture-categoriser.git\ncd azure-architecture-categoriser\n\n# Start services\ndocker compose up -d\n\n# View logs\ndocker compose logs -f\n\n# Stop\ndocker compose down\n```\n\n### Building Locally\n\n```bash\n# Build the image\ndocker build -t azure-architecture-categoriser .\n\n# Run it\ndocker run -p 8501:8501 azure-architecture-categoriser\n```\n\n### What's Included in the Container\n\n- Python 3.11 runtime\n- All dependencies (Streamlit, ReportLab, etc.)\n- Both applications (Recommendations + Catalog Builder)\n- Pre-built architecture catalog\n- Git (for catalog updates)\n\n---\n\n## Alternative: CLI for Automation\n\nFor scripting, CI/CD pipelines, or batch processing, use the CLI directly:\n\n```bash\n# Install base package (no GUI)\npip install -e .\n\n# Build catalog\ncatalog-builder build-catalog \\\n  --repo-path ./architecture-center \\\n  --out architecture-catalog.json\n\n# Score an application\narchitecture-scorer score \\\n  --catalog architecture-catalog.json \\\n  --context my-app-context.json\n```\n\n## Installation\n\n```bash\n# Clone this repository\ngit clone https://github.com/adamswbrown/azure-architecture-categoriser.git\ncd azure-architecture-categoriser\n\n# Base installation (CLI tools)\npip install -e .\n\n# With web app\npip install -e \".[recommendations-app]\"\n\n# With GUI catalog builder\npip install -e \".[gui]\"\n\n# Development\npip install -e \".[dev]\"\n```\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────────────────────────────┐\n│                        Azure Architecture Recommender                    │\n├─────────────────────────────────────────────────────────────────────────┤\n│                                                                          │\n│  ┌──────────────────┐         ┌──────────────────────────────────────┐  │\n│  │  Catalog Builder │         │       Recommendations App            │  │\n│  │       GUI        │         │         (Customer UI)                │  │\n│  │                  │         │                                      │  │\n│  │  One-time setup  │         │  ┌──────────────────────────────┐   │  │\n│  │  to generate     │────────▶│  │  Architecture Scorer         │   │  │\n│  │  catalog         │         │  │  (Backend Engine)            │   │  │\n│  └──────────────────┘         │  │                              │   │  │\n│           │                    │  │  Matching + Scoring + Q\u0026A   │   │  │\n│           ▼                    │  └──────────────────────────────┘   │  │\n│  ┌──────────────────┐         └──────────────────────────────────────┘  │\n│  │ architecture-    │                          │                        │\n│  │ catalog.json     │                          ▼                        │\n│  │ (~50 reference   │         ┌──────────────────────────────────────┐  │\n│  │  architectures)  │         │  PDF Report / JSON Export            │  │\n│  └──────────────────┘         └──────────────────────────────────────┘  │\n│                                                                          │\n│  ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   │\n│  For automation/scripting: architecture-scorer CLI (same engine)        │\n└─────────────────────────────────────────────────────────────────────────┘\n```\n\n## Typical Workflow\n\n1. **One-Time Setup: Build Catalog**\n   - Launch Catalog Builder GUI\n   - Clone Azure Architecture Center repository\n   - Generate `architecture-catalog.json` (~50 reference architectures)\n\n2. **Assess Application** (in Dr. Migrate)\n   - Use Dr. Migrate to assess your application with AppCat\n   - Export the context JSON file\n\n3. **Get Recommendations**\n   - Launch Recommendations App\n   - Upload your context file\n   - Answer optional clarification questions\n   - View ranked recommendations with explanations\n\n4. **Export \u0026 Share**\n   - Download PDF report for stakeholders\n   - Download JSON for integration with other tools\n\n5. **Periodic: Refresh Catalog**\n   - Click \"Refresh Catalog\" in Recommendations App when catalog is stale\n   - Or re-run Catalog Builder for custom filtering\n\n## Key Features\n\n- **~50 Reference Architectures** from official Azure Architecture Center (production-ready patterns)\n- **Quality Indicators** - Each architecture marked as curated, AI-enriched, or example (learning/POC)\n- **Explainable Recommendations** - See why each architecture fits or struggles\n- **Confidence Levels** - Know how certain the recommendations are\n- **Interactive Questions** - Improve accuracy by answering clarifying questions\n- **PDF Reports** - Professional reports for stakeholders\n- **Configurable Scoring** - Tune weights and thresholds via config file or UI\n- **Multiple Interfaces** - Web app for users, CLI for automation\n\n## Sample Data\n\nThe repository includes 25 sample context files demonstrating different migration scenarios:\n\n| Scenario | Description |\n|----------|-------------|\n| Java Refactor to AKS | Spring Boot microservices to Kubernetes |\n| .NET Replatform | Web app to Azure App Service |\n| Legacy Tolerate | VB6 application requiring VM hosting |\n| Healthcare HIPAA | Regulated application with compliance requirements |\n| AI/ML Platform | Machine learning workload with GPU needs |\n| Mainframe COBOL | Legacy mainframe with modernization blockers |\n| Startup Cost-Optimized | Serverless/consumption-based architecture |\n| Multi-Region Active-Active | Mission-critical global deployment |\n\nGenerate or regenerate sample files:\n\n```bash\n# macOS/Linux\n./bin/generate-sample-data.sh\n\n# Windows PowerShell\n.\\bin\\generate-sample-data.ps1\n\n# List all available scenarios\n./bin/generate-sample-data.sh --list\n```\n\nSee [examples/context_files/README.md](examples/context_files/README.md) for the full list.\n\n## Documentation\n\n**📖 [Full Documentation on GitHub Pages](https://adamswbrown.github.io/azure-architecture-categoriser)** ← Start here for guides and references!\n\n### Key Guides\n\n| Document | Description |\n|----------|-------------|\n| [Getting Started](https://adamswbrown.github.io/azure-architecture-categoriser/getting-started.html) | Installation and first run |\n| [Recommendations App](https://adamswbrown.github.io/azure-architecture-categoriser/recommendations-app.html) | Customer-facing web app guide |\n| [Catalog Builder](https://adamswbrown.github.io/azure-architecture-categoriser/catalog-builder.html) | Building architecture catalogs |\n| [Architecture Scorer](https://adamswbrown.github.io/azure-architecture-categoriser/architecture-scorer.html) | Scoring engine details |\n| [Dr. Migrate Integration](https://adamswbrown.github.io/azure-architecture-categoriser/drmigrate-integration.html) | Get recommendations for ALL apps |\n| [Configuration](https://adamswbrown.github.io/azure-architecture-categoriser/configuration.html) | Full configuration reference |\n| [Design Decisions](https://adamswbrown.github.io/azure-architecture-categoriser/design/) | Why does it work this way? |\n| [Azure Deployment](https://adamswbrown.github.io/azure-architecture-categoriser/azure-deployment.html) | Deploy to Azure Container Apps |\n\n## Repository Structure\n\n```\nazure-architecture-recommender/\n├── bin/                           # Launcher scripts\n│   ├── start-recommendations-app.sh/.ps1    # Launch recommendations app\n│   ├── start-catalog-builder-gui.sh/.ps1    # Launch catalog builder GUI\n│   └── generate-sample-data.sh/.ps1         # Generate test context files\n├── src/                           # Source code\n│   ├── catalog_builder/           # Catalog generation CLI\n│   ├── catalog_builder_gui/       # Catalog Builder GUI\n│   ├── architecture_scorer/       # Scoring engine\n│   └── architecture_recommendations_app/  # Customer web app\n├── docs/                          # Documentation\n│   ├── design/                    # Design decisions \u0026 specifications\n│   │   ├── decisions/             # Architecture Decision Records (ADRs)\n│   │   ├── glossary.md            # Key terms\n│   │   └── README.md              # \"Why does it work this way?\"\n│   ├── images/                    # Screenshots\n│   └── *.md                       # Component docs\n├── infra/                         # Infrastructure as Code\n│   ├── main.bicep                 # Azure deployment template\n│   └── modules/                   # Bicep modules\n├── tests/                         # Tests\n│   └── generate_sample_data.py    # Sample data generator\n├── examples/                      # Example files\n│   └── context_files/             # Sample context files (25 scenarios)\n└── architecture-catalog.json      # Generated catalog\n```\n\n## Version\n\n**Current: v1.4.0** (2026-02-04)\n\nLatest features:\n- **Dr. Migrate Integration** - Get recommendations for ALL applications (not just Java/.NET)\n- Auto-detection of Dr. Migrate vs App Cat file formats\n- LLM prompt for extracting data from Dr. Migrate AI Advisor\n- CLI commands for batch context file generation\n\nSee [CHANGELOG.md](CHANGELOG.md) for full release history.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamswbrown%2Fazure-architecture-categoriser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadamswbrown%2Fazure-architecture-categoriser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamswbrown%2Fazure-architecture-categoriser/lists"}