Skip to main content

Contributing

EUDIPLO is organized as a monorepo workspace containing multiple applications and shared packages. This section guides you through the contributor journey from development setup to submitting changes.

Contributor Journey

  1. Development Setup — Install dependencies, configure environment variables, and run locally
  2. Architecture Overview — Understand the system architecture and design principles
  3. Repository Structure — Navigate the monorepo layout and workspace conventions
  4. Backend Development — Build and extend the NestJS API server
  5. Client Development — Work with the Angular management UI
  6. CLI Development — Develop and test the command-line interface
  7. Testing — Write and run unit tests
  8. E2E Testing — Integration and end-to-end test workflows
  9. Conformance Testing — OIDF conformance suite integration
  10. Documentation — Contributing to documentation
  11. Releases — Versioning, release process, and backward compatibility
  12. Code Quality — Formatting, linting, and style guidelines
  13. Logging Configuration — Debugging with logs and observability

Quick Start

# Install all dependencies
pnpm install

# Start all applications
pnpm run dev

# Or start specific applications
pnpm --filter @eudiplo/backend run start:dev
pnpm --filter @eudiplo/client run dev

Backend (NestJS)

The backend is built with NestJS, a progressive Node.js framework for building efficient, scalable server-side applications using TypeScript.

Documentation with Compodoc

Compodoc provides a comprehensive overview of the codebase, including:

  • Modules
  • Controllers
  • Services
  • DTOs
  • Dependencies
pnpm run compodoc:serve

A rendered version is available via pnpm run compodoc under apps/docs/static/compodoc/index.html (see Repository Structure).

Source Code Structure

Each module typically contains its own:

  • controller.ts — API endpoints
  • service.ts — Business logic
  • dto/ — Data Transfer Objects
  • entities/ — TypeORM entities (if needed)

Useful Development Scripts

# Development
pnpm run start:dev # Start the app in watch mode
pnpm run start:debug # Start with debug mode and watch
pnpm run build # Build the application

# Testing
pnpm run test # Run unit tests
pnpm run test:watch # Run tests in watch mode
pnpm run test:e2e # Run end-to-end tests
pnpm run test:cov # Run tests with coverage
pnpm run test:debug # Run tests with debug mode

# Code Quality
pnpm run format # Format all files with Biome
pnpm run format:check # Check formatting without changes
pnpm run lint # Run linting checks
pnpm run lint:fix # Fix linting issues automatically

# Documentation
pnpm run compodoc # Generate Compodoc documentation
pnpm run compodoc:serve # Serve Compodoc docs locally (port 3001)
pnpm --filter @eudiplo/docs start # Serve Docusaurus with live reload
pnpm --filter @eudiplo/docs build # Build documentation

:::tip Compodoc Output Compodoc output is stored in the apps/docs/static/compodoc folder and served statically alongside the documentation site. :::

General Guidelines

For detailed contribution guidelines, see the CONTRIBUTING.md file in the repository root.

Contributions Welcome

Feel free to contribute by improving documentation, fixing bugs, or extending functionality. Make sure to follow the coding standards and write tests where applicable.