ar / app.py
gsstec's picture
Upload app.py with huggingface_hub
42c034e verified
from flask import Flask, render_template, request, jsonify
from flask_cors import CORS
from datetime import datetime
import json
import os
app = Flask(__name__)
CORS(app)
# Global storage for ngrok URLs (in production, use Redis or database)
current_urls = {
'base_url': '',
'last_updated': '',
'portals': []
}
@app.route('/')
def index():
"""Main AR Portal Dashboard"""
return render_template('ar_dashboard.html',
base_url=current_urls.get('base_url', ''),
last_updated=current_urls.get('last_updated', ''),
portals=current_urls.get('portals', []))
@app.route('/api/update-urls', methods=['POST'])
def update_urls():
"""API endpoint to receive ngrok URLs from the system"""
try:
data = request.get_json()
if not data or 'base_url' not in data:
return jsonify({'error': 'base_url is required'}), 400
base_url = data['base_url']
timestamp = datetime.now().isoformat()
# Define all AEGIS portals
portals = [
{
'name': 'Portal Control',
'url': f'{base_url}/portal',
'path': '/portal',
'icon': 'settings',
'color': 'blue',
'description': 'Main control center'
},
{
'name': 'SciBERT Analysis',
'url': f'{base_url}/analysis',
'path': '/analysis',
'icon': 'bar-chart-3',
'color': 'green',
'description': 'Scientific analysis tools'
},
{
'name': 'Conductor',
'url': f'{base_url}/conductor',
'path': '/conductor',
'icon': 'cpu',
'color': 'purple',
'description': 'System orchestration'
},
{
'name': 'Economic Modal',
'url': f'{base_url}/economic',
'path': '/economic',
'icon': 'dollar-sign',
'color': 'yellow',
'description': 'Economic modeling'
},
{
'name': 'War Modal',
'url': f'{base_url}/war',
'path': '/war',
'icon': 'shield',
'color': 'red',
'description': 'Strategic analysis'
},
{
'name': 'Disease Modal',
'url': f'{base_url}/disease',
'path': '/disease',
'icon': 'bug',
'color': 'orange',
'description': 'Disease tracking'
},
{
'name': 'DeepSeek',
'url': f'{base_url}/deepseek',
'path': '/deepseek',
'icon': 'brain',
'color': 'indigo',
'description': 'AI deep analysis'
},
{
'name': 'Image Modal',
'url': f'{base_url}/image',
'path': '/image',
'icon': 'image',
'color': 'pink',
'description': 'Image processing'
},
{
'name': 'Drug Development',
'url': f'{base_url}/drug',
'path': '/drug',
'icon': 'pill',
'color': 'teal',
'description': 'Pharmaceutical research'
},
{
'name': 'Visual Kinetic',
'url': f'{base_url}/visual-kinetic',
'path': '/visual-kinetic',
'icon': 'eye',
'color': 'cyan',
'description': 'Visual analytics'
}
]
# Update global storage
current_urls.update({
'base_url': base_url,
'last_updated': timestamp,
'portals': portals
})
return jsonify({
'success': True,
'message': 'URLs updated successfully',
'base_url': base_url,
'timestamp': timestamp,
'portals_count': len(portals)
})
except Exception as e:
return jsonify({'error': str(e)}), 500
@app.route('/api/status')
def status():
"""Get current system status"""
return jsonify({
'status': 'online',
'base_url': current_urls.get('base_url', ''),
'last_updated': current_urls.get('last_updated', ''),
'portals_count': len(current_urls.get('portals', [])),
'total_portals': 10
})
@app.route('/health')
def health():
"""Health check endpoint"""
return jsonify({'status': 'healthy', 'timestamp': datetime.now().isoformat()})
if __name__ == '__main__':
port = int(os.environ.get('PORT', 7860))
app.run(host='0.0.0.0', port=port, debug=False)