@bluedynamics/cdk8s-plone 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/.jsii +109 -43
  2. package/API.md +49 -0
  3. package/CLAUDE.md +352 -0
  4. package/README.md +70 -176
  5. package/documentation/Makefile +357 -0
  6. package/documentation/README.md +284 -0
  7. package/documentation/mx.ini +3 -0
  8. package/documentation/sources/_static/brand-theme.css +685 -0
  9. package/documentation/sources/_static/custom-icons.css +123 -0
  10. package/documentation/sources/_static/fonts/hack/Hack-Regular.woff2 +0 -0
  11. package/documentation/sources/_static/fonts/orbitron/Orbitron-Black.woff2 +11 -0
  12. package/documentation/sources/_static/fonts/orbitron/Orbitron-Bold.woff2 +11 -0
  13. package/documentation/sources/_static/fonts/orbitron/Orbitron-Regular.woff2 +0 -0
  14. package/documentation/sources/_static/fonts/rajdhani/Rajdhani-Bold.woff2 +11 -0
  15. package/documentation/sources/_static/fonts/rajdhani/Rajdhani-Medium.woff2 +11 -0
  16. package/documentation/sources/_static/fonts/rajdhani/Rajdhani-Regular.woff2 +11 -0
  17. package/documentation/sources/_static/fonts/rajdhani/Rajdhani-SemiBold.woff2 +11 -0
  18. package/documentation/sources/_static/kup6s-icon-explanation.svg +32 -0
  19. package/documentation/sources/_static/kup6s-icon-howto.svg +34 -0
  20. package/documentation/sources/_static/kup6s-icon-plone.svg +79 -0
  21. package/documentation/sources/_static/kup6s-icon-reference.svg +34 -0
  22. package/documentation/sources/_static/kup6s-icon-tutorials.svg +30 -0
  23. package/documentation/sources/_static/logo-fix.js +12 -0
  24. package/documentation/sources/conf.py +105 -0
  25. package/documentation/sources/explanation/architecture.md +311 -0
  26. package/documentation/sources/explanation/features.md +353 -0
  27. package/documentation/sources/explanation/index.md +51 -0
  28. package/documentation/sources/how-to/index.md +56 -0
  29. package/documentation/sources/how-to/setup-prerequisites.md +354 -0
  30. package/documentation/sources/index.md +108 -0
  31. package/documentation/sources/reference/api/.gitkeep +1 -0
  32. package/documentation/sources/reference/configuration-options.md +370 -0
  33. package/documentation/sources/reference/index.md +59 -0
  34. package/documentation/sources/tutorials/01-quick-start.md +157 -0
  35. package/documentation/sources/tutorials/index.md +48 -0
  36. package/lib/httpcache.js +1 -1
  37. package/lib/imports/monitoring.coreos.com.d.ts +2029 -0
  38. package/lib/imports/monitoring.coreos.com.js +1042 -0
  39. package/lib/plone.d.ts +26 -0
  40. package/lib/plone.js +53 -2
  41. package/lib/service.d.ts +6 -0
  42. package/lib/service.js +2 -1
  43. package/package.json +3 -1
