OPCT Documentation (this site)
Technology
OPCT documentation uses mkdocs for static site generation.
Source Code
The website is located in the docs/ directory of the opct repository.
Theme
This site is based on @material theme, with
customizations defined under the theme section in the mkdocs.yaml file under the root
directory of the repository.
Navigation
The left menu is configured in the nav section of mkdocs.yaml.
Diagrams as code
mkdocs plugins are defined under the plugins section in mkdocs.yaml.
Using diagrams
You can write diagrams as code using the Python language with the library
diagrams, the Python file must be located in the
docs/ directory and have the suffix .diagram.py.
The image defined in filename can be used directly in your markdown file; it is
rendered when the site is built or served locally.
For example, define the image name in the filename attribute of your Diagram in a
file docs/diagrams/my-diagram.diagram.py:
with Diagram("OCP/OKD Cluster", show=False, filename="./cluster-example"):
The image docs/diagrams/cluster-example.png when you run mkdocs build or mkdocs serve.
You can reference the image in your markdown file docs/diagrams/my-doc.md, such as:

Mermaid.js
You also can draw diagram as a code with Mermaid.js
directly in markdown files.
The mkdocs plugins diagrams
enables native support for Mermaid.js diagrams.
Material for MkDocs will automatically initialize the JavaScript runtime when a page includes a mermaid code block
Articles
Articles/Guides are located in docs/guides in *.md files.
Hosting
We use GitHub Pages as static website hosting and CD.
GitHub deploys the website to production after merging anything to a main branch.
Local Testing
Install mkdocs and dependencies.
Run:
pip install -r docs/requirements.txt
mkdocs serve
And navigate to http://localhost:8000 after successful build.
There is no need to restart mkdocs server almost for all changes as it supports hot reload.
Also, there is no need to refresh a webpage as hot reload updates changed content on the open page.
Website Build
To do it run:
make build-docs