better diagrams

This commit is contained in:
2026-01-07 15:57:25 +01:00
parent 8e58ab4249
commit 8da054bbef
3 changed files with 93 additions and 31 deletions

View File

@@ -1,5 +1,9 @@
@startuml "Backend Klassendiagramm" @startuml "Backend Klassendiagramm"
scale 0.9
skinparam dpi 600
skinparam backgroundColor #FFAB40
skinparam packageStyle rectangle skinparam packageStyle rectangle
skinparam classAttributeIconSize 0 skinparam classAttributeIconSize 0
skinparam classFontSize 11 skinparam classFontSize 11
@@ -22,10 +26,12 @@ package "Controller Layer" #ADD8E6 {
' +confirmEvent() ' +confirmEvent()
' +rejectEvent() ' +rejectEvent()
' +getConversations() ' +getConversations()
' +getConversation()
} }
class EventController { class EventController {
' +create() ' +create()
' +getById()
' +getAll() ' +getAll()
' +getByDateRange() ' +getByDateRange()
' +update() ' +update()
@@ -38,7 +44,7 @@ package "Controller Layer" #ADD8E6 {
} }
package "Service Layer" #90EE90 { package "Service Layer" #90EE90 {
package "Data Access Interfaces" { package "Interfaces" {
interface AIProvider { interface AIProvider {
' +processMessage() ' +processMessage()
} }
@@ -59,8 +65,10 @@ package "Service Layer" #90EE90 {
} }
interface ChatRepository { interface ChatRepository {
' +getHistory() ' +getConversationsByUser()
' +create() ' +createConversation()
' +getMessages()
' +createMessage()
} }
} }
@@ -76,18 +84,23 @@ package "Service Layer" #90EE90 {
' -aiProvider: AIProvider ' -aiProvider: AIProvider
' +processMessage() ' +processMessage()
' +confirmEvent() ' +confirmEvent()
' +rejectEvent()
' +getConversations()
' +getConversation()
} }
class EventService { class EventService {
' -eventRepo: EventRepository ' -eventRepo: EventRepository
' +create() ' +create()
' +getById()
' +getAll()
' +getByDateRange() ' +getByDateRange()
' +update() ' +update()
' +delete() ' +delete()
} }
} }
package "AI Layer" #FFA07A { package "AI Implementations" #FFA07A {
class ClaudeAdapter implements AIProvider { class ClaudeAdapter implements AIProvider {
' -apiKey: string ' -apiKey: string
' +processMessage() ' +processMessage()

View File

@@ -1,20 +1,23 @@
@startuml "System Komponenten" @startuml "System Komponenten"
scale 0.7
skinparam dpi 600
skinparam backgroundColor #FFAB40
skinparam componentStyle uml2 skinparam componentStyle uml2
skinparam packageStyle rectangle skinparam packageStyle rectangle
skinparam defaultFontSize 10 skinparam defaultFontSize 10
top to bottom direction
title Monorepo - System Komponenten title Monorepo - System Komponenten
' ===== FRONTEND ===== ' ===== ROW 1: FRONTEND =====
package "apps/client (Expo React Native)" #87CEEB { package "apps/client (Expo React Native)" as ClientPkg #87CEEB {
package "Screens (app/)" { package "Screens (app/)" {
[Login/Register] as AuthScreens [Login/Register] as AuthScreens
[Calendar View] as CalendarScreen [Calendar View] as CalendarScreen
[Chat View] as ChatScreen [Chat View] as ChatScreen
[Event Detail] as EventDetail [Event Detail] as EventDetail
[Note Editor] as NoteScreen
} }
package "Services" { package "Services" {
@@ -25,9 +28,8 @@ package "apps/client (Expo React Native)" #87CEEB {
} }
package "Components" { package "Components" {
[EventCard] as EventCard [UI Components] as UIComponents
[ProposedEventCard] as ProposedEventCard [Event Cards] as EventCards
[ConfirmDialog] as ConfirmDialog
} }
package "Stores" { package "Stores" {
@@ -37,14 +39,15 @@ package "apps/client (Expo React Native)" #87CEEB {
} }
} }
' ===== SHARED ===== ' ===== ROW 2: SHARED (centered) =====
package "packages/shared" #DDA0DD { package "packages/shared" as SharedPkg #DDA0DD {
[Models] as SharedModels [Models] as SharedModels
[DTOs] as SharedDTOs [DTOs] as SharedDTOs
[Utils] as SharedUtils
} }
' ===== BACKEND ===== ' ===== ROW 3: BACKEND =====
package "apps/server (Express.js)" #98FB98 { package "apps/server (Express.js)" as ServerPkg #98FB98 {
package "Controller Layer" { package "Controller Layer" {
[Routes] as Routes [Routes] as Routes
[Controllers] as Controllers [Controllers] as Controllers
@@ -58,11 +61,11 @@ package "apps/server (Express.js)" #98FB98 {
[EventService] as EventSvc [EventService] as EventSvc
} }
package "AI Layer" { package "AI Implementations" {
[ClaudeAdapter] as Claude [ClaudeAdapter] as Claude
} }
package "Data Access Layer" { package "Data Access Implementations" {
[Repositories] as Repos [Repositories] as Repos
[Mongoose Schemas] as Schemas [Mongoose Schemas] as Schemas
} }
@@ -70,20 +73,23 @@ package "apps/server (Express.js)" #98FB98 {
package "Utils" { package "Utils" {
[JWT] as JWTUtil [JWT] as JWTUtil
[Password] as PwdUtil [Password] as PwdUtil
[RecurrenceExpander] as RecExpander
[EventFormatters] as EvtFormatters
} }
} }
' ===== EXTERNAL ===== ' ===== ROW 4: EXTERNAL =====
database "MongoDB" as MongoDB database "MongoDB" as MongoDB
cloud "Claude API" as ClaudeAPI cloud "Claude API" as ClaudeAPI
' ===== CONNECTIONS ===== ' ===== CONNECTIONS =====
' Frontend internal ' Frontend: Screens -> Services
AuthScreens --> ClientAuth AuthScreens --> ClientAuth
CalendarScreen --> ClientEvent CalendarScreen --> ClientEvent
ChatScreen --> ClientChat ChatScreen --> ClientChat
EventDetail --> ClientEvent EventDetail --> ClientEvent
NoteScreen --> ClientEvent
ClientAuth --> ApiClient ClientAuth --> ApiClient
ClientEvent --> ApiClient ClientEvent --> ApiClient
@@ -93,12 +99,19 @@ ApiClient --> AuthStore
ClientEvent --> EventsStore ClientEvent --> EventsStore
ClientChat --> ChatStore ClientChat --> ChatStore
' Frontend -> Shared ' Frontend: Screens -> Components
ApiClient ..> SharedDTOs CalendarScreen --> EventCards
ApiClient ..> SharedModels ChatScreen --> EventCards
ChatScreen --> UIComponents
' Frontend -> Backend ' Frontend -> Shared -> Backend (HTTP flow)
ApiClient --> Routes : HTTP/REST 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 ' Backend: Controller Layer
Routes --> Middleware Routes --> Middleware
@@ -122,14 +135,12 @@ Repos ..|> Interfaces
AuthSvc --> JWTUtil AuthSvc --> JWTUtil
AuthSvc --> PwdUtil AuthSvc --> PwdUtil
Middleware --> JWTUtil Middleware --> JWTUtil
EventSvc --> RecExpander
ChatSvc --> EvtFormatters
' Backend: Data Access ' Backend: Data Access
Repos --> Schemas Repos --> Schemas
' Backend -> Shared
Repos ..> SharedModels
Controllers ..> SharedDTOs
' Backend -> External ' Backend -> External
Schemas --> MongoDB Schemas --> MongoDB
Claude --> ClaudeAPI Claude --> ClaudeAPI

