64 lines
1.6 KiB
Plaintext
64 lines
1.6 KiB
Plaintext
```plaintext
|
|
%% Notification Architecture (ADR-0021)
|
|
%% C4 Component diagram showing notification sources and hub
|
|
|
|
flowchart LR
|
|
subgraph sources["📤 Notification Sources"]
|
|
direction TB
|
|
ci["🔧 Gitea Actions<br/>CI/CD builds"]
|
|
alertmanager["🔔 Alertmanager<br/>Prometheus alerts"]
|
|
gatus["❤️ Gatus<br/>Health monitoring"]
|
|
flux["🔄 Flux<br/>GitOps events"]
|
|
end
|
|
|
|
subgraph hub["📡 Central Hub"]
|
|
ntfy["📢 ntfy<br/>Notification Server"]
|
|
end
|
|
|
|
subgraph topics["🏷️ Topics"]
|
|
direction TB
|
|
t_ci["gitea-ci"]
|
|
t_alerts["alertmanager-alerts"]
|
|
t_gatus["gatus"]
|
|
t_flux["flux"]
|
|
t_deploy["deployments"]
|
|
end
|
|
|
|
subgraph consumers["📱 Consumers"]
|
|
direction TB
|
|
mobile["📱 ntfy App<br/>(iOS/Android)"]
|
|
bridge["🌉 ntfy-discord<br/>Bridge"]
|
|
discord["💬 Discord<br/>Webhooks"]
|
|
end
|
|
|
|
%% Source to hub
|
|
ci -->|"POST"| ntfy
|
|
alertmanager -->|"webhook"| ntfy
|
|
gatus -->|"webhook"| ntfy
|
|
flux -->|"notification-controller"| ntfy
|
|
|
|
%% Hub to topics
|
|
ntfy --> topics
|
|
|
|
%% Topics to consumers
|
|
t_ci --> mobile
|
|
t_alerts --> mobile
|
|
t_gatus --> mobile
|
|
t_flux --> mobile
|
|
t_deploy --> mobile
|
|
|
|
topics --> bridge
|
|
bridge --> discord
|
|
|
|
classDef source fill:#3498db,color:white
|
|
classDef hub fill:#e74c3c,color:white
|
|
classDef topic fill:#9b59b6,color:white
|
|
classDef consumer fill:#27ae60,color:white
|
|
|
|
class ci,alertmanager,gatus,flux source
|
|
class ntfy hub
|
|
class t_ci,t_alerts,t_gatus,t_flux,t_deploy topic
|
|
class mobile,bridge,discord consumer
|
|
|
|
```
|