import os
from flask import Flask
from dotenv import load_dotenv
from werkzeug.middleware.proxy_fix import ProxyFix
from .utils.db import init_app as init_db

def create_app():
    load_dotenv()
    
    # Template folder is up one level from 'app' package
    app = Flask(__name__, template_folder='../templates', static_folder='../static')
    
    # Config
    app.secret_key = os.getenv("FLASK_SECRET_KEY", "dev_key_super_secret")
    app.config['SESSION_COOKIE_SECURE'] = True
    app.config['SESSION_COOKIE_HTTPONLY'] = True
    app.config['SESSION_COOKIE_SAMESITE'] = 'Lax'
    
    # Proxy Fix (for Nginx/Reverse Proxy)
    app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_host=1)
    
    # Init DB
    init_db(app)
    
    # Blueprints
    from .routes import main_bp
    app.register_blueprint(main_bp)
    
    from .api import api_bp
    app.register_blueprint(api_bp, url_prefix='/api')

    return app
