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
- Development Setup — Install dependencies, configure environment variables, and run locally
- Architecture Overview — Understand the system architecture and design principles
- Repository Structure — Navigate the monorepo layout and workspace conventions
- Backend Development — Build and extend the NestJS API server
- Client Development — Work with the Angular management UI
- CLI Development — Develop and test the command-line interface
- Testing — Write and run unit tests
- E2E Testing — Integration and end-to-end test workflows
- Conformance Testing — OIDF conformance suite integration
- Documentation — Contributing to documentation
- Releases — Versioning, release process, and backward compatibility
- Code Quality — Formatting, linting, and style guidelines
- 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 endpointsservice.ts— Business logicdto/— Data Transfer Objectsentities/— 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
- Follow the coding standards in Code Quality
- Write tests for new features (see Testing)
- Update documentation when changing behavior
- Use Conventional Commits for commit messages
- All commits must be signed (see Releases)
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.