Files
mic-check/docs/api/01_project_setup_output.md

3.1 KiB

Step 1 Implementation Output

What Was Implemented

Solution Structure

The solution (MicCheck.slnx) now contains four projects:

Project Path
MicCheck.Api src/api/MicCheck.Api/
MicCheck.Infrastructure src/infrastructure/MicCheck.Infrastructure/
MicCheck.Api.Tests.Unit tests/api/MicCheck.Api.Tests.Unit/
MicCheck.Infrastructure.Tests tests/infrastructure/MicCheck.Infrastructure.Tests/

Projects Created

MicCheck.Infrastructure — new class library targeting net10.0 with:

  • Microsoft.EntityFrameworkCore 10.0.5
  • Npgsql.EntityFrameworkCore.PostgreSQL 10.0.1
  • Microsoft.EntityFrameworkCore.Design 10.0.5
  • Folder structure: Data/Configurations/, Data/Migrations/

MicCheck.Infrastructure.Tests — new NUnit test project targeting net10.0 with:

  • NUnit 4.3.2, NUnit3TestAdapter 5.0.0, NUnit.Analyzers 4.7.0
  • Moq 4.20.72, coverlet.collector 6.0.4
  • Project reference to MicCheck.Infrastructure

Projects Updated

MicCheck.Api — added:

  • TreatWarningsAsErrors
  • Serilog.AspNetCore 9.0.0
  • FluentValidation.AspNetCore 11.3.0
  • Project reference to MicCheck.Infrastructure
  • Program.cs updated: Serilog bootstrap logger, AddControllers(), AddFluentValidationAutoValidation(), AddRateLimiter("AdminApi"), MapControllers()
  • appsettings.json updated: Serilog config section, ConnectionStrings:DefaultConnection

MicCheck.Api.Tests.Unit — added:

  • TreatWarningsAsErrors
  • coverlet.collector 6.0.4
  • Project reference to MicCheck.Infrastructure

Feature Folders Created in MicCheck.Api

Features/, Environments/, Projects/, Organizations/, Segments/, Identities/, Audit/, Webhooks/, ApiKeys/, Users/

Existing Auth/ folder retained (equivalent to Authentication/ in the plan).

Files Added

  • docker-compose.yml — PostgreSQL 15-alpine + API service with health check
  • src/api/MicCheck.Api/Dockerfile — multi-stage build (SDK → publish → runtime)

Deviations from Plan

  • Scalar instead of Swashbuckle: The project already used Scalar.AspNetCore + Microsoft.AspNetCore.OpenApi. This is the recommended approach for .NET 10 and was retained. The API reference UI is at /scalar rather than /swagger.
  • Auth/ folder: The existing auth code lives in Auth/ rather than Authentication/ as named in the plan. The existing code was not renamed.
  • NUnit template version: MicCheck.Infrastructure.Tests was created with dotnet new nunit which brought in NUnit 4.3.2 / NUnit3TestAdapter 5.0.0 (slightly different patch versions from the Api test project). Both are current stable releases.

Acceptance Criteria

  • Solution builds with dotnet build with zero warnings
  • All projects target net10.0 with LangVersion=latest and Nullable=enable
  • dotnet test runs successfully — 8 tests pass across 2 test projects
  • API reference UI accessible at /scalar (Scalar, not Swagger)
  • Docker Compose brings up API and database cleanly — requires Docker; not verified in this step