Skip to content
Clean Web API
Lean Mean Clean Apps

Five templates, one search box. Everything in the docs is in here, including the bits we hoped you'd skim.

Try one of these

Results say which template they came from, so you won't end up reading about Lambda when you wanted GraphQL. Again.

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