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_URLenvironment 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
Was this helpful?