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"
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()

View File

@@ -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

View File

@@ -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