Skip to content

System Overview

The following diagram provides a single-page view of the main runtime components and their relationships.

flowchart TD
    subgraph External["External Systems"]
        FYERS_REST["FYERS REST API"]
        FYERS_DATA_WS["FYERS Data WebSocket"]
        FYERS_ORDER_WS["FYERS Order WebSocket"]
    end

    subgraph App["Backtrader Integration (src/)"]
        STORE["FyersStore<br/>src/fyers_store/store.py"]
        BROKER["FyersBroker<br/>src/fyers_store/broker.py"]
        FEED["FyersData<br/>src/fyers_store/data_feed.py"]

        REST_ADAPTER["REST Adapter<br/>src/fyers_store/adapters/fyers_rest.py"]
        DATA_WS_ADAPTER["Data WS Adapter<br/>src/fyers_store/adapters/fyers_ws.py"]
        ORDER_WS_ADAPTER["Order WS Adapter<br/>src/fyers_store/adapters/fyers_ws.py"]

        CACHE["SQLite Historical Cache<br/>src/fyers_store/persistence/sqlite_cache.py"]
        STATE_DB["SQLite State Store<br/>src/fyers_store/state/"]

        LOGGING["Logging<br/>src/logging_module/"]
        AUTH["Auth Helpers<br/>src/fyers/auth.py"]
        FAIL_AUTH["AuthError<br/>fail-fast"]
        FAIL_RECONCILE["ReconcileFailure<br/>fail-fast"]
        FAIL_ORDER["Unknown Order State<br/>manual reconcile"]
    end

    FEED -->|poll/consume| STORE
    BROKER -->|submit/modify/cancel| STORE
    STORE -->|history DB-first| CACHE
    STORE -->|REST calls| REST_ADAPTER
    STORE -->|drain market queue| DATA_WS_ADAPTER
    STORE -->|drain order queue| ORDER_WS_ADAPTER

    REST_ADAPTER --> FYERS_REST
    DATA_WS_ADAPTER --> FYERS_DATA_WS
    ORDER_WS_ADAPTER --> FYERS_ORDER_WS

    BROKER -->|persist/recover| STATE_DB
    BROKER -->|logs| LOGGING
    FEED -->|logs| LOGGING
    STORE -->|logs| LOGGING
    REST_ADAPTER -->|logs| LOGGING
    DATA_WS_ADAPTER -->|logs| LOGGING
    ORDER_WS_ADAPTER -->|logs| LOGGING

    AUTH --> FYERS_REST
    AUTH -->|logs| LOGGING

    REST_ADAPTER -.auth failure.-> FAIL_AUTH
    DATA_WS_ADAPTER -.auth failure.-> FAIL_AUTH
    ORDER_WS_ADAPTER -.auth failure.-> FAIL_AUTH
    BROKER -.reconcile failure.-> FAIL_RECONCILE
    REST_ADAPTER -.place_order timeout.-> FAIL_ORDER