Skip to content

Design

flowchart RL
    CGI@{ label: cattle_grid_internal }
    CG@{ label: cattle_grid }
    Fediverse@{ shape: processes }
    SE@{ shape: odd, label: "Side Effects" }
    YC@{ shape: odd, label: "Your Code" }
    classDef darkred fill:#f004

    Fediverse -->|Post /outbox| internal
    internal -->|Post,Get| Fediverse

    subgraph internal
        direction TB
        CGI:::darkred -->|AP processiing| SE
    end

    subgraph exchange
        direction TB
        CG:::darkred ==> YC
        YC ==> CG
    end

    internal --> exchange
    exchange --> internal

where RabbitMQ exchanges are slightly red. As long as your application does not need to modify standard behavior of the Fediverse, you will only need to interact with exchange.