[![license][badge-license]][badge-url-license] [![chat][badge-chat]][badge-url-chat]
A comprehensive, modern dashboard for monitoring and managing Task Execution Service (TES) instances and workflow execution across federated cloud infrastructures. Built as part of the [ELIXIR Cloud][res-elixir-cloud] ecosystem, this dashboard provides real-time insights into distributed computing resources and seamless task management capabilities.
- Real-time Service Status: Monitor health of TES gateway and all federated nodes
- Network Topology Visualization: Interactive map showing TES instances across ELIXIR federation
- Performance Metrics: Response times, connectivity status, and service availability
- Automated Health Checks: Continuous monitoring with 3-second refresh intervals
- Task Submission: Submit and track computational tasks across the federation
- Workflow Orchestration: Support for CWL, Nextflow, and Snakemake workflows
- Batch Processing: Manage large-scale batch job submissions
- Real-time Task Tracking: Monitor task progress, logs, and execution status
- Node Management: Add, remove, and configure TES nodes in the federation
- Service Administration: Comprehensive control panel for system administrators
- Authentication System: Secure admin access with role-based permissions
- Configuration Management: Dynamic service configuration and monitoring
- Responsive Design: Works seamlessly on desktop, tablet, and mobile devices
- Dark Theme Support: Modern authentication interface with clean aesthetics
- Interactive Components: Rich data visualizations and intuitive navigation
- Real-time Updates: Live data refresh without page reloads
- Python 3.8+ (recommended: 3.9 or higher)
- Node.js 16+ (recommended: 18 LTS or higher)
- npm or yarn package manager
- Git for cloning the repository
-
Clone the repository:
git clone https://github.com/elixir-cloud-aai/elixir-cloud-demos.git cd elixir-cloud-demos -
Start the complete dashboard:
./run.sh
The startup script will:
- β Create and activate Python virtual environment
- β Install all backend dependencies
- β Install all frontend dependencies
- β
Start Flask backend server on
http://localhost:8000 - β
Start React development server on
http://localhost:3000
-
Open your browser and navigate to:
- π Frontend Dashboard: http://localhost:3000
- π§ Backend API: http://localhost:8000
If you prefer to run the services separately:
cd backend
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
python app.pyThe backend will be available at http://localhost:8000
cd frontend
npm install
npm startThe frontend will be available at http://localhost:3000
Build and run with Docker:
# Build images
./build-and-push-images.sh
# Deploy with Docker Compose (if available)
docker-compose up -delixir-cloud-demos/
βββ π README.md # This file
βββ π backend/ # Flask Backend API
β βββ app.py # Main Flask application
β βββ requirements.txt # Python dependencies
β βββ tes_instance_locations.json # TES federation configuration
β βββ Dockerfile # Backend container image
β βββ uploads/ # File upload directory
βββ π frontend/ # React Frontend Application
β βββ package.json # Node.js dependencies
β βββ Dockerfile # Frontend container image
β βββ src/
β β βββ components/ # Reusable UI components
β β β βββ auth/ # Authentication components
β β β βββ charts/ # Data visualization
β β β βββ common/ # Shared components
β β β βββ forms/ # Input forms
β β β βββ logs/ # Log viewing
β β β βββ tables/ # Data tables
β β βββ pages/ # Application pages
β β β βββ Dashboard.js # Main dashboard
β β β βββ Utilities.js # Service status monitoring
β β β βββ NodeManagement.js # Admin node management
β β β βββ Tasks.js # Task management
β β β βββ Workflows.js # Workflow management
β β β βββ NetworkTopology.js # Network visualization
β β βββ contexts/ # React contexts
β β β βββ AuthContext.js # Authentication state
β β βββ services/ # API communication
β β βββ hooks/ # Custom React hooks
β β βββ utils/ # Utility functions
β β βββ styles/ # CSS stylesheets
β βββ public/ # Static assets
- Flask REST API with comprehensive TES management endpoints
- Service Health Monitoring with real-time status checks
- Node Management API for federated TES network administration
- Batch Processing support for large-scale job submissions
- CORS-enabled for seamless frontend integration
- React 18 with modern hooks and context API
- Styled Components for component-scoped styling
- Axios for HTTP client communication
- Lucide React for consistent iconography
- Responsive Design with mobile-first approach
- Admin Authentication with session management
- Protected Routes for administrative functions
- Role-based Access for sensitive operations
- 24-hour Sessions with automatic logout
Navigate to Utilities β Service Status to monitor the health of your TES federation:
- Gateway Status: Monitor the main TES gateway service
- Node Health: Real-time status of all federated TES nodes
- Response Times: Performance metrics for each service
- Auto-refresh: Status updates every 3 seconds while viewing
Access Administration β Node Management to manage your TES federation:
- Login: Use admin credentials (
tesadmin/admin@dashboard) - Add Nodes: Configure new TES instances in the federation
- Test Connectivity: Verify node health and connectivity
- Remove Nodes: Safely remove outdated or offline nodes
- Submit Tasks: Use the task submission interface for individual jobs
- Batch Processing: Submit multiple jobs with batch processing
- Monitor Progress: Track task execution in real-time
- View Logs: Access detailed execution logs and error messages
Visualize your TES federation:
- Geographic View: See TES nodes distributed across regions
- Connection Status: Monitor network connectivity between nodes
- Performance Metrics: View latency and throughput statistics
The backend can be configured through environment variables:
# Backend configuration
export TES_GATEWAY_URL="http://localhost:8000"
export FLASK_ENV="development" # or "production"
export CORS_ORIGINS="http://localhost:3000"Configure your TES instances in backend/tes_instance_locations.json:
{
"id": "my-tes-node",
"name": "My TES Node",
"url": "https://my-tes-node.example.com",
"country": "My Country",
"lat": 40.7128,
"lng": -74.0060,
"status": "healthy",
"description": "My TES instance description"
}Frontend settings in frontend/.env:
REACT_APP_API_URL=http://localhost:8000
REACT_APP_REFRESH_INTERVAL=30000GET /api/service-status # Get all service statuses
GET /api/service-health/{id} # Get specific service health
GET /api/nodes # List all TES nodesPOST /api/nodes # Add new TES node
PUT /api/nodes/{id} # Update TES node
DELETE /api/nodes/{id} # Remove TES node
GET /api/nodes/{id}/test # Test node connectivityGET /api/tasks # List tasks
POST /api/tasks # Submit new task
GET /api/tasks/{id} # Get task details
GET /api/tasks/{id}/logs # Get task logscd backend
python -m pytest tests/cd frontend
npm test./test-integration.sh- Create page component in
frontend/src/pages/ - Add route in
frontend/src/App.js - Update navigation in
frontend/src/components/common/Sidebar.js
- Add endpoint in
backend/app.py - Create service function in
frontend/src/services/ - Use service in React components
- Use Styled Components for component styling
- Follow mobile-first responsive design
- Use Lucide React icons for consistency
- Maintain dark theme support
Backend won't start:
- Check Python version (3.8+ required)
- Verify virtual environment activation
- Install dependencies:
pip install -r requirements.txt
Frontend won't start:
- Check Node.js version (16+ required)
- Clear node_modules:
rm -rf node_modules && npm install - Check port 3000 availability
Service status shows all offline:
- Verify backend is running on port 8000
- Check CORS configuration
- Validate TES node URLs in configuration
Admin login not working:
- Use credentials:
tesladmin/admin@dashboard - Check browser local storage
- Clear browser cache if needed
- Use connection pooling for TES node communications
- Implement caching for service status responses
- Add rate limiting for API endpoints
- Use async/await for concurrent node health checks
- Implement React.memo for expensive components
- Use lazy loading for pages and components
- Add service worker for offline functionality
- Optimize bundle size with code splitting
- Admin sessions expire after 24 hours
- Passwords are validated client-side
- Consider implementing JWT tokens for production
- All TES communications use HTTPS in production
- CORS is properly configured for frontend-backend communication
- API rate limiting prevents abuse
- No sensitive data stored in local storage
- All user inputs are sanitized
- TES node credentials handled securely
We welcome contributions to the TES Dashboard! Here's how to get started:
- Fork the repository
- Clone your fork locally
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and test thoroughly
- Commit with descriptive messages:
git commit -m 'Add amazing feature' - Push to your branch:
git push origin feature/amazing-feature - Submit a pull request
- Code Style: Follow existing patterns and linting rules
- Testing: Add tests for new functionality
- Documentation: Update README and inline comments
- Backwards Compatibility: Ensure existing features still work
- Check existing issues first
- Provide detailed reproduction steps
- Include system information (OS, browser, versions)
- Add screenshots or logs if helpful
- Describe the use case clearly
- Explain the expected behavior
- Consider implementation approaches
- Discuss with maintainers first for large changes