A comprehensive data orchestration engine designed for SaaS integration. The platform enables users to design, execute, and monitor complex data workflows through a visual interface.
- Visual DAG Builder: Drag-and-drop interface for designing data workflows
- Extensible Node System: Support for SQL, Python, HTTP, and custom node types
- Multi-tenant Architecture: Secure isolation with role-based access control
- Apache Airflow Integration: Production-tested orchestration engine
- Comprehensive Monitoring: Real-time execution tracking, logs, and metrics
- Data Lineage: Track data flow and transformations across workflows
- Secrets Management: Secure credential storage with HashiCorp Vault
- Multiple Execution Backends: Local, Kubernetes, and serverless support
The platform consists of:
- Frontend: React + TypeScript + Vite with React Flow for visual DAG building
- Backend: FastAPI + Python with SQLAlchemy for data persistence
- Orchestration: Apache Airflow with custom operators
- Storage: PostgreSQL (metadata), MinIO/S3 (artifacts), Redis (message broker)
- Observability: Prometheus + Grafana for metrics, structured logging
- Python 3.11+
- Node.js 18+
- Docker and Docker Compose
- Git
git clone <repository-url>
cd data-workflow-platformStart PostgreSQL, Redis, MinIO, Vault, and Airflow using Docker Compose:
docker-compose up -dWait for all services to be healthy:
docker-compose pscd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Copy environment file
cp .env.example .env
# Run database migrations
alembic upgrade head
# Start the API server
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000The API will be available at http://localhost:8000
cd frontend
# Install dependencies
npm install
# Start development server
npm run devThe UI will be available at http://localhost:5173
cd backend
# Run tests
pytest
# Run tests with coverage
pytest --cov=app --cov-report=html
# Format code
black .
ruff check . --fix
# Type checking
mypy appcd frontend
# Run tests
npm test
# Run tests in watch mode
npm run test:watch
# Lint code
npm run lint
# Format code
npm run format
# Build for production
npm run build.
├── backend/ # FastAPI backend
│ ├── app/ # Application code
│ │ ├── api/ # API endpoints
│ │ ├── core/ # Core functionality
│ │ ├── models/ # SQLAlchemy models
│ │ ├── services/ # Business logic
│ │ └── main.py # Application entry point
│ ├── tests/ # Test suite
│ ├── alembic/ # Database migrations
│ └── requirements.txt # Python dependencies
│
├── frontend/ # React frontend
│ ├── src/ # Source code
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── hooks/ # Custom hooks
│ │ ├── services/ # API clients
│ │ └── main.tsx # Application entry point
│ ├── public/ # Static assets
│ └── package.json # Node dependencies
│
├── airflow/ # Airflow configuration
│ ├── dags/ # Generated DAG files
│ ├── plugins/ # Custom operators
│ └── logs/ # Execution logs
│
├── docker-compose.yml # Local development services
└── README.md # This file
When running locally:
- Frontend UI: http://localhost:5173
- Backend API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
- Airflow UI: http://localhost:8080 (admin/admin)
- MinIO Console: http://localhost:9001 (minioadmin/minioadmin)
- Vault: http://localhost:8200 (token: dev-token)
cd backend
pytest # Run all tests
pytest tests/test_main.py # Run specific test file
pytest -v # Verbose output
pytest --cov=app # With coveragecd frontend
npm test # Run all tests
npm run test:watch # Watch modeEdit backend/.env to configure:
- Database connection
- Redis connection
- S3/MinIO settings
- Airflow API settings
- Vault settings
- JWT secrets
The frontend proxies API requests to the backend. Configure the proxy in frontend/vite.config.ts.
# Backend
docker build -t workflow-backend:latest ./backend
# Frontend
docker build -t workflow-frontend:latest ./frontendKubernetes manifests will be provided in future releases.
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
[License information to be added]
For issues and questions, please open a GitHub issue.