138 lines
2.8 KiB
Plaintext
138 lines
2.8 KiB
Plaintext
@startuml "System Komponenten"
|
|
|
|
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 {
|
|
package "Screens (app/)" {
|
|
[Login/Register] as AuthScreens
|
|
[Calendar View] as CalendarScreen
|
|
[Chat View] as ChatScreen
|
|
[Event Detail] as EventDetail
|
|
}
|
|
|
|
package "Services" {
|
|
[API Client] as ApiClient
|
|
[Auth Service] as ClientAuth
|
|
[Event Service] as ClientEvent
|
|
[Chat Service] as ClientChat
|
|
}
|
|
|
|
package "Components" {
|
|
[EventCard] as EventCard
|
|
[ProposedEventCard] as ProposedEventCard
|
|
[ConfirmDialog] as ConfirmDialog
|
|
}
|
|
|
|
package "Stores" {
|
|
[Auth Store] as AuthStore
|
|
[Events Store] as EventsStore
|
|
[Chat Store] as ChatStore
|
|
}
|
|
}
|
|
|
|
' ===== SHARED =====
|
|
package "packages/shared" #DDA0DD {
|
|
[Models] as SharedModels
|
|
[DTOs] as SharedDTOs
|
|
}
|
|
|
|
' ===== BACKEND =====
|
|
package "apps/server (Express.js)" #98FB98 {
|
|
package "Controller Layer" {
|
|
[Routes] as Routes
|
|
[Controllers] as Controllers
|
|
[Middleware] as Middleware
|
|
}
|
|
|
|
package "Service Layer" {
|
|
[Interfaces] as Interfaces
|
|
[AuthService] as AuthSvc
|
|
[ChatService] as ChatSvc
|
|
[EventService] as EventSvc
|
|
}
|
|
|
|
package "AI Layer" {
|
|
[ClaudeAdapter] as Claude
|
|
}
|
|
|
|
package "Data Access Layer" {
|
|
[Repositories] as Repos
|
|
[Mongoose Schemas] as Schemas
|
|
}
|
|
|
|
package "Utils" {
|
|
[JWT] as JWTUtil
|
|
[Password] as PwdUtil
|
|
}
|
|
}
|
|
|
|
' ===== EXTERNAL =====
|
|
database "MongoDB" as MongoDB
|
|
cloud "Claude API" as ClaudeAPI
|
|
|
|
' ===== CONNECTIONS =====
|
|
|
|
' Frontend internal
|
|
AuthScreens --> ClientAuth
|
|
CalendarScreen --> ClientEvent
|
|
ChatScreen --> ClientChat
|
|
EventDetail --> ClientEvent
|
|
|
|
ClientAuth --> ApiClient
|
|
ClientEvent --> ApiClient
|
|
ClientChat --> ApiClient
|
|
|
|
ApiClient --> AuthStore
|
|
ClientEvent --> EventsStore
|
|
ClientChat --> ChatStore
|
|
|
|
' Frontend -> Shared
|
|
ApiClient ..> SharedDTOs
|
|
ApiClient ..> SharedModels
|
|
|
|
' Frontend -> Backend
|
|
ApiClient --> Routes : HTTP/REST
|
|
|
|
' Backend: Controller Layer
|
|
Routes --> Middleware
|
|
Routes --> Controllers
|
|
|
|
' Backend: Controller -> Service
|
|
Controllers --> AuthSvc
|
|
Controllers --> ChatSvc
|
|
Controllers --> EventSvc
|
|
|
|
' Backend: Service -> Interfaces
|
|
AuthSvc --> Interfaces
|
|
ChatSvc --> Interfaces
|
|
EventSvc --> Interfaces
|
|
|
|
' Backend: AI & Data Access implement Interfaces
|
|
Claude ..|> Interfaces
|
|
Repos ..|> Interfaces
|
|
|
|
' Backend: Service -> Utils
|
|
AuthSvc --> JWTUtil
|
|
AuthSvc --> PwdUtil
|
|
Middleware --> JWTUtil
|
|
|
|
' Backend: Data Access
|
|
Repos --> Schemas
|
|
|
|
' Backend -> Shared
|
|
Repos ..> SharedModels
|
|
Controllers ..> SharedDTOs
|
|
|
|
' Backend -> External
|
|
Schemas --> MongoDB
|
|
Claude --> ClaudeAPI
|
|
|
|
@enduml
|