KMTS.Reporting.Persistence
1.0.162-develop.162
dotnet add package KMTS.Reporting.Persistence --version 1.0.162-develop.162
NuGet\Install-Package KMTS.Reporting.Persistence -Version 1.0.162-develop.162
<PackageReference Include="KMTS.Reporting.Persistence" Version="1.0.162-develop.162" />
<PackageVersion Include="KMTS.Reporting.Persistence" Version="1.0.162-develop.162" />
<PackageReference Include="KMTS.Reporting.Persistence" />
paket add KMTS.Reporting.Persistence --version 1.0.162-develop.162
#r "nuget: KMTS.Reporting.Persistence, 1.0.162-develop.162"
#:package KMTS.Reporting.Persistence@1.0.162-develop.162
#addin nuget:?package=KMTS.Reporting.Persistence&version=1.0.162-develop.162&prerelease
#tool nuget:?package=KMTS.Reporting.Persistence&version=1.0.162-develop.162&prerelease
KMTS.Reporting
A KMTS bounded-context library following the 5-layer DDD/CQRS pattern, built on top of
KMTS.Kernel. Scaffolded from the dotnet new kmts-lib
template — the single source of truth for KMTS library structure (D-01).
What this library is
KMTS.Reporting packages one capability as four independently-versioned NuGet layers
(Domain, Application, Infrastructure, Presentation) plus an in-repo NetArchTest
boundary suite. A host application composes it via services.AddReporting().
v1 scope (minimal — projection-runtime seed only)
v1 of KMTS.Reporting is intentionally minimal. This repo is the scaffold seed for a
projection runtime only — the generic 5-layer skeleton emitted by the kmts-lib template,
with no reporting feature code added. The full export / KPI / dashboard framework is
deferred to v2 (see ADR-007: Defer Paid Components; Adopt OSS Substitutes for v1 and the
platform spec Phase 5). Do not add projection/export/dashboard framework code to this repo
during Phase 2 bootstrap — that lands in a later phase. BOOT-08 requires only that this repo
exists as a clean, boundary-enforced scaffold with the correct reporting schema.
Boundary rule
This library references only KMTS.Kernel.*. It must not reference any other KMTS.*
library, must not import WolverineFx (cross-library integration events flow only through
the Kernel seam), and must not use MediatR, Newtonsoft.Json, or Guid primary keys.
These rules are enforced at build time by tests/KMTS.Reporting.ArchitectureTests and fail CI
on violation.
Layers
| Layer | Responsibility |
|---|---|
KMTS.Reporting.Domain |
Entities (Ulid PKs), value objects, domain events, repository interfaces. No infrastructure. |
KMTS.Reporting.Application |
CQRS handlers, validators, marker triad. Source-generated ISender via KMTS.Kernel.Generator. |
KMTS.Reporting.Infrastructure |
EF Core configurations (schema reporting), IReportingDbContext, DbUp scripts, DI + decorator chain. |
KMTS.Reporting.Presentation |
Minimal-API endpoints and the AddReporting() composition entry point. |
How to build
dotnet restore
dotnet build -c Release
dotnet test tests/KMTS.Reporting.ArchitectureTests
All projects target net10.0 with all warnings treated as errors, AnalysisMode=All, and
EnforceCodeStyleInBuild. Persistence uses one schema per library (reporting) with no
cross-schema joins; the host owns a single shared DbContext implementing IReportingDbContext.
Using the API
The host publishes its own OpenAPI description at GET /openapi/v1.json — 136 operations generated from the
routes, so it states the parameters the server actually binds. Point any generator or Swagger UI at it. See
docs/using-the-api.md for authentication, client generation, and the database
connectivity + SQL Lab calls.
Standalone deployment (Docker)
Run Report Studio (the Angular front-end + this API) as a single docker run-deployable container against
its own metadata store — no DCS, no other host. See deploy/README.md:
bash deploy/build-image.sh
docker compose -f deploy/docker-compose.yml up # bundled Postgres + the host on http://localhost:8080
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- ClosedXML (>= 0.105.0)
- FluentValidation (>= 12.1.0)
- FluentValidation.DependencyInjectionExtensions (>= 12.1.0)
- JsonLogic (>= 6.1.0)
- KMTS.Kernel.Application (>= 3.0.0-local.44)
- KMTS.Kernel.Domain (>= 3.0.0-local.44)
- KMTS.Kernel.Generator (>= 3.0.0-local.44)
- KMTS.Kernel.Infrastructure (>= 3.0.0-local.44)
- KMTS.Reporting.Application (>= 1.0.162-develop.162)
- KMTS.Reporting.Domain (>= 1.0.162-develop.162)
- KMTS.Reporting.Infrastructure (>= 1.0.162-develop.162)
- Microsoft.AspNetCore.Authentication.JwtBearer (>= 10.0.0)
- Microsoft.ClearScript.V8 (>= 7.5.1)
- Microsoft.EntityFrameworkCore (>= 10.0.0)
- Microsoft.EntityFrameworkCore.Abstractions (>= 10.0.0)
- Microsoft.EntityFrameworkCore.Relational (>= 10.0.0)
- Microsoft.Extensions.Caching.Hybrid (>= 10.0.0)
- Microsoft.Extensions.Configuration (>= 10.0.7)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.7)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Options (>= 10.0.7)
- Microsoft.SqlServer.TransactSql.ScriptDom (>= 180.37.3)
- QuestPDF (>= 2026.7.1)
- Scrutor (>= 7.0.0)
- System.Security.Cryptography.Xml (>= 10.0.10)
- Ulid (>= 1.4.1)
- YamlDotNet (>= 18.1.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on KMTS.Reporting.Persistence:
| Package | Downloads |
|---|---|
|
KMTS.Reporting.Migrations.SqlServer
SQL Server EF Core migration set for the KMTS.Reporting own-store (ReportingDbContext). |
|
|
KMTS.Reporting.Migrations.Postgres
PostgreSQL EF Core migration set for the KMTS.Reporting own-store (ReportingDbContext). |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.162-develop.162 | 77 | 9/2/2026 |