diff --git a/frontend/app/__init__.py b/frontend/app/__init__.py new file mode 100644 index 0000000..b78e36b --- /dev/null +++ b/frontend/app/__init__.py @@ -0,0 +1,41 @@ +from __future__ import annotations + +import json +import secrets +from pathlib import Path + +from flask import Flask + +from .routes import ui + + +def _load_secret_key(conf_path: Path) -> str: + default_key = secrets.token_hex(32) + + if not conf_path.exists(): + return default_key + + try: + payload = json.loads(conf_path.read_text(encoding="utf-8")) + except Exception: + return default_key + + value = payload.get("secret_key") if isinstance(payload, dict) else None + if isinstance(value, str) and value.strip(): + return value.strip() + return default_key + + +def create_app() -> Flask: + app = Flask(__name__) + + frontend_root = Path(__file__).resolve().parents[1] + project_root = Path(__file__).resolve().parents[2] + conf_path = frontend_root / "data" / "conf.json" + + app.config["PROJECT_ROOT"] = project_root + app.config["MUSIC_DIR"] = project_root / "backend" / "data" / "musiques" + app.secret_key = _load_secret_key(conf_path) + + app.register_blueprint(ui) + return app