@startuml Geutebruck API Architecture Overview !theme plain skinparam backgroundColor #FEFEFE skinparam componentStyle rectangle title Geutebruck API System Architecture - Overview ' Client Layer package "Client Layer" { [Web Browser] as web [GeViSet UI] as geviset [Mobile App] as mobile [Postman/Testing] as postman } ' Python API Layer package "Python API Layer\n(FastAPI - Port 8000)" { [REST API Endpoints] as rest [Authentication] as auth [Service Layer] as services package "Configuration Management ✅" { [ConfigurationService] as configsvc [Server CRUD] as servercrud [ActionMapping CRUD] as mappingcrud } } ' C# SDK Bridge Layer package "C# SDK Bridge\n(gRPC Service - Port 50051)" { [gRPC Services] as grpc package "SDK Wrappers" { [GeViDatabase Wrapper] as dbwrapper [StateQuery Handler] as statequery [Action Dispatcher] as dispatcher } package "Configuration Components ✅" { [SetupClient] as setupclient [FolderTreeParser] as parser [FolderTreeWriter] as writer } } ' GeViServer Layer package "GeViServer\n(GeViSoft Server - Ports 7700-7703)" { [Camera Manager] as cammgr [Monitor Manager] as monmgr [Action Engine] as actioneng [Configuration Storage] as config database "TestMKS.set\n(Binary Config)" as setfile { [GeViGCoreServer\n13 servers] as servers [ActionMapping\n64 mappings] as mappings } } ' External Systems cloud "Hardware Layer" { [IP Cameras] as cameras [Video Monitors] as monitors [I/O Devices] as io } ' Connections - Client to API web -down-> rest : HTTP/REST mobile -down-> rest : HTTP/REST postman -down-> rest : HTTP/REST geviset -down-> config : SetupClient\n(blocked when\nAPI runs) ' API Internal rest -down-> auth rest -down-> services rest -down-> configsvc configsvc -down-> servercrud configsvc -down-> mappingcrud ' API to SDK Bridge services -down-> grpc : gRPC\nPort 50051 configsvc -down-> grpc : gRPC\nPort 50051 ' SDK Bridge Internal grpc -down-> dbwrapper grpc -down-> statequery grpc -down-> dispatcher grpc -down-> setupclient setupclient -down-> parser setupclient -down-> writer ' SDK Bridge to GeViServer dbwrapper -down-> cammgr : GeViScope SDK\nPorts 7700-7703 statequery -down-> monmgr : GeViScope SDK dispatcher -down-> actioneng : GeViScope SDK setupclient -down-> config : SetupClient\nProtocol ' GeViServer Internal config -down-> setfile cammgr -down-> servers actioneng -down-> mappings ' GeViServer to Hardware cammgr -down-> cameras : Video\nStreams monmgr -down-> monitors : Video\nOutput actioneng -down-> io : Control\nSignals note right of configsvc **Implemented Features:** • Server CRUD (C, R, D working) • ActionMapping CRUD (all ops) • Cascade deletion prevention • Auto-increment server IDs • Bool type handling end note note right of setupclient **Configuration Flow:** 1. Download .set file 2. Parse binary format 3. Modify configuration 4. Write back to tree 5. Upload to GeViServer end note note bottom of setfile **Current State:** • 13 G-Core Servers • 64 Action Mappings • Managed via REST API end note @enduml