Architecture overview¶
How AzureLocal/platform fits into the broader AzureLocal organization.
The three central repos¶
graph LR
subgraph "Org-level repos"
G[AzureLocal/.github
GitHub-metadata governance]
P[AzureLocal/platform
Developer tooling]
S[azurelocal.github.io
Community docs site]
end
subgraph "Product repos (~25)"
R1[azurelocal-ranger]
R2[azurelocal-s2d-cartographer]
R3[azurelocal-surveyor]
RN[...other product repos]
end
G -->|reusable workflows: add-to-project, release-please, validate-structure| R1
G -->|same| R2
G -->|same| R3
G -->|same| RN
P -->|reusable workflows: ps-module-ci, ts-web-ci, iac-validate, mkdocs-deploy, maproom-run, drift-check| R1
P -->|same| R2
P -->|same| R3
P -->|same| RN
P -->|standards/*.mdx via scheduled sync| S
R1 -->|STANDARDS.md link| P
R2 -->|STANDARDS.md link| P
R3 -->|STANDARDS.md link| P
RN -->|STANDARDS.md link| P
Who owns what¶
| Responsibility | Repo | Examples |
|---|---|---|
| GitHub-metadata governance | AzureLocal/.github | CONTRIBUTING.md, SECURITY.md, PR template, issue templates, org profile README |
| Governance reusable workflows | AzureLocal/.github | reusable-add-to-project, reusable-release-please, reusable-validate-structure |
| Canonical standards | AzureLocal/platform | standards/naming.mdx, standards/testing.mdx, all .mdx files |
| Stack-specific reusable workflows | AzureLocal/platform | reusable-ps-module-ci, reusable-ts-web-ci, reusable-iac-validate, reusable-mkdocs-deploy |
| MAPROOM framework | AzureLocal/platform | testing/maproom/framework/, generators, harness, schema |
| TRAILHEAD templates | AzureLocal/platform | testing/trailhead/templates/ |
| IIC canon | AzureLocal/platform | testing/iic-canon/*.json |
| Repo bootstrap scripts | AzureLocal/platform | repo-management/org-scripts/New-AzureLocalRepo.ps1 |
| Drift audit | AzureLocal/platform | drift-audit.yml workflow + Invoke-RepoAudit.ps1 |
| Community-facing docs rendering | azurelocal.github.io | Docusaurus site that renders standards pulled from platform |
| Product source code | Product repos | Modules/, src/, bicep/, etc. |
| Product-specific fixtures | Product repos | tests/maproom/Fixtures/*.json per product |
Data flow — standards update¶
sequenceDiagram
participant Dev as Developer
participant P as AzureLocal/platform
participant S as azurelocal.github.io
participant R as Product repo
Dev->>P: PR against standards/*.mdx
P->>P: platform-ci.yml runs, ADR required
P->>P: Merge + release-please tag
P->>S: Scheduled sync workflow pulls standards/*.mdx
S->>S: Docusaurus rebuild, site redeploys
R->>P: STANDARDS.md link → same content, always current
Data flow — new repo creation¶
sequenceDiagram
participant Dev as Maintainer
participant Script as New-AzureLocalRepo.ps1
participant T as templates/
participant GH as GitHub API
Dev->>Script: -Type iac-solution -Name azurelocal-foo
Script->>T: Merge _common/ + iac-solution/
Script->>Script: Token substitution
Script->>GH: gh repo create AzureLocal/azurelocal-foo
Script->>GH: git push scaffolded tree
Script->>GH: Apply branch protection (via Sync-BranchProtection)
Script->>GH: Apply canonical labels (via Sync-Labels)
Script-->>Dev: Repo ready, CI green on first commit
Versioning and release cadence¶
- Platform:
release-please-driven, SemVer, monorepo mode. Major tag (v1,v2) is what consumers pin. - Reusable workflows: consumers pin
@v1(major). Minor/patch updates propagate automatically. Breaking change → newv2tag + six-month dual-support. - Standards: versioned as part of the platform release stream. Sync workflow in
azurelocal.github.iopulls on release tag. - IIC canon: frozen post-v1. Changes require ADR.
See governance/versioning.md and governance/breaking-changes.md.