Repository navigation
Web API Core Seed v2.0.0 — .NET 10 modernization
This is the first major release of the maintained .NET 10 Web API Core Seed. It is not a drop-in upgrade for the historical ASP.NET Core 3.1 application.
Highlights
- Migrated the application and build tooling to .NET 10 and
WebApiCoreSeed.slnx. - Organized the sample restaurant domain into explicit application ports, independent core/domain code, EF Core infrastructure adapters and Unit of Work.
- Modernized Identity/JWT login, versioned OpenAPI with Scalar, native rate limiting and standardized Problem Details responses.
- Added reproducible local SQL Server/Redis with Docker Compose, two migration contexts and a non-production-only, idempotent development seed.
- Added structured Serilog logs, OpenTelemetry instrumentation, security headers and safe anonymous-GET Redis response caching.
- Added bilingual English and Brazilian Portuguese onboarding, architectural decision records, security and contribution guidance.
- Added an installable, customizable
dotnet newtemplate with automated package, generation, restore, build, unit/integration and live-API smoke checks.
Install the release artifact
Download RodriOliveira.WebApiCoreSeed.Templates.2.0.0.nupkg from this release's assets. The package is attached to the GitHub Release; it is not advertised as published on NuGet.org.
# In a directory containing the downloaded .nupkg and SHA256SUMS.txt:
sha256sum --check SHA256SUMS.txt
dotnet new install ./RodriOliveira.WebApiCoreSeed.Templates.2.0.0.nupkg
dotnet new webapi-seed -n SampleApi
cd SampleApi
dotnet restore SampleApi.slnx
dotnet build SampleApi.slnx --configuration Release --no-restoreThe generated application includes README.md and README.pt-BR.md with local startup, tests, migrations and seed instructions. Docker is required for the integration suite and for SQL Server/Redis in the full local stack.
To remove the template: dotnet new uninstall RodriOliveira.WebApiCoreSeed.Templates.
Breaking changes from v1.0.0-legacy
| Area | Legacy .NET Core 3.1 | v2.0.0 |
|---|---|---|
| Runtime/toolchain | netcoreapp3.1, historical RestauranteAPI.sln |
net10.0, SDK pinned by global.json and WebApiCoreSeed.slnx |
| Project/namespace layout | DevIO.* and historical Business/Data projects |
WebApiCoreSeed.*, modular SampleRestaurant with explicit ports |
| HTTP/API contracts | Legacy controllers, response envelopes and Swagger | Versioned APIs, OpenAPI/Scalar and standardized Problem Details |
| Authentication/rate limits | Earlier JWT/Identity integration and package rate limits | Updated JWT/Identity policy and ASP.NET Core native rate limiting |
| Persistence | Historic EF Core contexts/migrations | Separate Identity and SampleRestaurant EF Core migration ownership |
| Bootstrap | Manual local setup | Docker Compose, environment/secret configuration, explicit --seed |
| Logging/telemetry | Legacy Serilog/Seq | Serilog plus OpenTelemetry and optional OTLP/Seq |
| Template distribution | No local dotnet new package |
Versioned webapi-seed NuGet template attached to this release |
Migration is not automatic. Back up existing databases, review migration scripts, authentication/HTTP clients, connection strings, JWT settings and schema contracts. Do not replace a production legacy deployment with this sample without independent compatibility testing. See the migration guide.
Version provenance
v2.0.0: the exact commit used to build and smoke-test the attached template package.v1.0.0-legacy: immutable-by-policy snapshot of the original .NET Core 3.1 source at commit6ce03d7f.legacy/netcoreapp3.1: historical source with an explicit runtime end-of-support README warning.
.NET Core 3.1 reached end of support on December 13, 2022. Do not deploy it in production.
Quality and artifact verification
The release workflow requires successful ci, codeql and template-smoke checks on the exact main commit before publication. It then installs the same versioned NuGet asset that will be uploaded, generates a fresh application, builds, runs the tests (including Docker-backed integration tests), probes /health/live, and records its SHA-256 in SHA256SUMS.txt. Once uploaded, the workflow downloads the release assets and verifies the checksum.
Known limitations / next steps
- Development/reference application only, not a hardened production blueprint. Supply your own secrets, network controls, deployment/rollback and security review.
- The template does not offer generation-time
--auth,--database,--redisor--telemetryremoval switches; Redis and external telemetry can be configured at runtime. Component omission needs end-to-end dependency/test work. /hc-uiis disabled owing to dependency compatibility;/hc,/health/liveand/health/readyare available.- The GitHub Release is the selected distribution channel for v2.0.0; no NuGet.org package feed has been selected or published.
- Licensing needs explicit owner review: the repository currently has no
LICENSEfile, so public visibility and a GitHub Release alone do not grant third parties general reuse rights. Do not describe this as an OSI-licensed release until a license is chosen and any third-party provenance is cleared. - Repository description/topics may still reflect the original .NET Core 3.1 version until they are updated in GitHub's About settings; see release checklist.
For bugs or enhancement requests, use GitHub Issues; see CONTRIBUTING.md. Report vulnerabilities privately as described in SECURITY.md.