Contributors Guide

The following diagrams the high level system interaction of the Programming Contest Suite.

---
title: PCS System Design
---
graph TD

    subgraph pcs [Deployed Instance of PCS]
    
    A((Django))
    A-->|Appliction<br>Database| C[(MariaDB)]
    A-->|Caching, Sessions, Messages| D[(Redis)]
    A--> |Generates Async<br>Task Requests|E[\RabbitMQ/]

    B[/Celery<br>Worker\]-->|Access to<br>Application DB| C
    B-->|Results Backend| D
    E-->|Brokers<br>Async Tasks| B

    F>Celery Flower]-->|Monitors Task Execution| E

    G>Celery Beat]-->|Stores Async<br>Task Schedules| C
    G-->|Schedules Async Tasks| E
    A-->|Manages async<br>task schedules| G
    end

    subgraph world [Network]
    X(((User)))-->|Accesses via <code>site_url:8000</code>| A
    X-->|Accesses via <code>site_url:5555</code>| F  
    end

    classDef green fill:#EFFFDE

    class pcs green