Files
calchat/docs/frontend-class-diagram.puml
Linus Waldowsky 189c38dc2b docs: clean up frontend class diagram layout
Comment out service methods for consistency with stores and switch to
left-to-right direction for a more vertical package arrangement.
2026-02-09 22:00:13 +01:00

164 lines
3.3 KiB
Plaintext

@startuml "Frontend Klassendiagramm"
scale 0.9
skinparam dpi 600
skinparam backgroundColor #FFAB40
skinparam packageStyle rectangle
skinparam classAttributeIconSize 0
skinparam classFontSize 10
skinparam defaultFontSize 9
skinparam wrapWidth 100
skinparam nodesep 30
skinparam ranksep 30
left to right direction
title Frontend (Expo React Native)
' ===== COMPONENTS =====
package "Components" #FFA07A {
class AuthGuard
class BaseBackground
class Header
class BaseButton
class CardBase
class ModalBase
class EventCardBase
class EventCard
class ProposedEventCard
class DeleteEventModal
class ChatBubble
class TypingIndicator
}
' ===== SCREENS =====
package "Screens" #87CEEB {
class LoginScreen
class RegisterScreen
class CalendarScreen
class ChatScreen
class SettingsScreen
class EditEventScreen
class EventDetailScreen
class NoteScreen
}
' ===== SERVICES =====
package "Services" #90EE90 {
class ApiClient {
' +get()
' +post()
' +put()
' +delete()
}
class AuthService {
' +login()
' +register()
' +logout()
' +refresh()
}
class EventService {
' +getAll()
' +getById()
' +getByDateRange()
' +create()
' +update()
' +delete()
}
class ChatService {
' +sendMessage()
' +confirmEvent()
' +rejectEvent()
' +getConversations()
' +getConversation()
' +updateProposalEvent()
}
class CaldavConfigService {
' +getConfig()
' +saveConfig()
' +deleteConfig()
' +sync()
}
}
' ===== STORES =====
package "Stores" #FFD700 {
class AuthStore {
' +user
' +isAuthenticated
' +login()
' +logout()
' +loadStoredUser()
}
class EventsStore {
' +events
' +setEvents()
' +addEvent()
' +updateEvent()
' +deleteEvent()
}
class ChatStore {
' +messages
' +isWaitingForResponse
' +addMessage()
' +addMessages()
' +updateMessage()
' +clearMessages()
}
class ThemeStore {
' +theme
' +setTheme()
}
}
' ===== MODELS =====
package "Models (shared)" #D3D3D3 {
class User
class CalendarEvent
class ChatMessage
class CaldavConfig
}
' ===== RELATIONSHIPS =====
' Screens -> Components
CalendarScreen --> EventCard
ChatScreen --> ProposedEventCard
ChatScreen --> ChatBubble
ChatScreen --> TypingIndicator
EventCard --> EventCardBase
ProposedEventCard --> EventCardBase
EventCardBase --> CardBase
ModalBase --> CardBase
DeleteEventModal --> ModalBase
' Screens -> Services
LoginScreen --> AuthService
CalendarScreen --> EventService
CalendarScreen --> CaldavConfigService
ChatScreen --> ChatService
NoteScreen --> EventService
EditEventScreen --> EventService
EditEventScreen --> ChatService
SettingsScreen --> CaldavConfigService
' Auth
AuthGuard --> AuthStore
AuthGuard --> CaldavConfigService
LoginScreen --> CaldavConfigService
' Services -> ApiClient
AuthService --> ApiClient
EventService --> ApiClient
ChatService --> ApiClient
CaldavConfigService --> ApiClient
' Services/Screens -> Stores
AuthService --> AuthStore
CalendarScreen --> EventsStore
ChatScreen --> ChatStore
SettingsScreen --> ThemeStore
@enduml