From 8da054bbefdd405e07146c22bcba8f470a7323c3 Mon Sep 17 00:00:00 2001 From: Linus Waldowsky Date: Wed, 7 Jan 2026 15:57:25 +0100 Subject: [PATCH] better diagrams --- docs/architecture-class-diagram.puml | 21 ++++++++-- docs/component-diagram.puml | 59 +++++++++++++++++----------- docs/frontend-class-diagram.puml | 44 +++++++++++++++++++-- 3 files changed, 93 insertions(+), 31 deletions(-) diff --git a/docs/architecture-class-diagram.puml b/docs/architecture-class-diagram.puml index 87f4f78..e36a679 100644 --- a/docs/architecture-class-diagram.puml +++ b/docs/architecture-class-diagram.puml @@ -1,5 +1,9 @@ @startuml "Backend Klassendiagramm" +scale 0.9 +skinparam dpi 600 +skinparam backgroundColor #FFAB40 + skinparam packageStyle rectangle skinparam classAttributeIconSize 0 skinparam classFontSize 11 @@ -22,10 +26,12 @@ package "Controller Layer" #ADD8E6 { ' +confirmEvent() ' +rejectEvent() ' +getConversations() + ' +getConversation() } class EventController { ' +create() + ' +getById() ' +getAll() ' +getByDateRange() ' +update() @@ -38,7 +44,7 @@ package "Controller Layer" #ADD8E6 { } package "Service Layer" #90EE90 { - package "Data Access Interfaces" { + package "Interfaces" { interface AIProvider { ' +processMessage() } @@ -59,8 +65,10 @@ package "Service Layer" #90EE90 { } interface ChatRepository { - ' +getHistory() - ' +create() + ' +getConversationsByUser() + ' +createConversation() + ' +getMessages() + ' +createMessage() } } @@ -76,18 +84,23 @@ package "Service Layer" #90EE90 { ' -aiProvider: AIProvider ' +processMessage() ' +confirmEvent() + ' +rejectEvent() + ' +getConversations() + ' +getConversation() } class EventService { ' -eventRepo: EventRepository ' +create() + ' +getById() + ' +getAll() ' +getByDateRange() ' +update() ' +delete() } } -package "AI Layer" #FFA07A { +package "AI Implementations" #FFA07A { class ClaudeAdapter implements AIProvider { ' -apiKey: string ' +processMessage() diff --git a/docs/component-diagram.puml b/docs/component-diagram.puml index f930788..35f7b84 100644 --- a/docs/component-diagram.puml +++ b/docs/component-diagram.puml @@ -1,20 +1,23 @@ @startuml "System Komponenten" +scale 0.7 +skinparam dpi 600 +skinparam backgroundColor #FFAB40 + skinparam componentStyle uml2 skinparam packageStyle rectangle skinparam defaultFontSize 10 -top to bottom direction - title Monorepo - System Komponenten -' ===== FRONTEND ===== -package "apps/client (Expo React Native)" #87CEEB { +' ===== ROW 1: FRONTEND ===== +package "apps/client (Expo React Native)" as ClientPkg #87CEEB { package "Screens (app/)" { [Login/Register] as AuthScreens [Calendar View] as CalendarScreen [Chat View] as ChatScreen [Event Detail] as EventDetail + [Note Editor] as NoteScreen } package "Services" { @@ -25,9 +28,8 @@ package "apps/client (Expo React Native)" #87CEEB { } package "Components" { - [EventCard] as EventCard - [ProposedEventCard] as ProposedEventCard - [ConfirmDialog] as ConfirmDialog + [UI Components] as UIComponents + [Event Cards] as EventCards } package "Stores" { @@ -37,14 +39,15 @@ package "apps/client (Expo React Native)" #87CEEB { } } -' ===== SHARED ===== -package "packages/shared" #DDA0DD { +' ===== ROW 2: SHARED (centered) ===== +package "packages/shared" as SharedPkg #DDA0DD { [Models] as SharedModels [DTOs] as SharedDTOs + [Utils] as SharedUtils } -' ===== BACKEND ===== -package "apps/server (Express.js)" #98FB98 { +' ===== ROW 3: BACKEND ===== +package "apps/server (Express.js)" as ServerPkg #98FB98 { package "Controller Layer" { [Routes] as Routes [Controllers] as Controllers @@ -58,11 +61,11 @@ package "apps/server (Express.js)" #98FB98 { [EventService] as EventSvc } - package "AI Layer" { + package "AI Implementations" { [ClaudeAdapter] as Claude } - package "Data Access Layer" { + package "Data Access Implementations" { [Repositories] as Repos [Mongoose Schemas] as Schemas } @@ -70,20 +73,23 @@ package "apps/server (Express.js)" #98FB98 { package "Utils" { [JWT] as JWTUtil [Password] as PwdUtil + [RecurrenceExpander] as RecExpander + [EventFormatters] as EvtFormatters } } -' ===== EXTERNAL ===== +' ===== ROW 4: EXTERNAL ===== database "MongoDB" as MongoDB cloud "Claude API" as ClaudeAPI ' ===== CONNECTIONS ===== -' Frontend internal +' Frontend: Screens -> Services AuthScreens --> ClientAuth CalendarScreen --> ClientEvent ChatScreen --> ClientChat EventDetail --> ClientEvent +NoteScreen --> ClientEvent ClientAuth --> ApiClient ClientEvent --> ApiClient @@ -93,12 +99,19 @@ ApiClient --> AuthStore ClientEvent --> EventsStore ClientChat --> ChatStore -' Frontend -> Shared -ApiClient ..> SharedDTOs -ApiClient ..> SharedModels +' Frontend: Screens -> Components +CalendarScreen --> EventCards +ChatScreen --> EventCards +ChatScreen --> UIComponents -' Frontend -> Backend -ApiClient --> Routes : HTTP/REST +' Frontend -> Shared -> Backend (HTTP flow) +ApiClient --> SharedDTOs : sends +SharedDTOs --> Routes : HTTP/REST + +' Shared types used by both sides +SharedModels ..> ApiClient : used by +SharedDTOs ..> Controllers : used by +SharedModels ..> Repos : used by ' Backend: Controller Layer Routes --> Middleware @@ -122,14 +135,12 @@ Repos ..|> Interfaces AuthSvc --> JWTUtil AuthSvc --> PwdUtil Middleware --> JWTUtil +EventSvc --> RecExpander +ChatSvc --> EvtFormatters ' Backend: Data Access Repos --> Schemas -' Backend -> Shared -Repos ..> SharedModels -Controllers ..> SharedDTOs - ' Backend -> External Schemas --> MongoDB Claude --> ClaudeAPI diff --git a/docs/frontend-class-diagram.puml b/docs/frontend-class-diagram.puml index c07b815..095e1ca 100644 --- a/docs/frontend-class-diagram.puml +++ b/docs/frontend-class-diagram.puml @@ -1,5 +1,9 @@ @startuml "Frontend Klassendiagramm" +scale 0.9 +skinparam dpi 600 +skinparam backgroundColor #FFAB40 + skinparam packageStyle rectangle skinparam classAttributeIconSize 0 skinparam classFontSize 10 @@ -24,6 +28,9 @@ package "Screens" #87CEEB { ' ===== COMPONENTS ===== package "Components" #FFA07A { + class BaseBackground + class Header + class EventCardBase class EventCard class ProposedEventCard class EventConfirmDialog @@ -37,9 +44,27 @@ package "Services" #90EE90 { +put() +delete() } - class AuthService - class EventService - class ChatService + class AuthService { + +login() + +register() + +logout() + +refresh() + } + class EventService { + +getAll() + +getById() + +getByDateRange() + +create() + +update() + +delete() + } + class ChatService { + +sendMessage() + +confirmEvent() + +rejectEvent() + +getConversations() + +getConversation() + } } ' ===== STORES ===== @@ -47,12 +72,23 @@ package "Stores" #FFD700 { class AuthStore { ' +user ' +token + ' +isAuthenticated + ' +login() + ' +logout() + ' +setToken() } class EventsStore { ' +events + ' +setEvents() + ' +addEvent() + ' +updateEvent() + ' +deleteEvent() } class ChatStore { ' +messages + ' +addMessage() + ' +updateMessage() + ' +clearMessages() } } @@ -75,6 +111,8 @@ NoteScreen --> EventService CalendarScreen --> EventCard ChatScreen --> ProposedEventCard ChatScreen --> EventConfirmDialog +EventCard --> EventCardBase +ProposedEventCard --> EventCardBase ' Services -> ApiClient AuthService --> ApiClient