Architecture

User interface run as a django project. Data are stored in dev mode within sqlite, but should be stored on postgresql in production.

Django create tasks using celery and dispatch them using rabbitMQ. It runs a scheduler to trigger tasks at regular interval. It also run multiple workers based on django code base.

A typescript worker run multipel replicas to trigger lighthouse reports.

Django generate a prometheus config file to trigger monitoring using blackbox plugin. Alertmanager is connected to prometheus and calling back webhooks to django.

InfluxDB store time serie metrics, using telegraf to read prometheus metrics. Django can query InfluxDB directly to display metrics.

        graph TD
    %% Define styles
    classDef infrastructure fill:#e1f5fe,stroke:#01579b,stroke-width:2px
    classDef worker fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
    classDef monitoring fill:#fff3e0,stroke:#e65100,stroke-width:2px
    classDef scheduler fill:#f3e5f5,stroke:#6a1b9a,stroke-width:2px
    classDef external fill:#f5f5f5,stroke:#616161,stroke-width:1px

    %% Infrastructure Layer
    RabbitMQ[RabbitMQ<br>Message Broker]
    InfluxDB[InfluxDB<br>Time Series DB]
    Telegraf[Telegraf<br>Metrics Collector]

    %% Worker Layer
    Celery[Celery Workers<br>Task Processing]
    Lighthouse[Lighthouse Workers<br>Web Performance]
    Heartbeats[Heartbeats Service<br>Health Monitoring]

    %% Monitoring Layer
    Prometheus[Prometheus<br>Metrics & Alerting]
    Alertmanager[Alertmanager<br>Alert Handling]
    Blackbox[Blackbox Exporter<br>Endpoint Monitoring]

    %% Scheduler Layer
    Scheduler[Scheduler<br>Task Scheduling]

    %% External Systems
    Backend[Backend API<br>External System]:::external
    Websites[Monitored Websites<br>External Systems]:::external

    %% Connections - Infrastructure
    RabbitMQ -->|Tasks| Celery
    RabbitMQ -->|Tasks| Lighthouse
    InfluxDB <-->|Store Metrics| Telegraf
    
    %% Connections - Workers
    Celery -->|Results| Backend
    Lighthouse -->|Performance Data| Backend
    Lighthouse -->|Analyzes| Websites
    Heartbeats -->|Health Status| Backend
    
    %% Connections - Monitoring
    Prometheus -->|Alerts| Alertmanager
    Prometheus -.->|Scrapes Metrics| RabbitMQ
    Prometheus -.->|Scrapes Metrics| Blackbox
    Blackbox -.->|Probes| Websites
    Telegraf -.->|Collects Metrics| RabbitMQ
    Telegraf -.->|Collects Metrics| Celery
    
    %% Connections - Scheduler
    Scheduler -->|Schedules Tasks| RabbitMQ
    
    %% Apply styles
    RabbitMQ:::infrastructure
    InfluxDB:::infrastructure
    Telegraf:::infrastructure
    
    Celery:::worker
    Lighthouse:::worker
    Heartbeats:::worker
    
    Prometheus:::monitoring
    Alertmanager:::monitoring
    Blackbox:::monitoring
    
    Scheduler:::scheduler