arc42-Architekturdokumentation
MeManager
Persönliche Softwareplattform
Abschnitt 1
Einführung und Ziele
Zweck und Umfang
MeManager ist die zentrale Plattform hinter dieser Website. Sie vereint persönliche Anwendungen, Demo-Umgebungen, Projektdokumentation und Architekturdokumentation in einem erweiterbaren Django-System.
Zentrale Qualitätsziele
- Wartbarkeit durch klare Verantwortlichkeiten und wiederverwendbare Modelle.
- Erweiterbarkeit, damit neue Projekte und Anwendungen ohne Neuentwurf der Plattform integriert werden können.
- Verständlichkeit durch konsistente Projekt-, Snapshot- und Architekturdokumentation.
Stakeholder
| Rolle | Erwartung |
|---|---|
| Betreiber / Entwickler | Die Plattform effizient warten und erweitern. |
| Besucher | Projekte, Anwendungen und Architektur ohne Repository-Zugriff verstehen. |
| Anwendungsnutzer | Gemeinsame oder private Anwendungen über eine konsistente Plattform nutzen. |
Abschnitt 2
Randbedingungen
Zentrale Randbedingungen
| Typ | Randbedingung | Begründung |
|---|---|---|
| Technisch | Django | Zentrales Framework für Routing, Persistenz, Administration und serverseitiges Rendering. |
| Datenbank | PostgreSQL | Relationale Persistenz für stark strukturierte Projekt- und Anwendungsdaten. |
| Deployment | Docker | Reproduzierbares Deployment und isolierte Dienste. |
| Oberfläche | Tailwind CSS | Gemeinsames Designsystem für die Plattform. |
Abschnitt 3
Kontextabgrenzung
Systemkontext
Nutzer greifen über einen Webbrowser auf MeManager zu. Die Django-Anwendung bildet die zentrale Systemgrenze und persistiert Projekt-, Anwendungs- und Dokumentationsdaten in PostgreSQL.
Systemkontext
Kontextdiagramm mit MeManager, seinen Nutzern und der Persistenzgrenze.
Abschnitt 4
Lösungsstrategie
Lösungsstrategie
- Django als zentrales Web-Framework verwenden.
- Project als zentrales Aggregat für Anwendungen, Snapshots, Technologien und Ressourcen verwenden.
- Benannte Django-Views für interne Ressourcen statt gespeicherter URL-Pfade verwenden.
- Eigene Django-Apps für Funktionalität mit klar abgegrenzter Domänenverantwortung verwenden.
App-Struktur
INSTALLED_APPS = [
"home",
"architecture",
]
Abschnitt 5
Bausteinsicht
Bausteinsicht
Die Plattform ist in Django-Apps und eine gemeinsame Konfiguration aufgeteilt. Die Home-App verwaltet Projekte, Anwendungen, Demos und Projektressourcen. Die Architecture-App verwaltet versionierte arc42-Dokumentationen.
Bausteinsicht
Übergeordnete Bausteine der MeManager-Plattform.
Abschnitt 6
Laufzeitsicht
Architekturdokumentation öffnen
Eine Anfrage für eine Projektarchitektur löst das Projekt und die gewünschte Architekturversion auf, lädt die geordneten arc42-Abschnitte mit ihren typisierten Inhaltsblöcken und rendert jeden Block über sein eigenes Template.
Laufzeit einer Architekturanfrage
Laufzeitablauf zum Laden und Rendern einer versionierten Architekturdokumentation.
Abschnitt 7
Verteilungssicht
Deployment-Übersicht
MeManager wird als containerisierte Django-Anwendung mit PostgreSQL-Persistenz auf Linux-basierter Infrastruktur betrieben.
Verteilungssicht
Deployment-Diagramm für Webanwendung, Datenbank und Host-Infrastruktur.
Deployment-Knoten
| Knoten | Verantwortung |
|---|---|
| Web-Container | Führt die Django-Anwendung aus. |
| Datenbank-Container | Führt PostgreSQL aus und persistiert Anwendungsdaten. |
| Linux-Host | Stellt Container-Laufzeit und Netzwerkumgebung bereit. |
Abschnitt 8
Querschnittliche Konzepte
Internationalisierung
Nutzerseitige Domäneninhalte werden zweisprachig auf Englisch und Deutsch gespeichert. translated_value() wählt modellübergreifend konsistent die aktive Sprache.
Ressourcenverlinkung
Interne Ressourcen speichern benannte Django-Views und optionale Keyword-Argumente statt fest codierter Pfade. Dadurch bleiben persistierte Links unabhängig von konkreten URL-Patterns.
Abschnitt 9
Architekturentscheidungen
Wichtige Architekturentscheidungen
| Entscheidung | Begründung |
|---|---|
| Django als zentrales Web-Framework | Integriertes ORM, Administration und Template-Engine passen zur datengetriebenen Plattform. |
| Project als zentrales Aggregat | Eine gemeinsame Projektidentität vermeidet doppelte Metadaten und Veröffentlichungszustände. |
| Benannte Views für interne Ressourcen | URL-Patterns können geändert werden, ohne persistierte Pfade neu zu schreiben. |
Abschnitt 10
Qualitätsanforderungen
Qualitätsanforderungen
| Qualitätsziel | Priorität | Motivation |
|---|---|---|
| Wartbarkeit | Hoch | Klare App-Grenzen und wiederverwendbare Modelle sollen Änderungen lokal halten. |
| Erweiterbarkeit | Hoch | Neue Projekte und Dokumentationstypen sollen ohne Neuentwurf der Plattform integrierbar sein. |
| Verständlichkeit | Mittel | Architektur- und Projektinformationen sollen leicht nachvollziehbar bleiben. |
Abschnitt 11
Risiken und technische Schulden
Risiken und technische Schulden
- Architekturdokumentation kann veralten, wenn Änderungen nicht gemeinsam mit Implementierungsänderungen dokumentiert werden.
- Draw.io-Diagramme benötigen einen manuellen Export, bevor aktualisierte Diagramme in der Anwendung erscheinen.
- Die typisierte Content-Hierarchie erhöht die Anzahl der Datenbanktabellen und erfordert bewusstes Query-Optimieren.
Abschnitt 12
Glossar
Glossar
| Begriff | Definition |
|---|---|
| Projekt | Zentrale MeManager-Entität für ein Software- oder Infrastrukturprojekt. |
| Snapshot | Kompakte Projektübersicht für die Portfolio-Seiten. |
| Architektur | Versionierte arc42-Dokumentation, die einem Projekt zugeordnet ist. |
| Inhaltsblock | Typisierte Inhaltseinheit, die innerhalb eines arc42-Abschnitts gerendert wird. |