diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a416a039e1..53b8936f86 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -416,6 +416,82 @@ If you are adding new functionality, include relevant test cases.
## Contributing Workflow
+The following diagram illustrates the complete contribution workflow:
+
+```mermaid
+flowchart TD
+ Start([Start]) --> CreateIssue[Create New Issue]
+ Start --> FindIssue[Find Existing Issue]
+ CreateIssue --> GetAssigned["**Get Assigned to Issue**
PRs will be automatically
closed if you're not assigned"]
+ FindIssue --> GetAssigned
+ GetAssigned --> ResolveIssue[**Resolve Issue**
work on code/docs/tests updates]
+
+ ResolveIssue --> RunChecks{**Run `make check-test`**
locally! This is a required step -- you will not be assigned to new issues if you ignore this}
+ RunChecks -->|Fails| WP1[ ]
+ RunChecks -->|Passes| PushChanges[**Push Changes to
GitHub Fork Branch**]
+ WP1 -.-> ResolveIssue
+
+ PushChanges --> HasPR{PR Exists?}
+ HasPR -->|No| CreateDraftPR[Create Draft PR]
+ HasPR -->|Yes| WaitAutoChecks[**Wait for Automated
Checks to Finish**]
+ CreateDraftPR --> WaitAutoChecks
+
+ WaitAutoChecks --> CheckAutoTools{All **CodeRabbit and
SonarQube** Comments
Resolved?}
+ CheckAutoTools -->|No| MarkDraft[Make Sure PR Is **Marked as a Draft**]
+ CheckAutoTools -->|Yes| MarkReady[Mark PR as Ready
for Review]
+ MarkDraft --> WP2[ ]
+ WP2 -.-> ResolveIssue
+
+ MarkReady --> RequestReview[Request Review from
Project Maintainers]
+ RequestReview --> WaitMaintainer[Wait for Maintainers'
Comments]
+
+ WaitMaintainer --> HasMaintainerComments{**Maintainers' Comments
Resolved**?}
+ HasMaintainerComments -->|No| MarkDraft
+ HasMaintainerComments -->|Yes| CheckCI{**CI/CD
Passing?**}
+
+ CheckCI -->|Yes| ReadyMerge([PR Ready for Merge])
+ CheckCI -->|No| MarkDraft
+
+ style Start fill:#4caf50,stroke:#2e7d32,stroke-width:2px,color:#ffffff
+ style ReadyMerge fill:#4caf50,stroke:#2e7d32,stroke-width:2px,color:#ffffff
+ style ResolveIssue fill:#ff9800,stroke:#f57c00,stroke-width:2px,color:#000000
+ style RunChecks fill:#2196f3,stroke:#1565c0,stroke-width:2px,color:#ffffff
+ style CheckAutoTools fill:#2196f3,stroke:#1565c0,stroke-width:2px,color:#ffffff
+ style HasMaintainerComments fill:#2196f3,stroke:#1565c0,stroke-width:2px,color:#ffffff
+ style CheckCI fill:#2196f3,stroke:#1565c0,stroke-width:2px,color:#ffffff
+ style MarkDraft fill:#ff9800,stroke:#f57c00,stroke-width:2px,color:#000000
+ style MarkReady fill:#4caf50,stroke:#2e7d32,stroke-width:2px,color:#ffffff
+ style CreateDraftPR fill:#ff9800,stroke:#f57c00,stroke-width:2px,color:#000000
+ style WP1 fill:transparent,stroke:transparent,color:transparent,width:0px,height:0px
+ style WP2 fill:transparent,stroke:transparent,color:transparent,width:0px,height:0px
+
+ linkStyle 0 stroke:#4caf50,stroke-width:2px
+ linkStyle 1 stroke:#4caf50,stroke-width:2px
+ linkStyle 2 stroke:#4caf50,stroke-width:2px
+ linkStyle 3 stroke:#4caf50,stroke-width:2px
+ linkStyle 4 stroke:#4caf50,stroke-width:2px
+ linkStyle 5 stroke:#4caf50,stroke-width:2px
+ linkStyle 6 stroke:#f44336,stroke-width:2px
+ linkStyle 7 stroke:#4caf50,stroke-width:2px
+ linkStyle 8 stroke:#f44336,stroke-width:2px
+ linkStyle 9 stroke:#4caf50,stroke-width:2px
+ linkStyle 10 stroke:#9e9e9e,stroke-width:2px
+ linkStyle 11 stroke:#4caf50,stroke-width:2px
+ linkStyle 12 stroke:#4caf50,stroke-width:2px
+ linkStyle 13 stroke:#4caf50,stroke-width:2px
+ linkStyle 14 stroke:#f44336,stroke-width:2px
+ linkStyle 15 stroke:#4caf50,stroke-width:2px
+ linkStyle 16 stroke:#f44336,stroke-width:2px
+ linkStyle 17 stroke:#f44336,stroke-width:2px
+ linkStyle 18 stroke:#4caf50,stroke-width:2px
+ linkStyle 19 stroke:#4caf50,stroke-width:2px
+ linkStyle 20 stroke:#4caf50,stroke-width:2px
+ linkStyle 21 stroke:#f44336,stroke-width:2px
+ linkStyle 22 stroke:#4caf50,stroke-width:2px
+ linkStyle 23 stroke:#4caf50,stroke-width:2px
+ linkStyle 24 stroke:#f44336,stroke-width:2px
+```
+
### 1. Find Something to Work On
- Check the **Issues** tab for open issues: [https://github.com/owasp/nest/issues](https://github.com/owasp/nest/issues)
diff --git a/mkdocs.yaml b/mkdocs.yaml
index a2dc701f90..f98af1e8fb 100644
--- a/mkdocs.yaml
+++ b/mkdocs.yaml
@@ -56,6 +56,11 @@ markdown_extensions:
- attr_list
- def_list
- abbr
+ - pymdownx.superfences:
+ custom_fences:
+ - name: mermaid
+ class: mermaid
+ format: '!!python/name:pymdownx.superfences.fence_code_format'
plugins:
- search