workspace "port-neo Plattform" "Gesamtarchitektur der port-neo Entwicklungsplattform" { model { entwickler = person "Entwickler" "Entwickelt und deployed Anwendungen" projektleiter = person "Projektleiter" "Plant und steuert Projekte" endnutzer = person "Endnutzer" "Nutzt die fertigen Anwendungen" gitlab = softwareSystem "GitLab" "Source Code, CI/CD, Registry" "External" sentry = softwareSystem "Sentry" "Error Tracking & Monitoring" "External" smtp = softwareSystem "SMTP / Mailpit" "E-Mail Versand" "External" plattform = softwareSystem "port-neo Plattform" "Interne Entwicklungs- und Betriebsplattform" { traefik = container "Traefik" "Reverse Proxy & TLS-Terminierung" "traefik:v2.11" "Infrastructure" portainer = container "Portainer" "Docker-Management UI" "portainer-ce" "Infrastructure" structurizr = container "Structurizr" "Architektur-Dokumentation" "onpremises:1.2.1" "Infrastructure" a11yApp = container "a11y Testcenter" "Barrierefreiheitsprüfung" "Node.js" "WebApp" a11yMongo = container "a11y MongoDB" "Testergebnis-Speicherung" "mongo:8" "Database" accCheck = container "Accessibility Check" "Automatisierte A11y-Checks" "PHP/Apache" "WebApp" outline = container "Outline" "Team-Wiki & Dokumentation" "outline:0.77" "WebApp" outlineDB = container "Outline Postgres" "Wiki-Datenbank" "postgres:15" "Database" outlineRedis = container "Outline Redis" "Session & Cache" "redis:7" "Database" dex = container "Dex" "OIDC Identity Provider" "dex:v2.38" "Infrastructure" traefik -> portainer "routet" "HTTPS" traefik -> structurizr "routet" "HTTPS" traefik -> a11yApp "routet" "HTTPS" traefik -> accCheck "routet" "HTTPS" traefik -> outline "routet" "HTTPS" a11yApp -> a11yMongo "speichert Ergebnisse" "MongoDB Wire" outline -> outlineDB "liest/schreibt" "SQL" outline -> outlineRedis "Sessions & Cache" "Redis" outline -> dex "Authentifizierung" "OIDC" outline -> smtp "sendet E-Mails" "SMTP" } entwickler -> plattform "nutzt" projektleiter -> structurizr "erstellt Architektur-Diagramme" "HTTPS" entwickler -> gitlab "pushed Code, startet Pipelines" entwickler -> portainer "managed Container" "HTTPS" entwickler -> outline "dokumentiert" "HTTPS" gitlab -> plattform "deployed Images via CI/CD" gitlab -> portainer "triggert Stack-Updates" "API" portainer -> traefik "registriert neue Container" "Docker" traefik -> endnutzer "leitet Traffic weiter" "HTTPS" endnutzer -> a11yApp "testet Barrierefreiheit" "HTTPS" plattform -> sentry "sendet Fehler-Events" "HTTPS" } views { systemLandscape "Landschaft" "Gesamtüberblick aller Systeme und Akteure" { include * autoLayout } systemContext plattform "Kontext" "Einbettung der Plattform in ihr Umfeld" { include * autoLayout } container plattform "Container" "Interne Struktur der Plattform" { include * autoLayout } dynamic plattform "Deploy-Flow" "Wie ein neues Image in Betrieb geht" { entwickler -> gitlab "1. pushed Code" gitlab -> portainer "2. CI/CD triggered Stack-Update" portainer -> traefik "3. neuer Container registriert sich" traefik -> endnutzer "4. Traffic läuft auf neue Version" autoLayout } styles { element "Person" { shape Person background #1168bd color #ffffff } element "External" { background #999999 color #ffffff } element "Infrastructure" { background #4a90d9 color #ffffff shape RoundedBox } element "WebApp" { background #2ecc71 color #ffffff shape WebBrowser } element "Database" { background #e67e22 color #ffffff shape Cylinder } element "Software System" { background #1168bd color #ffffff } } theme default } }