KAW is a word from the North Jutland dialect. It describes something difficult, heavy, or a bit troublesome – e.g., a kaw case.
This microservice currently handles CRUD operations for user-submitted expressions. The project focuses on architecture, testability, and CI — domain complexity may grow over time.
- .NET 8
- Entity Framework Core
- xUnit + Moq
- GitHub Actions (CI)
All code changes go through Pull Requests against the master branch.
Each PR triggers the .NET Build & Test GitHub Actions workflow, which must pass before merging.
Branch protection rules ensure that:
- The PR branch is up to date with
master - All checks (build & tests) pass successfully
- No direct pushes are allowed to
master
This setup keeps the master branch stable and production-ready at all times.
This solution follows a layered (hexagonal) architecture:
- Domain – Core entities and models
- Application – Business logic, services, interfaces
- Infrastructure – EF Core, repositories, and persistence
- Web – (Coming soon) API layer
🛈 The previous console app used for manual testing has been removed to keep the solution clean and focused.
I use the project as a learning ground to:
- Revisit C# fundamentals
- Work with Hexagonal architecture (Domain, Application, Infrastructure, Web)
- Apply SOLID principles in practice
- Develop iteratively: starting as a console app, later evolving into a Web API
- Ensure quality with testing
- Basic structure (Domain, Application, Infrastructure)
- Repository implementation
- In-memory list with methods
- EF Core integration
- Refactor repo and service for DbContext
- API endpoints
Quick setup guide for running KAW locally.
- .NET 8 SDK
- Optional: Docker if you plan to containerize the service later
git clone https://github.com/MarlenHalvorsen/kaw.git
cd kaw
dotnet restore
dotnet build --configuration Release
dotnet test --configuration Release