""" GKACHELE SaaS PageBuilder - Sistema Modular """ import os import sys from flask import Flask, jsonify BASE_DIR = os.path.dirname(os.path.abspath(__file__)) PROJECT_ROOT = os.path.dirname(BASE_DIR) if PROJECT_ROOT not in sys.path: sys.path.insert(0, PROJECT_ROOT) try: from .config import SECRET_KEY, PORT from .database import init_db from .routes.auth import auth_bp from .routes.dashboard import dashboard_bp from .routes.customizer import customizer_bp from .routes.admin import admin_bp from .routes.public import public_bp except ImportError: from config import SECRET_KEY, PORT from database import init_db from routes.auth import auth_bp from routes.dashboard import dashboard_bp from routes.customizer import customizer_bp from routes.admin import admin_bp from routes.public import public_bp try: from elementor.routes import elementor_bp except ImportError: elementor_bp = None app = Flask(__name__, template_folder='templates', static_folder='static') app.secret_key = SECRET_KEY app.config['SESSION_COOKIE_SAMESITE'] = 'Lax' # Inicializar Base de Datos init_db() # Registrar Blueprints app.register_blueprint(auth_bp) app.register_blueprint(dashboard_bp) app.register_blueprint(customizer_bp) app.register_blueprint(admin_bp) app.register_blueprint(public_bp) if elementor_bp is not None and 'elementor' not in app.blueprints: app.register_blueprint(elementor_bp) # Manejadores de Errores Globales @app.errorhandler(500) def handle_500(e): response = jsonify({'success': False, 'error': 'Error interno del servidor'}) response.status_code = 500 return response @app.errorhandler(404) def handle_404(e): return jsonify({'success': False, 'error': 'No encontrado'}), 404 @app.errorhandler(Exception) def handle_exception(e): print(f"ERROR: EXCEPCION: {e}") return jsonify({'success': False, 'error': str(e)}), 500 # Middleware @app.after_request def add_header(response): response.headers.pop('X-Frame-Options', None) response.headers['Content-Security-Policy'] = "frame-ancestors *;" return response if __name__ == '__main__': print(f"GKACHELE SaaS Modular iniciado en puerto {PORT}") app.run(debug=True, host='0.0.0.0', port=PORT)