The Zenzic documentation ships as one Docusaurus site under one domain, with the main docs, a dedicated developers docs plugin, and the blog published alongside the same content tree.
zenzic.dev/
├── docs/ → User Area — install, configure, CI/CD, finding codes, community
├── developers/ → Dev Area — plugins, adapters, ADRs, tech debt ledger
└── blog/ → Release notes & engineering post-mortems
The docs, developers, and blog sections are routed through the same site configuration.
| You are a... | Start here |
|---|---|
| 👤 User reading the docs | User Guide |
| 🔧 Contributor / docs author | Developer Portal · ADR Vault |
| 🛡️ Security reviewer | Engineering Ledger · SECURITY.md |
- Node.js matching the project support policy declared in
package.json - Optional: just for short, memorable commands
npm ci # reproducible install from lockfile
# or
just setupnpm run start
# or
just startFor a full gate (TypeScript + build + Zenzic audit) before opening a PR:
just verify.zenzic.toml defines a [governance.directory_policies] contract that grants zero-debt exemptions
to specific path patterns. Findings on matching paths are annotated [POLICY_EXEMPTION] in audit
output and do not count against suppression_cap.
[governance.directory_policies]
"blog/**" = ["Z601"] # historical release posts: codenames are intentional
"explanation/mineral-path.mdx" = ["Z601"] # SSOT codename registry (EN)
"it/explanation/mineral-path.mdx" = ["Z601"] # SSOT codename registry (IT)This removes the need for inline <!-- zenzic:ignore --> tags scattered across historical blog posts,
keeping prose clean and the suppression cap reserved for genuine edge cases.