import os from flask import Flask from .models import db from .routes import bp from .services.bootstrap import bootstrap_system def create_app(): app = Flask(__name__, instance_relative_config=True) app.config['SECRET_KEY'] = os.getenv('SECRET_KEY', 'change-me') app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URL') app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['PUBLIC_BASE_URL'] = os.getenv('PUBLIC_BASE_URL', 'http://localhost') app.config['MEDIA_BASE_URL'] = os.getenv('MEDIA_BASE_URL', 'http://mediamtx:8888') app.config['MEDIA_PUBLIC_HLS_BASE'] = os.getenv('MEDIA_PUBLIC_HLS_BASE', 'http://localhost/hls') app.config['MEDIAMTX_API_URL'] = os.getenv('MEDIAMTX_API_URL', 'http://mediamtx:9997') app.config['SMTP_HOST'] = os.getenv('SMTP_HOST', '') app.config['SMTP_PORT'] = int(os.getenv('SMTP_PORT', '2525')) app.config['SMTP_USERNAME'] = os.getenv('SMTP_USERNAME', '') app.config['SMTP_PASSWORD'] = os.getenv('SMTP_PASSWORD', '') app.config['MAIL_FROM'] = os.getenv('MAIL_FROM', os.getenv('SMTP_USERNAME', 'noreply@example.com')) app.config['MAIL_ENABLED'] = os.getenv('MAIL_ENABLED', 'true').lower() == 'true' app.config['RESET_TOKEN_TTL_MINUTES'] = int(os.getenv('RESET_TOKEN_TTL_MINUTES', '60')) db.init_app(app) app.register_blueprint(bp) with app.app_context(): db.create_all() bootstrap_system(app) return app