A full-stack platform that unifies ETL pipeline management and ML experiment tracking in a single real-time dashboard. FastAPI backend + React frontend + WebSocket live updates + AutoML with GridSearchCV. Run the whole stack in two terminals.
A full-stack platform that unifies ETL pipeline management and ML experiment tracking in a single real-time dashboard. FastAPI backend + React frontend + WebSocket live updates + AutoML with GridSearchCV. Run the whole stack in two terminals.
Features โข Architecture โข Setup โข Usage โข API Reference
What problem this solves
Data engineering and ML work typically live in separate tools โ Airflow for pipelines, MLflow for experiments, custom scripts for everything else. Context-switching between them creates visibility gaps: nobody knows what's running, what failed, or which model version is linked to which data run.
This platform puts all of it in one place:
- ETL pipelines with step-by-step execution tracking and live status
- ML experiments with per-algorithm metrics, versioned models, and comparison views
- AutoML (GridSearchCV) that runs multi-algorithm searches and registers the best model
- Data quality validation with configurable rules checked at each pipeline step
- WebSocket live updates โ every pipeline step, experiment completion, and AutoML progress broadcasts to all connected clients in real time
The Problems We Solve
| Problem | Traditional Approach | Our Solution | |---------|---------------------|--------------| | Fragmented tooling | Airflow + MLflow + custom scripts | Single unified dashboard | | No real-time visibility | Check logs manually, wait for emails | WebSocket-powered live updates | | ML expertise bottleneck | Only senior ML engineers can tune models | AutoML with one-click execution | | Data quality blindspots | Issues discovered in production | Integrated validation at every step | | Experiment chaos | Spreadsheets, notebooks, local files | Centralized experiment tracking |
โจ Features
Pipeline Management
- Visual Pipeline Builder: Define Extract โ Transform โ Load โ Validate โ Train steps
- Background Execution: Non-blocking pipeline runs with progress tracking
- Run History: Complete audit trail of all executions with duration and status
- Real-time Updates: WebSocket-powered live status changes
ML Experiment Tracking
- Multi-Algorithm Support: RandomForest, GradientBoosting, LogisticRegression, SVM
- Metrics Dashboard: Accuracy, Precision, Recall, F1-Score visualization
- Model Versioning: Automatic version management for trained models
- Parameter Logging: Full reproducibility with stored hyperparameters
AutoML Engine
- One-Click AutoML: Select algorithms, configure CV folds, and run
- GridSearchCV Integration: Exhaustive hyperparameter search
- Best Model Selection: Automatic identification and registration
- Progress Broadcasting: Real-time updates during optimization
Data Quality
- Validation Rules: Configurable data quality checks
- Quality Metrics: Completeness, accuracy, consistency, timeliness
- Issue Detection: Automated identification of data problems
- Profile Generation: Dataset statistics and summaries
Real-Time Monitoring
- WebSocket Connection: Instant updates without polling
- Live Log Streaming: Watch pipeline execution in real-time
- Connection Indicator: Visual status of real-time connectivity
- Multi-Client Support: Broadcast to all connected users
๐ Architecture
System Overview
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ FRONTEND โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Dashboard โ โ Pipelines โ โ Experiments โ โ AutoML โ โ
โ โ Charts โ โ Manager โ โ Tracker โ โ Engine โ โ
โ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โ
โ โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ WebSocket + REST โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ BACKEND (FastAPI) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ Connection Manager (WebSocket) โโ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Pipeline โ โ ML โ โ AutoML โ โ Data โ โ
โ โ Executor โ โ Service โ โ Service โ โ Validator โ โ
โ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โ
โ โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโ โ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DATA LAYER โ
โ โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ MongoDB โ โ File Storage โ โ
โ โ โข pipelines โ โ โข Model artifacts โ โ
โ โ โข experiments โ โ โข Datasets โ โ
โ โ โข models โ โ โข Logs โ โ
โ โ โข validations โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Tech Stack
| Layer | Technology | Purpose | |-------|------------|---------| | Frontend | React 18, Recharts, Lucide Icons | Interactive dashboard with visualizations | | Backend | FastAPI, Uvicorn | High-performance async API server | | Real-time | WebSocket | Bidirectional live updates | | ML Engine | scikit-learn, pandas, numpy | Model training and AutoML | | Database | MongoDB | Document storage for flexible schemas | | Styling | Tailwind-inspired CSS | Modern dark theme UI |
Directory Structure
/app
โโโ backend/
โ โโโ server.py # FastAPI application (1200+ lines)
โ โ โโโ WebSocket Manager # Real-time connection handling
โ โ โโโ Pipeline Executor # Background task execution
โ โ โโโ ML Service # Model training logic
โ โ โโโ AutoML Service # GridSearchCV automation
โ โ โโโ REST Endpoints # 30+ API routes
โ โโโ requirements.txt # Python dependencies
โ โโโ .env # Environment configuration
โ
โโโ frontend/
โ โโโ src/
โ โ โโโ App.js # Main React component (1700+ lines)
โ โ โ โโโ useWebSocket # Custom hook for real-time
โ โ โ โโโ DashboardPage # Stats & charts
โ โ โ โโโ PipelinesPage # Pipeline management
โ โ โ โโโ ExperimentsPage# ML experiment tracking
โ โ โ โโโ AutoMLPage # Automated ML interface
โ โ โ โโโ ValidationsPage# Data quality
โ โ โ โโโ LogsPage # Real-time logs
โ โ โโโ App.css # Styling (500+ lines)
โ โ โโโ index.js # Entry point
โ โโโ package.json # Node dependencies
โ โโโ .env # Frontend configuration
โ
โโโ data/ # Sample datasets
โโโ memory/
โ โโโ PRD.md # Product requirements document
โโโ README.md # This file
Data Flow
1. User Action (Frontend)
โ
โผ
- REST API / WebSocket (Backend)
โ
โผ
- Business Logic (Services)
โ
โโโโบ Pipeline Executor (Background Task)
โ โ
โ โผ
โ Step-by-step execution with logging
โ โ
โ โผ
โ WebSocket broadcast to all clients
โ
โโโโบ ML Service (Model Training)
โ โ
โ โผ
โ scikit-learn model fitting
โ โ
โ โผ
โ Metrics calculation & storage
โ
โโโโบ AutoML Service (Hyperparameter Search)
โ
โผ
GridSearchCV with CV folds
โ
โผ
Best model selection & registration
โ
โผ
- MongoDB (Persistence)
โ
โผ
- Response to Frontend (REST/WebSocket)
๐ Setup
Prerequisites
- Python 3.11+
- Node.js 18+
- MongoDB 6.0+
- Git
Quick Start
# 1. Clone the repository
git clone https://github.com/Mattral/etl-ml-platform ETL-ML
cd ETL-ML
2. Setup Backend
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
3. Configure Environment
cat > .env << EOF
MONGO_URL={your uri}
DBNAME=etlml_dashboard
EOF
4. Start Backend
uvicorn server:app --host 0.0.0.0 --port 8001 --reload
5. Setup Frontend (new terminal)
cd ../frontend
yarn install # or npm install
6. Configure Frontend Environment
cat > .env << EOF
REACTAPPBACKEND_URL=http://localhost:8001
EOF
7. Start Frontend
yarn start # or npm start
Docker Setup (Alternative)
# Build and run with Docker Compose
docker-compose up -d
Access the application
Frontend: http://localhost:3000
Backend: http://localhost:8001/api/docs
Environment Variables
Backend (/backend/.env)
| Variable | Description | Default | |----------|-------------|---------| | MONGO_URL | MongoDB connection string | mongodb://localhost:27017 | | DBNAME | Database name | etlml_dashboard | | AWSACCESSKEY_ID | AWS credentials (optional) | - | | AWSSECRETACCESS_KEY | AWS credentials (optional) | - | | AWSBUCKETNAME | S3 bucket for artifacts | etl-ml-storage |
Frontend (/frontend/.env)
| Variable | Description | Default | |----------|-------------|---------| | REACTAPPBACKEND_URL | Backend API URL | http://localhost:8001 |
๐ Usage
1. Seed the Database
First, populate the database with sample data:
curl -X POST http://localhost:8001/api/seed
Or use the Settings page in the UI and click "Seed Database".
2. Explore the Dashboard
Navigate to http://localhost:3000 to see:
- Stats Cards: Total pipelines, experiments, models, AutoML runs
- Pipeline Runs Chart: Success/failure trends over 7 days
- Model Accuracy Trend: Version-over-version improvement
- Data Quality Metrics: Completeness, accuracy, consistency scores
๐ธ Application Screenshots
Dashboard Overview
Main dashboard showing real-time statistics, pipeline trends, model accuracy, and data quality metrics
Experiments Tracking
ML experiment tracking interface with multi-algorithm support and comprehensive metrics visualization
Pipeline Management
Visual pipeline management showing ETL workflows, execution status, and run history
3. Run a Pipeline
# List pipelines
curl http://localhost:8001/api/pipelines
Run a specific pipeline
curl -X POST http://localhost:8001/api/pipelines/pip-001/run
4. Create an ML Experiment
curl -X POST http://localhost:8001/api/experiments \
-H "Content-Type: application/json" \
-d '{
"name": "Activity Recognition v1",
"algorithm": "RandomForest",
"parameters": {
"n_estimators": 100,
"max_depth": 10
}
}'
5. Run AutoML
curl -X POST http://localhost:8001/api/automl/run \
-H "Content-Type: application/json" \
-d '{
"experiment_name": "Best Model Search",
"algorithms": ["RandomForest", "GradientBoosting", "LogisticRegression"],
"cv_folds": 5,
"max_trials": 20
}'
6. Monitor in Real-Time
Connect to the WebSocket for live updates:
const ws = new WebSocket('ws://localhost:8001/ws');
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('Real-time update:', data);
};
๐ก API Reference
Core Endpoints
| Method | Endpoint | Description | |--------|----------|-------------| | GET | /api/health | Health check | | GET | /api/dashboard/stats | Dashboard statistics | | GET | /api/dashboard/metrics | Chart data |
Pipelines
| Method | Endpoint | Description | |--------|----------|-------------| | GET | /api/pipelines | List all pipelines | | POST | /api/pipelines | Create pipeline | | GET | /api/pipelines/{id} | Get pipeline details | | DELETE | /api/pipelines/{id} | Delete pipeline | | POST | /api/pipelines/{id}/run | Execute pipeline | | GET | /api/pipelines/{id}/runs | Get run history |
Experiments
| Method | Endpoint | Description | |--------|----------|-------------| | GET | /api/experiments | List experiments | | POST | /api/experiments | Create & run experiment | | GET | /api/experiments/{id} | Get experiment details | | DELETE | /api/experiments/{id} | Delete experiment |
AutoML
| Method | Endpoint | Description | |--------|----------|-------------| | POST | /api/automl/run | Start AutoML job | | GET | /api/automl/runs | List AutoML runs | | GET | /api/automl/runs/{id} | Get AutoML results |
Models
| Method | Endpoint | Description | |--------|----------|-------------| | GET | /api/models | List registered models | | GET | /api/models/{id} | Get model details |
Data Quality
| Method | Endpoint | Description | |--------|----------|-------------| | GET | /api/validations | List validations | | POST | /api/validations | Create validation | | GET | /api/validations/{id} | Get validation details |
WebSocket
| Endpoint | Events | |----------|--------| | ws://localhost:8001/ws | pipelinestep, pipelinecompleted, pipelinefailed, experimentcompleted, automlprogress, automlcompleted, log |
๐งช Testing
Run Backend Tests
cd backend
pytest tests/ -v
Test API Endpoints
# Health check
curl http://localhost:8001/api/health
Verify all systems
curl http://localhost:8001/api/dashboard/stats
Frontend Lint
cd frontend
yarn lint
๐ฃ Roadmap
Phase 2 (Planned)
- [ ] AWS S3 integration for model artifacts
- [ ] Pipeline scheduling with cron expressions
- [ ] Email/Slack notifications
- [ ] User authentication (JWT)
Phase 3 (Future)
- [ ] Visual DAG pipeline editor
- [ ] Model deployment as REST APIs
- [ ] Apache Airflow integration
- [ ] Multi-tenant support
๐ค Contributing
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
- Reference implementation: ruslanmv/ETL-and-Machine-Learning
- HMP Dataset for activity recognition benchmarks
- scikit-learn team for the ML toolkit
- FastAPI for the excellent async framework
Built with precision for scale. Designed for humans.