Contributing to Documentation
EUDIPLO documentation is built with Docusaurus and includes both hand-written guides and auto-generated API references.
General Contribution Guidelines
Thank you for considering contributing to EUDIPLO!
Please refer to the CONTRIBUTING.md file in the root of the repository for detailed guidelines on:
- Reporting issues
- Suggesting features
- Setting up the development environment
- Submitting pull requests
Documentation Structure
Documentation lives in apps/docs/docs/:
- Hand-written guides — Architecture, deployment, getting started, migration guides
- Auto-generated references — API documentation from Swagger/OpenAPI specs, code documentation from Compodoc
- Configuration tables — Generated from backend schemas and environment variables
Local Documentation Development
To preview documentation locally with live reload:
pnpm --filter @eudiplo/docs start
This starts a development server at http://localhost:3000 that automatically reloads when you edit Markdown files.
Building Documentation
To build the documentation for production:
pnpm --filter @eudiplo/docs build
This generates:
- Docusaurus static site — Main documentation
- Compodoc output — Code documentation from TypeScript
- Auto-generated references — Configuration tables, CLI reference
Regenerating Auto-Generated Content
Before building, regenerate auto-generated reference pages:
pnpm --filter @eudiplo/docs run prebuild
This script:
- Generates configuration tables from backend schemas
- Updates CLI command reference
- Refreshes environment variable documentation
API Documentation
API documentation is auto-generated from Swagger/OpenAPI specs:
- Swagger UI is available at
/api/docswhen the backend is running - OpenAPI spec JSON is available at
/api/docs-json
The backend automatically includes Swagger annotations via NestJS decorators (@ApiTags, @ApiOperation, @ApiResponse).
Code Documentation (Compodoc)
Compodoc generates comprehensive TypeScript code documentation:
pnpm run compodoc # Generate documentation
pnpm run compodoc:serve # Serve locally on port 3001
The output is integrated into the main documentation site.
Documentation Versioning
EUDIPLO uses Docusaurus's built-in versioning system (replacing the old mike/MkDocs workflow).
Creating a New Version
When releasing a new major version:
pnpm --filter @eudiplo/docs run docusaurus docs:version X.Y
This creates a snapshot of the current documentation in apps/docs/versioned_docs/version-X.Y/.
Version Behavior
- Current (
docs/) — The latest development version (frommainbranch) - Versioned (
versioned_docs/version-X.Y/) — Frozen snapshots for each major release - Latest — The default version shown to users (configured in
docusaurus.config.ts)
Editing Versioned Documentation
- To update current docs: Edit files in
apps/docs/docs/ - To update a released version: Edit files in
apps/docs/versioned_docs/version-X.Y/ - To update navigation: Edit
apps/docs/sidebars.ts(current) orapps/docs/versioned_sidebars/version-X.Y-sidebars.json(versioned)
Deployment
Documentation is automatically deployed to GitHub Pages on every push to main:
- CI generates docs content (Compodoc, auto-generated references)
- Docusaurus builds the static site
- GitHub Pages deploys the artifact
Access URLs:
- Primary site: https://openwallet-foundation.github.io/eudiplo/
- Documentation root: https://openwallet-foundation.github.io/eudiplo/docs/
Migration from MkDocs
:::note Historical Context EUDIPLO previously used MkDocs with the Material theme and mike for versioning. The documentation is being migrated to Docusaurus for better integration with the TypeScript ecosystem and improved developer experience.
The old MkDocs sources in docs/ are being progressively migrated to apps/docs/docs/ with updated syntax and structure.
:::
Documentation Style Guide
- Use clear, concise language
- Include code examples where helpful
- Use Docusaurus admonitions (:::note, :::tip, :::warning, :::danger) for callouts
- Link to related documentation pages
- Keep configuration examples up-to-date
- Test all code snippets before committing
Structure
- Main documentation:
apps/docs/docs/ - API documentation: Auto-generated from Swagger/OpenAPI specs
- Code documentation: Auto-generated using Compodoc
- The site is built using Docusaurus with versioning support