Skip to content

Workspace Structure

EUDIPLO is a pnpm monorepo. Applications live in apps/, reusable packages live in packages/, and operational resources are kept alongside the code they support.

.
├── apps/
│   ├── backend/           # NestJS API server
│   ├── client/            # Angular management UI
│   ├── cli/               # Command-line client
│   ├── kms-reference/     # Reference KMS implementation
│   └── webhook/           # Webhook test application
├── packages/              # Reusable SDK packages
├── docs/                  # MkDocs documentation
├── deployment/            # Docker Compose and Kubernetes resources
├── monitor/               # Prometheus and Grafana setup
├── scripts/               # Repository-wide generation and maintenance scripts
├── package.json           # Root scripts and development dependencies
└── pnpm-workspace.yaml    # Workspace package definitions

Applications

Backend (@eudiplo/backend)

The backend is the NestJS API server and protocol implementation. It owns OID4VCI and OID4VP flows, authentication, configuration, persistence, trust, and key management. See Backend Structure before adding or moving backend code.

The development server listens on port 3000 by default.

Client (@eudiplo/client)

The Angular management UI provides credential configuration, presentation management, monitoring, and administration. Its development server listens on port 4200 by default.

CLI (@eudiplo/cli)

The CLI provides scriptable access to management operations. Package-specific instructions are in apps/cli/README.md.

Webhook (@eudiplo/webhook)

The webhook application is a test integration for presentation verification and webhook development.

KMS reference application

The KMS reference application demonstrates the external key-management contract used by EUDIPLO.

Packages and Supporting Directories

  • packages/ contains reusable TypeScript SDK code.
  • docs/ contains hand-written and generated project documentation.
  • deployment/ contains local and production deployment examples.
  • monitor/ contains the observability stack used in development.
  • scripts/ contains schema, API, and documentation generation utilities.

Common Workspace Commands

Run commands from the repository root unless a guide says otherwise.

# Install dependencies
pnpm install

# Start workspace applications in development mode
pnpm run dev

# Build, lint, and test all packages
pnpm run build
pnpm run lint
pnpm run test

# Target one application
pnpm --filter @eudiplo/backend run dev
pnpm --filter @eudiplo/client run dev

Add an application-specific dependency through its workspace package instead of adding it to the repository root:

pnpm --filter @eudiplo/backend add dependency-name
pnpm --filter @eudiplo/client add dependency-name

Root dependencies should be limited to tooling used by multiple workspaces.