View File

@@ -1,5 +1,9 @@
@startuml "Frontend Klassendiagramm" @startuml "Frontend Klassendiagramm"
scale 0.9
skinparam dpi 600
skinparam backgroundColor #FFAB40
skinparam packageStyle rectangle skinparam packageStyle rectangle
skinparam classAttributeIconSize 0 skinparam classAttributeIconSize 0
skinparam classFontSize 10 skinparam classFontSize 10
@@ -24,6 +28,9 @@ package "Screens" #87CEEB {
' ===== COMPONENTS ===== ' ===== COMPONENTS =====
package "Components" #FFA07A { package "Components" #FFA07A {
class BaseBackground
class Header
class EventCardBase
class EventCard class EventCard
class ProposedEventCard class ProposedEventCard
class EventConfirmDialog class EventConfirmDialog
@@ -37,9 +44,27 @@ package "Services" #90EE90 {
+put() +put()
+delete() +delete()
} }
class AuthService class AuthService {
class EventService +login()
class ChatService +register()
+logout()
+refresh()
}
class EventService {
+getAll()
+getById()
+getByDateRange()
+create()
+update()
+delete()
}
class ChatService {
+sendMessage()
+confirmEvent()
+rejectEvent()
+getConversations()
+getConversation()
}
} }
' ===== STORES ===== ' ===== STORES =====
@@ -47,12 +72,23 @@ package "Stores" #FFD700 {
class AuthStore { class AuthStore {
' +user ' +user
' +token ' +token
' +isAuthenticated
' +login()
' +logout()
' +setToken()
} }
class EventsStore { class EventsStore {
' +events ' +events
' +setEvents()
' +addEvent()
' +updateEvent()
' +deleteEvent()
} }
class ChatStore { class ChatStore {
' +messages ' +messages
' +addMessage()
' +updateMessage()
' +clearMessages()
} }
} }
@@ -75,6 +111,8 @@ NoteScreen --> EventService
CalendarScreen --> EventCard CalendarScreen --> EventCard
ChatScreen --> ProposedEventCard ChatScreen --> ProposedEventCard
ChatScreen --> EventConfirmDialog ChatScreen --> EventConfirmDialog
EventCard --> EventCardBase
ProposedEventCard --> EventCardBase
' Services -> ApiClient ' Services -> ApiClient
AuthService --> ApiClient AuthService --> ApiClient