@startuml actor "User" as U rectangle "telgram-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 } package "Database" { rectangle "database-controller" as DBC database "mongo-db" as MDB } package "Speech" { rectangle "wav2letter" as W2L rectangle "model" as W2LM rectangle "say.js" as SJS rectangle "speech-controller" as SC } } U <-down-> TGB U <-down-> DCB U <-> WSB GW <-> TGB GW <-> DCB GW <-> WSB GW <-down-> SC GW <-left-> DC GW <-up-> RE GW <-right-> DBC DC <-> RA DBC <-> MDB RE <-> CA RE <-> MS RE <-> WS DBMS <-> RE DBMS <-> DBC SC <-> W2L SC <-> SJS W2L <-> W2LM @enduml