Sample Web API implementation with .NET Core and DDD using Clean Architecture.
The solution design focuses on a basic Domain Driven Design techniques and implementation, while keeping the things as simple as possible but can be extended as needed. Multiple assemblies are used for separation of concerns to keep logic isolated from the other components. .NET 10 C# is the default framework and language for this application.
- ITL.Domain - This assembly contains common, entities and interfaces.
- ITL.Application - This assembly contains all services implementations.
- ITL.Infrastructure - This assembly contains the infrastructure of data persistence.
- ITL.API - This assembly is the web api host.
- ITL.Tests - This assembly contains unit test classes based on the NUnit testing framework.
💭 If you are new in Open Source world feel free to check our How to contribute guidelines
Data validation using FluentValidation
- Install the .NET 10 SDK.
- Run
dotnet restore Backend/Backend.slnanddotnet build Backend/Backend.sln. - Start the API with
dotnet run --project Backend/src/ITL.API --launch-profile ITL.API. The Development environment uses an in-memory database by default, so SQL Server is not required. Its seed data (permission types) is recreated on each run and is not persisted after the API stops. - Open
https://localhost:5001/swaggerto explore the API.
To use SQL Server instead, set Database:Provider to SqlServer in Backend/src/ITL.API/appsettings.Development.json (or use Database__Provider=SqlServer as an environment variable), then set the KCTestContext connection string in appsettings.json, user secrets, or the ConnectionStrings__KCTestContext environment variable. Create the KCTest database first; the API applies its migrations on startup.
Outside Development, Database:Provider defaults to SqlServer. Select InMemory only for local development or testing; it is temporary and is not a substitute for persistent storage.
The frontend is built with Vue 3, Pinia, Vue Router 4, BootstrapVue Next, and Bootstrap 5.
Follow the instructions in README file.
The frontend provides screens for managing permissions and their types:
If you like this project, learn something or you are using it in your applications, please give it a star. Thanks! .. .
This project is open source and available under the -> MIT License