import os from flask import Flask from .models import db, User from .routes import bp def create_app(): app = Flask(__name__, instance_relative_config=False) app.config['SECRET_KEY'] = os.getenv('SECRET_KEY', 'change-me') app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////app/data/streamhub.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['ADMIN_USERNAME'] = os.getenv('ADMIN_USERNAME', 'admin') app.config['ADMIN_PASSWORD'] = os.getenv('ADMIN_PASSWORD', 'ChangeMe123!') app.config['PUBLIC_BASE_URL'] = os.getenv('PUBLIC_BASE_URL', 'https://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', app.config['PUBLIC_BASE_URL'].rstrip('/') + '/hls') app.config['MEDIAMTX_API_URL'] = os.getenv('MEDIAMTX_API_URL', 'http://mediamtx:9997') db.init_app(app) app.register_blueprint(bp) with app.app_context(): db.create_all() if not User.query.filter_by(username=app.config['ADMIN_USERNAME']).first(): admin = User(username=app.config['ADMIN_USERNAME'], role='admin', active=True) admin.set_password(app.config['ADMIN_PASSWORD']) db.session.add(admin) db.session.commit() return app