Client: Saudi Ministry of Energy — Sustainability & Climate Change Agency Status: Sub-projects 1–11 complete — foundation, data-domain, internal API, external API, admin CMS, web portal, knowledge maps, interactive city, smart assistant, app productionization + deployment + production infra, and Entra ID migration. See project plan.
A bilingual (Arabic RTL / English LTR) knowledge hub for the Circular Carbon Economy, meeting Saudi DGA UX and accessibility standards.
Full setup guide → docs/getting-started.md — clone-to-running in 10 minutes.
Short version:
git clone https://github.com/Azm-Tech/cce-platform.git && cd cce-platform
cp .env.example .env && cp .env.local.example .env.local
docker compose up -d # infra (SQL, Redis, Meilisearch, MailDev, ClamAV)
pnpm install --frozen-lockfile && dotnet restore backend/CCE.sln
dotnet run --project backend/src/CCE.Seeder -- --migrate --demo # one-shot: migrate + seed demo data
# Then in separate terminals:
cd backend/src/CCE.Api.External && ASPNETCORE_ENVIRONMENT=Development dotnet run --urls=http://localhost:5001
cd backend/src/CCE.Api.Internal && ASPNETCORE_ENVIRONMENT=Development dotnet run --urls=http://localhost:5002
pnpm nx serve web-portal --port 4200
pnpm nx serve admin-cms --port 4201Then open http://localhost:4200 (public portal) and http://localhost:4201 (admin). Sign in via dev auth: hit http://localhost:5001/dev/sign-in?role=cce-user or http://localhost:5002/dev/sign-in?role=cce-admin.
- Getting started — clone, run, sign in.
- Project plan — every sub-project's spec, master plan, phase plans, completion reports, release tags.
- Roadmap — sub-project map, status, BRD references.
- Architecture Decision Records — 60+ ADRs covering foundation through Entra ID migration.
- Sub-project briefs — one-page summary per sub-project.
- Runbooks — backup/restore, DR promotion, secret rotation, env promotion, migrations, rollback.
- Requirements traceability — BRD section → sub-project mapping.
- Threat model — STRIDE.
- A11y manual checklist — what axe-core can't catch.
- Contributing — branch model, commit format, PR checklist.
- Backend: .NET 8 LTS, EF Core 8, SQL Server 2022 (Azure SQL Edge on arm64 — see ADR-0016), Redis 7, Meilisearch, MediatR, FluentValidation, Serilog, Swashbuckle, Sentry.
- Frontend: Angular 19, Angular Material 18, Bootstrap 5 (grid + utilities only — see ADR-0003), ngx-translate, angular-auth-oidc-client, Nx 20, pnpm.
- Identity: Microsoft Entra ID (multi-tenant, Microsoft.Identity.Web + Graph SDK) in prod; dev mode uses a header/cookie shim — see Sub-11 spec.
- Local infra: Docker Compose (SQL, Redis, Meilisearch, MailDev, ClamAV).
- Contracts: OpenAPI as single source of truth — ADR-0009.
| Path | Purpose |
|---|---|
backend/ |
.NET 8 solution — Domain / Application / Infrastructure / Api.* / Integration. |
frontend/ |
Nx workspace — Angular apps (web-portal, admin-cms) + libs. |
contracts/ |
OpenAPI YAMLs (single source of truth between backend + frontend). |
keycloak/ |
Realm export — reproducible dev IdP state. |
loadtest/ |
k6 scripts + thresholds. |
security/ |
Suppression policies + security README. |
scripts/ |
Repo-wide tooling (check-contracts-clean.sh, etc.). |
docs/adr/ |
Architecture Decision Records (0001–0018). |
docs/subprojects/ |
Per-sub-project briefs (01–09). |
project-plan/ |
Specs and phase plans for the brainstorm → spec → plan workflow. |
.github/workflows/ |
CI pipelines: build, test, OpenAPI drift, security scans, SBOM. |
| ADR | Subject |
|---|---|
| 0001 | Decomposition into 9 sub-projects |
| 0002 | Angular over React |
| 0003 | Material + Bootstrap grid + DGA tokens |
| 0004 | Single repo, backend + frontend workspaces |
| 0005 | Local-first Docker Compose |
| 0006 | Keycloak as ADFS stand-in |
| 0007 | TDD policy |
| 0008 | Version pins |
| 0009 | OpenAPI as contract source |
| 0010 | Sentry for error tracking |
| 0011 | Security scanning pipeline |
| 0012 | A11y + load thresholds |
| 0013 | Source-generated permissions |
| 0014 | Clean Architecture layering |
| 0015 | OIDC + PKCE + BFF cookies |
| 0016 | Azure SQL Edge for arm64 dev |
| 0017 | Serilog file sink as dev SIEM stub |
| 0018 | clamav-debian for arm64 |
TBD — to be added per ministry procurement guidance.