- Replaced outdated `.puml` and `.mermaid` diagrams with modernized `.drawio` versions for enhanced clarity. - Added `container_diagram.drawio` to depict offline-first architecture and backend synchronization workflow. - Introduced `workflow_turnieranlage.drawio` to visualize the tournament creation process (3-step wizard). - Archived legacy diagrams under `docs/01_Architecture/_archive` for reference.
67 lines
5.1 KiB
Plaintext
67 lines
5.1 KiB
Plaintext
<mxfile host="Electron" modified="2026-04-07T12:00:00.000Z" agent="Lead Architect" version="21.0.0" type="device">
|
|
<diagram id="c4-container" name="C4 Container Diagram">
|
|
<mxGraphModel dx="1200" dy="800" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0" />
|
|
<mxCell id="1" parent="0" />
|
|
|
|
<mxCell id="user" value="Veranstalter / Meldestelle" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="240" width="30" height="60" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- KMP Desktop App Container -->
|
|
<mxCell id="container_app" value="<b>Desktop-Anwendung (Offline-First)</b><br><i>Kotlin, Compose Multiplatform</i><br><br>Bietet die gesamte Meldestellen-Oberfläche, offline-fähig." style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;verticalAlign=top;align=left;spacingTop=4;spacingLeft=8;" vertex="1" parent="1">
|
|
<mxGeometry x="160" y="200" width="280" height="120" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- Local DB -->
|
|
<mxCell id="db_local" value="<b>Lokale Datenbank</b><br><i>SQLite / Room</i><br><br>Speichert alle Turniere, Nennungen lokal für den Offline-Betrieb." style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#ffe6cc;strokeColor=#d79b00;align=left;spacingTop=4;spacingLeft=8;" vertex="1" parent="1">
|
|
<mxGeometry x="200" y="400" width="200" height="100" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- Backend System Boundary -->
|
|
<mxCell id="system_backend" value="Cloud Backend / API" style="swimlane;whiteSpace=wrap;html=1;startSize=30;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1">
|
|
<mxGeometry x="600" y="80" width="360" height="460" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- Backend Containers -->
|
|
<mxCell id="container_api" value="<b>REST API Services</b><br><i>Ktor / Spring Boot</i><br><br>Bietet die Synchronisations-Schnittstellen für die Desktop-App." style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;verticalAlign=top;align=left;spacingTop=4;spacingLeft=8;" vertex="1" parent="system_backend">
|
|
<mxGeometry x="40" y="60" width="280" height="120" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- Remote DB -->
|
|
<mxCell id="db_remote" value="<b>Zentrale Datenbank</b><br><i>PostgreSQL</i><br><br>Speichert alle Mandanten und Stammdaten." style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#ffe6cc;strokeColor=#d79b00;align=left;spacingTop=4;spacingLeft=8;" vertex="1" parent="system_backend">
|
|
<mxGeometry x="80" y="260" width="200" height="100" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- External -->
|
|
<mxCell id="ext_zns" value="<b>ZNS (OEPS)</b><br><br>Externe Stammdaten (ZIP) und Nennungen (DAT)." style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;verticalAlign=top;align=left;spacingTop=4;spacingLeft=8;" vertex="1" parent="1">
|
|
<mxGeometry x="1040" y="140" width="200" height="100" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- Edges -->
|
|
<mxCell id="e_user_app" value="nutzt" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.5;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="user" target="container_app">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e_app_local" value="liest/schreibt" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="container_app" target="db_local">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e_app_api" value="synchronisiert via HTTPS" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="container_app" target="container_api">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e_api_db" value="liest/schreibt" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="system_backend" source="container_api" target="db_remote">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e_zns_app" value="Upload (ZIP/DAT)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;entryX=1;entryY=0.25;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="ext_zns" target="container_app">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile>
|