Skip to content

Architecture

Project Galaxy is an enterprise project controls application built as a Blazor WebAssembly frontend with an Azure Functions backend and a Fabric SQL data layer, hosted on Azure Static Web Apps. Identity is propagated end-to-end: Entra ID authentication flows from the SWA gateway into SQL session context to drive row-level security (RLS).

  • Frontend: Blazor WebAssembly, .NET 9, Microsoft Fluent UI for Blazor
  • Backend: Azure Functions (.NET 9), HTTP-triggered function classes in Api/Functions/*
  • Shared Layer: common models, DTOs, and interfaces in Shared/
  • Database: Fabric SQL via Microsoft.Data.SqlClient and Dapper
  • Hosting: Azure Static Web Apps, GitHub Actions CI/CD
  • Observability: Application Insights worker service (Functions) + client-side App Insights (Blazor)
%% galaxy: zoom=0.75
flowchart TD
%% CECCo Branding & Thematic Styles
classDef nucleus fill:#cc0000,stroke:#ffffff,stroke-width:3px,color:#ffffff,font-weight:bold;
classDef perimeter fill:#1e1e1e,stroke:#555555,stroke-width:1px,color:#cccccc,stroke-dasharray:4 4;
classDef precon fill:#2d2d2d,stroke:#0078d4,stroke-width:2px,color:#ffffff;
classDef exec fill:#2d2d2d,stroke:#107c10,stroke-width:2px,color:#ffffff;
classDef apiLayer fill:#111111,stroke:#cc0000,stroke-width:1px,color:#ffffff;
%% 1. The Perimeter (Onion Layer 6-8 + Roadmap Deployment)
subgraph Shield [System Perimeter & Infrastructure]
direction LR
S1([Entra ID AuthN / SSO]):::perimeter
S2([Blazor WASM / Fluent UI]):::perimeter
S3([GitHub Actions CI/CD]):::perimeter
end
%% 2. The Operational Hemispheres (Process Loop + Roadmap Modules)
subgraph AppLayer [Business Operations & User Experience]
direction LR
subgraph PreCon [Pre-Construction Hemisphere]
direction TB
P1(Historical Data / Estimating):::precon
P2(Project Management / Contracts):::precon
P3(Engineering / VDC):::precon
end
subgraph Exec [Execution Hemisphere]
direction TB
E1(Purchasing / Prefab):::exec
E2(Field Operations / Construction):::exec
E3(Project Controls / Finance):::exec
end
end
%% 3. The APIs & Security Gate (Onion Layer 2-3)
subgraph Logic [Standardized Logic & Integration]
direction LR
L1{{Pipe & Wire APIs}}:::apiLayer
L2{{Fabric Row-Level Security}}:::apiLayer
end
%% 4. The Nucleus (Process Core + Onion Layer 1)
subgraph Engine [Unified Data Engine]
direction TB
D1[(Organizational Dimension Tables)]:::nucleus
D2[(Transactional Fact Tables)]:::nucleus
end
%% The Unified Dataflow
Shield --> AppLayer
PreCon ==>|RFP & Precon Data| Logic
Logic ==> Engine
Engine ==>|Approved Metrics| Exec
Exec ==>|Closeout & Telemetry| Logic
%% galaxy: zoom=0.5
flowchart TD
%% CECCo Branding & Theme
classDef layerNode fill:#2d2d2d,stroke:#555,stroke-width:1px,color:#fff;
classDef nucleus fill:#cc0000,stroke:#fff,stroke-width:3px,color:#fff,font-weight:bold;
classDef perimeter fill:transparent,stroke:#777,stroke-width:2px,stroke-dasharray:5 5,color:#ccc;
subgraph Perimeter [Perimeter & Integration Layers]
direction TB
L8([8. System Security<br/>AuthN / Fabric RLS]):::layerNode
L7([7. System Monitoring & Health]):::layerNode
L6([6. System Integrations & APIs<br/>3rd Party Providers]):::layerNode
end
subgraph Operations [Business & Organizational Layers]
direction TB
L5([5. Departments<br/>Estimating, PM, Engineering, VDC, Field, etc.]):::layerNode
L4([4. Organizational Data<br/>Dimension Tables]):::layerNode
end
subgraph Engine [Core Data Nucleus]
direction TB
L3([3. Transactional Data<br/>Fact Tables / CRUD]):::layerNode
L2([2. Standardized Logic]):::layerNode
L1(((1. Unified Data Engine<br/>SQL Database Nucleus))):::nucleus
end
%% Penetration Path (Outer to Inner)
L8 --> L7
L7 --> L6
L6 --> L5
L5 --> L4
L4 --> L3
L3 --> L2
L2 --> L1
class Perimeter,Operations,Engine perimeter;