@startuml actor "User" as U rectangle "telegram-bot" as TGB rectangle "discord-bot" as DCB rectangle "website-bot" as WSB package "BeuthBot" { rectangle "gateway" as GW rectangle "registry" as RE database "cache" as CA package "NLU" { rectangle "deconcentrator-js" as DC rectangle "rasa" as RA } package "Services" { rectangle "weather" as WS rectangle "mensa" as MS rectangle "database" as DBMS rectangle "personalliste" as PL } package "Database" { rectangle "database-controller" as DBC database "mongo-db" as MDB } package "STT" { rectangle "wav2letter" as W2L rectangle "model" as W2LM rectangle "stt-controller" as STTC } package "TTS" { rectangle "say.js" as SJS rectangle "tts-controller" as TTSC } package "Reminder" { rectangle "reminder-controller" as RC } package "Staff" { rectangle "staff-controller" as SC } package "UserMessengingService" { rectangle "UMS-Controller" as UMS rectangle "Websocket" as WEBSOCK } } U <-down-> TGB U <-down-> DCB U <-> WSB UMS <-> GW UMS <-> WEBSOCK WEBSOCK <-> TGB WEBSOCK <-> DCB WEBSOCK <-> WSB GW <-left-> TGB GW <-left-> DCB GW <-left-> WSB GW <-up-> TTSC GW <-up-> STTC GW <-down-> SC GW <-> DC GW <-down-> RE GW <-> DBC GW <-> RC DC <-> RA DBC <-> MDB RE <-> CA RE <-> MS RE <-> WS RE <-> PL DBMS <-> RE DBMS <-> DBC STTC <-> W2L W2L <-> W2LM TTSC <-> SJS @enduml