import logging import os from logging.handlers import RotatingFileHandler from flask import Flask from backend.config import FRONTEND_DIST, LOG_DIR, PORT, SECRET_KEY_PATH, STATIC_DIR from backend.routes.api import api_bp from backend.routes.spa import spa_bp os.makedirs(LOG_DIR, exist_ok=True) os.makedirs(STATIC_DIR, exist_ok=True) def _load_secret_key(): secret = os.environ.get("SECRET_KEY") if not secret and os.path.exists(SECRET_KEY_PATH): with open(SECRET_KEY_PATH, "rb") as f: secret = f.read() if not secret: secret = os.urandom(24) with open(SECRET_KEY_PATH, "wb") as f: f.write(secret) return secret def create_app(): app = Flask(__name__) app.secret_key = _load_secret_key() handler = RotatingFileHandler( os.path.join(LOG_DIR, "app.log"), maxBytes=1024 * 1024 * 10, backupCount=5, encoding="utf-8", ) handler.setLevel(logging.INFO) handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")) app.logger.addHandler(handler) app.logger.setLevel(logging.INFO) app.register_blueprint(api_bp) app.register_blueprint(spa_bp) return app