rag-data-platform / app /__init__.py
Vipooshanb's picture
Deploy Mozhii RAG Data Platform
af25178 verified
Raw
History Blame Contribute Delete
4.12 kB
"""
=============================================================================
Mozhii RAG Data Platform - Flask Application Factory
=============================================================================
This module contains the Flask application factory function.
The factory pattern allows us to create multiple instances of the app,
which is useful for testing and running different configurations.
Architecture:
- Flask as the web framework
- Blueprint-based routing for modular code organization
- Service layer for business logic separation
- Local storage with HuggingFace sync capability
=============================================================================
"""
from flask import Flask
from flask_cors import CORS
import os
def create_app(config_name=None):
"""
Application factory function.
This function creates and configures the Flask application.
Using a factory pattern allows for:
- Multiple app instances with different configs
- Better testing capabilities
- Delayed initialization of extensions
Args:
config_name: Optional configuration name ('development', 'production', 'testing')
Returns:
Flask: Configured Flask application instance
"""
# -------------------------------------------------------------------------
# Create Flask App Instance
# -------------------------------------------------------------------------
# template_folder: Where HTML templates are stored
# static_folder: Where CSS, JS, and assets are stored
app = Flask(
__name__,
template_folder='../templates',
static_folder='../static'
)
# -------------------------------------------------------------------------
# Load Configuration
# -------------------------------------------------------------------------
# Import and apply configuration settings
from .config import Config
app.config.from_object(Config)
# -------------------------------------------------------------------------
# Initialize Extensions
# -------------------------------------------------------------------------
# Enable CORS for API access from different origins
# This is important if the frontend is served from a different domain
CORS(app)
# -------------------------------------------------------------------------
# Ensure Data Directories Exist
# -------------------------------------------------------------------------
# Create the directory structure for storing files locally
# before they are pushed to HuggingFace
data_dirs = [
'data/pending/raw',
'data/pending/cleaned',
'data/pending/chunked',
'data/approved/raw',
'data/approved/cleaned',
'data/approved/chunked'
]
for dir_path in data_dirs:
full_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), dir_path)
os.makedirs(full_path, exist_ok=True)
# -------------------------------------------------------------------------
# Register Blueprints (Route Modules)
# -------------------------------------------------------------------------
# Blueprints allow us to organize routes into separate modules
# Each tab in the UI has its own blueprint
from .routes import main_bp, raw_data_bp, cleaning_bp, chunking_bp, admin_bp
# Main routes (index page, etc.)
app.register_blueprint(main_bp)
# Raw Data Tab API endpoints
app.register_blueprint(raw_data_bp, url_prefix='/api/raw')
# Cleaning Tab API endpoints
app.register_blueprint(cleaning_bp, url_prefix='/api/cleaning')
# Chunking Tab API endpoints
app.register_blueprint(chunking_bp, url_prefix='/api/chunking')
# Admin approval endpoints
app.register_blueprint(admin_bp, url_prefix='/api/admin')
# -------------------------------------------------------------------------
# Return Configured App
# -------------------------------------------------------------------------
return app