Files
mic-check/docs/api/01_project_setup_output.md
James Wampler 6887d09f9c version-0.1 (#1)
Squash and merge of version-0.1

Co-authored-by: James Wampler <james@wamp.dev>
Co-committed-by: James Wampler <james@wamp.dev>
2026-07-01 13:30:07 -07:00

68 lines
3.1 KiB
Markdown
Executable File

# 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
- [x] Solution builds with `dotnet build` with zero warnings
- [x] All projects target net10.0 with `LangVersion=latest` and `Nullable=enable`
- [x] `dotnet test` runs successfully — 8 tests pass across 2 test projects
- [x] API reference UI accessible at `/scalar` (Scalar, not Swagger)
- [ ] Docker Compose brings up API and database cleanly — requires Docker; not verified in this step