Architecture

System Architecture

Architectural Style

OpenAlgo employs a Monolithic Application Architecture with a RESTful API interface. The core logic, broker interactions, database management, and API endpoints are contained within a single Flask application process.

Key characteristics:

  • Centralized Codebase: All components reside within the same project structure.

  • Flask Framework: Utilizes the Flask microframework for web application structure and request handling.

  • Flask-RESTX: Leverages Flask-RESTX for building structured REST APIs with Swagger documentation.

  • Blueprints/Namespaces: Organizes API endpoints and application logic into modular blueprints (Flask) and namespaces (Flask-RESTX).

  • SQLAlchemy: Uses SQLAlchemy as the Object-Relational Mapper (ORM) for database interactions.

Technology Stack

  • Programming Language: Python 3

  • Web Framework: Flask

  • API Framework: Flask-RESTX

  • Database ORM: SQLAlchemy

  • Real-time Communication: Flask-SocketIO

  • Rate Limiting: Flask-Limiter

  • Cross-Origin Resource Sharing: Flask-CORS

  • Authentication: Flask-Login, Flask-Bcrypt, PyJWT (likely for API keys/tokens)

  • Web Server Gateway Interface (WSGI): Werkzeug (Flask's default), Gunicorn for production.

  • Database: (Defined by DATABASE_URL environment variable, Sqlite3 based on common usage with SQLAlchemy)

  • Environment Management: python-dotenv

  • Deployment: Docker (Dockerfile, docker-compose.yaml), AWS Elastic Beanstalk (.ebextensions)

  • Frontend (UI Templates): Jinja2, DaisyUI with Tailwind CSS (based on tailwind.config.js)

Directory Structure Overview

  • .ebextensions/: Configuration files for AWS Elastic Beanstalk deployment.

  • blueprints/: Contains Flask Blueprints, organizing application features and web routes (e.g., auth, dashboard, orders).

  • broker/: Core logic for interacting with different stock brokers. Contains subdirectories for each supported broker (e.g., jainampro).

  • database/: SQLAlchemy models, database initialization scripts, and data access logic (e.g., auth_db.py, user_db.py).

  • design/: Location for this design documentation.

  • docs/: Likely contains user-facing documentation or generated docs.

  • restx_api/: Defines the Flask-RESTX API structure, namespaces, and models.

  • static/: Static assets for the web UI (CSS, JavaScript, images).

  • strategies/: Implementation of trading strategies.

  • templates/: Jinja2 HTML templates for the web UI.

  • utils/: Common utility functions and classes used across the application (e.g., env_check.py, latency_monitor.py, plugin_loader.py).

  • app.py: Main Flask application entry point, initializes the app, extensions, and blueprints.

  • requirements.txt: Lists Python package dependencies.

  • Dockerfile, docker-compose.yaml: Configuration for building and running the application with Docker.

  • .env, .sample.env: Environment variable configuration.

Component Diagram (Mermaid)

Last updated