https://mermaid.live/view#pako:eNqNV1GL2zgQ_ivCUEigudeD5TiIk25rmqVpNtd7aErR2koiastBlvculP73G81YWk9sL5cHe_TN941H0ljj_EzyulDJXXKy8nIW-_RgBPya9omAVamVcQ2h_ve3evp6SOB6SL69oPrTI6BwZejSFLbWBXg6i3lXD14DV3Fva-OU4e7Hrcq1LHXjgPV4CQOxls35qZb2he2Vhsx7bdWTbNTSyPLqdN6ANmAiglEZ6a07MyaMkXSzGstt9l469Y-8-jltM7H5XewWW1v_e_U-0TnZPPYbP024CqdspY10ujZ8IWR-1ubkF4Ms5t3VrSNvZ_ElpsxjwgHfpIBu0rE1irN50LmtG2Wfda6a0ZCw9TofJvwXiPzK4p153vvA3kUG82XmGeLV1q9dtBnjQTWNPCmvDybzf7IFPZgMvhCZzzmDpxyVVSZX47XG0Pu2POqyrCAVv_svI8Z692EHXrjyiGfpRf52-6S0K-tU5j_6VT22B-_8OqStnxSaAmwx-yiPP-R8sNHI2NcXnXf781155Lvz0HCHGB2RST5tFxMQNKmIO8hEEZ3UhY1lsgBOqmjDmYagScUy46uVTTJhqxgVxpPcXo0wTQ-f1EIFMQ2Mp3OCsuJJAfDaDNLBFLrqGxX1KjHVp8-twpcSTIF25MUTMx66eJZ34M1RfFPZa-nkVl9UqY0ClR-KMObZr1c0QXNSqIID8eJay1mQWOvj4J03CmeVrDJQN_6k8t0CEREhRv-icijQtX9JyRTr14_JvZXawLnbm0yAxif0ubDSuJ1yVqtnWXYt1OeODhE9sbv21X4F9jX0lOriNvKqbFg8VwtCBcL8uN883EMa-9ZQq4Cx8MDCIcLfQGj45U6doJnituNYBEDMVnWl3HxsSbp0xWLxZ68VDn2DLvwKxTcuqrUYEAkjzYlB4g_PCscnEcIIA4TC5mVOuQ_KOs4Q3iSkQFF2yHqFANWdiaWI4E3pkfsGRGIoOmKEEbpuyyukMl5FKBmUCCkGMJJZaRCRQbTa_ZoIGbx5gyH9NjVCmgJqpNCNOMIrUw13BxuMWPy2IAtesNk6nX8bdWKg2Qxv8zlRqN8gh0weIXYWZMTR_yKNPS60HGSGAY82ShmLRa0IaWTyOAP3WAz4dPGEZca1ER7TULWCGwwu63vGlL1-hbTemAd6hYgBv3ZxOzr0NKTBncfpOUZnAu2N8gXjZip9F9cmb5MKvqmlLuAPzE9PPyTw0VrBcXwHZqGOsi3h8-xgfgFVtq5-vJo8uXO2VW8TW7enc3J3lGUDo_ZSwOmz1hIO_Yoov_4DW0srjw
graph TB
subgraph Clients
Web["Web"]
iOS["iOS"]
Android["Android"]
CMS["CMS Frontend"]
SPecialist["Specialist Dashboard"]
end
FirebaseAnalytics["Firebase Analytics"]
FirebaseAuth["Firebase Auth"]
subgraph APIGateway["API L7 R-Proxy API Gateway"]
TLS["TLS termination"]
Caching["Caching"]
Routing["Routing"]
Auth["Auth"]
LB["LB"]
end
subgraph Microservices
Auth["Authentication"]
Users["Users"]
Graphs["Graphs"]
Inventory["Inventory"]
Messages["Messages"]
Orders["Orders"]
AI["AI Inference"]
CMS["CMS"]
Fulfillment["Fulfillment"]
EHR["EHR"]
Chat["Chat"]
CMSB["CMS Backend"]
end
subgraph EventBus["Event Bus (Kafka)"]
AuthEventTopic["Auth_event_topic"]
UsersEventTopic["Users_event_topic"]
GraphsEventTopic["Graphs_event_topic"]
InventoryEventTopic["Inventory_event_topic"]
MessagesEventTopic["Messages_event_topic"]
OrdersEventTopic["Orders_event_topic"]
AIEventTopic["AI_event_topic"]
CMSEventTopic["CMS_event_topic"]
FulfillmentEventTopic["Fulfillment_event_topic"]
EHREventTopic["EHR_event_topic"]
ChatEventTopic["Chat_event_topic"]
CMSBEventTopic["CMS_Backend_event_topic"]
end
BigQuery["Big Query"]
AnalyticsDashboard["Analytics Dashboard"]
subgraph DataPipeline["Data Pipeline"]
CDC["Change Data Capture"]
Queue["Queue"]
StreamIngestion["Stream Ingestion"]
VectorDB["Vector DB"]
end
subgraph TrainingPipeline["Training Pipeline"]
QdrantRetrievalClients["Qdrant Retrieval Clients"]
DataToPromptLayer["Data to Prompt Layer"]
LLMFineTuning["LLM Fine-tuning"]
ModelRegistry["Model Registry (Comet)"]
end
Clients --> APIGateway
Clients --> FirebaseAnalytics
Clients --> FirebaseAuth
APIGateway --> Microservices
Microservices <--> EventBus
EventBus --> BigQuery
BigQuery --> AnalyticsDashboard
CMSB --> CDC
CDC --> Queue
Queue --> StreamIngestion
StreamIngestion --> VectorDB
VectorDB --> TrainingPipeline
QdrantRetrievalClients --> DataToPromptLayer
DataToPromptLayer --> LLMFineTuning
LLMFineTuning --> ModelRegistry
%% Databases and Redis for microservices
Users -.- UsersDB[(DB)]
Users -.- UsersRedis((Redis))
Graphs -.- GraphsDB[(DB)]
Inventory -.- InventoryDB[(DB)]
Inventory -.- InventoryRedis((Redis))
Messages -.- MessagesDB[(DB)]
Messages -.- MessagesRedis((Redis))
Orders -.- OrdersDB[(DB)]
Orders -.- OrdersRedis((Redis))
AI -.- AIDB[(DB)]
AI -.- AIRedis((Redis))
CMSB -.- CMSDB[(DB)]
CMSB -.- CMSRedis((Redis))
Fulfillment -.- FulfillmentDB[(DB)]
Fulfillment -.- FulfillmentRedis[(Redis)]
EHR -.- EHRDB[(DB)]
EHR -.- EHRRedis((Redis))
Chat -.- ChatDB[(DB)]
Chat -.- ChatRedis((Redis))