| title | Documentation |
|---|---|
| description | Contributing to IDP-Core documentation |
Good documentation is essential for IDP-Core's success. This guide explains how to contribute to the docs.
| Tool | Purpose |
|---|---|
| Zensical | Documentation generator, MkDocs-compatible |
| Markdown | Content format |
| Mermaid | Diagrams |
- Python 3.14+
- uv package manager
cd docs
# Install dependencies
uv sync
# Or with pip
pip install -e .
source .venv/bin/activate# Start dev server
uv run zensical serve
# Or simply
zensical servezensical buildOutput in site/ directory.
doc-site/
├── docs/
│ ├── index.md # Homepage
│ ├── getting-started/ # Getting started guides
│ │ ├── index.md
│ │ ├── installation.md
│ │ ├── quickstart.md
│ │ └── configuration.md
│ ├── concepts/ # Core concepts
│ ├── features/ # Feature documentation
│ ├── api/ # API reference
│ ├── deployment/ # Deployment guides
│ └── contributing/ # Contributor guides
├── zensical.toml # Site configuration
└── pyproject.toml # Python dependencies---
title: Page Title
description: Brief description for SEO
---
Introduction paragraph explaining the topic.
## Section 1
Content...
## Section 2
Content...
---
## Next Steps
- **[Related Page](related.md)** - Brief description#- Page title, one per page##- Major sections###- Subsections for detailed topics####- Use rarely for fine details
Writing style and prose is linted using Vale with the "Google" style guide and integrate specific vocabulary for IDP-Core.
| Do | Don't |
|---|---|
| Use active voice | Use passive voice |
| Be concise | Be verbose |
| Use present tense | Use future tense |
| Address reader as "you" | Use "the user" |
Examples:
✅ "Create an entity template by calling the API."
❌ "An entity template can be created by the user by calling the API."
✅ "Run the following command:"
❌ "The following command should be run:"```bash
mvn spring-boot:run
```
```java
public class Example {
// Code here
}
```
```yaml title="application.yml"
spring:
profiles:
active: local
```| Column 1 | Column 2 | Column 3 |
|----------|----------|----------|
| Value 1 | Value 2 | Value 3 |We use native Markdown admonitions instead of Zensical-specific syntax.
> [!NOTE]
> This is a note.
> [!WARNING]
> This is a warning.
> [!DANGER]
> This is dangerous.=== "Java"
```java
System.out.println("Hello");
```
=== "Python"
```python
print("Hello")
``````mermaid
flowchart LR
A[Start] --> B[Process]
B --> C[End]
```| Type | Use Case |
|---|---|
flowchart |
Process flows |
sequenceDiagram |
Interactions |
erDiagram |
Data models |
gantt |
Timelines |
classDiagram |
Class structures |
```mermaid
flowchart TB
A[User] --> B[API]
B --> C{Valid?}
C -->|Yes| D[Process]
C -->|No| E[Error]
``````mermaid
sequenceDiagram
Client->>+API: POST /entities
API->>+DB: Insert
DB-->>-API: Success
API-->>-Client: 201 Created
```- Create the markdown file in appropriate directory
- Add to
navinzensical.toml:
[[nav]]
title = "Section"
items = [
{ title = "Page Title", path = "section/page.md" }
][Link text](../concepts/entities.md)
[Link to section](../concepts/entities.md#section-name)[External link](https://example.com)Place images in docs/assets/images/:
- For diagram images, use excalidraw.svg or draw.io.svg format for VS Code extension compatibility
- Use SVG format as soon as possible, PNG as a fallback, then JPEG
- Optimize file size
- Add meaningful alt text
The API reference uses embedded Swagger UI with the swagger.yaml file in docs/src/static/, automatically generated by SpringBoot at build time.
- Do your changes in the codebase
- Run the app locally:
mvn spring-boot:run -Dspring-boot.run.profiles=local - Access Swagger UI at
http://localhost:8080/swagger-ui.html - Export the updated
swagger.yamlfrom the UI - Replace the file in
docs/src/static/swagger.yaml
Before submitting documentation changes:
- Spell-checked content
- Links work correctly
- Code examples pass testing in their environment
- Diagrams render properly
- Page builds without errors
- Follows style guidelines
- Navigation updated if needed
# Check for errors
zensical build --strict
# Common fixes:
# - Fix broken links
# - Add missing files to nav
# - Check YAML front matter# Find broken links
zensical build --strict 2>&1 | grep "not found"Ensure images are in docs/static/images/ and paths are correct.
- Code Conventions - Code documentation standards
- Pull Requests - Submit your changes