FCT / app.py
Parthnuwal7
Supabase
2a317a3
"""Main Flask application for Analytics Module"""
from flask import Flask
from flask_cors import CORS
from config import Config
# Initialize Flask app
app = Flask(__name__)
app.config.from_object(Config)
CORS(app)
# Register blueprints
from routes.students import students_bp
from routes.scoring import scoring_bp
from routes.domain import domain_bp
app.register_blueprint(students_bp, url_prefix='/api/analytics')
app.register_blueprint(scoring_bp, url_prefix='/api/analytics')
app.register_blueprint(domain_bp, url_prefix='/api/analytics')
# Health check with database status
@app.route('/health', methods=['GET'])
def health_check():
from database.db import get_db_or_none, get_db_error, get_storage_mode
db = get_db_or_none()
db_status = 'connected' if db is not None else 'disconnected'
db_error = get_db_error()
storage_mode = get_storage_mode()
return {
'status': 'healthy' if db else 'degraded',
'service': 'analytics-api',
'storage_mode': storage_mode, # 'supabase' or 'local'
'database': db_status,
'db_error': db_error if db_error else None
}, 200 if db else 503
@app.route('/', methods=['GET'])
def home():
return {
'service': 'Student Profiling & Employability Scoring API',
'version': '1.0.0',
'endpoints': {
'students': '/api/analytics/students',
'personality': '/api/analytics/personality/<student_id>',
'text': '/api/analytics/text/<student_id>',
'score': '/api/analytics/score/<student_id>',
'leaderboard': '/api/analytics/leaderboard',
'domain': {
'available': '/api/analytics/domain/available',
'submit': '/api/analytics/students/<student_id>/domain-evidence',
'get': '/api/analytics/students/<student_id>/domain-evidence',
'delete': '/api/analytics/students/<student_id>/domain-evidence/<domain_type>'
}
}
}
if __name__ == '__main__':
import os
port = int(os.getenv('PORT', 7860)) # HuggingFace uses 7860
debug = os.getenv('DEBUG', 'False').lower() == 'true'
print(f"πŸš€ Analytics API starting on port {port}")
print(f"πŸ“Š Scoring modules: Universal, Personality, Text, Domain (Tech/Business/Creative/Research)")
print(f"πŸ”— Base URL: http://0.0.0.0:{port}")
app.run(host='0.0.0.0', port=port, debug=debug)