@@ -0,0 +1,357 @@
1
+ ##############################################################################
2
+ # THIS FILE IS GENERATED BY MXMAKE
3
+ #
4
+ # DOMAINS:
5
+ #: core.base
6
+ #: core.mxenv
7
+ #: docs.sphinx
8
+ #
9
+ # SETTINGS (ALL CHANGES MADE BELOW SETTINGS WILL BE LOST)
10
+ ##############################################################################
11
+
12
+ ## core.base
13
+
14
+ # `deploy` target dependencies.
15
+ # No default value.
16
+ DEPLOY_TARGETS?=
17
+
18
+ # target to be executed when calling `make run`
19
+ # No default value.
20
+ RUN_TARGET?=
21
+
22
+ # Additional files and folders to remove when running clean target
23
+ # No default value.
24
+ CLEAN_FS?=
25
+
26
+ # Optional makefile to include before default targets. This can
27
+ # be used to provide custom targets or hook up to existing targets.
28
+ # Default: include.mk
29
+ INCLUDE_MAKEFILE?=include.mk
30
+
31
+ # Optional additional directories to be added to PATH in format
32
+ # `/path/to/dir/:/path/to/other/dir`. Gets inserted first, thus gets searched
33
+ # first.
34
+ # No default value.
35
+ EXTRA_PATH?=
36
+
37
+ # Path to Python project relative to Makefile (repository root).
38
+ # Leave empty if Python project is in the same directory as Makefile.
39
+ # For monorepo setups, set to subdirectory name (e.g., `backend`).
40
+ # Future-proofed for multi-language monorepos (e.g., PROJECT_PATH_NODEJS).
41
+ # No default value.
42
+ PROJECT_PATH_PYTHON?=
43
+
44
+ ## core.mxenv
45
+
46
+ # Primary Python interpreter to use. It is used to create the
47
+ # virtual environment if `VENV_ENABLED` and `VENV_CREATE` are set to `true`.
48
+ # If global `uv` is used, this value is passed as `--python VALUE` to the venv creation.
49
+ # uv then downloads the Python interpreter if it is not available.
50
+ # for more on this feature read the [uv python documentation](https://docs.astral.sh/uv/concepts/python-versions/)
51
+ # Default: python3
52
+ PRIMARY_PYTHON?=3.13
53
+
54
+ # Minimum required Python version.
55
+ # Default: 3.10
56
+ PYTHON_MIN_VERSION?=3.13
57
+
58
+ # Install packages using the given package installer method.
59
+ # Supported are `pip` and `uv`. When `uv` is selected, a global installation
60
+ # is auto-detected and used if available. Otherwise, uv is installed in the
61
+ # virtual environment or using `PRIMARY_PYTHON`, depending on the
62
+ # `VENV_ENABLED` setting.
63
+ # Default: pip
64
+ PYTHON_PACKAGE_INSTALLER?=uv
65
+
66
+ # Python version for UV to install/use when creating virtual
67
+ # environments with global UV. Passed to `uv venv -p VALUE`. Supports version
68
+ # specs like `3.11`, `3.14`, `cpython@3.14`. Defaults to PRIMARY_PYTHON value
69
+ # for backward compatibility.
70
+ # Default: $(PRIMARY_PYTHON)
71
+ UV_PYTHON?=$(PRIMARY_PYTHON)
72
+
73
+ # Flag whether to use virtual environment. If `false`, the
74
+ # interpreter according to `PRIMARY_PYTHON` found in `PATH` is used.
75
+ # Default: true
76
+ VENV_ENABLED?=true
77
+
78
+ # Flag whether to create a virtual environment. If set to `false`
79
+ # and `VENV_ENABLED` is `true`, `VENV_FOLDER` is expected to point to an
80
+ # existing virtual environment.
81
+ # Default: true
82
+ VENV_CREATE?=true
83
+
84
+ # The folder of the virtual environment.
85
+ # If `VENV_ENABLED` is `true` and `VENV_CREATE` is true it is used as the
86
+ # target folder for the virtual environment. If `VENV_ENABLED` is `true` and
87
+ # `VENV_CREATE` is false it is expected to point to an existing virtual
88
+ # environment. If `VENV_ENABLED` is `false` it is ignored.
89
+ # Default: .venv
90
+ VENV_FOLDER?=.venv
91
+
92
+ # mxdev to install in virtual environment.
93
+ # Default: mxdev
94
+ MXDEV?=mxdev
95
+
96
+ # mxmake to install in virtual environment.
97
+ # Default: mxmake
98
+ MXMAKE?=mxmake
99
+
100
+ ## docs.sphinx
101
+
102
+ # Documentation source folder.
103
+ # Default: docs/source
104
+ DOCS_SOURCE_FOLDER?=sources
105
+
106
+ # Documentation generation target folder.
107
+ # Default: docs/html
108
+ DOCS_TARGET_FOLDER?=html
109
+
110
+ # Documentation linkcheck output folder.
111
+ # Default: docs/linkcheck
112
+ DOCS_LINKCHECK_FOLDER?=docs/linkcheck
113
+
114
+ # Documentation Python requirements to be installed (via pip).
115
+ # No default value.
116
+ DOCS_REQUIREMENTS?=myst_parser sphinxcontrib.mermaid shibuya sphinx-design sphinx-copybutton
117
+
118
+ ##############################################################################
119
+ # END SETTINGS - DO NOT EDIT BELOW THIS LINE
120
+ ##############################################################################
121
+
122
+ INSTALL_TARGETS?=
123
+ DIRTY_TARGETS?=
124
+ CLEAN_TARGETS?=
125
+ PURGE_TARGETS?=
126
+
127
+ export PATH:=$(if $(EXTRA_PATH),$(EXTRA_PATH):,)$(PATH)
128
+
129
+ # Helper variable: adds trailing slash to PROJECT_PATH_PYTHON only if non-empty
130
+ PYTHON_PROJECT_PREFIX=$(if $(PROJECT_PATH_PYTHON),$(PROJECT_PATH_PYTHON)/,)
131
+
132
+ # Defensive settings for make: https://tech.davis-hansson.com/p/make/
133
+ SHELL:=bash
134
+ .ONESHELL:
135
+ # for Makefile debugging purposes add -x to the .SHELLFLAGS
136
+ .SHELLFLAGS:=-eu -o pipefail -O inherit_errexit -c
137
+ .SILENT:
138
+ .DELETE_ON_ERROR:
139
+ MAKEFLAGS+=--warn-undefined-variables
140
+ MAKEFLAGS+=--no-builtin-rules
141
+
142
+ # mxmake folder
143
+ MXMAKE_FOLDER?=.mxmake
144
+
145
+ # Sentinel files
146
+ SENTINEL_FOLDER?=$(MXMAKE_FOLDER)/sentinels
147
+ SENTINEL?=$(SENTINEL_FOLDER)/about.txt
148
+ $(SENTINEL): $(firstword $(MAKEFILE_LIST))
149
+ @mkdir -p $(SENTINEL_FOLDER)
150
+ @echo "Sentinels for the Makefile process." > $(SENTINEL)
151
+
152
+ ##############################################################################
153
+ # mxenv
154
+ ##############################################################################
155
+
156
+ OS?=
157
+
158
+ # Determine the executable path
159
+ ifeq ("$(VENV_ENABLED)", "true")
160
+ export VIRTUAL_ENV=$(abspath $(VENV_FOLDER))
161
+ ifeq ("$(OS)", "Windows_NT")
162
+ VENV_EXECUTABLE_FOLDER=$(VIRTUAL_ENV)/Scripts
163
+ else
164
+ VENV_EXECUTABLE_FOLDER=$(VIRTUAL_ENV)/bin
165
+ endif
166
+ export PATH:=$(VENV_EXECUTABLE_FOLDER):$(PATH)
167
+ MXENV_PYTHON=python
168
+ else
169
+ MXENV_PYTHON=$(PRIMARY_PYTHON)
170
+ endif
171
+
172
+ # Determine the package installer with non-interactive flags
173
+ ifeq ("$(PYTHON_PACKAGE_INSTALLER)","uv")
174
+ PYTHON_PACKAGE_COMMAND=uv pip --no-progress
175
+ else
176
+ PYTHON_PACKAGE_COMMAND=$(MXENV_PYTHON) -m pip
177
+ endif
178
+
179
+ # Auto-detect global uv availability (simple existence check)
180
+ ifeq ("$(PYTHON_PACKAGE_INSTALLER)","uv")
181
+ UV_AVAILABLE:=$(shell command -v uv >/dev/null 2>&1 && echo "true" || echo "false")
182
+ else
183
+ UV_AVAILABLE:=false
184
+ endif
185
+
186
+ # Determine installation strategy
187
+ # depending on the PYTHON_PACKAGE_INSTALLER and UV_AVAILABLE
188
+ # - both vars can be false or
189
+ # - one of them can be true,
190
+ # - but never boths.
191
+ USE_GLOBAL_UV:=$(shell [[ "$(PYTHON_PACKAGE_INSTALLER)" == "uv" && "$(UV_AVAILABLE)" == "true" ]] && echo "true" || echo "false")
192
+ USE_LOCAL_UV:=$(shell [[ "$(PYTHON_PACKAGE_INSTALLER)" == "uv" && "$(UV_AVAILABLE)" == "false" ]] && echo "true" || echo "false")
193
+
194
+ # Check if global UV is outdated (non-blocking warning)
195
+ ifeq ("$(USE_GLOBAL_UV)","true")
196
+ UV_OUTDATED:=$(shell uv self update --dry-run 2>&1 | grep -q "Would update" && echo "true" || echo "false")
197
+ else
198
+ UV_OUTDATED:=false
199
+ endif
200
+
201
+ MXENV_TARGET:=$(SENTINEL_FOLDER)/mxenv.sentinel
202
+ $(MXENV_TARGET): $(SENTINEL)
203
+ # Validation: Check Python version if not using global uv
204
+ ifneq ("$(USE_GLOBAL_UV)","true")
205
+ @$(PRIMARY_PYTHON) -c "import sys; vi = sys.version_info; sys.exit(1 if (int(vi[0]), int(vi[1])) >= tuple(map(int, '$(PYTHON_MIN_VERSION)'.split('.'))) else 0)" \
206
+ && echo "Need Python >= $(PYTHON_MIN_VERSION)" && exit 1 || :
207
+ else
208
+ @echo "Using global uv for Python $(UV_PYTHON)"
209
+ endif
210
+ # Validation: Check VENV_FOLDER is set if venv enabled
211
+ @[[ "$(VENV_ENABLED)" == "true" && "$(VENV_FOLDER)" == "" ]] \
212
+ && echo "VENV_FOLDER must be configured if VENV_ENABLED is true" && exit 1 || :
213
+ # Validation: Check uv not used with system Python
214
+ @[[ "$(VENV_ENABLED)" == "false" && "$(PYTHON_PACKAGE_INSTALLER)" == "uv" ]] \
215
+ && echo "Package installer uv does not work with a global Python interpreter." && exit 1 || :
216
+ # Warning: Notify if global UV is outdated
217
+ ifeq ("$(UV_OUTDATED)","true")
218
+ @echo "WARNING: A newer version of uv is available. Run 'uv self update' to upgrade."
219
+ endif
220
+
221
+ # Create virtual environment
222
+ ifeq ("$(VENV_ENABLED)", "true")
223
+ ifeq ("$(VENV_CREATE)", "true")
224
+ ifeq ("$(USE_GLOBAL_UV)","true")
225
+ @echo "Setup Python Virtual Environment using global uv at '$(VENV_FOLDER)'"
226
+ @uv venv --allow-existing --no-progress -p $(UV_PYTHON) --seed $(VENV_FOLDER)
227
+ else
228
+ @echo "Setup Python Virtual Environment using module 'venv' at '$(VENV_FOLDER)'"
229
+ @$(PRIMARY_PYTHON) -m venv $(VENV_FOLDER)
230
+ @$(MXENV_PYTHON) -m ensurepip -U
231
+ endif
232
+ endif
233
+ else
234
+ @echo "Using system Python interpreter"
235
+ endif
236
+
237
+ # Install uv locally if needed
238
+ ifeq ("$(USE_LOCAL_UV)","true")
239
+ @echo "Install uv in virtual environment"
240
+ @$(MXENV_PYTHON) -m pip install uv
241
+ endif
242
+
243
+ # Install/upgrade core packages
244
+ @$(PYTHON_PACKAGE_COMMAND) install -U pip setuptools wheel
245
+ @echo "Install/Update MXStack Python packages"
246
+ @$(PYTHON_PACKAGE_COMMAND) install -U $(MXDEV) $(MXMAKE)
247
+ @touch $(MXENV_TARGET)
248
+
249
+ .PHONY: mxenv
250
+ mxenv: $(MXENV_TARGET)
251
+
252
+ .PHONY: mxenv-dirty
253
+ mxenv-dirty:
254
+ @rm -f $(MXENV_TARGET)
255
+
256
+ .PHONY: mxenv-clean
257
+ mxenv-clean: mxenv-dirty
258
+ ifeq ("$(VENV_ENABLED)", "true")
259
+ ifeq ("$(VENV_CREATE)", "true")
260
+ @rm -rf $(VENV_FOLDER)
261
+ endif
262
+ else
263
+ @$(PYTHON_PACKAGE_COMMAND) uninstall -y $(MXDEV)
264
+ @$(PYTHON_PACKAGE_COMMAND) uninstall -y $(MXMAKE)
265
+ endif
266
+
267
+ INSTALL_TARGETS+=mxenv
268
+ DIRTY_TARGETS+=mxenv-dirty
269
+ CLEAN_TARGETS+=mxenv-clean
270
+
271
+ ##############################################################################
272
+ # sphinx
273
+ ##############################################################################
274
+
275
+ # additional targets required for building docs.
276
+ DOCS_TARGETS+=
277
+
278
+ SPHINX_BIN=sphinx-build
279
+ SPHINX_AUTOBUILD_BIN=sphinx-autobuild
280
+
281
+ DOCS_TARGET:=$(SENTINEL_FOLDER)/sphinx.sentinel
282
+ $(DOCS_TARGET): $(MXENV_TARGET)
283
+ @echo "Install Sphinx"
284
+ @$(PYTHON_PACKAGE_COMMAND) install -U sphinx sphinx-autobuild $(DOCS_REQUIREMENTS)
285
+ @touch $(DOCS_TARGET)
286
+
287
+ .PHONY: docs
288
+ docs: $(DOCS_TARGET) $(DOCS_TARGETS)
289
+ @echo "Build sphinx docs"
290
+ @$(SPHINX_BIN) $(DOCS_SOURCE_FOLDER) $(DOCS_TARGET_FOLDER)
291
+
292
+ .PHONY: docs-live
293
+ docs-live: $(DOCS_TARGET) $(DOCS_TARGETS)
294
+ @echo "Rebuild Sphinx documentation on changes, with live-reload in the browser"
295
+ @$(SPHINX_AUTOBUILD_BIN) $(DOCS_SOURCE_FOLDER) $(DOCS_TARGET_FOLDER)
296
+
297
+ .PHONY: docs-linkcheck
298
+ docs-linkcheck: $(DOCS_TARGET) $(DOCS_TARGETS)
299
+ @echo "Run Sphinx linkcheck"
300
+ @$(SPHINX_BIN) -b linkcheck $(DOCS_SOURCE_FOLDER) $(DOCS_LINKCHECK_FOLDER)
301
+
302
+ .PHONY: docs-dirty
303
+ docs-dirty:
304
+ @rm -f $(DOCS_TARGET)
305
+
306
+ .PHONY: docs-clean
307
+ docs-clean: docs-dirty
308
+ @test -e $(MXENV_PYTHON) && $(MXENV_PYTHON) -m pip uninstall -y \
309
+ sphinx sphinx-autobuild $(DOCS_REQUIREMENTS) || :
310
+ @rm -rf $(DOCS_TARGET_FOLDER)
311
+
312
+ INSTALL_TARGETS+=$(DOCS_TARGET)
313
+ DIRTY_TARGETS+=docs-dirty
314
+ CLEAN_TARGETS+=docs-clean
315
+
316
+ ##############################################################################
317
+ # Custom includes
318
+ ##############################################################################
319
+
320
+ -include $(INCLUDE_MAKEFILE)
321
+
322
+ ##############################################################################
323
+ # Default targets
324
+ ##############################################################################
325
+
326
+ INSTALL_TARGET:=$(SENTINEL_FOLDER)/install.sentinel
327
+ $(INSTALL_TARGET): $(INSTALL_TARGETS)
328
+ @touch $(INSTALL_TARGET)
329
+
330
+ .PHONY: install
331
+ install: $(INSTALL_TARGET)
332
+ @touch $(INSTALL_TARGET)
333
+
334
+ .PHONY: run
335
+ run: $(RUN_TARGET)
336
+
337
+ .PHONY: deploy
338
+ deploy: $(DEPLOY_TARGETS)
339
+
340
+ .PHONY: dirty
341
+ dirty: $(DIRTY_TARGETS)
342
+ @rm -f $(INSTALL_TARGET)
343
+
344
+ .PHONY: clean
345
+ clean: dirty $(CLEAN_TARGETS)
346
+ @rm -rf $(CLEAN_TARGETS) $(MXMAKE_FOLDER) $(CLEAN_FS)
347
+
348
+ .PHONY: purge
349
+ purge: clean $(PURGE_TARGETS)
350
+
351
+ .PHONY: runtime-clean
352
+ runtime-clean:
353
+ @echo "Remove runtime artifacts, like byte-code and caches."
354
+ @find . -name '*.py[c|o]' -delete
355
+ @find . -name '*~' -exec rm -f {} +
356
+ @find . -name '__pycache__' -exec rm -fr {} +
357
+
@@ -0,0 +1,284 @@
1
+ # cdk8s-plone Documentation
2
+
3
+ This directory contains the complete documentation for cdk8s-plone, built using [Sphinx](https://www.sphinx-doc.org/) with [MyST Parser](https://myst-parser.readthedocs.io/) and following the [Diátaxis framework](https://diataxis.fr/).
4
+
5
+ ## 📚 View Documentation
6
+
7
+ **Published documentation:** https://bluedynamics.github.io/cdk8s-plone/
8
+
9
+ ## 🏗️ Building Documentation Locally
10
+
11
+ ### Prerequisites
12
+
13
+ - Python 3.13+ (or Python 3.9+ with manual configuration)
14
+ - `make` command
15
+ - `uv` (fast Python package installer) - optional but recommended
16
+
17
+ ### Quick Start
18
+
19
+ ```bash
20
+ # Navigate to documentation directory
21
+ cd documentation
22
+
23
+ # Build HTML documentation
24
+ make docs
25
+
26
+ # Open in browser
27
+ open html/index.html # macOS
28
+ xdg-open html/index.html # Linux
29
+ ```
30
+
31
+ The first build will:
32
+ 1. Create a Python virtual environment (.venv)
33
+ 2. Install Sphinx and required extensions
34
+ 3. Generate HTML documentation
35
+
36
+ Subsequent builds will reuse the virtual environment and be much faster.
37
+
38
+ ### Development with Live Reload
39
+
40
+ For documentation writing, use the live-reload server:
41
+
42
+ ```bash
43
+ cd documentation
44
+ make docs-live
45
+ ```
46
+
47
+ This starts a development server at http://localhost:8000 that automatically rebuilds and refreshes when you save changes.
48
+
49
+ ### Clean Build
50
+
51
+ To remove generated files and rebuild from scratch:
52
+
53
+ ```bash
54
+ make clean
55
+ make docs
56
+ ```
57
+
58
+ ## 📝 Documentation Structure
59
+
60
+ The documentation follows the [Diátaxis framework](https://diataxis.fr/), organizing content into four categories:
61
+
62
+ ```
63
+ sources/
64
+ ├── index.md # Main landing page
65
+ ├── tutorials/ # Learning-oriented (step-by-step lessons)
66
+ │ └── index.md
67
+ ├── how-to/ # Goal-oriented (solve specific problems)
68
+ │ └── index.md
69
+ ├── reference/ # Information-oriented (technical specs)
70
+ │ ├── index.md
71
+ │ └── api/ # API documentation
72
+ ├── explanation/ # Understanding-oriented (concepts)
73
+ │ └── index.md
74
+ └── _static/ # Static assets (CSS, images, fonts)
75
+ ├── brand-theme.css # Cyberpunk theme styling
76
+ ├── custom-icons.css # Icon styling
77
+ ├── logo-fix.js # Logo link fixes
78
+ ├── plone-logo.svg # Project logo (placeholder)
79
+ ├── kup6s-icon-*.svg # Category icons
80
+ └── fonts/ # Web fonts (Rajdhani, Orbitron, Hack)
81
+ ```
82
+
83
+ ### Content Guidelines
84
+
85
+ #### Tutorials (Learning-Oriented)
86
+ - Step-by-step lessons for building skills
87
+ - Complete, reproducible examples
88
+ - Learning goals clearly stated
89
+ - Assumes beginner knowledge
90
+
91
+ #### How-To Guides (Goal-Oriented)
92
+ - Solutions to specific problems
93
+ - Assumes some knowledge
94
+ - Focus on accomplishing a task
95
+ - Recipe-style format
96
+
97
+ #### Reference (Information-Oriented)
98
+ - Technical specifications
99
+ - API documentation
100
+ - Configuration options
101
+ - Dry, factual descriptions
102
+
103
+ #### Explanation (Understanding-Oriented)
104
+ - Conceptual discussion
105
+ - Architecture and design decisions
106
+ - The "why" behind choices
107
+ - Broaden understanding
108
+
109
+ ## 🎨 Theme and Styling
110
+
111
+ The documentation uses:
112
+ - **Theme:** [Shibuya](https://shibuya.lepture.com/) - Modern, responsive Sphinx theme
113
+ - **Parser:** [MyST](https://myst-parser.readthedocs.io/) - Markdown with extensions
114
+ - **Style:** Cyberpunk-inspired (cyan #00d4ff, dark background)
115
+ - **Fonts:**
116
+ - Rajdhani (headings) - geometric, futuristic
117
+ - Hack (body/code) - monospace, highly legible
118
+ - Orbitron (special emphasis) - geometric, bold
119
+
120
+ ## 🔧 Configuration
121
+
122
+ Key configuration files:
123
+
124
+ - **`Makefile`** - Build automation (generated by mxmake)
125
+ - **`mx.ini`** - mxmake settings
126
+ - **`sources/conf.py`** - Sphinx configuration
127
+ - **`.gitignore`** - Excludes build artifacts
128
+
129
+ ### Sphinx Extensions
130
+
131
+ - `myst_parser` - Markdown support
132
+ - `sphinxcontrib.mermaid` - Diagram support (```mermaid)
133
+ - `sphinx_design` - Grid and card directives
134
+ - `sphinx_copybutton` - Copy button for code blocks
135
+
136
+ ### MyST Extensions
137
+
138
+ - `deflist` - Definition lists
139
+ - `colon_fence` - ::: directive syntax for grids/cards
140
+ - Mermaid fence as directive
141
+
142
+ ## 📖 Writing Documentation
143
+
144
+ ### Markdown Format
145
+
146
+ All documentation is written in Markdown with MyST extensions.
147
+
148
+ **Example:**
149
+
150
+ ```markdown
151
+ # Page Title
152
+
153
+ ## Section
154
+
155
+ Regular Markdown content with **bold**, *italic*, and `code`.
156
+
157
+ ### Code Blocks
158
+
159
+ \```python
160
+ import example
161
+ print("Hello, world!")
162
+ \```
163
+
164
+ ### Grid Cards (Diátaxis Landing Pages)
165
+
166
+ ::::{grid} 2
167
+ :gutter: 3
168
+
169
+ :::{grid-item-card} Card Title
170
+ :img-top: _static/icon.svg
171
+ :link: path/to/page
172
+ :link-type: doc
173
+
174
+ Card description
175
+ :::
176
+
177
+ ::::
178
+ ```
179
+
180
+ ### Internal Links
181
+
182
+ ```markdown
183
+ [Link text](path/to/file.md)
184
+ [Link to section](file.md#section-heading)
185
+ ```
186
+
187
+ ### Images
188
+
189
+ ```markdown
190
+ ![Alt text](path/to/image.png)
191
+
192
+ # Or with MyST directive:
193
+ \```{image} path/to/image.png
194
+ :width: 200px
195
+ :align: center
196
+ \```
197
+ ```
198
+
199
+ ### Tables
200
+
201
+ ```markdown
202
+ | Column 1 | Column 2 |
203
+ |----------|----------|
204
+ | Value 1 | Value 2 |
205
+ ```
206
+
207
+ ### Diagrams
208
+
209
+ Use Mermaid for diagrams:
210
+
211
+ ````markdown
212
+ ```mermaid
213
+ graph LR
214
+ A[Start] --> B[Process]
215
+ B --> C[End]
216
+ ```
217
+ ````
218
+
219
+ ## 🚀 Deployment
220
+
221
+ Documentation will be automatically deployed to GitHub Pages via GitHub Actions:
222
+
223
+ 1. **Trigger:** Push to `main` branch or manual workflow dispatch
224
+ 2. **Build:** Ubuntu runner builds documentation with Sphinx
225
+ 3. **Deploy:** Artifacts uploaded to GitHub Pages
226
+ 4. **URL:** https://bluedynamics.github.io/cdk8s-plone/
227
+
228
+ ## 📦 Dependencies
229
+
230
+ Documentation dependencies (installed automatically by `make docs`):
231
+
232
+ - sphinx - Documentation generator
233
+ - sphinx-autobuild - Live-reload server
234
+ - myst_parser - Markdown parser
235
+ - sphinxcontrib.mermaid - Mermaid diagram support
236
+ - shibuya - Sphinx theme
237
+ - sphinx-design - Grid/card directives
238
+ - sphinx-copybutton - Code block copy button
239
+
240
+ ## 🤝 Contributing
241
+
242
+ When contributing to documentation:
243
+
244
+ 1. **Follow Diátaxis categories** - Put content in the right section
245
+ 2. **Use clear headings** - H1 for page title, H2 for sections
246
+ 3. **Test locally** - Always build and preview before committing
247
+ 4. **Check links** - Ensure all internal links work
248
+ 5. **Use consistent style** - Follow existing formatting patterns
249
+ 6. **Add images to _static/** - Keep static assets organized
250
+
251
+ ## 🔍 Troubleshooting
252
+
253
+ ### Build Errors
254
+
255
+ **Error: `sphinx-build: command not found`**
256
+ - Solution: Run `make clean` then `make docs` to reinstall dependencies
257
+
258
+ **Error: Unknown directive type "grid"**
259
+ - Solution: Ensure `sphinx_design` is installed: `pip install sphinx-design`
260
+
261
+ **Error: "Cannot find reference" warnings**
262
+ - Solution: Check that linked files exist and paths are correct
263
+
264
+ ### Theme Issues
265
+
266
+ **Fonts not loading**
267
+ - Check that font files exist in `_static/fonts/`
268
+ - Verify paths in `brand-theme.css`
269
+
270
+ **Logo not displaying**
271
+ - Ensure `_static/plone-logo.svg` exists
272
+ - Check `html_logo` setting in `conf.py`
273
+
274
+ ## 📚 Resources
275
+
276
+ - [Diátaxis Framework](https://diataxis.fr/) - Documentation organization philosophy
277
+ - [MyST Parser Documentation](https://myst-parser.readthedocs.io/) - Markdown syntax reference
278
+ - [Sphinx Documentation](https://www.sphinx-doc.org/) - Sphinx features and configuration
279
+ - [Shibuya Theme](https://shibuya.lepture.com/) - Theme documentation
280
+ - [Mermaid Diagrams](https://mermaid.js.org/) - Diagram syntax
281
+
282
+ ---
283
+
284
+ **Questions?** Open an issue on GitHub or ask in the project discussions.
@@ -0,0 +1,3 @@
1
+ [settings]
2
+ threads = 5
3
+ version-overrides =