Enterprise SaaS · Multi-tenant
Production-grade code
.NET 9 · React/TS · EN + AR (RTL)
Asset Governance Platform
One multi-tenant platform to govern assets and regulated operations across many organizations — from a township to a hospital or defense manufacturer.
Organizations that manage assets and regulated operations across many teams need one governed system, not a pile of spreadsheets or single-tenant silos. AGP is that platform: independent organizations register assets, run them through an enforced lifecycle, schedule inspections, route approvals, and control exactly who can do what — each tenant fully isolated, everything on per-organization dashboards with a complete, immutable audit trail. The same build serves a company at the Standard bar and a government site, hospital or defense manufacturer at an elevated one — the difference is configuration, not code — and it refuses to boot a production deployment that isn't configured safely.
Gov
hardening profile active
append-only
immutable audit log
agp — access & tenancy
$ agp serve --profile Government
✔ config doctor: KMS key ✓ · OIDC ✓ · CORS allowlist ✓ (else: refuses to boot)
✔ Keycloak realm loaded · roles → permissions
✗ POST /api/assets (role: Inspector, org: Acme)
denied: missing asset:delete ← deny-by-default
✔ query scoped to caller's org · cross-tenant blocked
✔ audit: append-only entry sealed
Representative output — not a live instance.
Asset lifecycle & registration
●Register physical or logical assets with RFID/barcode auto-assignment, type classification, and placement in location trees and component hierarchies.
●Enforced six-state lifecycle — Draft → Registered → In-Service → Under-Inspection → Retired → Disposed. Invalid transitions are rejected at the domain layer, no matter who calls.
●Bulk operations, soft-delete & saved searches — multi-asset transition/delete with per-item results, a recycle bin with retention, and per-user named filters.
Inspection & verification
●Scheduled & recurring inspections with automatic task generation, pass/fail outcomes, and an overdue-work dashboard.
●Evidence capture — photos and PDFs attached as validated files (magic-byte checked, size-capped, path-traversal stripped).
●Multi-channel notifications — in-app, email and SMS through swappable providers; a channel failure is logged and never breaks the originating request.
Approval workflows
●Configurable approval chains for asset transitions, budget changes and subcontract awards.
●Separation-of-duties, enforced — a requester can't approve their own request; the domain invariants make the violation impossible, not just discouraged.
●Full decision history surfaced in the audit trail, with pending-approval dashboards per user.
Access control & multi-tenancy
●Deny-by-default RBAC — every use case is gated by an explicit permission; an unknown role grants nothing.
●IdP-driven permissions — roles come from Keycloak / Entra ID; role→permission mappings are editable per organization without re-issuing tokens.
●Architectural tenant isolation — every entity carries an organization ID and queries filter by the caller's org; cross-tenant access is impossible by construction, and an architecture test proves it.
●Per-tenant dashboards & trends — each organization sees only its own assets, pending work and metrics, with day-by-day history (not just "now") and PDF/CSV export.
Audit, governance & regulated-industry readiness
●Immutable audit log — every state change writes an append-only entry (actor, action, entity, time, org). Full accountability for who changed what, when.
●Deployment security profiles — Standard / Government / Healthcare progressively raise the bar (mandatory KMS keys, longer audit retention, automatic logoff); a config doctor refuses to start Production if the chosen profile's requirements aren't met.
●Regulated-industry control surface — technical safeguards mapped control-by-control to government (NIST 800-53), healthcare (HIPAA §164.312) and defense-manufacturing (ITAR, AS9100/AS9102, DFARS / NIST 800-171 / CMMC) baselines — including a hard block on awarding ITAR-controlled work to an unregistered manufacturer, and first-article records that require a human sign-off.
●Tamper resistance — optimistic-concurrency tokens prevent silent overwrites; AES-256-GCM authenticated encryption makes altered fields detectable.
Beyond assets — operations & partners
●CRM, orders & finance — customers, an order lifecycle, PDF invoices, an accounts-receivable aging report, and dormant-account outreach suggestions. All money is exact decimal, never floating point.
●Subcontractor management — award and track subcontracts on an on-track / due-soon / overdue cockpit, with a transparent, rules-based risk score that flags work likely to slip before it does.
●Scoped self-service portal — a read-only token lets a customer or subcontractor see only their own records (cross-subject access returns 403), including uploading their own compliance certificates.
●Machine-to-machine integration API — an external system of record (e.g. the Ironclad mainframe) upserts assets idempotently and receives HMAC-signed webhook events.
Global-ready & accessible
●Ten languages — English (LTR) and Arabic (RTL) plus eight more, mirrored correctly via logical CSS, on every screen.
●Accessibility built in — full keyboard navigation, a translated 60-second guided tour, and a WCAG 2.1 AA self-assessment with zero automated-scan violations across audited screens.
●Installable PWA — app shell cached; tenant data is never cached offline (a governance system must always show live, authorized data).
Architecture
●Clean Architecture, dependencies inward — a framework-free Domain layer holds the aggregates and invariants; an architecture test fails the build if the dependency rule is broken.
●CQRS application layer — every operation is a command or query, wrapped by cross-cutting authorization and validation that run before any business logic.
●Swappable infrastructure — the same code runs on an in-memory store for demo and PostgreSQL / SQL Server for production; encryption, audit, notifications and storage are all ports with pluggable adapters.
●Hardened API + React/TS SPA — HTTPS/HSTS, rate limiting, strict CSP, body-size caps, RFC 7807 errors; a React Query + OAuth2/PKCE front end across two dozen feature modules.
Security & hardening
●Real auth, verified in CI — the test suite boots an actual Keycloak container, issues a signed JWT, and proves the API validates it, expands roles to permissions, and rejects tampered tokens. The same realm file ships for production.
●Encryption everywhere — TLS in transit; AES-256-GCM field encryption at rest with a fresh nonce per value and keys held in KMS / Key Vault, never in config.
●Supply-chain discipline — warnings are build errors, NuGet audit runs at build, and CodeQL scans C# and TypeScript on every change plus weekly.
●Threat-modelled & scanned — STRIDE threat models per subsystem, a pentest self-assessment on file, and an OWASP ZAP baseline returning zero high / medium / low alerts.
Proof
0
build warnings (enforced)
CI-gated
real Keycloak OIDC test
ℹReadiness, not certification — stated plainly. The Standard / Government / Healthcare profiles ship the technical safeguards that map, control by control, to baselines like NIST 800-53, HIPAA §164.312 and DFARS / CMMC. They make an audit straightforward — they are not a certification, and the platform can't self-certify. Operating in a real government, hospital or defense environment still requires an independent outside audit / authorization (a government ATO through an independent assessor, a HIPAA assessment, a C3PAO for CMMC) plus organizational work no software can do (SSP, POA&M, BAAs, policies, training). What the platform guarantees mechanically: its config doctor refuses to boot an insecure production deployment, and it hard-enforces the gates it can. Built to be audited — not to fake it.
.NET 9 · C#Clean Architecture · CQRS / MediatREF Core · PostgreSQL / SQL ServerFluentValidationSerilog · OpenTelemetry · PrometheusReact 18 · TypeScript 5Vite · React Query · react-i18nextKeycloak / Entra ID (OIDC)AES-256-GCMTerraform · Kubernetes · DockerGitHub Actions · CodeQL
🔒Architecture, security posture and verified results shown in full. The source, business logic and configuration are private — this is an in-depth capability showcase, not a distribution.
Running regulated ops
across many teams?
I build multi-tenant platforms that keep complex, regulated operations organized, access-controlled and provably auditable — and that are honest about where the software stops and an outside auditor begins. Tell me what you need to govern.
Start a project →