02 - Backend Architecture

Overview

OpenAlgo backend is a production-ready Flask application providing a unified API layer across 29 Indian brokers. It features a plugin-based broker system, multi-database architecture, real-time WebSocket streaming, and comprehensive security layers.

Technology Stack

Technology
Purpose

Flask

Web framework

Flask-RESTX

REST API with Swagger

Flask-SocketIO

Real-time events

SQLAlchemy

ORM for SQLite databases

DuckDB

Historical data storage

ZeroMQ

High-performance message bus

Argon2

Password hashing

Fernet

Token encryption

Architecture Diagram

Directory Structure

Application Startup Flow

Broker Plugin System

Plugin Structure

Each broker follows a standardized directory structure:

Plugin Metadata (plugin.json)

Dynamic Plugin Loading

Service Layer Pattern

Services encapsulate business logic, keeping routes thin:

Blueprint Categories

Category
Blueprints
Purpose

Core

auth, core, dashboard

Authentication, home, setup

Trading

orders, search, apikey

Order management, symbol search

Strategies

strategy, chartink, python_strategy, flow

Webhook strategies

Data

tv_json, gc_json, historify

Chart data, historical data

Analytics

gex, ivchart, ivsmile, oiprofile, oitracker, straddle_chart, vol_surface

Options analytics tools

Monitoring

log, traffic, latency, security, health

Logs, metrics, health

Admin

admin, settings, telegram

Configuration

Sandbox

analyzer, sandbox

Paper trading

Frontend

react_app, platforms

UI serving

Request Flow

Running the Application

Access Points

URL
Purpose

http://127.0.0.1:5000

Main application

http://127.0.0.1:5000/api/docs

Swagger API documentation

ws://127.0.0.1:8765

WebSocket market data

Key Files Reference

File
Purpose

app.py

Application entry point, startup orchestration

extensions.py

SocketIO configuration

restx_api/__init__.py

API namespace registry

utils/plugin_loader.py

Broker plugin discovery

database/auth_db.py

Authentication database operations

Environment Variables

Last updated