A reusable template and methodology for creating production-grade, compliant dataspaces across any domain using Eclipse Dataspace Components (EDC), Decentralized Claims Protocol (DCP), and specification-driven development.
Minimum Viable Dataspace (MVD) is a template repository that provides the essential infrastructure, patterns, and methodology for building domain-specific dataspaces. It is NOT a finished product—it's a foundation you customize and extend for your specific use case.
- Template, Not a Product: Core EDC infrastructure without domain-specific implementations
- BLUEPRINT Methodology: Phase-based development workflow with GitHub issue tracking
- Specification-Driven: OpenAPI specs drive code generation and compliance testing
- Production-Ready Patterns: Kubernetes deployment, observability, security best practices
- Multi-Domain Support: Branch-based strategy for health, aerospace, manufacturing, etc.
| Component | Description | Customization Required |
|---|---|---|
| EDC Runtimes | Controlplane, Dataplane, IdentityHub, Catalog Server, Issuer Service | Minimal - works out of box |
| Custom Extensions | DCP implementation, catalog resolver, DID resolver | Configure for your identity model |
| Deployment Templates | Kubernetes/Terraform, Docker Compose | Adjust ports/resources |
| Specification Framework | GitHub Spec Kit templates, ODRL policies, OpenAPI schemas | Replace with your domain |
| Documentation | BLUEPRINT methodology, cloud deployment guide, SDD instructions | Extend with domain specifics |
| Seeding Scripts | Identity/credential creation, asset registration | Replace with your assets |
Option A: Fork for Independent Project
# Fork on GitHub, then clone
git clone https://github.com/YOUR_USERNAME/MinimumViableDataspace.git
cd MinimumViableDataspaceOption B: Create Domain Branch (Recommended)
# Clone this repo
git clone https://github.com/ma3u/MinimumViableDataspace.git
cd MinimumViableDataspace
# Create your domain branch
git checkout -b health-demo # or aerospace-demo, manufacturing-demo, etc.| Software | Version | Purpose |
|---|---|---|
| Java | 17+ (temurin-17 or temurin-22) | EDC runtimes |
| Node.js | 18+ or 20+ | Frontend/backend (if building UI) |
| uv | Latest | Python package manager for Spec Kit |
| GitHub Spec Kit | Latest | Specification-driven development toolkit |
| Newman | Latest | Postman CLI for seeding |
| jq | Latest | JSON processing in scripts |
| Container Runtime | OrbStack (recommended) or Docker Desktop | Local K8s development |
# Install uv (Python package manager)
brew install uv
# Install GitHub Spec Kit (persistent installation - recommended)
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
# Verify Spec Kit installation
specify --help
# Install Newman and jq
brew install newman jq
# Install OrbStack (recommended for macOS)
brew install orbstackGitHub Spec Kit is used for specification-driven development:
/speckit.constitution- Define project principles/speckit.specify- Create feature specifications/speckit.plan- Generate technical implementation plans/speckit.tasks- Break down into actionable tasks/speckit.implement- Execute implementation
See GitHub Spec Kit documentation for complete usage guide.
See docs/cloud-deployment-options.md for detailed comparison.
# Build EDC components
./gradlew build
# For Kubernetes/Docker deployment, build with persistence
./gradlew -Ppersistence=true build
./gradlew -Ppersistence=true dockerizeOption A: IntelliJ IDEA (Fastest for Development)
- Open project in IntelliJ IDEA
- Run
.run/dataspacecompound configuration (starts all 8 runtimes) - Wait for all services to be healthy (~30-60 seconds)
- Run seeding script:
./seed-edc.sh
Option A2: VS Code (Alternative IDE)
- Open project in VS Code:
code . - Install recommended extensions:
- Java Extension Pack
- Gradle for Java
- Docker (for container management)
- Use integrated terminal to run individual launchers:
# Start each runtime in separate terminal windows ./gradlew :launchers:consumer:run ./gradlew :launchers:provider-qna:run # ... or use deployment/docker-compose.yml
- Run seeding script:
./seed-edc.sh
Note: IntelliJ provides the best Java development experience with compound run configurations. VS Code requires manual terminal management per runtime or Docker Compose usage.
Option B: Kubernetes (Production-like)
# Create KinD cluster
kind create cluster -n mvd --config deployment/kind.config.yaml
# Load images
kind load docker-image controlplane:latest dataplane:latest \
identity-hub:latest catalog-server:latest issuerservice:latest -n mvd
# Deploy with Terraform
cd deployment
terraform init
terraform applySee WARP.md for detailed deployment instructions.
Now you're ready to customize MVD for your specific domain. Follow the BLUEPRINT methodology:
The BLUEPRINT methodology is a proven, phase-based approach to building production-grade dataspaces. All 6 phases have been implemented in this repository as a complete reference implementation.
Each phase is documented as a closed GitHub issue containing:
- ✅ Acceptance criteria (all met)
- 📋 Implementation details and decisions
- 🎯 Deliverables and artifacts created
- 💡 Lessons learned and recommendations
Your approach:
- Review each phase's GitHub issue to understand what was done
- Study the delivered artifacts (code, configs, docs)
- Adapt the patterns to your domain-specific needs
- Use the AI prompt templates below to guide your implementation
GitHub Issue: #17 - Cleanup and Setup
What This Phase Delivers:
- Clean repository structure without domain-specific code
- Cloud deployment research and documentation
- Development environment setup
Key Artifacts:
docs/cloud-deployment-options.md- Multi-cloud comparison (Azure, AWS, GCP)WARP.md- AI-assisted development guide- Clean build configuration
Adapt for Your Domain:
I'm building a [DOMAIN] dataspace (e.g., healthcare, supply chain, finance).
Help me with Phase 1:
1. Review requirements for [YOUR_DOMAIN]
2. Research cloud options for [COMPLIANCE_REQUIREMENT] (e.g., GDPR, HIPAA)
3. Set up development environment
4. Document architecture decisions
Target cloud: [Azure/AWS/GCP]
GitHub Issue: #18 - Domain Specification Template
What This Phase Delivers:
.specify/directory structure for specification-driven development- Template ODRL policies for access control
- Regulatory inventory framework
Key Artifacts:
.specify/README.md- Spec-driven development guide.specify/constitution.md- Governance template.specify/regulatory-inventory.md- Compliance tracking.specify/policies/- ODRL policy templates
Adapt for Your Domain:
Customize Phase 2 specifications for [DOMAIN].
Create:
1. .specify/spec.yaml - OpenAPI spec for [YOUR_API]
2. .specify/constitution.md - Update with:
- Data residency: [YOUR_REQUIREMENT]
- Encryption standards: [YOUR_STANDARD]
- Compliance: [YOUR_REGULATIONS]
3. .specify/policies/*.yaml - ODRL policies for [YOUR_USE_CASES]
Reference: .specify/ directory in MVD
GitHub Issue: #19 - Core Extensions
What This Phase Delivers:
- DCP (Decentralized Claims Protocol) implementation
- Policy evaluation functions (MembershipCredential, DataAccessLevel)
- Catalog node resolver for participant discovery
- DID resolution for did:web
Key Artifacts:
extensions/dcp-impl/- DCP protocol implementationextensions/catalog-node-resolver/- Participant directoryextensions/did-example-resolver/- DID resolutionextensions/superuser-seed/- Identity seeding
Adapt for Your Domain:
Extend Phase 3 for [DOMAIN]-specific requirements.
1. Add custom credential type:
- Create [DOMAIN]Credential (e.g., HealthcareProviderCredential)
- Define required claims/attributes
2. Implement policy functions:
- [DOMAIN]CredentialEvaluationFunction
- Verify [SPECIFIC_REQUIREMENTS]
3. Update participant directory:
- Add [YOUR_ORGANIZATIONS] to deployment/assets/participants
Reference: extensions/ directory
GitHub Issue: #20 - Testing Infrastructure
What This Phase Delivers:
- Unit testing framework (JUnit 5, Mockito, JaCoCo)
- GitHub Actions CI/CD workflows
- Protocol compliance testing (DSP-TCK, DCP-TCK)
- 80%+ code coverage
Key Artifacts:
.github/workflows/test.yml- Automated testing pipelinedocs/TESTING.md- Complete testing guide- Test examples in all modules
Adapt for Your Domain:
Add [DOMAIN]-specific tests to Phase 4 infrastructure.
1. Unit tests for custom extensions
2. Integration tests for [DOMAIN_WORKFLOW]
3. Compliance tests for [REGULATION]
4. Performance tests for [SLA_REQUIREMENT]
Target: 80%+ coverage
Reference: docs/TESTING.md
GitHub Issue: #21 - Observability & Monitoring
What This Phase Delivers:
- Prometheus metrics (11 EDC runtime targets)
- Jaeger distributed tracing
- 3 Grafana dashboards with 24 panels
- Health check endpoints
Key Artifacts:
deployment/observability/- Complete observability stackdeployment/observability/grafana/dashboards/- Pre-built dashboardsdocs/OBSERVABILITY.md- Setup and usage guide
Adapt for Your Domain:
Extend Phase 5 monitoring for [DOMAIN] metrics.
1. Add custom metrics:
- [BUSINESS_METRIC] (e.g., contract_value_total)
- [DOMAIN_METRIC] (e.g., patient_records_transferred)
2. Create dashboards:
- [DOMAIN] Business Metrics
- [DOMAIN] Compliance Dashboard
3. Configure alerts for [CRITICAL_CONDITIONS]
Reference: deployment/observability/
GitHub Issue: #22 - Production Deployment & Security
What This Phase Delivers:
- Complete Kubernetes manifests (base + overlays)
- Security hardening (Pod Security, RBAC, NetworkPolicies)
- CI/CD pipelines (build + deploy)
- Multi-cloud deployment guides (AKS, EKS, GKE)
- Operational runbook
Key Artifacts:
deployment/k8s/- Production Kubernetes configs.github/workflows/build-release.yml- Build pipeline.github/workflows/deploy.yml- Deployment pipelinedocs/PRODUCTION-DEPLOYMENT.md- Cloud deployment guidedocs/SECURITY.md- Security hardening guidedocs/RUNBOOK.md- Operations manual
Adapt for Your Domain:
Prepare Phase 6 production deployment for [DOMAIN].
1. Cloud setup:
- Provider: [Azure/AWS/GCP]
- Region: [REGION] (for [COMPLIANCE_REQUIREMENT])
- Resources: Adjust deployment/k8s/base/ for [YOUR_SCALE]
2. Security:
- Implement [DOMAIN_CONTROLS] from docs/SECURITY.md
- Add [REGULATION]-specific logging/audit
3. Operations:
- Define RTO: [X] hours, RPO: [Y] minutes
- Disaster recovery: Customize docs/RUNBOOK.md
Reference: docs/PRODUCTION-DEPLOYMENT.md
This repository uses symbolic links to share context across different AI coding assistants. All links are already implemented and point to a single source of truth.
Implemented Symbolic Links:
# Root directory links (all point to WARP.md)
.aiderules -> WARP.md # For Aider
.clinerules -> WARP.md # For Cline (Claude Code)
.cursorrules -> WARP.md # For Cursor
.warp-context.md -> WARP.md # For Warp
# GitHub directory link
.github/copilot-instructions.md -> ../WARP.md # For GitHub Copilot
# Project governance link
.ai-constitution -> .specify/constitution.md # Non-negotiable rulesBenefits:
- ✅ Single source of truth: Update
WARP.mdonce, all tools see the changes - ✅ Switch tools seamlessly: Use Warp, Cursor, Copilot, Aider, or Cline interchangeably
- ✅ Consistent context: All AI assistants have the same project understanding
- ✅ No duplication: Never copy-paste documentation between tool config files
Verify Setup:
# View all symbolic links
ls -la | grep '^l'
# Check GitHub Copilot link
ls -la .github/ | grep copilot| Phase | Primary Tool | Alternative | Why |
|---|---|---|---|
| Phase 1-2 (Planning) | Warp Agent Mode | Claude/ChatGPT | Complex reasoning, research |
| Phase 3 (Extensions) | Cursor / GitHub Copilot | IntelliJ AI | Java code generation, EDC patterns |
| Phase 4 (Testing) | GitHub Copilot | Cursor | Test generation, mocking |
| Phase 5 (Observability) | Warp Agent Mode | Cline | Configuration files, YAML |
| Phase 6 (Deployment) | Warp Agent Mode | Cursor + Copilot | Kubernetes manifests, documentation |
Warp Agent Mode (Best for this project):
- ✅ Excellent for: Multi-file operations, Git workflows, deployment
- ✅ Use
WARP.mdfor project context - ✅ Can execute commands directly
⚠️ Limited inline code editing (uses diffs)
GitHub Copilot:
- ✅ Excellent for: Inline code completion, test generation
- ✅ Use
.github/copilot-instructions.mdfor context ⚠️ Limited multi-file context
Cursor:
- ✅ Excellent for: Refactoring, multi-file edits
- ✅ Use
.cursorrulesfor project rules - ✅ Composer mode for complex changes
Cline (Claude Code):
- ✅ Excellent for: Planning, documentation
- ✅ Use
.clinerulesfor context - ✅ Good at understanding complex requirements
Aider:
- ✅ Excellent for: CLI-based development, Git integration
- ✅ Use
.aiderulesfor context - ✅ Strong refactoring capabilities
-
Maintain WARP.md as Source of Truth
-
Link to it from other tools:
# .github/copilot-instructions.md See WARP.md for complete project context. Quick reference: - Architecture: See WARP.md ## Architecture - Build: ./gradlew build - Deploy: See deployment/k8s/
-
Update WARP.md when architecture changes
-
Symbolic links automatically reflect updates
We welcome contributions and feedback! Please help improve MVD:
🐛 Report a Bug:
- Check existing issues
- Create a new issue with:
- Clear title:
[BUG] Short description - Steps to reproduce
- Expected vs. actual behavior
- Environment (OS, Java version, EDC version)
- Logs or error messages
- Clear title:
💡 Suggest an Improvement:
- Create an issue with:
- Clear title:
[FEATURE] Short description - Use case: Why is this needed?
- Proposed solution (if you have one)
- Alternative approaches considered
- Clear title:
📖 Documentation Issues:
- Create an issue with:
- Title:
[DOCS] What's unclear/missing - Which document:
docs/FILE.md - What you expected to find
- Suggested improvement
- Title:
🔧 Submit a Pull Request:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes following existing patterns
- Test your changes thoroughly
- Update documentation (WARP.md, relevant docs/)
- Commit with descriptive messages
- Push and create a PR with:
- Clear description of changes
- Link to related issue
- Screenshots (if UI changes)
Issue Templates:
## Bug Report Template
**Title**: [BUG] Short description
**Environment**:
- OS: macOS 14.0 / Ubuntu 22.04 / Windows 11
- Java: 17.0.8
- EDC Version: (from build.gradle.kts)
**Steps to Reproduce**:
1. Start dataspace with `./seed.sh`
2. Call API: `curl ...`
3. Observe error: ...
**Expected**: Should return 200 OK
**Actual**: Returns 500 Internal Server Error
**Logs**:[paste relevant logs]
**Context**: Trying to implement [your use case]
## Feature Request Template
**Title**: [FEATURE] Short description
**Use Case**:
As a [dataspace operator/developer],
I want to [do something],
So that [achieve outcome].
**Current Limitation**:
Currently, MVD [does not support X / requires manual Y].
**Proposed Solution**:
1. Add [component/feature]
2. Modify [existing functionality]
3. Document [new capability]
**Alternatives Considered**:
- Option A: [description] - Why not chosen: [reason]
- Option B: [description] - Why not chosen: [reason]
**Additional Context**:
- Related to [domain/regulation]:
- Similar to [other project/standard]:Quick Links:
MVD provides core dataspace infrastructure based on Eclipse EDC:
┌─────────────────────────────────────────────────────┐
│ Your Domain Layer │
│ (Frontend, Backend, Domain-Specific Extensions) │
└─────────────────────────────────────────────────────┘
↓ Uses
┌─────────────────────────────────────────────────────┐
│ MVD Core Infrastructure │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Consumer │ │ Provider │ │
│ │ Controlplane │←→│ Controlplane │ (DSP) │
│ │ Dataplane │ │ Dataplane │ │
│ │ IdentityHub │ │ IdentityHub │ │
│ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │Catalog Server│ │Issuer Service│ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────┘
MVD implements Management Domains - a pattern where multiple departments/divisions share a common identity but maintain independent data policies:
Example: Provider Organization
provider-qna- Q&A department connectorprovider-manufacturing- Manufacturing department connectorprovider-catalog-server- Federated catalog (shared)provider-identityhub- Shared identity for all departments
This architecture allows organizations to:
- Maintain single organizational identity (
did:web:provider-identityhub) - Enforce department-specific access policies
- Share catalog metadata while protecting sensitive data
- Scale horizontally by adding new department connectors
-
Decentralized Identity (DCP)
did:webDIDs for each participant- Verifiable Credentials (MembershipCredential, domain-specific credentials)
- Zero-trust credential verification
-
Policy-Based Access Control (ODRL)
- Fine-grained access policies per asset
- Credential-based policy evaluation
- Domain-specific policy functions
-
Dataspace Protocol (DSP)
- Catalog discovery
- Contract negotiation
- HTTP-PULL data transfer
This repository serves as a template. Here are example domain implementations:
Branch: health-demo
Use Case: EHDS-compliant Electronic Health Record exchange for clinical research
Domain-Specific Components:
- FHIR R4 EHR data with ISiK/KBV profiles
- DCAT-AP for Health metadata
- ConsentCredential for GDPR Art. 89 compliance
- MedDRA v27.0 adverse event classification
- Frontend: EHR viewer with clinical trial metadata
Regulatory Compliance:
- EHDS Regulation (EU 2025/327) Art. 50/51
- GDPR Art. 9 (special categories) + Art. 89 (research)
- German GDNG (Health Data Use Act)
Status: Removed in Phase 1 cleanup (aerospace-specific code in separate branch)
Use Case: Digital Product Passport exchange for aerospace components
Recommended: OrbStack (macOS)
- 3-5x faster than Docker Desktop
- ~500 MB idle memory vs 2-4 GB
- Full KinD support
Alternative: Rancher Desktop
- Open source (Apache 2.0)
- K3s lightweight Kubernetes
Installation:
# OrbStack
brew install orbstack
# Rancher Desktop
brew install rancher-desktopRecommended: Azure Kubernetes Service (AKS)
Why AKS?
- Best EHDS compliance (EU data residency)
- Azure AD integration for EDC DCP
- Azure Key Vault for secrets management
- Cost-effective: €150-800/month depending on scale
Alternative Cloud Providers:
- AWS EKS: Best if already on AWS
- Google GKE: Best monitoring/observability
- StackIT (Schwarz IT): German sovereign cloud for German/EU dataspaces
- OVH Public Cloud: European sovereign cloud, cost-effective
See docs/cloud-deployment-options.md for comprehensive comparison.
Typical Production Setup:
Cluster: AKS (West Europe or Germany West Central)
Nodes: 5x Standard_D4s_v3 (4 vCPU, 16 GB RAM)
Database: Azure PostgreSQL Flexible Server (HA)
Secrets: Azure Key Vault (HSM-backed)
Registry: Azure Container Registry
Monitoring: Azure Monitor + Prometheus + Grafana
Cost: €500-800/month (with HA and DR)MinimumViableDataspace/
├── extensions/ # Custom EDC extensions
│ ├── catalog-node-resolver/ # Federated catalog discovery
│ ├── dcp-impl/ # Decentralized Claims Protocol
│ ├── did-example-resolver/ # DID resolution (demo)
│ └── superuser-seed/ # IdentityHub bootstrap
├── launchers/ # EDC runtime modules
│ ├── controlplane/ # Management API, DSP protocol
│ ├── dataplane/ # Data transfer execution
│ ├── identity-hub/ # Identity & credential management
│ ├── catalog-server/ # Federated catalog crawler
│ └── issuerservice/ # Verifiable Credential issuer
├── deployment/ # Deployment configurations
│ ├── assets/ # Keys, DIDs, environment configs
│ ├── postman/ # Newman seeding collections
│ └── kind.config.yaml # KinD cluster configuration
├── .specify/ # Specification-Driven Development
│ ├── constitution.md # Governance rules
│ ├── spec.md/spec.yaml # OpenAPI specifications
│ ├── regulatory-inventory.md # Compliance checklist
│ └── policies/ # ODRL policy templates
├── docs/ # Documentation
│ ├── cloud-deployment-options.md
│ └── spec-driven-dev-mvd-instructions.md
├── tests/
│ └── end2end/ # Integration tests
├── .run/ # IntelliJ run configurations
├── WARP.md # AI assistant guidance
├── seed-edc.sh # Identity/credential seeding script
└── README.md # This file
# Standard build
./gradlew build
# Build with persistence (for Docker/K8s)
./gradlew -Ppersistence=true build
# Build Docker images
./gradlew -Ppersistence=true dockerize# Run all unit tests
./gradlew test
# Run specific module tests
./gradlew :extensions:dcp-impl:test
# Run with coverage report
./gradlew test jacocoRootReport
# View coverage report
open build/reports/jacoco/jacocoRootReport/html/index.html
# Run checkstyle
./gradlew checkstyleMain checkstyleTest
# Run end-to-end tests (requires running dataspace)
./gradlew :tests:end2end:testSee docs/TESTING.md for comprehensive testing guide.
# IntelliJ: Run .run/dataspace compound configuration, then:
./seed-edc.sh
# Kubernetes: See deployment/README.md (if exists) or WARP.mdCRITICAL: Always run seeding after starting EDC runtimes. This creates:
- Participant contexts in IdentityHubs
- DID documents
- Verifiable Credentials (MembershipCredential, domain-specific credentials)
- Assets, policies, contract definitions (domain-specific)
# IntelliJ deployment
./seed-edc.sh
# Note: Domain-specific asset seeding is separate
# Example: For health domain, run additional script after seed-edc.sh
# ./seed-health-assets.shMVD uses a specification-first approach where OpenAPI specifications drive code generation and testing:
1. Define Spec (.specify/spec.yaml)
↓
2. Generate Mock API (Prism)
↓
3. Develop Frontend (against mock)
↓
4. Implement Backend (spec-compliant)
↓
5. Contract Tests (Newman/Pact)
↓
6. Compliance Tests (automated)
↓
7. Deploy (only if 100% compliant)
- GitHub Spec Kit: Specification management & task generation
- Prism: OpenAPI mock server
- Newman: Postman CLI for contract testing
- Pact: Consumer-driven contract testing
- dsp-tck/dcp-tck: Protocol compliance testing
See docs/spec-driven-dev-mvd-instructions.md for complete guide.
Repository: MVD-health branch
Key Differences from Core MVD:
MVD (Core) MVD-health (Domain Extension)
├── seed-edc.sh ├── seed-dataspace.sh (enhanced)
├── [No frontend] ├── frontend/ (React + FHIR viewer)
├── [No backend] ├── backend-mock/ (FHIR R4 data)
├── [Generic policies] ├── backend-edc/ (EDC proxy)
└── extensions/dcp-impl/ ├── docker-compose.health.yml
(base DCP) ├── docker-compose.edc.yml
├── docs/USER-MANUAL.md
└── extensions/edc-health-client/
(health-specific extensions)
To Create Your Domain:
- Branch from
main:git checkout -b my-domain-demo - Copy structure from
health-demobranch (if applicable) - Replace health-specific components with your domain
- Follow BLUEPRINT phases
MVD is designed to integrate with standard observability tools:
# See MVD-health branch for pre-configured observability stack
# docker-compose.observability.yml includes:
# - Prometheus (metrics)
# - Grafana (dashboards)
# - Jaeger (tracing)
# - Loki (logs)All MVD components support OpenTelemetry for distributed tracing:
- EDC connectors emit OTLP traces
- Backend services instrumented with OpenTelemetry SDK
- Traces visualized in Jaeger
⚠️ Uses in-memory databases and vaults⚠️ Simplified DID resolution (not production-grade)⚠️ Demo credentials (not secure)
- ✅ Azure Key Vault (HSM-backed)
- ✅ PostgreSQL with encryption at rest
- ✅ Network policies (Calico/Azure CNI)
- ✅ RBAC for Kubernetes API
- ✅ Private endpoints for all services
- ✅ Regular credential rotation
MVD provides patterns for compliance, not compliance itself. Your domain implementation must ensure:
- ✅ Verifiable Credentials for access control
- ✅ ODRL policies for fine-grained permissions
- ✅ Audit logging (all DSP messages)
- ✅ Credential-based access (zero-trust)
- GDPR (Art. 9, Art. 89 for health data)
- HIPAA (US health data)
- EHDS (EU health data)
- Industry-specific regulations
Example: Health Domain Compliance
# .specify/regulatory-inventory.md
- EHDS Regulation (EU 2025/327): Art. 50/51 health categories
- GDPR Art. 9: Special categories of personal data
- GDPR Art. 89: Safeguards for research
- German GDNG: Health Data Use Act
- FHIR R4: ISiK and KBV profiles
- MedDRA: Adverse event classificationRuntimes fail to communicate
- Forgot to run seed script:
./seed-edc.sh - DID documents not accessible (check IdentityHub logs)
- Vault secrets not synchronized (IntelliJ memory vault limitation)
Contract negotiation fails
- Missing credentials: Check IdentityHub has issued MembershipCredential
- Policy constraints not satisfied: Check ODRL policy in asset
- Credential verification failure: Re-run seed script
Port conflicts
- IntelliJ deployment uses ports 7080-10100
- Check no other services using these ports
- See WARP.md for complete port mapping
Build failures
- Missing
-Ppersistence=trueflag for Docker/K8s builds - Java version < 17
- Gradle wrapper issues:
./gradlew wrapper --gradle-version 8.5
mainbranch: Latest development, uses-SNAPSHOTEDC versions- Tagged releases: Stable EDC release versions
- Domain branches:
health-demo,aerospace-demo(archived), etc.
Versioning Strategy:
- No backward compatibility guarantees (this is a template, not a product)
- Bugfixes target
mainbranch only - Domain branches maintained independently
MVD is a template repository. Contributions should focus on:
- Core EDC Infrastructure: Extensions, deployment patterns, build improvements
- Documentation: BLUEPRINT methodology, deployment guides, troubleshooting
- Domain Examples: Reference implementations in domain branches
Not Accepted:
- Domain-specific code in
mainbranch (use domain branches) - Breaking changes without migration guide
- Untested code
Process:
- Fork repository
- Create feature branch
- Submit pull request with:
- Clear description of change
- Tests for new functionality
- Documentation updates
- WARP.md - AI assistant guidance & development workflow
- docs/cloud-deployment-options.md - Cloud K8s deployment guide
- docs/spec-driven-dev-mvd-instructions.md - SDD methodology
- Eclipse Dataspace Components
- Dataspace Protocol Specification
- IdentityHub Documentation
- DCP Specification
- Health Dataspace (MVD-health)
- Aerospace Dataspace (archived)
This project is licensed under the Apache License, Version 2.0. See LICENSE for details.
- Issues: GitHub Issues
- Discussions: Use GitHub Discussions for questions
- Domain-Specific: Check domain branch documentation
Note: This is a demonstration template, not a supported product. Use at your own risk in production environments.