57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
# app.py - Main Flask Application Entry Point
|
|
|
|
import os
|
|
from flask import Flask
|
|
|
|
from config import SECRET_KEY, STATIC_FOLDER, STATIC_URL_PATH, TTS_API_URL, TTS_API_KEY, DATABASE
|
|
from db import init_app as init_db
|
|
from routes import register_blueprints
|
|
|
|
|
|
def create_app():
|
|
"""Application factory function."""
|
|
app = Flask(__name__, static_folder=STATIC_FOLDER, static_url_path=STATIC_URL_PATH)
|
|
|
|
# Configure app
|
|
app.secret_key = SECRET_KEY
|
|
app.config['SESSION_COOKIE_HTTPONLY'] = True
|
|
app.config['SESSION_COOKIE_SAMESITE'] = 'Lax'
|
|
app.config['SESSION_COOKIE_SECURE'] = os.getenv('FLASK_ENV') == 'production'
|
|
app.config['PERMANENT_SESSION_LIFETIME'] = 86400 # 24 hours
|
|
app.config['PREFERRED_URL_SCHEME'] = 'https'
|
|
|
|
# Trust the reverse proxy headers from Coolify/Traefik
|
|
from werkzeug.middleware.proxy_fix import ProxyFix
|
|
app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1, x_proto=1, x_host=1, x_prefix=1)
|
|
|
|
# Initialize database
|
|
init_db(app)
|
|
|
|
# Register all blueprints
|
|
register_blueprints(app)
|
|
|
|
return app
|
|
|
|
|
|
# Create app instance
|
|
app = create_app()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
print("=" * 60)
|
|
print("🎧 Audiobook Maker Pro v4 Starting...")
|
|
print("=" * 60)
|
|
print(f"📍 TTS API Server: {TTS_API_URL}")
|
|
print(f"📍 API Key: {'✅ Configured' if TTS_API_KEY else '❌ NOT CONFIGURED!'}")
|
|
print(f"📍 Database: {DATABASE}")
|
|
print(f"📍 Static Files: {STATIC_FOLDER}")
|
|
print(f"📍 Default Admin: admin / admin123")
|
|
print("-" * 60)
|
|
|
|
if not TTS_API_KEY:
|
|
print("⚠️ WARNING: TTS_API_KEY not set in .env file!")
|
|
|
|
print("=" * 60)
|
|
|
|
app.run(debug=True, port=5009)
|