Skip to content

Architecture

Arthur Jamet edited this page May 21, 2025 · 1 revision

There is a flowchart of how the components of Meelo interact with each other:

---
title: Meelo's Services
config:
  theme: base
---
flowchart LR
        Providers@{ shape: procs, label: "ExternalProviders"}
        Front("Front-end application")
        API("API")
        Scanner("Scanner")
        Matcher("Matcher")
        DB[("Database")]
        MQ@{ shape: bow-rect, label: "Rabbit MQ" }
        Meili[("MeiliSearch")]
        FS[/"FileSystem"\]
        Settings[[Settings File]]
        Nginx[[Nginx]]
        User(User)
        Transcoder(Transcoder)
        
        User -- Any HTTP request  --> Nginx
        Nginx --> Front
        Nginx --> API
        API -- Proxy --> Transcoder
        Transcoder --> FS
        Nginx --> Scanner
        Front -- Fetch data, push played songs--> API
        Scanner -- Push file metadata --> API
        Scanner -- Lookup files --> FS
        Scanner --> Settings
        Matcher -- Push metadata from external providers --> API
        Matcher -- Receives events --> MQ
        Matcher --> Settings
        Matcher -- Look up additional metadata (Lyrics, artist image, ratings, ...) --> Providers
        API -- Persist data --> DB
        API --> Settings
        API -- Index search data --> Meili
        API -- Push event on item creation --> MQ
        API -- Save and serve illustrations --> FS
        Settings -- Stored on --> FS

Loading

Clone this wiki locally