better diagrams
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user