flowchart TB API[API Service]:::service DOWNLOADER[Downloader Service]:::service ENCODING_DIRECTOR[Encoding Director Service]:::service ENCODER[Encoder Service]:::service UPLOADER[Uploader Service]:::service PLAYLIST_STICHER[Playlist Sticher Service]:::service USERS[Users]:::external RABBITMQ[RabbitMQ]:::external S3[S3 Storage]:::external REDIS[Redis]:::db USERS -->|send video| API USERS -->|get progress| API USERS -->|get artifacts| API API -->|video upload| S3 API -->|done| RABBITMQ API -->|get progress| REDIS RABBITMQ -->|url to download| DOWNLOADER DOWNLOADER -->|video download| S3 DOWNLOADER -->|done| RABBITMQ RABBITMQ -->|video id| ENCODING_DIRECTOR ENCODING_DIRECTOR -->|video encoding spec| RABBITMQ RABBITMQ -->|video path with encoding spec| ENCODER ENCODER -->|save progress| REDIS ENCODER -->|done| RABBITMQ RABBITMQ -->|encoded file path| UPLOADER UPLOADER -->|file upload| S3 UPLOADER -->|done| RABBITMQ RABBITMQ -->|encoding id| PLAYLIST_STICHER PLAYLIST_STICHER -->|master playlist upload| S3 classDef db color:#fff,fill:#ff9655,stroke:#ffa764,stroke-width:2px; classDef external color:#fff,fill:#9b84d0,stroke:#9676d7,stroke-width:2px; classDef service color:#fff,fill:#3b5dae,stroke:#97a9d3,stroke-width:2px;