@startuml

folder SILO-LAPIS {
    component SILO
    component LAPIS
}

component "Loculus Website" as Website
component "Loculus Backend" as Backend
component "Postgres DB" as Postgres

component "Preprocessing Pipeline" as Preprocessing
component "Ingest Pipeline" as Ingest

component Keycloak

Website --> Keycloak : authenticate
Backend --> Keycloak : authenticate

Website -> Backend : upload sequence data
Backend <-> Postgres : persist sequence entries
Backend --> Preprocessing : fetch new sequence entries
Backend <-- Preprocessing : submit enriched sequence entries
Ingest --> Backend : new Genbank sequences

SILO <-- Backend : provide sequence entries
LAPIS --> Website : sequence query results
LAPIS <- SILO : sequence query results

@enduml
