try:
    from dotenv import load_dotenv
    load_dotenv()
except ImportError:
    pass

from flask import Flask, current_app, render_template
from werkzeug.exceptions import HTTPException

from config import Config

from routes.deploy import deploy_bp
from routes.main_site import main_site_bp
from routes.seo import seo_bp


def create_app():
    app = Flask(__name__, static_folder="static", static_url_path="/static")
    app.config.from_object(Config)

    @app.errorhandler(HTTPException)
    def handle_http_exception(exc: HTTPException):
        code = exc.code if exc.code is not None else 500
        if code == 500:
            return render_template("500.html"), 500
        if 400 <= code < 600:
            return render_template("error.html", code=code), code
        return exc.get_response()

    @app.errorhandler(Exception)
    def handle_unexpected_error(exc: Exception):
        if current_app.debug:
            raise exc
        return render_template("500.html"), 500

    app.register_blueprint(deploy_bp)
    app.register_blueprint(main_site_bp)
    app.register_blueprint(seo_bp)

    return app

app = create_app()

if __name__ == "__main__":
    app.run(debug=True, port=5000)
