# Solution Structure Create a modular .NET solution with proper layer separation. ## Create Solution ```bash mkdir OrderManagement cd OrderManagement # Create solution file dotnet new sln -n OrderManagement # Create projects dotnet new webapi -n OrderManagement.Api dotnet new classlib -n OrderManagement.CQRS dotnet new classlib -n OrderManagement.Domain dotnet new classlib -n OrderManagement.Infrastructure dotnet new xunit -n OrderManagement.Tests # Add to solution dotnet sln add OrderManagement.Api dotnet sln add OrderManagement.CQRS dotnet sln add OrderManagement.Domain dotnet sln add OrderManagement.Infrastructure dotnet sln add OrderManagement.Tests ``` ## Project Dependencies ```bash # Api depends on CQRS and Infrastructure cd OrderManagement.Api dotnet add reference ../OrderManagement.CQRS dotnet add reference ../OrderManagement.Infrastructure # CQRS depends on Domain cd ../OrderManagement.CQRS dotnet add reference ../OrderManagement.Domain # Infrastructure depends on Domain cd ../OrderManagement.Infrastructure dotnet add reference ../OrderManagement.Domain # Tests depend on all cd ../OrderManagement.Tests dotnet add reference ../OrderManagement.Api dotnet add reference ../OrderManagement.CQRS dotnet add reference ../OrderManagement.Domain dotnet add reference ../OrderManagement.Infrastructure ``` ## Add NuGet Packages ```bash # Api cd OrderManagement.Api dotnet add package Svrnty.CQRS.MinimalApi dotnet add package Svrnty.CQRS.Grpc # CQRS cd ../OrderManagement.CQRS dotnet add package Svrnty.CQRS dotnet add package Svrnty.CQRS.FluentValidation dotnet add package FluentValidation # Infrastructure cd ../OrderManagement.Infrastructure dotnet add package Microsoft.EntityFrameworkCore dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL ``` ## Next Steps Continue to [Domain Layer](02-domain-layer.md)