EDC management platform for TractusX EDC (Eclipse Dataspace Connector) instances with Keycloak authentication.
- 🔐 Keycloak Authentication - Secure OAuth2/OIDC authentication
- 📊 Dashboard - Real-time monitoring with statistics cards
- 🚀 EDC Deployment Wizard - Step-by-step EDC deployment
- 📋 Connector Management - Full CRUD operations for EDC connectors
- 📈 Activity Logging - Track all system activities
- Python 3.11 with FastAPI
- PostgreSQL database with SQLAlchemy ORM
- API Key Authentication (Keycloak integration ready)
- React 18 with TypeScript
- Tailwind CSS for styling
- Keycloak-js for authentication
- React Router for navigation
- Python 3.11+
- Node.js 20+
- PostgreSQL 14+ (or use SQLite for development)
- Keycloak 23+ (optional, for full authentication)
git clone <repository-url>
cd edc-management-consolecd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Create environment variables file
# Create backend/.env and set your values:
# - DATABASE_URL (PostgreSQL connection string)
# - API_KEY (your secure API key)
# - Keycloak credentials (if using Keycloak)Environment Variables (.env):
# Database
DATABASE_URL=postgresql://user:password@localhost:5432/edc_manager
# or for SQLite: DATABASE_URL=sqlite:///./edc_manager.db
# API Authentication
API_KEY=your-secure-api-key-here
# Keycloak (Optional)
CENTRALIDP_CLIENT_ID=your-client-id
CENTRALIDP_CLIENT_SECRET=your-client-secretRun Backend:
uvicorn init:app --host 0.0.0.0 --port 8000 --reloadBackend will be available at: http://localhost:8000
API Documentation: http://localhost:8000/docs
cd frontend
# Install dependencies
npm install
# Configure environment
# Create frontend/.env and set your values:Frontend Environment (.env):
VITE_API_BASE_URL=http://localhost:8000
VITE_API_KEY=your-secure-api-key-here
# Keycloak Configuration
VITE_KEYCLOAK_URL=http://localhost:8080
VITE_KEYCLOAK_REALM=CX-Central
VITE_KEYCLOAK_CLIENT_ID=CX-EDCRun Frontend:
npm run devFrontend will be available at: http://localhost:5000
If you want to use Keycloak authentication:
- Install Keycloak:
# Using Docker
docker run -p 8080:8080 \
-e KEYCLOAK_ADMIN=admin \
-e KEYCLOAK_ADMIN_PASSWORD=admin \
quay.io/keycloak/keycloak:latest start-dev- Configure Keycloak:
- Access Keycloak admin console:
http://localhost:8080 - Create realm:
CX-Central - Create client:
CX-EDC- Client Protocol:
openid-connect - Access Type:
public - Valid Redirect URIs:
http://localhost:5000/* - Web Origins:
http://localhost:5000
- Client Protocol:
- Create users and assign roles
- Enable Keycloak in Frontend:
Edit frontend/src/main.tsx:
import { initKeycloak } from './keycloak';
initKeycloak(() => {
createRoot(document.getElementById('root')!).render(
<StrictMode>
<AppNew />
</StrictMode>,
);
});The application automatically creates tables on startup. For manual migration:
cd backend
python -c "from managers.databaseManager import DatabaseManager; import os; DatabaseManager(os.getenv('DATABASE_URL')).create_tables()"- Click "Add EDC" button on dashboard
- Follow the 4-step wizard:
- Step 1: Configure Submodel Service (URL, API Key)
- Step 2: EDC Configuration (Name, URL)
- Step 3: Business Partner Number (BPN)
- Step 4: Review and Deploy
- View YAML: Click the YAML button to see connector configuration
- Edit: Modify connector settings
- Delete: Remove connector (confirmation required)
- Monitor Health: View real-time health status
- Data Space Card: Shows current dataspace (Catena-X)
- System Health: Overall system status
- Activity: Recent system activities
- EDC Connectors: Total and active connector count
GET /api/connectors- List all connectorsPOST /api/connectors- Create connectorGET /api/connectors/{id}- Get connectorPUT /api/connectors/{id}- Update connectorDELETE /api/connectors/{id}- Delete connectorGET /api/connectors/{id}/health- Check health
GET /api/health- System healthGET /api/edc/health- Default EDC healthGET /api/activity-logs- Activity logs
POST /api/data/get- EDC GET request with policiesPOST /api/data/post- EDC POST request with policies
├── backend/
│ ├── config/ # YAML configurations
│ ├── managers/ # Business logic managers
│ │ ├── authManager.py # Authentication
│ │ ├── databaseManager.py # Database operations
│ │ └── edcManager.py # EDC management
│ ├── service/ # Service layer
│ │ └── edcService.py # EDC integration
│ ├── models/ # Data models
│ │ ├── database.py # SQLAlchemy models
│ │ └── requests.py # API request models
│ ├── utilities/ # Helper utilities
│ └── init.py # FastAPI application
│
├── frontend/
│ ├── src/
│ │ ├── components/ # React components
│ │ │ ├── Sidebar.tsx
│ │ │ ├── Header.tsx
│ │ │ ├── StatsCard.tsx
│ │ │ ├── DeploymentWizard.tsx
│ │ │ └── ConnectorTableNew.tsx
│ │ ├── api/ # API client
│ │ ├── types/ # TypeScript types
│ │ ├── keycloak.ts # Keycloak integration
│ │ └── AppNew.tsx # Main application
- Change default API key in
.env - Use strong database credentials
- Enable HTTPS for all connections
- Configure CORS properly
- Use Keycloak for production authentication
- Rotate secrets regularly
- Enable rate limiting on API endpoints
Never commit .env files to version control. Create them locally and keep real values outside the repository.
# Backend tests
cd backend
pytest
# Frontend tests
cd frontend
npm test# Backend linting
cd backend
black .
flake8 .
# Frontend linting
cd frontend
npm run lintDatabase connection failed:
- Check DATABASE_URL in .env
- Ensure PostgreSQL is running
- Verify credentials
API key authentication failed:
- Check API_KEY in backend .env
- Ensure frontend sends correct header (X-Api-Key)
- Verify VITE_API_KEY in frontend .env
Blank screen:
- Check browser console for errors
- Verify API connection (VITE_API_BASE_URL)
- Ensure backend is running
Keycloak redirect loop:
- Check Keycloak client configuration
- Verify redirect URIs
- Ensure realm and client ID match
CORS errors:
- Backend CORS middleware is configured for all origins in development
- For production, restrict origins in init.py
- Code: Apache-2.0
- Non-code: CC-BY-4.0
- Notice: see NOTICE
- Source URL: https://github.com/eclipse-tractusx/edc-management-console