Skip to content
Examples

Public sector

Heldenhelfer

Volunteering platform for the clubs of Würzburg.

Main goal
One portal where the clubs and initiatives of Würzburg keep their members, files and forum, assembled from open source parts behind a single login.
Business domain
Public sector
Size
5 self-built services beside Nextcloud and Discourse · team of 7 · half a year · pilot 2024
Strategic decisions
  • Kafka events and one sidecar per third-party tool
  • Keycloak of the Smart City Hub for single sign-on
  • Clean Architecture in every self-written service
Technologies
Python · Next.js · Kafka
Keywords
quality-scenario · adr · building-block · concept

Heldenhelfer (“heroes’ helper”) is the volunteering platform of the city and district of Würzburg: a portal where clubs and initiatives keep their member records, a Nextcloud digital office for their files, and a Discourse forum, all behind one Keycloak login. The platform belongs to Smarte Region Würzburg and runs at heldenhelfer.wuerzburg.de; it was built and documented by smart and public GmbH on their behalf, on the infrastructure of the region’s Smart City Hub.

The architecture is small and easy to hold in one view. Five services are written for the project: a Next.js web UI, a FastAPI backend, and three small sidecars. Nextcloud, Discourse and Keycloak are open source products configured at runtime: when a club is created, the backend publishes an event to Kafka, and the Nextcloud and Discourse sidecars pick it up and configure their product through its API. Section 6 walks through exactly that flow.

Two things make it worth reading. The quality requirements in section 10 are thirty-five scenarios sorted by priority. The decision log in section 9 gives each entry a date and the people who took it, and two entries settle for the simpler storage during the pilot and postpone the switch on purpose.

This is a snapshot of documentation version 1.5.0, dated 1 July 2024, the last of seven revisions listed in the original’s document history. Development stopped in August 2024. Hendrik Herschlein, project manager for Heldenhelfer at Smarte Region Würzburg, added a note when granting permission for this snapshot: the repository on openCode is archived, because it is no longer actively developed, at least not by them, so neither code nor documentation will change from their side. The snapshot is therefore also the final state. The sources, including the Structurizr model the diagrams were exported from, are kept in this site’s repository.

The documentation

  1. 1 Introduction and Goals
  2. 2 Architecture Constraints
  3. 3 Context and Scope
  4. 4 Solution Strategy
  5. 5 Building Block View
  6. 6 Runtime View
  7. 7 Deployment View
  8. 8 Cross-cutting Concepts
  9. 9 Architecture Decisions
  10. 10 Quality Requirements
  11. 11 Risks and Technical Debt
  12. 12 Glossary

Start reading →