For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.sln

Project Naming

Use the pattern:

Examples:

Layer Responsibilities

Layer
Responsibility
Must not contain

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?