SSW.CleanArchitecture.Template
0.3.0
Prefix Reserved
See the version list below for details.
dotnet new install SSW.CleanArchitecture.Template::0.3.0
<img src="https://raw.githubusercontent.com/SSWConsulting/SSW.Rules.Content/main/_docs/images/ssw-banner.png">
SSW Clean Architecture Template
<div align="center">
</div>
๐ค What is it?
This is a template for creating a new project using Clean Architecture, leveraging SSW Rules & SSW's over 30 years of experience developing software in the Microsoft space.
โจ Features
- โ๏ธ EditorConfig - comes with the SSW.EditorConfig
- Maintain consistent coding styles for individual developers or teams of developers working on the same project using different IDEs
- as per ssw.com.au/rules/consistent-code-style/
- ๐ฆ Slim - no authentication provider, no authorization & no UI framework
- You can add these yourself or use one of our reference architectures from awesome-clean-architecture
- as per ssw.com.au/rules/choosing-authentication/
- ๐ Minimal Endpoints - because it's fast & simple. โก
- Extension methods to ensure consistent HTTP Verbs & Status Codes
- ๐ Global Exception Handling - it's important to handle exceptions in a consistent way & protect sensitive information
- Transforms exceptions into a consistent format following the RFC7231 memo
- ๐ OpenAPI/Swagger - easily document your API
- ๐๏ธ Entity Framework Core - for data access
- Comes with Migrations & Data Seeding
- as per ssw.com.au/rules/rules-to-better-entity-framework/
- ๐งฉ Specification Pattern - abstract EF Core away from your business logic
- ๐ CQRS - for separation of concerns
- ๐ฆ MediatR - for decoupling your application
- ๐ฆ FluentValidation - for validating requests
- ๐ฆ AutoMapper - for mapping between objects
- ๐ Strongly Typed IDs - to combat primitive obsession
- e.g. pass
CustomerId
type into methods instead ofint
, orGuid
- Entity Framework can automatically convert the int, Guid, nvarchar(..) to strongly typed ID.
- e.g. pass
- ๐จ
dotnet new
cli template - to get you started quickly - ๐ Directory.Build.Props
- Consistent build configuration across all projects in the solution
- e.g. Treating Warnings as Errors for Release builds
- Custom per project
- e.g. for all test projects we can ensure that the exact same versions of common packages are referenced
- e.g. XUnit and NSubstitute packages for all test projects
- Consistent build configuration across all projects in the solution
- ๐งช Testing
Simpler Unit Tests for Application
- No Entity Framework mocking required thanks to Specifications
- as per ssw.com.au/rules/rules-to-better-unit-tests/
Better Integration Tests
- Using Respawn and TestContainers
- Integration Tests at Unit Test speed
- Test Commands and Queries against a Real database
- No Entity Framework mocking required
- No need for In-memory database provider
Architecture Tests
- Using NetArchTest
- Know that the team is following the same Clean Architecture fundamentals
- The tests are automated so discovering the defects is fast
๐ Publishing Template
Template will be published to NuGet.org when changes are made to CleanArchitecture.nuspec
on the main
branch.
Process
- Update the
version
attribute inCleanArchitecture.nuspec
- Merge your PR
package
GitHub Action will run and publish the new version to NuGet.org
๐ Getting Started
- Install the SSW CA template
dotnet new install SSW.CleanArchitecture.Template
NOTE: The template only needs to be installed once. Running this command again will update your version of the template.
- Create a new directory
mkdir Northwind365
cd Northwind365
- Create a new solution
dotnet new ssw-ca
NOTE: This will use the Directory name as the Solution name and project namespaces.
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 |
---|---|---|
2024.11.19 | 88 | 11/19/2024 |
2024.11.6 | 96 | 11/6/2024 |
2024.11.4 | 83 | 11/3/2024 |
2024.10.24 | 103 | 10/24/2024 |
2024.6.24 | 253 | 6/26/2024 |
2024.6.11 | 139 | 6/11/2024 |
2024.6.6 | 127 | 6/6/2024 |
2024.2.22 | 938 | 2/22/2024 |
1.0.0 | 203 | 2/21/2024 |
0.7.0 | 2,349 | 11/27/2023 |
0.6.0 | 551 | 8/15/2023 |
0.5.0 | 280 | 7/22/2023 |
0.4.0 | 227 | 7/3/2023 |
0.3.0 | 224 | 6/6/2023 |
0.2.3 | 194 | 5/22/2023 |
0.2.2 | 181 | 5/15/2023 |
0.2.1 | 172 | 5/15/2023 |
0.2.0 | 189 | 5/10/2023 |