A production-ready starter template for building modular monolith applications using .NET 9.0, implementing the Backend-For-Frontend (BFF) pattern with Keycloak authentication.
If you’re not familiar with the modular monolith concept, you can find an explanation for this choice in the Evolutionary Architecture’s documentation.
-
Clean separation of concerns
-
Module-based structure
-
Easy to extend and maintain
-
BFF (Backend-For-Frontend) pattern implementation
-
Keycloak integration
-
Transactional Outbox Pattern implementation
-
Message-driven communication between modules
docker-compose up
Important
|
For local development with Docker Compose, additional setup is required to handle Keycloak authentication properly. Please refer to the Local Development Guide for detailed instructions. |
Note
|
Integrating the BFF with a front-end requires special attention, I recommend reading this detailed article: https://wrapt.dev/blog/standalone-duende-bff-for-any-spa |
The application will be available at:
-
Swagger UI: http://localhost:8080/swagger/index.html
src/
├── Starter/ # Main API application
├── Starter.BFF/ # Backend-For-Frontend application
├── Starter.Common/ # Shared libraries and utilities
├── Starter.UnitTests/ # Unit tests
└── Starter.IntegrationTests/ # Integration tests
The project uses Keycloak as the identity provider with the BFF pattern:
-
Frontend applications communicate with the BFF
-
BFF Authenticates user by cookie
-
If user is not authenticated, BFF challenges the user to Keycloak & deals a cookie[secure, http only and SameSite strict] to the front-end
-
BFF proxies authenticated requests to the main API
-
API validates JWT tokens and handles authorization
This project is based on the excellent work from the Evolutionary Architecture by Example repository. Special thanks to all the creators and contributors of the original project for providing such a great foundation for building modern .NET applications.
Original repository maintainers and contributors can be found at: https://github.com/evolutionary-architecture/evolutionary-architecture-by-example/graphs/contributors
This project is licensed under the MIT License - see the LICENSE file for details.