Dieses Projekt demonstriert eine Implementierung von CQRS (Command Query Responsibility Segregation) und Event Sourcing in Django – unterstützt durch Django REST Framework, PostgreSQL und eine automatische Read-Projektion.
- Generischer EventStore (
DomainEvent) - Write-Model via Commands (z. B.
CreateOrderCommand,UpdateOrderCommand) - Read-Model via Projektion (
OrderReadModel) - Automatischer Rebuild der Projektion (
manage.py rebuild_read_models) - DRF-API mit Endpunkten für Create, Read, Update, Delete
- PostgreSQL-Datenbankservice via
devenv.nix - Code-Qualitäts-Checks via
pre-commit(black, isort, flake8) - 🧪 Bruno-Dateien zur API-Testung im
api/-Verzeichnis
devenv upDadurch wird automatisch Folgendes erledigt:
- PostgreSQL wird lokal bereitgestellt
- Python 3.11 + venv wird aktiviert
- vorinstallierte Tools:
pip,black,flake8,isort,git
# Initiales Setup
pip install -r requirements.txt
python manage.py migrate
python manage.py rebuild_read_models
# Lokalen Server starten
python manage.py runserverIm Verzeichnis api/ findest du vorbereitete Bruno-Dateien, um die REST-API einfach zu testen.
Du kannst damit alle Endpunkte bequem ausführen – ideal für Tests, Demos und Entwicklung.
| Methode | Pfad | Beschreibung |
|---|---|---|
GET |
/orders/ |
Liste aller Bestellungen |
GET |
/orders/<id>/ |
Einzelne Bestellung |
POST |
/orders/ |
Neue Bestellung anlegen |
PATCH |
/orders/<id>/ |
Bestellung aktualisieren |
DELETE |
/orders/<id>/ |
Bestellung löschen |
- Events werden niemals verändert oder gelöscht
- Der Zustand ergibt sich aus dem Replay von Events
- Das ReadModel ist projektiert und kann jederzeit neu erstellt werden
- API + Domänenlogik sind strikt getrennt
Pre-commit-Hooks sind aktiviert für:
- ✅
black - ✅
isort - ✅
flake8
Vor dem ersten Commit:
pre-commit installmanage.py rebuild_read_models→ erstellt das ReadModel neu aus Events- Weitere Aggregate (z. B. Customer, Product) sind leicht erweiterbar
DomainEventspeichert alle Zustandsänderungen nachvollziehbar und auditierbar