01 About the project
Kulturplattform Freiburg e. V. runs events, courses and community formats in Freiburg. The platform maps what the association actually does: activities with categories, search and detail pages, course offerings, partners, the statutes, donations and a form for volunteers. The board maintains all of it themselves — including the translations, which live as resources in the database and are edited in the admin area. A new text in German and Turkish therefore needs no deployment.
The backend is a .NET 10 service in Clean Architecture with CQRS via MediatR, FluentValidation for input, JWT and BCrypt for sign-in, and Entity Framework Core on SQL Server — around 22 controllers, plus tests at domain, application and integration level. The newsletter isn’t a mailto link but a proper flow: double opt-in with a confirmation link, an unsubscribe token in every message, campaigns per language and batched sending, through Azure Communication Services with SMTP as a fallback.
It all runs on a dedicated server: Docker Compose with SQL Server, the API and nginx, dedicated mailboxes for sending, and backup and restore scripts alongside. The front-end is a React single-page app talking to the same API.
02 Highlights
- 01
Activities with category filter, search and detail pages
- 02
Course offerings, partners, statutes, donations and a volunteer form
- 03
Bilingual (DE/TR) — translations live in the database, not in the code
- 04
Newsletter with double opt-in, unsubscribe token and per-language campaigns
- 05
Delivery via Azure Communication Services with SMTP fallback
- 06
Clean Architecture with CQRS (MediatR) and FluentValidation
- 07
Tests at domain, application and integration level
- 08
Self-hosted: Docker Compose with SQL Server, API and nginx, dedicated mailboxes
03 Tech stack
- React
- .NET 10
- SQL Server
- MediatR / CQRS
- Entity Framework
- Docker
- nginx
- xUnit
Interested in
working together?
Tell us about your plan — we’ll tell you honestly what it takes and what it costs.
Get in touch