-
Notifications
You must be signed in to change notification settings - Fork 15
Software architecture
Gulfaraz Rahman edited this page Feb 5, 2025
·
9 revisions
A high-level representation of the software architecture,
graph LR
subgraph pipeline
E[(Exposure)]
H[(Hazard)]
M((Trigger Model))
E -.-> M
H -.-> M
style pipeline fill:transparent,stroke:#777777,stroke-width:1px,stroke-dasharray: 10
style E fill:transparent,stroke:#777777,stroke-width:1px
style H fill:transparent,stroke:#777777,stroke-width:1px
style M fill:transparent,stroke:#777777,stroke-width:1px
end
subgraph backend
A{{REST API}}
subgraph database
P[(Postgres)]
G[(Geoserver)]
click P "https://www.postgresql.org"
click G "https://geoserver.org"
style database fill:transparent,stroke:#aaaaaa,stroke-width:1px,stroke-dasharray: 2
style P fill:transparent,stroke:#777777,stroke-width:1px
style G fill:transparent,stroke:#777777,stroke-width:1px
end
A <--> database
click A "https://ibf.510.global/docs"
style backend fill:transparent,stroke:#777777,stroke-width:1px,stroke-dasharray: 10
style A fill:transparent,stroke:#777777,stroke-width:1px
end
I[dashboard]
MC[Mailchimp]
TW[Twilio]
KB[Kobo Toolbox]
M -- Forecast --> A
backend -.-> |Email alerts| MC
backend -.-> |WhatsApp alerts| TW
KB -.-> |Community notifications / Early actions| A
backend <--> I
click KB "https://kobo.ifrc.org"
click MC "https://mailchimp.com"
click TW "https://www.twilio.com"
click I "https://ibf.510.global"
style I fill:transparent,stroke:#777777,stroke-width:1px
style MC fill:transparent,stroke:#777777,stroke-width:1px
style TW fill:transparent,stroke:#777777,stroke-width:1px
style KB fill:transparent,stroke:#777777,stroke-width:1px
On the left side are input sources,
- The pipelines provide forecasts of future hazards.
- The Kobo Toolbox provides field data from the end-user.
In the middle is the backend which includes,
- The REST API which manages the database.
- The Postgres database for relational data.
- The Geoserver to store and serve raster data.
On the right are the user interfaces,
- Users receive email alerts when a hazard is forecasted.
- Users receive WhatsApp alerts when a hazard is forecasted.
- Users can view the forecast on the dashboard.
This module dependency graph was generated using nestjs-spelunker. It visualizes the NestJS modules in API-service.
graph LR
EapActionsModule-->UserModule
UserModule-->LookupModule
WaterpointsModule-->UserModule
WaterpointsModule-->CountryModule
CountryModule-->UserModule
AdminAreaModule-->UserModule
AdminAreaModule-->EventModule
EventModule-->UserModule
EventModule-->CountryModule
EventModule-->EapActionsModule
EventModule-->TyphoonTrackModule
TyphoonTrackModule-->UserModule
AdminAreaModule-->CountryModule
AdminAreaDynamicDataModule-->UserModule
AdminAreaDynamicDataModule-->EventModule
AdminAreaDynamicDataModule-->CountryModule
AdminAreaDynamicDataModule-->AdminAreaModule
DisasterTypeModule-->UserModule
MetadataModule-->UserModule
MetadataModule-->CountryModule
MetadataModule-->EventModule
PointDataModule-->UserModule
PointDataModule-->WhatsappModule
WhatsappModule-->LookupModule
WhatsappModule-->EventModule
WhatsappModule-->NotificationContentModule
NotificationContentModule-->EventModule
NotificationContentModule-->AdminAreaDynamicDataModule
NotificationContentModule-->AdminAreaDataModule
AdminAreaDataModule-->UserModule
NotificationContentModule-->AdminAreaModule
LinesDataModule-->UserModule
NotificationModule-->UserModule
NotificationModule-->EventModule
NotificationModule-->AdminAreaDynamicDataModule
NotificationModule-->WhatsappModule
NotificationModule-->NotificationContentModule
NotificationModule-->TyphoonTrackModule
CronjobModule-->AdminAreaDynamicDataModule