Medical NGO · Belgium

MedMission editorial platform

In developmentSoftware Engineering · DevSecOps · GitOps & Cloud · Data

Context

MedMission AISBL, a Belgian medical NGO, needs to present its missions to the public and let its own team publish and update that content without calling a contractor for every change.

Problem and constraints

  • A public site and an editorial back office in one product, maintainable by a small team.
  • Media (photos, videos) to process without slowing the site down.
  • Mission data that needs governance: who publishes what, and what may be aggregated publicly.

Architecture decisions and trade-offs

Ten architecture decisions are recorded in the repository. The main ones:

  • A modular monolith rather than microservices: one deployable unit for a small team, with explicit module boundaries so a module can be extracted later.
  • An executable hexagonal architecture: layer dependency rules are checked by ArchUnit tests on every build, not just described.
  • A purpose-built back office rather than a generic CMS: the mission editorial model is specific, and a CMS would have imposed its own.
  • PostgreSQL as the source of truth for missions, with a separate worker for asynchronous media processing.

Security and delivery

  • Jenkins pipeline: preflight checks, SemVer versioning, build and tests, then secret scanning, dependency analysis (SCA), static analysis (SAST) and SBOM generation.
  • Container images are scanned before publication, then promoted to a GitOps repository: deployment goes through Argo CD, never through a manual command.
  • Every run collects its evidence (reports, artefacts), so delivery can be audited afterwards.
  • Coverage (JaCoCo) and mutation testing (PIT) are wired into the Maven build.

Data

A dedicated architecture decision covers data governance. The schema evolves through versioned migrations (ten so far), and the public mission report is computed in aggregate.

Results and current state

  • Under active development and already deployed; latest tagged release v0.5.0.
  • 10 architecture decisions and 52 test files in the repository.
← All case studies