import os import sys # DON'T CHANGE THIS !!! sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) from flask import Flask, send_from_directory from flask_cors import CORS from src.models.user import db from src.routes.user import user_bp from src.routes.ai_chat import ai_chat_bp app = Flask(__name__, static_folder=os.path.join(os.path.dirname(__file__), 'static')) app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY', 'asdf#FGSgvasgf$5$WGT') # Enable CORS for all routes CORS(app) app.register_blueprint(user_bp, url_prefix='/api') app.register_blueprint(ai_chat_bp, url_prefix='/api') # Database configuration database_path = os.path.join(os.path.dirname(__file__), 'database', 'app.db') app.config['SQLALCHEMY_DATABASE_URI'] = f"sqlite:///{database_path}" app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # Ensure database directory exists os.makedirs(os.path.dirname(database_path), exist_ok=True) db.init_app(app) with app.app_context(): db.create_all() # Health check endpoint @app.route('/health') def health_check(): return {'status': 'healthy', 'message': 'Server is running'}, 200 # GPU status endpoint (if needed for health check) @app.route('/api/gpu-status') def gpu_status(): return {'status': 'ok', 'message': 'GPU status endpoint'}, 200 @app.route('/', defaults={'path': ''}) @app.route('/') def serve(path): static_folder_path = app.static_folder if static_folder_path is None: return "Static folder not configured", 404 if path != "" and os.path.exists(os.path.join(static_folder_path, path)): return send_from_directory(static_folder_path, path) else: index_path = os.path.join(static_folder_path, 'index.html') if os.path.exists(index_path): return send_from_directory(static_folder_path, 'index.html') else: return "index.html not found", 404 if __name__ == '__main__': # Get port from environment variable, default to 5000 port = int(os.environ.get('PORT', 5000)) debug = os.environ.get('FLASK_ENV') == 'development' app.run(host='0.0.0.0', port=port, debug=debug)