"""Flask application for the Local Radio web dashboard.""" import os from flask import Flask, send_from_directory from .config import STATIC_DIR from .db import close_db def create_app(): app = Flask(__name__, static_folder=str(STATIC_DIR), static_url_path="") # Register teardown app.teardown_appcontext(close_db) # Register API blueprints from .api import status_bp, queue_bp, episodes_bp, feeds_bp, schedule_bp, music_bp, logs_bp, stream_bp app.register_blueprint(status_bp, url_prefix="/api") app.register_blueprint(queue_bp, url_prefix="/api") app.register_blueprint(episodes_bp, url_prefix="/api") app.register_blueprint(feeds_bp, url_prefix="/api") app.register_blueprint(schedule_bp, url_prefix="/api") app.register_blueprint(music_bp, url_prefix="/api") app.register_blueprint(logs_bp, url_prefix="/api") app.register_blueprint(stream_bp, url_prefix="/api") # SPA catch-all: serve index.html for any non-API route @app.route("/", defaults={"path": ""}) @app.route("/") def serve_spa(path): static = app.static_folder if static and path and os.path.exists(os.path.join(static, path)): return send_from_directory(static, path) if static and os.path.exists(os.path.join(static, "index.html")): return send_from_directory(static, "index.html") return "

Local Radio

Frontend not built. Run: cd web/frontend && npm run build

", 200 return app app = create_app() if __name__ == "__main__": app.run(host="0.0.0.0", port=5000, debug=True)