Project structure
Directorysrc/
DirectoryApplication/ the domain and the rules
DirectoryAuthors/ queries and entities for authors
- …
DirectoryMovies/ queries and entities for movies
- …
DirectoryReviews/ queries, commands and entities for reviews
- …
DirectoryVersions/ the version query
- …
DirectoryCommon/
DirectoryBehaviours/ the validation pipeline behaviour
- …
DirectoryExceptions/ NotFoundException
- …
DirectoryPaging/ shared paging rules
- …
- DependencyInjection.cs
DirectoryInfrastructure/ the data
DirectoryDatabases/MovieReviews/ the EF Core context, models, mapping, migrations and repositories
- …
- DependencyInjection.cs
DirectoryPresentation/ the Web API
DirectoryControllers/
DirectoryCommon/ ApiControllerBase, which every controller inherits
- …
- Authors/, Movies/, Reviews/, Version/ one controller per feature, with the review request bodies
DirectoryErrors/ ApplicationExceptionHandler, Application exceptions to Problem Details
- …
DirectoryOpenApi/ document and security transformers
- …
DirectoryAuthentication/ the JWT bearer settings
- …
DirectoryExtensions/ builder and app configuration
- …
- Program.cs
- appsettings.json, appsettings.local.json, appsettings.docker.json
Directorytests/
DirectoryApplication.Tests.Unit/
- …
DirectoryInfrastructure.Tests.Integration/
- …
DirectoryPresentation.Tests.Integration/
- …
- docs/RUN.md
- Directory.Build.props build rules and analyzers for every project
- Directory.Packages.props every package version, in one place
- Dockerfile
- docker-compose.yml
- global.json
| Project | References | Notes |
|---|---|---|
| Presentation | Application, Infrastructure | References Infrastructure only to wire up dependency injection |
| Application | none | Owns the entities, the repository interfaces and the rules |
| Infrastructure | Application | Every class is internal |