Skip to content

System overview

This diagram shows BBDrop in its operating environment: the user who interacts with it, the external services it uploads to, and the platform services it depends on.

BBDrop communicates with three image hosts (IMX.to, Pixhost, TurboImageHost) and seven file hosts (RapidGator, Keep2Share, FileBoom, TezFiles, Filedot, Filespace, Katfile). IMX.to is accessed via requests over its JSON REST API; all other hosts use pycurl for bandwidth tracking and connection control. An optional proxy or Tor layer can route traffic through HTTP, SOCKS4, or SOCKS5 proxies.

graph TD
    user(("👤 User"))
    bbdrop["BBDrop<br/><small>PyQt6 desktop application</small>"]

    subgraph image_hosts ["Image Hosts"]
        imx["IMX.to<br/><small>requests</small>"]
        pixhost["Pixhost<br/><small>pycurl</small>"]
        turbo["TurboImageHost<br/><small>pycurl</small>"]
    end

    subgraph file_hosts ["File Hosts"]
        rapidgator["RapidGator"]
        keep2share["Keep2Share"]
        fileboom["FileBoom"]
        tezfiles["TezFiles"]
        filedot["Filedot"]
        filespace["Filespace"]
        katfile["Katfile"]
    end

    keyring[("OS Keyring<br/><small>Credential Manager · Keychain · Secret Service</small>")]
    proxy["Proxy / Tor<br/><small>HTTP · SOCKS4 · SOCKS5</small>"]

    user -- "adds galleries, configures hosts, views BBCode" --> bbdrop
    bbdrop -- "uploads images" --> imx
    bbdrop -- "uploads images" --> pixhost
    bbdrop -- "uploads images" --> turbo
    bbdrop -- "uploads files" --> rapidgator
    bbdrop -- "uploads files" --> keep2share
    bbdrop -- "uploads files" --> fileboom
    bbdrop -- "uploads files" --> tezfiles
    bbdrop -- "uploads files" --> filedot
    bbdrop -- "uploads files" --> filespace
    bbdrop -- "uploads files" --> katfile
    bbdrop -- "stores/retrieves credentials" --> keyring
    bbdrop -.-> |"optional"| proxy

The seven file hosts share a single FileHostClient implementation driven by JSON configuration files (assets/hosts/*.json). Each host's upload flow, authentication method, and response parsing are defined declaratively rather than in host-specific code.