35 lines
1.4 KiB
Python
35 lines
1.4 KiB
Python
|
|
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
|