import logging from flask import Flask from dotenv import load_dotenv load_dotenv() logging.basicConfig(level=logging.INFO) from extensions import limiter # noqa: E402 from api import api_bp # noqa: E402 # Entry point only — imports and wires everything together. Business # logic lives in services/, data access in repositories/, routes in # api.py. Nothing else belongs in this file per CLAUDE.md §5/§18. app = Flask(__name__) limiter.init_app(app) app.register_blueprint(api_bp) # Sentry initialisation is a Phase 7 ship-gate item (CLAUDE.md §19 step # 54 — "staging first, then production"). Deliberately not wired here # yet so earlier phases never silently depend on SENTRY_DSN being set. if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, debug=False)