Solution Structure
Purpose
A consistent solution structure makes projects easier to understand, build, test, review and hand over.
Standard Repository Layout
repo-root/
.config/
.github/ or azure-pipelines/
docs/
adr/
architecture/
operations/
eng/
scripts/
pipelines/
src/
Aic.Product.Api/
Aic.Product.Application/
Aic.Product.Domain/
Aic.Product.Infrastructure/
tests/
Aic.Product.Domain.Tests/
Aic.Product.Application.Tests/
Aic.Product.Api.Tests/
Aic.Product.IntegrationTests/
tools/
README.md
global.json
Directory.Build.props
Directory.Packages.props
.editorconfig
nuget.config
Aic.Product.slnProject Naming
Use the pattern:
Examples:
Layer Responsibilities
Domain
Core business concepts, rules, entities, value objects
EF Core, HTTP, UI, infrastructure
Application
Use cases, commands, queries, orchestration, validation
UI, database-specific logic unless abstracted
Infrastructure
EF Core, external services, messaging, file system, identity adapters
UI logic, core domain decisions
API/Desktop/App
Transport and presentation
Business rules, direct persistence logic
Tests
Automated verification
Production-only configuration
Dependency Direction
Dependencies should point inward:
The Domain project should not depend on Infrastructure.
Build Standard
The solution must build from the root:
Documentation Standard
Each repository must include:
README
setup instructions
architecture overview
build instructions
test instructions
deployment notes
security notes
support notes
ADR folder
Last updated
Was this helpful?

