Incursa.Platform is a public .NET monorepo for reusable platform capabilities, hosting adapters, and vendor integrations. The repository is organized around two package layers:
- Layer 2 capability packages in
src/Incursa.Platform.* - Layer 1 vendor integration packages in
src/Incursa.Integrations.*
The goal is to keep provider-neutral contracts and domain models clean, small, and reusable, while still shipping first-class vendor-specific adapters for the systems those capabilities need to talk to.
- Monorepo architecture
- Layer 2 capability model
- Imported integrations and provider boundaries
- Repository scope and public-surface rules
- Curated repository map for contributors and LLMs
src/contains public packages that are intended to ship from this repository.tests/contains automated tests and sample or smoke-host projects.docs/contains architecture notes, quality rules, runbooks, and reference material.eng/contains packaging, affected-project, and release support scripts.tools/contains shipped build/runtime helpers and test-support utilities.incubating/is a staging area reserved for code that is not yet ready for the public source tree.
These packages define the reusable, provider-neutral capability surface of the platform.
Incursa.Platformfor foundational infrastructure, orchestration, and cross-cutting runtime building blocksIncursa.Platform.Storagefor partition-aware storage contracts used by capability and adapter packagesIncursa.Platform.Observabilityfor shared observability conventions and event/tag namingIncursa.Platform.Correlationfor correlation context propagationIncursa.Platform.Auditfor immutable audit-event contractsIncursa.Platform.Operationsfor long-running operation tracking primitives
Incursa.Platform.Accessfor users, scope roots, tenants, memberships, assignments, grants, and effective-access evaluationIncursa.Platform.Dnsfor provider-neutral zone and record managementIncursa.Platform.CustomDomainsfor managed custom-domain and custom-hostname lifecycle stateIncursa.Platform.Emailfor outbound email contracts, queueing, dispatch, and delivery workflow primitivesIncursa.Platform.Webhooksfor provider-agnostic webhook ingestion and classification primitivesIncursa.Platform.Healthfor service and subsystem health surfacesIncursa.Platform.Modularityfor module registration and engine composition
Incursa.Platform.Access.AspNetCoreIncursa.Platform.Email.AspNetCoreIncursa.Platform.Health.AspNetCoreIncursa.Platform.Metrics.AspNetCoreIncursa.Platform.Metrics.HttpServerIncursa.Platform.Modularity.AspNetCoreIncursa.Platform.Modularity.RazorIncursa.Platform.Webhooks.AspNetCore
Incursa.Platform.InMemoryIncursa.Platform.PostgresIncursa.Platform.SqlServerIncursa.Platform.Email.PostgresIncursa.Platform.Email.SqlServerIncursa.Platform.Email.Postmark
These packages are vendor-specific adapters. They are public, packable packages, but they are intentionally scoped to a particular provider.
Incursa.Integrations.WorkOSIncursa.Integrations.WorkOS.AbstractionsIncursa.Integrations.WorkOS.AccessIncursa.Integrations.WorkOS.AspNetCoreIncursa.Integrations.WorkOS.AuditIncursa.Integrations.WorkOS.WebhooksIncursa.Integrations.WorkOS.AppAuth.AbstractionsIncursa.Integrations.WorkOS.AppAuth.AspNetCore
Incursa.Integrations.CloudflareIncursa.Integrations.Cloudflare.DnsIncursa.Integrations.Cloudflare.CustomDomainsIncursa.Integrations.Cloudflare.KvProbe
Incursa.Integrations.ElectronicNotaryIncursa.Integrations.ElectronicNotary.AbstractionsIncursa.Integrations.ElectronicNotary.ProofIncursa.Integrations.ElectronicNotary.Proof.AspNetCore
- Start with a layer 2 package if you are trying to understand the platform’s public domain model or capability boundary.
- Start with a layer 1 integration package if you already know the provider you need and want the vendor-specific adapter.
- Use the architecture docs before moving code between package families; those documents define what belongs in capability packages versus provider packages.
- Public packages live under
src/. - Packability is explicitly opted into per project.
eng/package-catalog.jsonis the allowlist used by repo tooling for package discovery and packing.eng/Generate-PackageCatalog.ps1refreshes the package catalog.eng/Pack-PublicPackages.ps1packs the public package set.
dotnet restore Incursa.Platform.CI.slnx
dotnet tool restore
dotnet build Incursa.Platform.CI.slnx -c Release
dotnet test Incursa.Platform.CI.slnx -c Release
pwsh -File eng/Generate-PackageCatalog.ps1
pwsh -File eng/Pack-PublicPackages.ps1 -Configuration Release -OutputPath ./nupkgs