import logging from quart import Quart from quart_cors import cors from src.core.bootstrap import AppContext, setup_logging from src.core.dependency import ServerContainer from src.core.api.v1.routes import server_routes from src.core.api.v1.middleware import register_error_handlers setup_logging() logger = logging.getLogger(__name__) app = Quart(__name__) app = cors(app, allow_origin="*") register_error_handlers(app) server_container = ServerContainer() ctx = AppContext(server_container) config = server_container.config() log_service = server_container.log_service() mysql_pool = server_container.mysql_pool() routes = server_routes(mysql_pool, log_service, config) app.register_blueprint(routes) @app.before_serving async def startup(): logger.info("Starting application...") await ctx.start_up() logger.info("Application started successfully") @app.after_serving async def shutdown(): logger.info("Shutting down application...") await ctx.shutdown() logger.info("Application shutdown successfully")