Skip to content

Software architecture

Gulfaraz Rahman edited this page Oct 8, 2024 · 8 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
Loading

On the left side are input sources,

  1. The pipelines provide forecasts of future hazards.
  2. The Kobo Toolbox provides field data from the end-user.

In the middle is the backend which includes,

  1. The REST API which manages the database.
  2. The Postgres database for relational data.
  3. The Geoserver to store and serve raster data.

On the right are the user interfaces,

  1. Users receive email alerts when a hazard is forecasted.
  2. Users receive WhatsApp alerts when a hazard is forecasted.
  3. Users can view the forecast on the dashboard.
Clone this wiki locally