Skip to main content

Update documentation

Keep documentation synchronised with code changes across inline comments, API docs, and user-facing guides.

In this guide

When to update documentation
Write inline code comments
Document APIs with OpenAPI
Update user guides
Add SPDX licence headers

When to update documentation​

Update documentation whenever you:

  • Add new features or APIs
  • Change existing behaviour
  • Fix bugs that affect usage
  • Update configuration options
  • Modify deployment procedures

Write inline code comments​

Add comments to explain complex logic, business rules, or non-obvious implementations:

// Calculate retention period based on data sensitivity level
// Level 1 (public): 5 years, Level 2 (internal): 3 years, Level 3 (sensitive): 1 year
int retentionYears = calculateRetention(dataset.getSensitivityLevel());

Guidelines:

  • Focus on the "why", not the "what"
  • Keep comments concise and up to date
  • Use British English spelling

Document APIs with OpenAPI​

GDI uses API-first development. API contracts are defined in OpenAPI YAML files located in src/main/openapi/ before implementation.

For details on working with OpenAPI specifications:

View generated API documentation at http://localhost:8080/q/swagger-ui/ during development.

Update user guides​

The documentation site uses Docusaurus, a modern static site generator built with React.

Documentation structure​

Update the appropriate guide based on your changes:

  • docs/user-guide/: End-user documentation for data requesters and catalogue managers
  • docs/catalog-managers-guide/: End-user documentation for catalogue managers (users of CKAN admin interface)
  • docs/developer-guide/: Developer onboarding, setup, and contribution guides (you're here!)
  • docs/system-admin-guide/: Deployment and operations documentation

Run documentation locally​

Test your documentation changes locally before committing:

cd documentation
npm install
npm start

The documentation site opens at http://localhost:3000 with live reload.

Write effective documentation​

Follow these guidelines:

  • Use sentence case: For headers (capitalise only the first word unless it's a proper noun)
  • Write in active voice: "Select the button" instead of "The button should be selected"
  • Use British English spelling: "organise" not "organize", "behaviour" not "behavior"
  • Keep it concise: Get to the point quickly
  • Add code examples: Show, don't just tell
  • Include screenshots: for UI changes (save in documentation/static/img/)

Markdown features​

Docusaurus supports MDX with additional components:

Admonitions:

:::tip
Helpful tip for readers
:::

:::warning
Important warning
:::

:::info[Note]
Additional context
:::

Code blocks with syntax highlighting:

```typescript
const greeting: string = "Hello, GDI!";
```

Tabs:

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

<Tabs>
<TabItem value="npm" label="npm">
npm install
</TabItem>
<TabItem value="yarn" label="Yarn">
yarn install
</TabItem>
</Tabs>

Reference other pages​

Link to other documentation pages using relative paths or slugs:

See [Set up frontend](/developer-guide/set-up-frontend) for more details.

Add SPDX licence headers​

Add licence headers to all new files to comply with REUSE standards:

For Markdown files:

<!--
SPDX-FileCopyrightText: 2024 PNED G.I.E.

SPDX-License-Identifier: CC-BY-4.0
-->

For code files:

// SPDX-FileCopyrightText: 2024 PNED G.I.E.
// SPDX-License-Identifier: Apache-2.0

Check licence compliance with:

reuse lint

Learn more​