Skip to content

Migrate democracy-api into democracy-development monorepo #715

@ManAnRuck

Description

@ManAnRuck

Migration: democracy-api → democracy-development Monorepo

Motivation & Ziele

Die Migration von democracy-api in das democracy-development Monorepo zielt darauf ab, die Entwicklungs- und Deployment-Prozesse zu vereinheitlichen, Code-Sharing zu verbessern und die Wartbarkeit der DEMOCRACY-Plattform langfristig zu sichern.

Warum diese Migration notwendig ist

1. Verbesserte Code-Wiederverwendung

Aktuell existieren Duplikate und Abhängigkeiten zwischen democracy-api und anderen Services im Monorepo:

  • @democracy-deutschland/democracy-common wird als externe NPM-Dependency (v0.2.12-alpha.3) referenziert, während im Monorepo der aktuelle Code direkt verfügbar ist
  • @democracy-deutschland/bundestag.io-definitions muss bei Änderungen separat released werden, bevor democracy-api sie nutzen kann
  • TypeScript-Typen und Shared Logic können nicht direkt geteilt werden

2. Vereinfachte Dependency-Management

  • Workspace-Dependencies: Direkte Referenzen auf Monorepo-Packages eliminieren versioning-Delays
  • Konsistente Versionen: Shared Dependencies (TypeScript, ESLint, Testing-Tools) können zentral verwaltet werden
  • Schnellere Entwicklungszyklen: Änderungen in common-Packages sind sofort in democracy-api verfügbar

3. Einheitliche CI/CD-Pipeline

  • Aktuell: Separate GitHub Actions Workflows in beiden Repositories
  • Nach Migration: Turborepo-basierte Pipeline mit intelligenter Changed-Detection
  • Vorteil: Nur betroffene Services werden gebaut/getestet, kürzere Build-Zeiten

4. Vereinheitlichte Entwickler-Experience

  • Single Checkout: Entwickler müssen nur ein Repository klonen
  • Konsistente Tooling: Gleiche ESLint/TypeScript/Testing-Konfigurationen
  • Atomic Changes: Cross-Service-Änderungen können in einem PR durchgeführt werden

5. Bessere Git-History & Code-Archäologie

  • Cross-Repository-Änderungen sind aktuell schwer nachvollziehbar
  • Monorepo ermöglicht Atomic Commits über Service-Grenzen hinweg
  • Git-History von democracy-api bleibt vollständig erhalten (via Git Subtree)

6. Infrastruktur-Vorteile

  • Shared Docker-Build-Logik: Reduziert Dockerfile-Duplikate
  • Garden.io Integration: Einheitliche Kubernetes-Testumgebung
  • Deployment-Koordination: Abhängige Services können zusammen deployed werden

Warum gerade jetzt?

  1. Node.js 20 Migration: democracy-api erfordert bereits Node.js >=20.9.0, Monorepo ist noch auf v18.18.2 → Idealer Zeitpunkt für Alignment
  2. ESLint v9 Migration: democracy-api nutzt noch Legacy-Config, Monorepo hat bereits ESLint v9 Flat Config → Migration kann kombiniert werden
  3. Aktive Entwicklung: democracy-api ist aktiv maintained (v0.2.78), Migration vor Code-Freeze ist einfacher
  4. Keine Breaking Changes in Arbeit: Stabiler Zeitpunkt ohne größere Feature-Branches

Detaillierter plan

https://github.com/demokratie-live/democracy-api/blob/main/MIGRATION-MONOREPO.md

Sub-issues

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

Status

⚙️ In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions