Hona.VerticalSliceArchitecture.Template 0.8.0

dotnet new install Hona.VerticalSliceArchitecture.Template::0.8.0
This package contains a .NET Template Package you can call from the shell/command line.

VerticalSliceArchitecture Template Banner

🤔 What is it?

A small but opinionated Vertical Slice Architecture solution template for .NET 8

Learn

alternate text is missing from this package README image alternate text is missing from this package README image

Vertical Slice Architecture: How Does it Compare to Clean Architecture | .NET Conf 2023

🎉 Getting Started

To install the template from NuGet.org run the following command:

dotnet new install Hona.VerticalSliceArchitecture.Template

Then create a new solution:

mkdir Sprout
cd Sprout

dotnet new hona-vsa

Finally, to update the template to the latest version run:

dotnet new update

📚 Faster Development

To speed up development there is a dotnet new template to create a full Vertical Slice.

dotnet new hona-vsa-slice -f Student

-f or --feature where the feature name is the singular name of the feature.

Of course, there are always exceptions where appending an 's' is not enough. For example, Person becomes People and Child becomes Children.

For this, use the optional parameter:

dotnet new hona-vsa-slice -f Person -fp People

optional: -fp or --feature-plural where the feature name is the plural name of the feature.

This creates everything you need to get started with a new feature.

  • Full CRUD endpoints
  • CQRS
    • missing EventHandlers/ folder as this is more uncommon
    • provides Events/ as a folder to demonstrate how to trigger side effects
  • Basic REPR pattern (i.e., Request, an Endpoint, and a Response)
  • Adds a new Entity
  • Basic DDD pattern - the 'Complete' method on the entity shows adding Domain events and using Result objects instead of exceptions for validation
  • Adds a DbSet to the DbContext
  • Adds EF Core Entity Type Configuration
  • Adds a Repository

While there is a small amount of code to remove, it is better to push you towards the pit of success, than allow inconsistency.

📝 Architecture

graph TD;
    subgraph ASP.NET Core Web App
        subgraph Slices
            A[Feature A]
            B[Feature B]
        end
        Slices --> |depends on| Common
        Host --> |depends on| Common
        Host --> |depends on| Slices
        ASPNETCore[ASP.NET Core] --> |uses| Host
    end

    Common[Common]

✨ Features

  • C# 12
  • .NET 8
  • ASP.NET Core
  • Minimal APIs
  • EF Core
  • Swagger UI

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.8.0 288 3/23/2024
0.7.4 185 3/20/2024
0.7.3 129 3/20/2024
0.7.2 133 3/20/2024
0.7.1 93 3/20/2024
0.7.0 139 3/20/2024
0.6.0 242 3/14/2024
0.5.3 2,448 12/22/2023
0.5.2 176 12/22/2023
0.5.1 151 12/22/2023
0.5.0 164 12/22/2023
0.4.0 190 12/21/2023
0.3.0 1,315 11/15/2023
0.2.1 943 10/22/2023
0.2.0 293 10/22/2023
0.1.4 270 9/20/2023
0.1.3 245 9/20/2023
0.1.2 274 9/20/2023
0.1.1 267 9/20/2023

🧪 Add meta test (#47)
     ♻️ Make the Domain more intentional (#49)
     ♻️ Use Immediate.Handlers instead of MediatR (#50)
     👷🏻 Add dependabot for NuGet + GitHub actions (#51)
     👷🏻 Exclude test result upload from dependabot (#61)
     Bump actions/checkout from 2 to 4 (#52)
     Bump actions/cache from 3 to 4 (#54)
     Bump actions/setup-dotnet from 3 to 4 (#53)
     Bump nuget/setup-nuget from 1 to 2 (#55)
     Bump FluentAssertions from 7.0.0-alpha.2 to 7.0.0-alpha.3 (#57)
     Bump Microsoft.AspNetCore.OpenApi from 8.0.0 to 8.0.3 (#60)
     Bump coverlet.collector from 6.0.0 to 6.0.2 (#56)
     Bump xunit from 2.6.3 to 2.7.0 (#59)
     Bump Microsoft.NET.Test.Sdk from 17.9.0-preview-23503-02 to 17.9.0 (#58)
     ♻️ More cohesion between endpoint & CQRS object (#63)
     🚧 Add TODOs for source gens (#64)