-
Notifications
You must be signed in to change notification settings - Fork 1
ETL/CDC: Balancing, Layout / Visual and structural overhaul for individual "Integration" pages #241
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughRemoved many embedded HTML style includes and moved styling into a standalone CSS file (added to Sphinx config). Standardized header/logo and grid/card layouts across numerous integration pages, updated several link references and texts, and added a Marquez tutorial plus an Airflow DAG example for lineage/data ingestion. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant DocsPage
participant Sphinx
participant CustomCSS
User->>DocsPage: Request page
DocsPage->>Sphinx: Load static assets
Sphinx->>CustomCSS: Serve css/custom.css
DocsPage->>CustomCSS: Apply layout and utility classes
User->>DocsPage: Interact with grids, cards, dropdowns
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20–25 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 29
🔭 Outside diff range comments (3)
docs/integrate/node-red/index.md (1)
24-53
: Update FlowFuse Cloud and Introduction URLs
- In docs/integrate/node-red/index.md:
- Change the “FlowFuse Cloud” link from https://app.flowforge.com to https://app.flowfuse.com
- Replace the “Introduction to FlowFuse” webinar link with the official introduction doc at https://flowfuse.com/docs/cloud/introduction/
docs/integrate/estuary/index.md (1)
45-49
: Normalize reference label case to match definitionThe reference is defined as [Estuary Managed] (capital M). Use the same case to avoid link-resolution edge cases.
-Estuary offers its solution as a [managed product][Estuary managed], available +Estuary offers its solution as a [managed product][Estuary Managed], availabledocs/integrate/dbt/index.md (1)
35-38
: Fix cross-page links: use Sphinx/MyST refs instead of in-page #anchors.The anchors (#debezium, #apache-airflow, #bi-tools) don’t exist on this page and won’t resolve. Use :ref: to the integration anchors defined in their index.md files.
-The idea is that data engineers make source data available to an environment where -dbt projects run, for example with [Debezium](#debezium) or with [Airflow](#apache-airflow). -Afterwards, data analysts can run their dbt projects against this data to produce models -(tables and views) that can be used with a number of [BI tools](#bi-tools). +The idea is that data engineers make source data available to an environment where +dbt projects run, for example with {ref}`Debezium <debezium>` or with {ref}`Apache Airflow <apache-airflow>`. +Afterwards, data analysts can run their dbt projects against this data to produce models +(tables and views) that can be used with a number of {ref}`BI tools <bi-tools>`.If the target labels differ, adjust the ref targets to match the actual anchor IDs.
🧹 Nitpick comments (93)
docs/integrate/mysql/import-csv.rst (1)
5-9
: Anchor naming: consider hierarchical prefix for consistencyConsider aligning the new anchor with existing integrate anchors (e.g., integrate-mysql-import-csv). This keeps labels discoverable and predictable.
Apply this diff:
-.. _mysql-import-csv: +.. _integrate-mysql-import-csv:docs/conf.py (1)
101-103
: Guard Against Duplicate CSS Entries & Verify Static PathTo prevent accidentally appending the same stylesheet twice and ensure Sphinx can locate your custom CSS, update docs/conf.py as follows:
-html_css_files += [ - 'css/custom.css', -] +if 'css/custom.css' not in html_css_files: + html_css_files.append('css/custom.css')Additionally, we didn’t find any explicit html_static_path configuration in docs/conf.py (or elsewhere in the repo). Either rely on Sphinx’s default
html_static_path = ['_static']
or add this line near the top of docs/conf.py to guarantee that ‘css/custom.css’ resolves under_static
:html_static_path = ['_static']Please verify that your static path is correctly set so the CSS file is served.
docs/_static/css/custom.css (1)
54-57
: Refine h1+logo alignment for robustnessinline-block works, but inline-flex provides better vertical centering when an image/logo is adjacent to the title and handles wrapping more predictably.
Apply this diff:
-#main-content h1 { - display: inline-block; -} +#main-content h1 { + display: inline-flex; + align-items: center; + gap: 0.5rem; /* space between logo and title */ +} +/* Optional: ensure logos inside h1 scale and align nicely */ +#main-content h1 img { + vertical-align: middle; + max-height: 2rem; /* adjust as needed per design */ +}docs/integrate/streamsets/index.md (2)
4-10
: Avoid inline styles and external hotlinked logo; prefer reusable CSS + local assetReplace the float/clear inline styles with a CSS class and serve the logo from docs/_static to prevent third‑party hotlinking and improve reliability.
Proposed change in this file:
-```{div} -:style: "float: right" -[{h=60px}][StreamSets Data Collector] -``` -```{div} -:style: "clear: both" -``` +```{div} +:class: integrate-logo-right +[{h=60px}][StreamSets Data Collector] +``` +```{div} +:class: clear-both +```Add (outside this file) to docs/_static/css/custom.css:
.integrate-logo-right { float: right; margin-left: .5rem; } .clear-both { clear: both; }
28-33
: Typo: “StreamSet” → “StreamSets”Use the correct product name with trailing “s”.
-:::{grid-item-card} Use StreamSet with CrateDB +:::{grid-item-card} Use StreamSets with CrateDBdocs/integrate/index.md (1)
53-53
: Consistency of display labelsOnly Power BI uses display text (“Power BI <powerbi/index>”). If intentional, fine; otherwise consider aligning display text across entries for uniformity.
docs/integrate/dbeaver/index.md (1)
9-10
: Add alt text for logo for accessibilityCurrent image has empty alt; provide meaningful alt text.
-[{w=120px}][DBeaver] +[{w=120px}][DBeaver]docs/integrate/azure-functions/index.md (2)
7-13
: Avoid inline styles and external hotlinked logo; prefer reusable CSS + local assetReplace inline float/clear with CSS classes and serve the logo from docs/_static.
-```{div} -:style: "float: right;" -[{h=60px}][Azure Functions] -``` -```{div} -:style: "clear: both" -``` +```{div} +:class: integrate-logo-right +[{h=60px}][Azure Functions] +``` +```{div} +:class: clear-both +```CSS addition (outside this file) as noted in the StreamSets comment.
31-39
: Minor wording tightening in card bodySmall phrasing tweak for concision.
-A common pattern is to use an Azure Function to enrich and ingest data -to a CrateDB instance by connecting that Azure Function to an IoT Hub's -new messages trigger. +A common pattern uses an Azure Function to enrich and ingest data +into a CrateDB instance by connecting the function to an IoT Hub +new‑messages trigger.docs/integrate/n8n/index.md (2)
4-10
: Replace inline styles with CSS classes; add lazy-loading for logo.Inline styles make reuse and maintenance harder. Prefer classes and move styling into custom.css. Also add loading=lazy for the external logo.
Proposed change in this file:
-```{div} -:style: "float: right; text-align: right" -[{h=60px}][n8n] -``` +```{div} +:class: integration-logo align-right +[{h=60px loading=lazy}][n8n] +``` -```{div} -:style: "clear: both" -``` +```{div} +:class: clearfix +```Add to docs/_static/css/custom.css:
.integration-logo { float: right; text-align: right; } .align-right { text-align: right; } .clearfix { clear: both; }
33-35
: Resolve MD053 (unused reference) by inlining the link in seealso or ensure it’s recognized.markdownlint flags the “CrateDB and n8n” reference as unused. Either inline the link in the seealso block and remove the definition, or keep the reference but ensure the linter recognizes it.
Option A (inline, simplest):
-```{seealso} -[CrateDB and n8n] -``` +```{seealso} +CrateDB and n8n: https://cratedb.com/integrations/cratedb-and-n8n +```Then remove the now-unused definition:
-[CrateDB and n8n]: https://cratedb.com/integrations/cratedb-and-n8n
Option B (keep reference): keep current seealso usage and add a short inline usage elsewhere on the page to satisfy the linter, or adjust lint config to allow references inside directives.
Also applies to: 37-39
docs/integrate/apache-iceberg/index.md (1)
4-10
: Prefer CSS classes over inline styles; add lazy-loading to logo.Align with the “custom CSS” direction by moving float/clear into classes and add loading=lazy.
-```{div} -:style: "float: right" -[{h=60px}][Apache Iceberg] -``` +```{div} +:class: integration-logo +[{h=60px loading=lazy}][Apache Iceberg] +``` -```{div} -:style: "clear: both" -``` +```{div} +:class: clearfix +```CSS (docs/_static/css/custom.css):
.integration-logo { float: right; } .clearfix { clear: both; }docs/integrate/llamaindex/index.md (1)
96-97
: Minor wording/formatting nit.Consider removing “i.e.” for brevity and joining lines to avoid awkward wrap in lists.
-- Text-to-SQL / Talk to your data: - Query the database in human language, i.e. query CrateDB in plain English. +- Text-to-SQL / Talk to your data: Query the database in human language; query CrateDB in plain English.docs/integrate/aws-lambda/index.md (2)
7-13
: Use CSS classes and lazy-loading for the logo.Keep styling centralized and improve perf with lazy-loading.
-```{div} -:style: "float: right;" -[{h=60px}][AWS Lambda] -``` +```{div} +:class: integration-logo +[{h=60px loading=lazy}][AWS Lambda] +``` -```{div} -:style: "clear: both" -``` +```{div} +:class: clearfix +```
27-30
: Tiny grammar improvement (optional).Use “a Kinesis stream” for readability.
-It is common practice to forward DynamoDB table change stream events to a -Kinesis Stream, and consume that from an adapter to write into an analytical -or long-term storage consolidation database like CrateDB. +It is common practice to forward DynamoDB table change stream events to a +Kinesis stream, and to consume that from an adapter to write into an analytical +or long-term storage consolidation database like CrateDB.docs/integrate/sql-server/index.md (2)
6-12
: Inline styles and HTML entity spacing; prefer CSS classes for consistencyReplace inline style and
spacing with semantic classes and CSS gaps for consistency (and easier global tuning). Also consider setting a small left margin on the second logo via CSS rather than
.Example diff (content-side):
-```{div} -:style: "float: right; margin-left: 1em" +```{div} .float-right .logos [{h=60px}](https://www.microsoft.com/) - [{h=60px}](https://learn.microsoft.com/en-us/sql/)-
{div} -:style: "clear: both" +
{div} .clear-bothSuggested CSS (docs/_static/css/custom.css):
.float-right { float: right; margin-left: 1em; } .clear-both { clear: both; } .logos img + img { margin-left: .5rem; }
38-46
: Grid/card usage for “Learn” is clear and consistentCard content and link config look correct for sphinx-design. Consider adding a short, benefit-focused subtitle to the title (optional).
Also applies to: 48-48
docs/integrate/influxdb/index.md (2)
9-15
: Add alt text to HTML badge image for accessibilityThe shield image lacks alt text. Add alt to improve accessibility and SEO.
- <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-toolkit/influxdb.yml?branch=main&label=CTK%2BInfluxDB" loading="lazy"></a> + <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-toolkit/influxdb.yml?branch=main&label=CTK%2BInfluxDB" loading="lazy" alt="Build status: CTK + InfluxDB"></a>
31-38
: Synopsis snippet is helpful; consider labeling credentials placeholdersMinor: consider marking credentials clearly as placeholders to avoid copy/paste confusion by readers.
- "influxdb2://example:[email protected]:8086/testdrive/demo" \ - --cratedb-sqlalchemy-url="crate://user:[email protected]:4200/testdrive/demo" + "influxdb2://{org}:{token}@influxdb.example.org:8086/{bucket}/{measurement}" \ + --cratedb-sqlalchemy-url="crate://{user}:{password}@cratedb.example.org:4200/{schema}/{table}"docs/integrate/cluvio/index.md (4)
5-10
: Prefer CSS classes over inline styles; logo alt text OKConsider switching to CSS classes for floats/clears for maintainability and consistency with custom.css usage.
Example (content):
-```{div} -:style: "float: right;" +```{div} .float-right [{h=60px}][Cluvio]-
{div} -:style: "clear: both" +
{div} .clear-both
19-28
: Add descriptive alt text/captions to images inside dropdownThe inline images use filenames as alt surrogates. Add concise alt text or convert to figure directives with captions for better accessibility.
Example:
-{h=200px} +{h=200px} -{h=200px} +{h=200px}
33-43
: Fix markdownlint MD034 “bare URL” in 🔗 valueThe linter flags the bare URL. Wrapping the URL in angle brackets usually satisfies MD034 without changing semantics.
-:link: https://community.cratedb.com/t/data-analysis-with-cluvio-and-cratedb/1571 +:link: <https://community.cratedb.com/t/data-analysis-with-cluvio-and-cratedb/1571>
45-47
: Resolve markdownlint MD053 “unused reference” for [CrateDB and Cluvio]Some linters ignore links inside directives like seealso. To appease MD053, add a visible usage outside directives or disable the rule for this file.
Option A (add visible usage):
```{seealso} **Product:** [CrateDB and Cluvio]
+See also [CrateDB and Cluvio].
Option B (disable rule at top of file): ```md <!-- markdownlint-disable MD053 -->
Also applies to: 51-52
docs/integrate/datagrip/index.md (2)
9-10
: Good structure; consider CSS classes over inline stylesLogo float and wrapped description are clean. Prefer CSS classes for float/spacing to keep styling centralized.
Also applies to: 11-19
33-35
: Add descriptive alt text for screenshotsSeveral images have generic “Image” alt text. Replace with meaningful alt text to improve accessibility and searchability.
Examples:
-{h=180px} +{h=180px} -{h=180px} +{h=180px} -{w=400px} +{w=400px} -{w=480px} +{w=480px} -{h=240px} +{h=240px} -{h=240px} +{h=240px}Also applies to: 42-42, 56-56, 75-77, 85-96
docs/integrate/node-red/index.md (1)
6-10
: Optional: Prefer CSS classes over inline styles for logo and clearfixTo align with “switching to a custom CSS file,” consider using reusable classes instead of inline
:style:
attributes for float and clear.Example:
-```{div} -:style: "float: right; margin-left: 1em" +```{div} +:class: "logo-right" [{h=60px}](https://nodered.org/)-
{div} -:style: "clear: both" +
{div}
+:class: "clearfix"docs/integrate/powerbi/index.md (1)
4-10
: Optional: Move inline styles to CSS classesAdopt shared classes (e.g.,
logo-right
,clearfix
) rather than inline:style:
to align with the global CSS approach.-```{div} -:style: "float: right" +```{div} +:class: "logo-right" ... -```{div} -:style: "clear: both" +```{div} +:class: "clearfix"</blockquote></details> <details> <summary>docs/integrate/kestra/index.md (1)</summary><blockquote> `4-10`: **Optional: Replace inline styles with CSS classes** Use shared CSS classes for the floated logo and clear block to reduce inline styles. ```diff -```{div} -:style: "float: right" +```{div} +:class: "logo-right" ... -```{div} -:style: "clear: both" +```{div} +:class: "clearfix"
</blockquote></details> <details> <summary>docs/integrate/apache-kafka/index.md (1)</summary><blockquote> `4-13`: **Optional: Use CSS classes instead of inline styles** Prefer shared classes (e.g., `logo-right text-right`, `clearfix`) over inline `:style:`. ```diff -```{div} -:style: "float: right; text-align: right" +```{div} +:class: "logo-right text-right" ... -```{div} -:style: "clear: both" +```{div} +:class: "clearfix"
</blockquote></details> <details> <summary>docs/integrate/meltano/index.md (2)</summary><blockquote> `4-12`: **Optional: Standardize logo sizing and spacing; prefer CSS classes** - Consider using a consistent height (`h=60px`) like other integrations instead of width-based sizing for both logos. - Replace ` ` spacing with CSS (gap/margin) and switch inline styles to shared classes. ```diff -```{div} -:style: "float: right" -[{w=180px}][Singer] - -[{w=180px}][Meltano] +```{div} +:class: "logo-right logo-pair" +[{h=60px}][Singer] +[{h=60px}][Meltano]
-
{div} -:style: "clear: both" +
{div}
+:class: "clearfix"
51-53
: Nit: minor wording tweak for clarity“contributions and interests are welcome” → “contributions and interest are welcome.”
-🚧 These adapters are a work in progress, contributions and interests are welcome. 🚧 +🚧 These adapters are a work in progress; contributions and interest are welcome. 🚧docs/integrate/telegraf/index.md (3)
5-7
: Replace inline float style with CSS class for consistencyAligns with PR goal to prefer custom CSS over inline styles. Define a reusable class (e.g., .logo-float-right) and apply it here.
-```{div} -:style: "float: right" -[{h=60px}][Telegraf] +```{div} +:class: logo-float-right +[{h=60px}][Telegraf]
8-10
: Replace inline clearfix with CSS utilityPrefer a CSS class like .clearfix to reduce inline styles and ease future changes.
-```{div} -:style: "clear: both" +```{div} +:class: clearfix
39-39
: Add descriptive alt text to image for accessibilityCurrent image has no alt text, which is suboptimal for screen readers.
-{h=200px} +{h=200px}docs/integrate/estuary/index.md (2)
6-8
: Use CSS class instead of inline float styleKeep styling centralized per PR objectives.
-```{div} -:style: "float: right" -[{h=60px}][Estuary] +```{div} +:class: logo-float-right +[{h=60px}][Estuary]
9-11
: Use CSS clearfix utility instead of inline styleConsistent with moving styling to CSS.
-```{div} -:style: "clear: both" +```{div} +:class: clearfixdocs/integrate/mysql/index.md (2)
5-12
: Consolidate inline styles into CSS classesPrefer reusable classes for the logo block and clearfix.
-```{div} -:style: "float: right;" +```{div} +:class: logo-float-right [{h=60px}](https://www.mysql.com/) [{h=60px}](https://www.mariadb.com/)-:style: "clear: both" +:class: clearfix
34-38
: Synopsis looks clear; consider adding copy button laterOptional enhancement: Sphinx-copybutton can improve UX for shell blocks.
docs/integrate/apache-nifi/index.md (3)
5-7
: Prefer CSS class over inline float for the logoKeeps styling consistent and maintainable.
-```{div} -:style: "float: right" +```{div} +:class: logo-float-right [{h=60px}][Apache NiFi]
8-10
: Replace inline clear with CSS utilityAligns with PR styling direction.
-```{div} -:style: "clear: both" +```{div} +:class: clearfix
32-35
: Add alt text to images for accessibilityCurrent images have empty alt; add short descriptions.
-{h=120px} -{h=120px} -{h=120px} +{h=120px} +{h=120px} +{h=120px}docs/integrate/gradio/index.md (3)
5-7
: Replace inline style with CSS classKeep consistent with using custom CSS.
-```{div} -:style: "float: right; text-align: right" +```{div} +:class: logo-float-right text-right [{h=60px}][Gradio]
11-13
: Use CSS clearfix instead of inlineConsistent styling approach.
-```{div} -:style: "clear: both" +```{div} +:class: clearfix
32-32
: Consider lazy-loading the embedded videoImprove page performance by deferring iframe load.
-<iframe width="480" height="320" src="https://www.youtube-nocookie.com/embed/44vi31hehw4?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +<iframe width="480" height="320" loading="lazy" src="https://www.youtube-nocookie.com/embed/44vi31hehw4?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>docs/integrate/explo/index.md (2)
24-25
: Add alt text and lazy loading to heavy screenshotsThese external images are large; add alt text and
loading=lazy
to reduce layout shift and bandwidth.-{h=200px} -{h=200px} +{height=200px loading=lazy} +{height=200px loading=lazy}
8-10
: Optional: move inline styles to CSS classesGiven the shift to custom CSS, consider replacing inline
style
with semantic classes (e.g.,class: logo-right
,class: clear-both
) for consistency and maintainability.docs/integrate/aws-dms/index.md (1)
12-14
: Optional: prefer CSS classes over inline stylesConsider replacing inline
style
with a reusable class for float/clear to match the move to custom CSS.docs/integrate/django/index.md (2)
41-45
: Fix markdownlint MD034: wrap bare URLWrap the bare URL in angle brackets to satisfy MD034.
-:link: https://github.com/crate/cratedb-django +:link: <https://github.com/crate/cratedb-django>
11-13
: Optional: prefer CSS classes over inline stylesFor consistency with the custom CSS approach, consider moving
float
/clear
to classes rather than inlinestyle
.docs/integrate/rill/index.md (3)
59-61
: Fix markdownlint MD034: wrap bare URLWrap the bare URL in angle brackets to comply with MD034.
-:link: https://community.cratedb.com/t/introducing-rill-and-bi-as-code-with-cratedb-cloud/1718 +:link: <https://community.cratedb.com/t/introducing-rill-and-bi-as-code-with-cratedb-cloud/1718>
48-49
: Add lazy loading to heavy mediaApply
loading=lazy
to reduce initial load time.-{h=200px} --p-3200.webp){h=200px} +{height=200px loading=lazy} +-p-3200.webp){height=200px loading=lazy}
8-10
: Optional: migrate inline styles to CSS classesIf custom CSS provides utilities, prefer classes (e.g.,
logo-right
,clear-both
) over inline styles.docs/integrate/aws-kinesis/index.md (1)
61-66
: markdownlint MD034 “bare URL” on card linksSphinx-design’s
:link:
metadata commonly includes raw URLs and can trigger MD034. Either:
- Accept/ignore MD034 for these blocks, or
- Move URLs to reference definitions at the bottom and reference them indirectly (if your linter doesn’t flag definitions).
docs/integrate/apache-flink/index.md (2)
12-14
: Harden external link and improve accessibility for the badgeAdd
rel="noopener noreferrer"
to the target-blank anchor and analt
attribute to the badge image.-<a href="https://github.com/crate/cratedb-examples/actions/workflows/framework-flink-kafka-java.yml" target="_blank"> - <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-examples/framework-flink-kafka-java.yml?branch=main&label=Apache%20Kafka,%20Apache%20Flink" loading="lazy"></a> +<a href="https://github.com/crate/cratedb-examples/actions/workflows/framework-flink-kafka-java.yml" + target="_blank" rel="noopener noreferrer"> + <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-examples/framework-flink-kafka-java.yml?branch=main&label=Apache%20Kafka,%20Apache%20Flink" + loading="lazy" alt="GitHub Actions: Apache Kafka, Apache Flink status"> +</a>
36-36
: Remove excessive whitespaceThere’s an extremely long run of spaces on this line. Clean it to avoid diff noise and potential formatting issues.
- A few companies are specializing in offering managed Flink services. + A few companies are specializing in offering managed Flink services.
docs/integrate/tableau/index.md (2)
18-18
: Add alt text to the illustrative imageFor accessibility, provide descriptive alt text for the image.
-{h=200px} +{h=200px}
44-51
: markdownlint MD034 “bare URL” on card linksIf MD034 is enforced, consider moving URLs to reference definitions at the bottom and pointing the card
:link:
to a reference (if supported), otherwise accept MD034 for sphinx-design metadata.docs/integrate/streamlit/index.md (2)
15-16
: Hyphenate “open-source” as a compound adjectiveMinor style fix.
-[Streamlit] is an open source application programming framework for quickly sketching +[Streamlit] is an open-source application programming framework for quickly sketching
34-35
: markdownlint MD034 “bare URL” on card linkSame note as other pages: either accept MD034 for card metadata or move link to a reference definition if that quiets the linter in your setup.
docs/integrate/debezium/index.md (3)
4-7
: Add alt text to the logoImprove accessibility by adding alt text.
-[{h=60px}][Debezium] +[{h=60px}][Debezium]
19-22
: Tighten phrasing for readabilityMinor grammar improvements.
-It allows -to capture changes on a source database system, mostly OLTP, and replicate them -to another system, for example to run OLAP workloads on the data. +It allows capturing changes on a source database system (typically OLTP) and +replicating them to another system, for example to run OLAP workloads on the data.
38-41
: markdownlint MD034 “bare URL” on card linkAs elsewhere: consider moving URLs to reference definitions if that satisfies your linter, or accept MD034 for sphinx-design metadata.
docs/integrate/apache-superset/index.md (3)
9-13
: Optional: replace inline styles with a reusable CSS class.Keeps styling centralized per this PR’s objective to use custom CSS.
Example:
- Define
.float-right-tight
in custom.css for float/text-align/right spacing.- Replace
:style: "float: right; text-align: right"
with:class: float-right-tight
.
23-24
: Add informative alt text to screenshots.Improves accessibility; use concise, descriptive alts or mark as decorative if non-informative.
-{h=200px} -{h=200px} +{h=200px} +{h=200px}
81-92
: Hyphenate compound adjectives in titles and copy.Aligns with LanguageTool hint and standard style (“open‑source”, “time‑series”).
-:::{grid-item-card} Blog: Open Source Data Warehousing and Visualization +:::{grid-item-card} Blog: Open‑source data warehousing and visualization ... -Use CrateDB and Apache Superset for Open Source Data Warehousing and Visualization. +Use CrateDB and Apache Superset for open‑source data warehousing and visualization. ... -:::{grid-item-card} Blog: Time Series Visualization +:::{grid-item-card} Blog: Time‑series visualization -Introduction to time series Visualization in CrateDB and Apache Superset. +Introduction to time‑series visualization in CrateDB and Apache Superset.docs/integrate/powerbi/service.rst (6)
61-62
: Fix product name spacing.Use “Power BI Desktop”.
-:ref:`CrateDB and PowerBI Desktop <powerbi-desktop>` integration +:ref:`CrateDB and Power BI Desktop <powerbi-desktop>` integration
73-76
: Capitalize “Desktop”.-With your report created on Power BI desktop, you can now publish it to the +With your report created on Power BI Desktop, you can now publish it to the
89-92
: Grammar fix.Remove stray “is” in “as it grows”.
-Data may change over time as it is grows, is enriched +Data may change over time as it grows, is enriched
95-98
: Hyphenate compound adjective “up‑to‑date”.-allowing the Power BI service to retrieve up to date datasets from CrateDB. +allowing the Power BI service to retrieve up‑to‑date datasets from CrateDB.
115-118
: Use “data source” (two words).-name your datasource, select the **ODBC** type, and enter the connection +name your data source, select the **ODBC** type, and enter the connection
134-136
: Consistency: “Power BI service”.-Now, navigate back to the Power BI Service and click on the extra options +Now, navigate back to the Power BI service and click on the extra optionsdocs/integrate/metabase/index.md (3)
27-29
: Add descriptive alt text to screenshots.Improves accessibility.
-{h=140px} -{h=140px} +{h=140px} +{h=140px}
36-42
: Tighten grammar in bullets.-**Save the time** needed for setup and maintenance of the platform, focusing only on the insights we can get from our data. +**Save time** on setup and maintenance; focus on the insights from your data. ... -**SMTP server:** Even your alerts and dashboard subscriptions covered with a preconfigured and managed SMTP server. +**SMTP server:** Alerts and dashboard subscriptions are covered via a preconfigured and managed SMTP server.
63-67
: Minor title tweak for consistency.Avoid quotes in card titles.
-:::{grid-item-card} Demo "metabase-cratedb" +:::{grid-item-card} Demo: metabase-cratedbdocs/integrate/apache-hop/index.md (2)
4-10
: Optional: replace inline styles with a CSS class.Keeps styles centralized alongside the new custom CSS approach.
Example:
- Add
.float-right-logo
to custom.css.- Use
:class: float-right-logo
instead of:style: "float: right"
.
31-33
: Add alt text to images.-{h=120px} -{h=120px} -{h=120px} +{h=120px} +{h=120px} +{h=120px}docs/integrate/dbt/index.md (3)
22-25
: Minor wording polish.-It is an SQL-first transformation workflow platform that lets teams quickly and -collaboratively deploy analytics code following software engineering best practices -like modularity, portability, CI/CD, and documentation. +It is an SQL‑first transformation workflow platform that lets teams quickly and +collaboratively deploy analytics code following software engineering best practices +such as modularity, portability, CI/CD, and documentation.
66-71
: Add alt text to the managed dbt image.-[{w=180px}](https://www.getdbt.com/product/dbt-cloud/) +[{w=180px}](https://www.getdbt.com/product/dbt-cloud/)
7-16
: Optional: move inline styles to CSS class.Keeps styling consistent with the new custom CSS approach.
docs/integrate/marquez/learn.md (4)
9-9
: Fix missing link target for “the Docker documentation on this topic”.The bracket link has no URL/definition and will render/break oddly.
Apply:
-We will need Docker Compose v2, to install it, make it available to all users in the system, check the installed version, or upgrade from v1, please refer to [the Docker documentation on this topic]. +We will need Docker Compose v2. To install it, make it available to all users, check the installed version, or upgrade from v1, refer to [the Docker documentation](https://docs.docker.com/compose/migrate/).
47-52
: Clarify headless/browser guidance.This setting is only needed when running headless or if the port isn’t exposed by default. Consider adding a one-liner note so readers know when to use it.
Apply:
-We will use the Airflow web interface, if you are running this on a headless system where you do not have access to a web browser you can run: +We will use the Airflow web interface. If you are running headless (no local browser), enable port exposure:
56-58
: Reconsider sudo for “astro dev start”.Running Astro as root can create permission issues in the project directory; prefer running as the current user.
Apply:
-astro config set postgres.port 5435 -sudo astro dev start +astro config set postgres.port 5435 +astro dev startIf sudo is truly required (e.g., corporate environment), add a note explaining implications.
236-243
: Address bare URL and wording per linter hints.
- Wrap the bare URL to satisfy MD034.
- Tweak “with success status” phrasing.
Apply:
-When the execution of the DAG completes, "Recent Tasks" should show 7 tasks with success status. +When the execution completes, “Recent Tasks” should show 7 successful tasks. - -Let's now navigate to the Marquez web interface at http://localhost:3000/ (replace localhost with the appropriate hostname if this is not running locally). +Now navigate to the Marquez web interface at <http://localhost:3000/> (replace localhost if this is not running locally).docs/integrate/risingwave/index.md (2)
40-41
: Minor grammar tweak.Add article “a” before “materialized view”.
Apply:
- Load an Apache Iceberg table, and serve it as materialized view. + Load an Apache Iceberg table, and serve it as a materialized view.
63-65
: Improve phrasing for clarity.“Converge it into” reads awkwardly.
Apply:
- Converge it into a CrateDB table for long-term persistence and efficient querying, - even on large amounts of data. + Ingest it into a CrateDB table for long-term persistence and efficient querying, + even at large scale.docs/integrate/grafana/index.md (1)
49-52
: Consider serving images from local docs assets instead of a pinned GitHub raw URL.External raw links can be brittle or slower. Prefer local static assets or a canonical CDN if available.
Follow-up: If the same images exist under docs/_assets, switch to relative paths, e.g.:
- /_assets/img/integrations/grafana/grafana-connection.png
- /_assets/img/integrations/grafana/grafana-panel1.png
docs/integrate/apache-airflow/index.md (2)
23-24
: Minor style: replace “in order to” with “to”Concise phrasing reads better here.
-[Astronomer] offers managed Airflow services on the cloud of your choice, in -order to run Airflow with less overhead. +[Astronomer] offers managed Airflow services on the cloud of your choice, to +run Airflow with less overhead.
114-123
: Resolve bare URL warnings in seealso (MD034)Angle-bracket the bare URL to satisfy markdownlint.
-**Repository:** https://github.com/crate/cratedb-airflow-tutorial +**Repository:** <https://github.com/crate/cratedb-airflow-tutorial>docs/integrate/prometheus/index.md (3)
36-36
: Add alt text to image (MD045)Provide a meaningful alt for accessibility.
-{h=200px} +{h=200px}
48-55
: Consistency: hyphenate “long-term”Standardize to “long-term” per common style.
-... intended for long term +... intended for long-term -Set up CrateDB as a long term metrics store +Set up CrateDB as a long-term metrics storeAlso applies to: 70-71
111-121
: Fix unused link reference warning (MD053) by inlining linkInline the link in seealso and drop the unused definition.
```{seealso} -[CrateDB and Prometheus] +<https://cratedb.com/integrations/cratedb-and-prometheus>@@
-[CrateDB and Prometheus]: https://cratedb.com/integrations/cratedb-and-prometheus</blockquote></details> <details> <summary>docs/integrate/pyviz/index.md (2)</summary><blockquote> `40-44`: **Tighten phrasing (“very large data”)** Minor style polish for a more formal tone. ```diff -visualize and interactively explore very large data, and with [GeoViews], you can +visualize and interactively explore large-scale datasets, and with [GeoViews], you can
50-56
: Add alt text to image links for accessibilityProvide brief, descriptive alt text for both images.
-[![][ds1]][ds1] +[![Datashader map aggregation example][ds1]][ds1] -[![][ds2]][ds2] +[![Datashader scatter/heat example][ds2]][ds2]
fd7285e
to
e880a64
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
♻️ Duplicate comments (8)
docs/integrate/apache-kafka/index.md (1)
8-9
: Alt text and rel=noopener added correctly — goodThe external badge link now includes rel="noopener noreferrer" and the image has a descriptive alt.
docs/integrate/explo/index.md (1)
24-25
: Add alt text, lazy loading, and standardize sizing on screenshotsBoth images lack alt text and use non-standard h. Add alt and loading=lazy, and use height.
-{h=200px} -{h=200px} +{height=200px loading=lazy} +{height=200px loading=lazy}docs/integrate/rill/index.md (1)
6-6
: Logo sizing and lazy loading fixed — niceReplaces h with height and adds loading=lazy as previously suggested.
docs/integrate/django/index.md (1)
6-10
: Security and accessibility improvements applied — looks good
- Logo uses height + lazy.
- External anchor hardened with rel and badge has a clear alt.
docs/integrate/marquez/learn.md (1)
76-85
: Avoid “sudo pip --user” and prefer user installs or pipx“sudo pip3 … --user” is contradictory and risky. Also, pipx installs should typically be run without sudo.
-sudo apt install -y python3-pip -sudo pip3 install --user crash +sudo apt install -y python3-pip +pip3 install --user crash-sudo apt install -y pipx -sudo pipx install crash +sudo apt install -y pipx +pipx install crashdocs/integrate/apache-superset/index.md (1)
8-13
: Nit: URL-encode Shields label for consistencyGood job adding rel="noopener noreferrer" and descriptive alt. Please encode the label query param to avoid spaces in the URL.
-<a href="https://github.com/crate/cratedb-examples/actions/workflows/application-apache-superset.yml" target="_blank" rel="noopener noreferrer"> - <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-examples/application-apache-superset.yml?branch=main&label=Apache Superset" loading="lazy" alt="CI status: Apache Superset"></a> +<a href="https://github.com/crate/cratedb-examples/actions/workflows/application-apache-superset.yml" target="_blank" rel="noopener noreferrer"> + <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-examples/application-apache-superset.yml?branch=main&label=Apache%20Superset" loading="lazy" alt="CI status: Apache Superset"></a>docs/integrate/marquez/index.md (1)
7-10
: Switch to a lightweight logo asset (SVG) to cut page weightYou already added height+lazy; recommend replacing the heavy social-card JPG with the official small logo.
-:style: "float: right" -[{height=60px loading=lazy}][Marquez] +:style: "float: right" +[{height=60px loading=lazy}][Marquez]docs/integrate/metabase/index.md (1)
5-10
: Resolved: badge hardened and accessiblerel="noopener noreferrer" and descriptive alt are in place. Good consistency with other pages.
🧹 Nitpick comments (14)
docs/integrate/apache-kafka/index.md (1)
6-6
: Standardize image attributes and add lazy loadingUse height instead of non-standard h and add loading=lazy for consistency and perf.
-[{h=60px}][Apache Kafka] +[{height=60px loading=lazy}][Apache Kafka]docs/integrate/marquez/learn.md (7)
21-22
: Optional: reduce risk when piping to shellConsider downloading the installer first for inspection instead of piping curl to bash.
-curl -sSL https://install.astronomer.io | sudo bash -s +curl -sSL https://install.astronomer.io -o install-astronomer.sh +sudo bash install-astronomer.sh
92-118
: Replace hard tabs with spaces in SQL block (markdownlint MD010)Tabs trigger MD010; switch to spaces for consistent rendering.
-CREATE TABLE public.Customers ( - CustomerID TEXT PRIMARY KEY NOT NULL DEFAULT gen_random_text_uuid() - ,CustomerName TEXT NOT NULL - ,Country TEXT - ); +CREATE TABLE public.Customers ( + CustomerID TEXT PRIMARY KEY NOT NULL DEFAULT gen_random_text_uuid(), + CustomerName TEXT NOT NULL, + Country TEXT +); -CREATE TABLE public.Invoices ( - InvoiceID TEXT PRIMARY KEY NOT NULL DEFAULT gen_random_text_uuid() - ,date TIMESTAMP DEFAULT now() - ,CustomerID TEXT - ); +CREATE TABLE public.Invoices ( + InvoiceID TEXT PRIMARY KEY NOT NULL DEFAULT gen_random_text_uuid(), + date TIMESTAMP DEFAULT now(), + CustomerID TEXT +); -CREATE TABLE public.Products ( - ProductID TEXT PRIMARY KEY NOT NULL DEFAULT gen_random_text_uuid() - ,Description TEXT - ,applicable_tax_percentage REAL - ); +CREATE TABLE public.Products ( + ProductID TEXT PRIMARY KEY NOT NULL DEFAULT gen_random_text_uuid(), + Description TEXT, + applicable_tax_percentage REAL +); -CREATE TABLE public.Invoice_items ( - InvoiceID TEXT - ,ProductID TEXT - ,quantity SMALLINT - ,unit_price REAL - ,PRIMARY KEY (InvoiceID,ProductID) - ); +CREATE TABLE public.Invoice_items ( + InvoiceID TEXT, + ProductID TEXT, + quantity SMALLINT, + unit_price REAL, + PRIMARY KEY (InvoiceID,ProductID) +);
132-138
: Specify a language on fenced block (markdownlint MD040)Use text to satisfy the linter.
-``` +```text Connection Id: cratedb_default Connection Type: Postgres Host: 172.17.0.1 Login: crate Port: 5436--- `135-136`: **Add host note for macOS/Windows** 172.17.0.1 won’t work on Docker Desktop. Add an alternative host hint below the block. ```diff
Connection Id: cratedb_default
Connection Type: Postgres
Host: 172.17.0.1
Login: crate
Port: 5436+ +On macOS/Windows (Docker Desktop), use: + +Host: host.docker.internal
156-156
: Avoid bare URL (markdownlint MD034)Wrap the URL in angle brackets or make it a link.
-Let's now navigate to the Marquez web interface at http://localhost:3000/ (replace localhost with the appropriate hostname if this is not running locally). +Let's now navigate to the Marquez web interface at <http://localhost:3000/> (replace localhost with the appropriate hostname if this is not running locally).
154-154
: Tighten phrasing“with success status” is wordy.
-When the execution of the DAG completes, "Recent Tasks" should show 7 tasks with success status. +When the DAG completes, "Recent Tasks" should show 7 successful tasks.
162-163
: Improve image alt text and standardize attributesUse a descriptive alt, standard height, and lazy loading.
-{h=180px} +{height=180px loading=lazy}docs/integrate/apache-superset/index.md (1)
79-93
: Optional: hyphenate compound adjective in body copy (keep official titles unchanged)To satisfy LanguageTool without altering the blog title, hyphenate the descriptive sentence.
-Use CrateDB and Apache Superset for Open Source Data Warehousing and Visualization. +Use CrateDB and Apache Superset for open-source data warehousing and visualization.docs/integrate/metabase/index.md (1)
22-29
: Useheight=
and add lazy-loading; improve alt text for screenshotsFor consistency with the rest of the PR and better a11y, prefer
height=
over the shorth=
, addloading=lazy
, and use descriptive alt text.-{h=140px} -{h=140px} +{height=140px loading=lazy} +{height=140px loading=lazy}docs/integrate/marquez/data_ingestion.py (4)
1-5
: Add a brief module docstringA short docstring improves discoverability in code search and rendered docs.
+""" +Airflow example DAG for reporting lineage to Marquez/OpenLineage while ingesting sample data into CrateDB. +""" from datetime import datetime, timedelta
6-13
: Optional: add DAG tags for UI discoverabilityTags help users filter DAGs in the Airflow UI.
with DAG( "lineage-reporting-cratedb", start_date=datetime(2024, 6, 28), max_active_runs=1, schedule="@daily", default_args={"retries": 1, "retry_delay": timedelta(minutes=1)}, catchup=False, + tags=["cratedb", "lineage", "marquez", "example"], ):
42-53
: Consistency: schema and tabsApply the same schema and spacing adjustments as above; replace tabs with spaces for inlets/outlets.
- INSERT INTO public.Products(Description,applicable_tax_percentage) + INSERT INTO doc.Products(Description, applicable_tax_percentage) SELECT CONCAT('Product ',a.b) ,(floor(random()*10)+15)/100.0 FROM GENERATE_SERIES(1,10) a(b); - """, - inlets=[{'namespace': 'example', 'name': 'more_sample_data'}], - outlets=[{'namespace': 'example', 'name': 'products_table'}] + """, + inlets=[{"namespace": "example", "name": "more_sample_data"}], + outlets=[{"namespace": "example", "name": "products_table"}],
55-68
: Realistic join predicate (optional) and spacingThe random join is fine for synthetic data, but a key-based join (or CROSS JOIN with a WHERE random()>0.5) is more explicit. Also convert tabs to spaces.
- INSERT INTO public.Invoice_items (InvoiceID,ProductID,quantity,unit_price) + INSERT INTO doc.Invoice_items (InvoiceID, ProductID, quantity, unit_price) SELECT InvoiceID,ProductID ,1+ceil(random()*4) ,random()*1000 - FROM public.Invoices - INNER JOIN public.Products ON random()>0.5; + FROM doc.Invoices + CROSS JOIN doc.Products + WHERE random() > 0.5; - """, - inlets=[{'namespace': 'example', 'name': 'invoices_table'},{'namespace': 'example', 'name': 'products_table'}], - outlets=[{'namespace': 'example', 'name': 'invoice_items_table'}] + """, + inlets=[{"namespace": "example", "name": "invoices_table"}, {"namespace": "example", "name": "products_table"}], + outlets=[{"namespace": "example", "name": "invoice_items_table"}],
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (21)
docs/_include/links.md
(2 hunks)docs/_static/css/custom.css
(2 hunks)docs/integrate/apache-kafka/index.md
(2 hunks)docs/integrate/apache-superset/index.md
(4 hunks)docs/integrate/aws-dms/index.md
(2 hunks)docs/integrate/azure-functions/index.md
(2 hunks)docs/integrate/dbt/index.md
(3 hunks)docs/integrate/django/index.md
(2 hunks)docs/integrate/explo/index.md
(1 hunks)docs/integrate/gradio/index.md
(2 hunks)docs/integrate/llamaindex/index.md
(2 hunks)docs/integrate/marquez/data_ingestion.py
(1 hunks)docs/integrate/marquez/index.md
(2 hunks)docs/integrate/marquez/learn.md
(1 hunks)docs/integrate/metabase/index.md
(2 hunks)docs/integrate/n8n/index.md
(1 hunks)docs/integrate/plotly/index.md
(2 hunks)docs/integrate/powerbi/index.md
(2 hunks)docs/integrate/powerbi/service.rst
(7 hunks)docs/integrate/rill/index.md
(2 hunks)docs/integrate/streamsets/index.md
(2 hunks)
✅ Files skipped from review due to trivial changes (2)
- docs/_static/css/custom.css
- docs/integrate/powerbi/service.rst
🚧 Files skipped from review as they are similar to previous changes (10)
- docs/integrate/streamsets/index.md
- docs/integrate/n8n/index.md
- docs/integrate/powerbi/index.md
- docs/integrate/azure-functions/index.md
- docs/integrate/llamaindex/index.md
- docs/integrate/aws-dms/index.md
- docs/_include/links.md
- docs/integrate/gradio/index.md
- docs/integrate/dbt/index.md
- docs/integrate/plotly/index.md
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-08-09T16:19:43.947Z
Learnt from: amotl
PR: crate/cratedb-guide#238
File: docs/integrate/azure-functions/learn.rst:1-1
Timestamp: 2025-08-09T16:19:43.947Z
Learning: In the CrateDB Guide documentation, main integration anchors (e.g., `azure-functions`) are intentionally placed in the `index.md` files of their respective integration folders, while detailed tutorials use the `-learn` suffix (e.g., `azure-functions-learn`) in their `learn.rst` or `learn.md` files. This is a deliberate architectural pattern for the documentation restructuring.
Applied to files:
docs/integrate/apache-kafka/index.md
docs/integrate/marquez/index.md
docs/integrate/marquez/learn.md
docs/integrate/metabase/index.md
🪛 markdownlint-cli2 (0.17.2)
docs/integrate/apache-kafka/index.md
51-51: Bare URL used
(MD034, no-bare-urls)
57-57: Bare URL used
(MD034, no-bare-urls)
docs/integrate/apache-superset/index.md
82-82: Bare URL used
(MD034, no-bare-urls)
88-88: Bare URL used
(MD034, no-bare-urls)
162-162: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb and apache superset"
(MD053, link-image-reference-definitions)
docs/integrate/django/index.md
42-42: Bare URL used
(MD034, no-bare-urls)
docs/integrate/explo/index.md
24-24: Images should have alternate text (alt text)
(MD045, no-alt-text)
25-25: Images should have alternate text (alt text)
(MD045, no-alt-text)
34-34: Bare URL used
(MD034, no-bare-urls)
docs/integrate/marquez/index.md
35-35: Link fragments should be valid
(MD051, link-fragments)
35-35: Link fragments should be valid
(MD051, link-fragments)
37-37: Link fragments should be valid
(MD051, link-fragments)
39-39: Images should have alternate text (alt text)
(MD045, no-alt-text)
40-40: Images should have alternate text (alt text)
(MD045, no-alt-text)
41-41: Images should have alternate text (alt text)
(MD045, no-alt-text)
docs/integrate/marquez/learn.md
94-94: Hard tabs
Column: 1
(MD010, no-hard-tabs)
95-95: Hard tabs
Column: 1
(MD010, no-hard-tabs)
96-96: Hard tabs
Column: 1
(MD010, no-hard-tabs)
97-97: Hard tabs
Column: 1
(MD010, no-hard-tabs)
100-100: Hard tabs
Column: 1
(MD010, no-hard-tabs)
101-101: Hard tabs
Column: 1
(MD010, no-hard-tabs)
102-102: Hard tabs
Column: 1
(MD010, no-hard-tabs)
103-103: Hard tabs
Column: 1
(MD010, no-hard-tabs)
106-106: Hard tabs
Column: 1
(MD010, no-hard-tabs)
107-107: Hard tabs
Column: 1
(MD010, no-hard-tabs)
108-108: Hard tabs
Column: 1
(MD010, no-hard-tabs)
109-109: Hard tabs
Column: 1
(MD010, no-hard-tabs)
112-112: Hard tabs
Column: 1
(MD010, no-hard-tabs)
113-113: Hard tabs
Column: 1
(MD010, no-hard-tabs)
114-114: Hard tabs
Column: 1
(MD010, no-hard-tabs)
115-115: Hard tabs
Column: 1
(MD010, no-hard-tabs)
116-116: Hard tabs
Column: 1
(MD010, no-hard-tabs)
117-117: Hard tabs
Column: 1
(MD010, no-hard-tabs)
132-132: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
156-156: Bare URL used
(MD034, no-bare-urls)
docs/integrate/metabase/index.md
25-25: Bare URL used
(MD034, no-bare-urls)
docs/integrate/rill/index.md
59-59: Bare URL used
(MD034, no-bare-urls)
🪛 LanguageTool
docs/integrate/apache-superset/index.md
[uncategorized] ~81-~81: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ... ::::{grid} :::{grid-item-card} Blog: Open Source Data Warehousing and Visualization :lin...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[uncategorized] ~84-~84: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...url Use CrateDB and Apache Superset for Open Source Data Warehousing and Visualization. :::...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
docs/integrate/marquez/learn.md
[style] ~154-~154: ‘with success’ might be wordy. Consider a shorter alternative.
Context: ...tes, "Recent Tasks" should show 7 tasks with success status. Let's now navigate to the Marq...
(EN_WORDINESS_PREMIUM_WITH_SUCCESS)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build docs
🔇 Additional comments (14)
docs/integrate/explo/index.md (1)
6-6
: Logo attributes look goodSwitched to height and added lazy loading. Consistent with the pattern across integrations.
docs/integrate/marquez/learn.md (2)
41-47
: Cross-platform Marquez URL — goodLinux and macOS/Windows variants are documented.
66-67
: Docker run with sudo (optional note)If the user is in the docker group, sudo isn’t needed. Otherwise, keep sudo. Consider adding a short note.
docs/integrate/apache-superset/index.md (5)
14-15
: LGTM: clearfixUsing a dedicated clear: both block is clean and predictable.
29-30
: LGTM: small, lazy-loaded Preset logoHeight+lazy attributes are consistent with the pattern used across pages.
148-153
: LGTM: Development links separationMoving these under a dedicated rubric improves scannability.
157-158
: LGTM: seealso target naming“CrateDB and Apache Superset” wording is consistent across the page.
162-162
: Ignore MD053 warning for CrateDB and Apache Superset link
The[CrateDB and Apache Superset]
reference is used at lines 157 and 162 indocs/integrate/apache-superset/index.md
, so the definition on line 162 is valid.docs/integrate/marquez/index.md (3)
31-41
: Verify cross-reference targetmarquez-learn
exists; otherwise this link will breakThe grid card uses
:link-type: ref
with:link: marquez-learn
. Ensure the tutorial page defines an explicit label.Two safe options:
- Preferred: Add a label to docs/integrate/marquez/learn.md (top of file):
(marquez-learn)= # Use Marquez with CrateDB
- Or switch to doc path linking here:
-:::{grid-item-card} Tutorial: Use Marquez with CrateDB -:link: marquez-learn -:link-type: ref +:::{grid-item-card} Tutorial: Use Marquez with CrateDB +:link: /integrate/marquez/learn +:link-type: doc
45-48
: LGTM: hidden toctree for tutorialClean separation of overview vs. tutorial content.
51-51
: LGTM: canonical Marquez URLUsing the official site improves trust and stability.
docs/integrate/metabase/index.md (1)
49-69
: LGTM: Learn gridClear, concise cards covering tutorial, blog, and demo. Nice.
docs/integrate/marquez/data_ingestion.py (2)
70-86
: LGTM: explicit REFRESH TABLE stepsExplicit refreshes are appropriate before downstream reads in CrateDB.
88-90
: LGTM: task dependenciesOrder ensures refreshed visibility before dependent reads. Clear and minimal.
8f848b3
to
5829fe6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
♻️ Duplicate comments (10)
docs/integrate/n8n/index.md (1)
23-25
: markdownlint MD034/MD053 are false positives here
- Line 23 (MD034): In a MyST
grid-item-card
with:link-type: url
,:link:
expects a bare URL. This is correct; keep as-is. [duplicate of prior discussion]- Line 35 (MD053): The reference definition
[CrateDB and n8n]: ...
is used in the precedingseealso
block; the “unused” hint is spurious.Also applies to: 35-35
docs/integrate/mysql/index.md (1)
43-47
: markdownlint MD034 on Sphinx 🔗 is a false positive (repo-level fix recommended)As discussed earlier, MD034 flags
:link:
lines incorrectly. Prefer suppressing MD034 for Sphinx:link:
fields in lint config rather than altering content.Update markdownlint config (example):
{ "MD034": { "ignore_patterns": ["^\\s*:link:"] } }docs/integrate/datagrip/index.md (1)
84-92
: Use of grid card for the blog link is good; address MD034 via configContent is correct. If lint flags a “bare URL” on any
:link:
line, prefer the repo-level MD034 ignore pattern for Sphinx:link:
fields.docs/integrate/telegraf/index.md (1)
46-53
: MD034 on Sphinx 🔗 is a known false positive; handle via lint configKeep content as-is. Prefer adjusting markdownlint to ignore
:link:
lines.docs/integrate/streamlit/index.md (1)
30-38
: MD034 on card :link is a lint false positive; adjust config insteadContent is fine; please rely on the repo-level MD034 ignore pattern for Sphinx
:link:
fields.docs/integrate/marquez/index.md (1)
7-9
: Use smaller official logo asset and keep lazy loadingSwitch from the heavy social-card JPG to the SVG logo to reduce page weight; keep height and lazy loading.
-```{div} .float-right -[{height=60px loading=lazy}][Marquez] -``` +```{div} .float-right +[{height=60px loading=lazy}][Marquez] +```docs/integrate/aws-kinesis/index.md (1)
48-52
: Do not embed AWS credentials or real ARNs in examplesRemove inline credentials and replace real-looking ARN parts with placeholders; advise using the default AWS credential chain.
```shell -uvx 'cratedb-toolkit[io-ingestr]' load table \ - "kinesis://?aws_access_key_id=${AWS_ACCESS_KEY_ID}&aws_secret_access_key=${AWS_SECRET_ACCESS_KEY}®ion_name=eu-central-1&table=arn:aws:kinesis:eu-central-1:831394476016:stream/testdrive" \ - --cluster-url="crate://crate:crate@localhost:4200/testdrive/kinesis_demo" +uvx 'cratedb-toolkit[io-ingestr]' load table \ + "kinesis://?region_name=<region>&table=arn:aws:kinesis:<region>:<account_id>:stream/<stream_name>" \ + --cluster-url="crate://crate:crate@localhost:4200/testdrive/kinesis_demo" +# Notes: +# - Rely on AWS default credential chain (env, ~/.aws/{config,credentials}, or IAM role). +# - Replace <...> placeholders with your values.</blockquote></details> <details> <summary>docs/integrate/meltano/index.md (1)</summary><blockquote> `28-33`: **Stabilize the Examples link (avoid ephemeral branches)** Linking to amo/meltano risks 404s later. Pin to main, a tag, or a commit SHA. ```shell #!/bin/bash # Show status for branch URL and possible main fallback set -e BRANCH_URL="https://github.com/crate/cratedb-examples/tree/amo/meltano/framework/singer-meltano" MAIN_URL="https://github.com/crate/cratedb-examples/tree/main/framework/singer-meltano" for u in "$BRANCH_URL" "$MAIN_URL"; do code=$(curl -s -o /dev/null -w "%{http_code}" "$u"); echo "$code $u"; done echo "If MAIN 404s, consider pinning to a tag or commit SHA."
docs/integrate/metabase/index.md (1)
7-9
: External badge hardened correctlyrel="noopener noreferrer" and descriptive alt are in place. Thanks for addressing the earlier feedback.
docs/integrate/apache-nifi/index.md (1)
39-47
: Suppress MD034 for Sphinx Design 🔗 directive to silence false positive.markdownlint flags the 🔗 URL as a bare URL; this is intended syntax.
Apply:
:::{grid-item-card} Tutorial: Connect Apache NiFi and CrateDB +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/connecting-to-cratedb-from-apache-nifi/647 :link-type: url +<!-- markdownlint-enable MD034 --> How to connect from Apache NiFi to CrateDB and ingest data from NiFi into CrateDB. :::
🧹 Nitpick comments (21)
docs/_static/css/custom.css (1)
47-50
: Nit: stray double semicolonThere’s a trailing extra semicolon on Line 49.
- margin-bottom: 0 !important;; + margin-bottom: 0 !important;docs/integrate/n8n/index.md (1)
20-21
: Optional: add gutter for visual balance in gridsSmall spacing improvement for consistency with similar pages.
-::::{grid} 2 +::::{grid} 2 +:gutter: 2docs/integrate/gradio/index.md (1)
6-7
: Avoid layout<br>
; prefer CSS spacingMinor readability/semantics nit: replace the
<br>
with margin via CSS or block-level spacing.Example:
-<br>
Add a small bottom margin to the logo wrapper or badge via CSS (e.g.,
.float-right .badge { margin-top: .25rem; }
) instead of using a<br>
.docs/integrate/node-red/index.md (1)
57-71
: Nit: add columns and align punctuation in card descriptions
- Consider declaring 2 columns to match other pages and improve layout density.
- Make card descriptions consistent by ending both with periods.
-::::{grid} +::::{grid} 2 @@ -Automating recurrent CrateDB queries using Node-RED +Automating recurrent CrateDB queries using Node-RED.docs/integrate/datagrip/index.md (2)
7-10
: Avoid inline styles; use a CSS utility class insteadTo keep styles centralized (goal of this PR), replace
:style:
with a utility class and add it to custom.css.-```{div} .float-right -:style: "margin-left: 0.5em" +```{div} .float-right .ml-0_5 [{w=120px}][DataGrip]Add to docs/_static/css/custom.css: ```css .ml-0_5 { margin-left: 0.5em; }
Also applies to: 11-21
32-34
: Add lazy-loading to images to improve page performanceLarge images benefit from
loading=lazy
to reduce initial payload.-{h=180px} +{h=180px loading=lazy} -{h=180px} +{h=180px loading=lazy} -{w=400px} +{w=400px loading=lazy} -{w=480px} +{w=480px loading=lazy} -{h=240px} +{h=240px loading=lazy} -{h=240px} +{h=240px loading=lazy}Also applies to: 41-41, 55-56, 65-65, 74-75
docs/integrate/telegraf/index.md (1)
38-39
: Add lazy-loading to the architecture diagramImproves performance without changing layout.
-{h=200px} +{h=200px loading=lazy}docs/integrate/streamlit/index.md (1)
59-60
: Add lazy loading to the embedded YouTube iframeReduces initial load cost; safe on modern browsers.
-<iframe width="240" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>docs/integrate/marquez/index.md (1)
49-52
: Remove unused link reference“The Docker documentation on this topic” link reference appears unused on this page.
[Marquez]: https://marquezproject.ai/ [OpenLineage]: https://openlineage.io/ -[the Docker documentation on this topic]: https://docs.docker.com/compose/install/linux/
docs/integrate/aws-kinesis/index.md (1)
7-9
: Standardize image attributes and add lazy loadingUse height instead of h and add loading=lazy for consistency across pages.
-```{div} .float-right -[{h=60px}][Amazon Kinesis Data Streams] -``` +```{div} .float-right +[{height=60px loading=lazy}][Amazon Kinesis Data Streams] +```docs/integrate/debezium/index.md (1)
4-8
: Align image attributes with site-wide conventionUse height and add lazy loading for consistency and performance.
-```{div} .float-right -[{h=60px}][Debezium] -``` +```{div} .float-right +[{height=60px loading=lazy}][Debezium] +```docs/integrate/meltano/index.md (1)
4-10
: Fix image sizing attributes and add lazy loadingUse width instead of w and add loading=lazy; consider smaller official assets to reduce weight.
-```{div} .float-right -[{w=180px}][Singer] +```{div} .float-right +[{width=180px loading=lazy}][Singer] -[{w=180px}][Meltano] +[{width=180px loading=lazy}][Meltano]</blockquote></details> <details> <summary>docs/integrate/apache-hop/index.md (1)</summary><blockquote> `29-31`: **Lazy-load screenshots to improve page performance** Add loading="lazy" to the three images inside the dropdown. ```diff -{h=120px} -{h=120px} -{h=120px} +{h=120px loading=lazy} +{h=120px loading=lazy} +{h=120px loading=lazy}
docs/integrate/tableau/index.md (3)
17-17
: Lazy-load the large dashboard imageAdd loading="lazy" to reduce initial page weight.
-{h=200px} +{h=200px loading=lazy}
65-71
: Remove unused link reference definitions flagged by MD053These two appear unused; keep the ones referenced by the page.
-[Connecting to CrateDB from Tableau with JDBC]: https://cratedb.com/blog/connecting-to-cratedb-from-tableau-with-jdbc [Connector: Issues]: https://github.com/crate/cratedb-tableau-connector/issues [CrateDB and Tableau]: https://cratedb.com/integrations/cratedb-and-tableau -[CrateDB Tableau Connector]: https://github.com/crate/cratedb-tableau-connector [Tableau]: https://www.tableau.com/ [Tool: Tableau]: https://github.com/crate/crate/labels/tool%3A%20Tableau [Using CrateDB with Tableau]: https://community.cratedb.com/t/using-cratedb-with-tableau/1192Note: MD053 also flagged the "CrateDB and Tableau" definition, but it is used in the seealso block; consider the linter warning a false positive.
26-46
: markdownlint MD034 on 🔗 fields is likely a false positiveThe URLs are values to 🔗 keys inside grid-item-card directives, not bare URLs in prose. Recommend suppressing MD034 for these lines if it persists.
Also applies to: 36-42, 43-50
docs/integrate/prometheus/index.md (3)
5-5
: Lazy-load the logo imageSmall optimization for initial render.
-[{h=60px}][Prometheus] +[{h=60px loading=lazy}][Prometheus]
35-36
: Lazy-load the architecture diagramReduce LCP by deferring image load.
-{h=200px} +{h=200px loading=lazy}
96-96
: Enable lazy-loading for the embedded YouTube iframeImproves performance without changing behavior.
-<iframe width="240" src="https://www.youtube-nocookie.com/embed/EfIlRXVyfZM?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/EfIlRXVyfZM?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>docs/integrate/apache-nifi/index.md (2)
18-18
: Dropdown usage and media placement: OK; suggest minor copy consistency fixes.Structure is solid. Consider sentence-case and consistent punctuation within list items for polish.
Apply:
- - **Extensive configuration**: Loss-tolerant and guaranteed delivery, Low latency and + - **Extensive configuration**: Loss-tolerant and guaranteed delivery, low latency and high throughput, Dynamic prioritization, Runtime modification of flow configuration, Back pressure control. - - **Browser-based user interface**: Seamless experience for design, control, feedback, - and monitoring + - **Browser-based user interface**: Seamless experience for design, control, feedback, + and monitoring. - - **Secure communication**: HTTPS with configurable authentication strategies, - Multi-tenant authorization and policy management, Standard protocols for encrypted + - **Secure communication**: HTTPS with configurable authentication strategies, + multi-tenant authorization and policy management, standard protocols for encrypted communication including TLS and SSH.Also applies to: 30-32, 34-34
30-32
: Prefer local static assets and lazy-loading for screenshots.Linking to GitHub user-content assets can be brittle. Consider moving the images under docs/_static and using lazy loading to improve perf.
Example tweak for lazy loading:
-{h=120px} +{h=120px loading=lazy} -{h=120px} +{h=120px loading=lazy} -{h=120px} +{h=120px loading=lazy}If you’d like, I can provide a follow-up patch that relocates these under docs/_static/img and updates the links.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (81)
docs/_include/card/timeseries-datashader.md
(1 hunks)docs/_include/links.md
(2 hunks)docs/_static/css/custom.css
(2 hunks)docs/conf.py
(2 hunks)docs/connect/index.md
(0 hunks)docs/feature/blob/index.md
(0 hunks)docs/feature/ccr/index.md
(0 hunks)docs/feature/cloud/index.md
(0 hunks)docs/feature/cluster/index.md
(0 hunks)docs/feature/document/index.md
(0 hunks)docs/feature/fdw/index.md
(0 hunks)docs/feature/index.md
(0 hunks)docs/feature/index/index.md
(0 hunks)docs/feature/relational/index.md
(0 hunks)docs/feature/search/fts/index.md
(0 hunks)docs/feature/search/geo/index.md
(0 hunks)docs/feature/search/hybrid/index.md
(0 hunks)docs/feature/search/index.md
(0 hunks)docs/feature/search/vector/index.md
(0 hunks)docs/feature/snapshot/index.md
(0 hunks)docs/feature/sql/index.md
(0 hunks)docs/feature/storage/index.md
(0 hunks)docs/feature/udf/index.md
(0 hunks)docs/ingest/cdc/index.md
(2 hunks)docs/ingest/etl/index.md
(0 hunks)docs/ingest/index.md
(0 hunks)docs/integrate/apache-airflow/index.md
(3 hunks)docs/integrate/apache-flink/index.md
(2 hunks)docs/integrate/apache-hop/index.md
(2 hunks)docs/integrate/apache-iceberg/index.md
(1 hunks)docs/integrate/apache-kafka/index.md
(2 hunks)docs/integrate/apache-nifi/index.md
(2 hunks)docs/integrate/apache-superset/index.md
(4 hunks)docs/integrate/aws-dms/index.md
(2 hunks)docs/integrate/aws-dynamodb/index.md
(1 hunks)docs/integrate/aws-kinesis/index.md
(2 hunks)docs/integrate/aws-lambda/index.md
(2 hunks)docs/integrate/azure-functions/index.md
(2 hunks)docs/integrate/cluvio/index.md
(1 hunks)docs/integrate/datagrip/index.md
(6 hunks)docs/integrate/dbeaver/index.md
(3 hunks)docs/integrate/dbt/index.md
(4 hunks)docs/integrate/debezium/index.md
(1 hunks)docs/integrate/django/index.md
(2 hunks)docs/integrate/estuary/index.md
(4 hunks)docs/integrate/explo/index.md
(1 hunks)docs/integrate/gradio/index.md
(1 hunks)docs/integrate/grafana/index.md
(2 hunks)docs/integrate/index.md
(3 hunks)docs/integrate/influxdb/index.md
(2 hunks)docs/integrate/kestra/index.md
(2 hunks)docs/integrate/langchain/index.md
(2 hunks)docs/integrate/llamaindex/index.md
(2 hunks)docs/integrate/marquez/data_ingestion.py
(1 hunks)docs/integrate/marquez/index.md
(2 hunks)docs/integrate/marquez/learn.md
(1 hunks)docs/integrate/meltano/index.md
(1 hunks)docs/integrate/metabase/index.md
(1 hunks)docs/integrate/mongodb/index.md
(2 hunks)docs/integrate/mysql/import-csv.rst
(1 hunks)docs/integrate/mysql/index.md
(1 hunks)docs/integrate/n8n/index.md
(1 hunks)docs/integrate/node-red/index.md
(3 hunks)docs/integrate/plotly/index.md
(2 hunks)docs/integrate/powerbi/desktop.rst
(6 hunks)docs/integrate/powerbi/index.md
(2 hunks)docs/integrate/powerbi/service.rst
(9 hunks)docs/integrate/prometheus/index.md
(2 hunks)docs/integrate/pyviz/index.md
(2 hunks)docs/integrate/rill/index.md
(2 hunks)docs/integrate/risingwave/index.md
(1 hunks)docs/integrate/sql-server/index.md
(2 hunks)docs/integrate/streamlit/index.md
(1 hunks)docs/integrate/streamsets/index.md
(2 hunks)docs/integrate/tableau/index.md
(1 hunks)docs/integrate/telegraf/index.md
(2 hunks)docs/topic/index.md
(0 hunks)docs/topic/ml/index.md
(0 hunks)docs/topic/timeseries/index.md
(0 hunks)docs/use/index.md
(0 hunks)docs/use/telemetry/index.md
(1 hunks)
💤 Files with no reviewable changes (25)
- docs/feature/cloud/index.md
- docs/ingest/index.md
- docs/connect/index.md
- docs/feature/cluster/index.md
- docs/feature/search/index.md
- docs/feature/relational/index.md
- docs/feature/storage/index.md
- docs/feature/blob/index.md
- docs/topic/timeseries/index.md
- docs/feature/snapshot/index.md
- docs/feature/search/geo/index.md
- docs/ingest/etl/index.md
- docs/feature/search/vector/index.md
- docs/feature/fdw/index.md
- docs/feature/search/hybrid/index.md
- docs/topic/index.md
- docs/feature/sql/index.md
- docs/feature/udf/index.md
- docs/use/index.md
- docs/topic/ml/index.md
- docs/feature/document/index.md
- docs/feature/index.md
- docs/feature/search/fts/index.md
- docs/feature/index/index.md
- docs/feature/ccr/index.md
✅ Files skipped from review due to trivial changes (4)
- docs/_include/card/timeseries-datashader.md
- docs/conf.py
- docs/integrate/langchain/index.md
- docs/integrate/dbt/index.md
🚧 Files skipped from review as they are similar to previous changes (31)
- docs/integrate/streamsets/index.md
- docs/_include/links.md
- docs/integrate/dbeaver/index.md
- docs/integrate/mysql/import-csv.rst
- docs/integrate/powerbi/desktop.rst
- docs/integrate/marquez/learn.md
- docs/integrate/plotly/index.md
- docs/integrate/index.md
- docs/integrate/estuary/index.md
- docs/integrate/apache-superset/index.md
- docs/integrate/apache-iceberg/index.md
- docs/ingest/cdc/index.md
- docs/integrate/marquez/data_ingestion.py
- docs/integrate/risingwave/index.md
- docs/integrate/sql-server/index.md
- docs/use/telemetry/index.md
- docs/integrate/aws-lambda/index.md
- docs/integrate/apache-kafka/index.md
- docs/integrate/azure-functions/index.md
- docs/integrate/apache-flink/index.md
- docs/integrate/influxdb/index.md
- docs/integrate/cluvio/index.md
- docs/integrate/powerbi/index.md
- docs/integrate/grafana/index.md
- docs/integrate/aws-dms/index.md
- docs/integrate/mongodb/index.md
- docs/integrate/pyviz/index.md
- docs/integrate/powerbi/service.rst
- docs/integrate/apache-airflow/index.md
- docs/integrate/llamaindex/index.md
- docs/integrate/rill/index.md
🧰 Additional context used
🧠 Learnings (12)
📚 Learning: 2025-08-09T16:19:43.947Z
Learnt from: amotl
PR: crate/cratedb-guide#238
File: docs/integrate/azure-functions/learn.rst:1-1
Timestamp: 2025-08-09T16:19:43.947Z
Learning: In the CrateDB Guide documentation, main integration anchors (e.g., `azure-functions`) are intentionally placed in the `index.md` files of their respective integration folders, while detailed tutorials use the `-learn` suffix (e.g., `azure-functions-learn`) in their `learn.rst` or `learn.md` files. This is a deliberate architectural pattern for the documentation restructuring.
Applied to files:
docs/integrate/marquez/index.md
docs/integrate/metabase/index.md
docs/integrate/mysql/index.md
docs/integrate/prometheus/index.md
docs/integrate/tableau/index.md
📚 Learning: 2025-05-18T13:25:11.786Z
Learnt from: amotl
PR: crate/cratedb-guide#204
File: docs/integrate/mcp/community.md:6-8
Timestamp: 2025-05-18T13:25:11.786Z
Learning: In the CrateDB Guide documentation, particularly for MCP-related pages, the author prefers a 1-column grid layout for multiple cards to stack them vertically rather than side by side, as this is an intentional design choice.
Applied to files:
docs/_static/css/custom.css
📚 Learning: 2025-08-05T07:14:57.416Z
Learnt from: hammerhead
PR: crate/cratedb-guide#221
File: docs/connect/configure.md:58-66
Timestamp: 2025-08-05T07:14:57.416Z
Learning: In CrateDB connection strings, the user:password@ syntax is valid for HTTP Basic authentication on port 4200, but PostgreSQL JDBC drivers do not support this format and require credentials as query parameters (?user=<user>&password=<password>) instead.
Applied to files:
docs/integrate/datagrip/index.md
📚 Learning: 2025-06-05T14:29:15.512Z
Learnt from: amotl
PR: crate/cratedb-guide#207
File: docs/integrate/etl/iceberg-risingwave.md:205-207
Timestamp: 2025-06-05T14:29:15.512Z
Learning: The `records.Database("crate://", echo=True)` connection string for CrateDB works with defaults: localhost as host, "crate" as user, and blank password. This is valid and functional code in the records library.
Applied to files:
docs/integrate/datagrip/index.md
📚 Learning: 2025-08-10T18:17:49.350Z
Learnt from: amotl
PR: crate/cratedb-guide#241
File: docs/integrate/mysql/index.md:51-55
Timestamp: 2025-08-10T18:17:49.350Z
Learning: In the CrateDB Guide documentation, the file `docs/integrate/mysql/import-csv.rst` contains the reStructuredText label `.. _mysql-import-csv:` which can be referenced from MyST Markdown files using `:link: mysql-import-csv` with `:link-type: ref`. This is another example of cross-format referencing between MyST and RST files working correctly in Sphinx.
Applied to files:
docs/integrate/mysql/index.md
docs/integrate/n8n/index.md
📚 Learning: 2025-08-08T16:50:14.965Z
Learnt from: amotl
PR: crate/cratedb-guide#234
File: docs/home/index.md:47-50
Timestamp: 2025-08-08T16:50:14.965Z
Learning: In the CrateDB Guide docs (MyST), the correct intersphinx target for the CrateDB Cloud documentation homepage is `cloud:index` (not `cloud:docs-index` or `cloud-docs-index`). Use `:link: cloud:index` on cards/links. The `cloud` mapping is inherited via crate-docs-theme.
Applied to files:
docs/integrate/mysql/index.md
📚 Learning: 2025-08-09T21:40:46.125Z
Learnt from: amotl
PR: crate/cratedb-guide#238
File: docs/integrate/streamsets/index.md:18-21
Timestamp: 2025-08-09T21:40:46.125Z
Learning: In the CrateDB Guide documentation, reStructuredText files (`.rst`) use the RST label syntax `.. _label:` while MyST Markdown files (`.md`) use the syntax `(label)=`. Both formats are used throughout the repository and labels can be cross-referenced between them.
Applied to files:
docs/integrate/mysql/index.md
docs/integrate/n8n/index.md
📚 Learning: 2025-08-10T17:09:32.583Z
Learnt from: amotl
PR: crate/cratedb-guide#241
File: docs/integrate/azure-functions/index.md:31-36
Timestamp: 2025-08-10T17:09:32.583Z
Learning: In the CrateDB Guide documentation, RST files (`.rst`) use reStructuredText anchor syntax `.. _anchor-name:` while Markdown files (`.md`) use MyST syntax `(anchor-name)=`. Cross-references between MyST Markdown and reStructuredText files work correctly - a MyST `:link:` directive can reference an RST anchor and vice versa.
Applied to files:
docs/integrate/mysql/index.md
docs/integrate/n8n/index.md
📚 Learning: 2025-08-09T11:03:33.164Z
Learnt from: amotl
PR: crate/cratedb-guide#236
File: docs/ingest/etl/index.md:22-23
Timestamp: 2025-08-09T11:03:33.164Z
Learning: In the CrateDB Guide documentation, MyST Markdown files can use `{ref}` directives to reference labels defined in reStructuredText files using the RST syntax `.. _label:`. This cross-format referencing between MyST and RST is supported by Sphinx.
Applied to files:
docs/integrate/mysql/index.md
docs/integrate/n8n/index.md
📚 Learning: 2025-08-10T17:59:43.468Z
Learnt from: amotl
PR: crate/cratedb-guide#241
File: docs/integrate/grafana/index.md:37-46
Timestamp: 2025-08-10T17:59:43.468Z
Learning: In mixed documentation projects using Sphinx, the `:link-type: ref` directive in Markdown files can reference labels defined in reStructuredText files using the `.. _label-name:` syntax, and vice versa.
Applied to files:
docs/integrate/mysql/index.md
docs/integrate/n8n/index.md
📚 Learning: 2025-08-06T02:11:46.794Z
Learnt from: amotl
PR: crate/cratedb-guide#222
File: docs/integrate/powerbi/index.md:16-23
Timestamp: 2025-08-06T02:11:46.794Z
Learning: The `project:` role in MyST Markdown syntax like `[](project:#powerbi-desktop)` and `[](project:#powerbi-service)` is valid cross-reference syntax in the CrateDB Guide repository's MyST Markdown setup.
Applied to files:
docs/integrate/n8n/index.md
📚 Learning: 2025-06-06T08:46:34.552Z
Learnt from: amotl
PR: crate/cratedb-guide#0
File: :0-0
Timestamp: 2025-06-06T08:46:34.552Z
Learning: In MyST Markdown, the `{rubric}` syntax is correct as employed by MyST for rubric directives.
Applied to files:
docs/integrate/n8n/index.md
🪛 markdownlint-cli2 (0.17.2)
docs/integrate/apache-hop/index.md
31-31: Images should have alternate text (alt text)
(MD045, no-alt-text)
docs/integrate/apache-nifi/index.md
42-42: Reference links and images should use a label that is defined
Missing link or image reference definition: "astronomer"
(MD052, reference-links-images)
docs/integrate/aws-kinesis/index.md
60-60: Bare URL used
(MD034, no-bare-urls)
docs/integrate/datagrip/index.md
36-36: Bare URL used
(MD034, no-bare-urls)
docs/integrate/debezium/index.md
40-40: Bare URL used
(MD034, no-bare-urls)
docs/integrate/django/index.md
40-40: Bare URL used
(MD034, no-bare-urls)
docs/integrate/explo/index.md
32-32: Bare URL used
(MD034, no-bare-urls)
docs/integrate/gradio/index.md
41-41: Bare URL used
(MD034, no-bare-urls)
docs/integrate/kestra/index.md
40-40: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
41-41: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
42-42: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
43-43: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
docs/integrate/meltano/index.md
44-44: Bare URL used
(MD034, no-bare-urls)
docs/integrate/metabase/index.md
44-44: Bare URL used
(MD034, no-bare-urls)
docs/integrate/mysql/index.md
44-44: Bare URL used
(MD034, no-bare-urls)
docs/integrate/n8n/index.md
23-23: Bare URL used
(MD034, no-bare-urls)
35-35: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb and n8n"
(MD053, link-image-reference-definitions)
docs/integrate/node-red/index.md
62-62: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb and power bi"
(MD053, link-image-reference-definitions)
docs/integrate/prometheus/index.md
39-39: Bare URL used
(MD034, no-bare-urls)
docs/integrate/streamlit/index.md
33-33: Bare URL used
(MD034, no-bare-urls)
docs/integrate/tableau/index.md
27-27: Bare URL used
(MD034, no-bare-urls)
37-37: Bare URL used
(MD034, no-bare-urls)
44-44: Bare URL used
(MD034, no-bare-urls)
65-65: Link and image reference definitions should be needed
Unused link or image reference definition: "connecting to cratedb from tableau with jdbc"
(MD053, link-image-reference-definitions)
67-67: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb and tableau"
(MD053, link-image-reference-definitions)
68-68: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb tableau connector"
(MD053, link-image-reference-definitions)
docs/integrate/telegraf/index.md
49-49: Bare URL used
(MD034, no-bare-urls)
🪛 LanguageTool
docs/integrate/datagrip/index.md
[style] ~74-~74: Using many exclamation marks might seem excessive (in this case: 6 exclamation marks for a text that’s 2661 characters long)
Context: ...5-0a53-41d7-905b-a71cc4a767e9){h=240px} 
🔇 Additional comments (27)
docs/_static/css/custom.css (1)
8-16
: Utility classes look goodThe
.float-right
,.clearfix
, and.text-right
utilities match the new layout usage across docs and improve consistency.docs/integrate/kestra/index.md (1)
40-43
: Ignore MD007 indentation warnings (false positive)These lines belong to directive options/content, not a markdown list.
docs/integrate/gradio/index.md (2)
7-8
: Good hardening on external linkAdding
rel="noopener noreferrer"
withtarget="_blank"
and alt text on the badge is correct.
41-43
: markdownlint MD034 is a false positive hereWithin
grid-item-card
with:link-type: url
, the:link:
value must be a URL. Keep as-is.docs/integrate/explo/index.md (1)
32-34
: markdownlint MD034 is a false positive hereInside
grid-item-card
with:link-type: url
,:link:
must be a URL. No change needed.docs/integrate/node-red/index.md (2)
4-8
: Logo float/clear structure looks correctUse of
.float-right
followed by.clearfix
is consistent with the PR’s styling approach. No issues.
22-26
: Use of reference-style link and alt text for FlowFuse logo: LGTMThe logo is properly alt-tagged and linked via the [FlowFuse] reference. Good accessibility and maintainability.
docs/integrate/mysql/index.md (4)
21-27
: Encapsulating historical note in “Details” dropdown is a good UX improvementKeeps the “About” concise while preserving context.
32-36
: Synopsis example looks copy-paste safeQuoting package extras avoids shell globbing; placeholders prevent PII leakage. No change needed.
49-53
: Cross-format reference is correct
:link: mysql-import-csv
with:link-type: ref
correctly targets the RST label.. _mysql-import-csv:
per project conventions.
58-62
: Hidden toctree entry for import-csv: LGTMMatches the page’s surface structure while keeping the doc navigable.
docs/integrate/telegraf/index.md (1)
18-41
: Verify placement of “Overview” inside the Details dropdownCurrently, “Overview” (plus bullets and the diagram) sits inside the “Details” dropdown. If you intended “Overview” to be visible by default, move the rubric and following content outside the dropdown.
Would you like a quick patch moving “Overview” and below outside the dropdown?
docs/integrate/streamlit/index.md (1)
4-8
: Logo float/clear pattern is consistent and correctMatches the global visual overhaul. No changes needed.
docs/integrate/marquez/index.md (1)
29-46
: Ref target verified — no changes neededThe label
(marquez-learn)=
is present indocs/integrate/marquez/learn.md
, so the Learn card and toctree reference are correct.docs/integrate/debezium/index.md (1)
13-20
: Good content adjustmentsClearer CDC mention and rewording reads well.
docs/integrate/django/index.md (3)
4-11
: LGTM: secure external link and improved image attributesHeight + lazy loading applied; rel="noopener noreferrer" present; badge alt provided.
18-32
: About section structure reads wellDropdown usage keeps the page concise.
37-45
: Learn card is concise and usefulNo issues spotted.
docs/integrate/meltano/index.md (1)
34-44
: Connector links look goodDirect links to tap/target repos are appropriate.
docs/integrate/apache-hop/index.md (2)
4-8
: Logo float/clearfix pattern looks goodConsistent with the new layout approach. No issues.
31-31
: markdownlint MD045 appears to be a false positiveAlt text is present for all images. Safe to ignore or suppress the rule locally if needed.
docs/integrate/tableau/index.md (1)
1-2
: Anchor placement aligns with integration-docs architectureMain anchor defined in index.md as per the restructuring pattern. Good.
docs/integrate/aws-dynamodb/index.md (1)
8-10
: LGTM on logo + clearfix patternMatches the standardized layout pattern introduced in this PR.
Also applies to: 14-15
docs/integrate/metabase/index.md (1)
4-11
: Logo float/clearfix and lazy loading look goodConsistent pattern and performance-friendly attributes. No issues.
docs/integrate/apache-nifi/index.md (3)
49-51
: LGTM: seealso block improves discoverability.
55-55
: LGTM: external reference label defined and used consistently.
4-8
: Custom CSS classes loaded and verified.
- docs/_static/css/custom.css defines
.float-right
(line 8).clearfix
(line 11)- docs/conf.py adds
'css/custom.css'
tohtml_css_files
(lines 101–102)No further action required.
5829fe6
to
ebccc28
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (8)
docs/integrate/dbeaver/index.md (1)
61-70
: markdownlint MD034 “bare URL” on 🔗 is a false positive; suppress in configThe URL is within a Sphinx-Design field, not a Markdown bare link. Please suppress MD034 for lines starting with “:link:”.
Example .markdownlint.json:
{ "MD034": { "ignore_patterns": ["^\\s*:link:"] } }docs/integrate/cluvio/index.md (1)
31-41
: markdownlint MD034 on 🔗 is a false positive; suppress in configThe 🔗 field is Sphinx-Design, not a Markdown bare URL. Please apply the repo-wide MD034 ignore for “^\s*🔗”.
docs/integrate/gradio/index.md (1)
38-46
: markdownlint MD034 on 🔗 is a false positive; suppress in configAs noted in prior comments, 🔗 lines aren’t Markdown bare URLs. Apply the same MD034 ignore pattern.
docs/integrate/mysql/index.md (1)
41-47
: markdownlint MD034 on 🔗 is a false positive; suppress in configSame as other integration pages; please rely on repo-wide MD034 ignore for Sphinx 🔗 fields.
Also applies to: 49-56
docs/integrate/telegraf/index.md (1)
48-52
: markdownlint MD034 on 🔗 is a false positive; suppress in configCovered previously; please keep the MD034 ignore for Sphinx 🔗 lines.
docs/integrate/aws-kinesis/index.md (1)
48-52
: Remove embedded AWS credentials and real-looking ARN; use placeholders and default credential chainThe example exposes AWS keys on the CLI and includes a real-looking account/ARN. Prefer placeholders and the AWS default credential chain (env, shared config, IAM role) to avoid accidental leakage.
Apply this diff:
```shell uvx 'cratedb-toolkit[io-ingestr]' load table \ - "kinesis://?aws_access_key_id=${AWS_ACCESS_KEY_ID}&aws_secret_access_key=${AWS_SECRET_ACCESS_KEY}®ion_name=eu-central-1&table=arn:aws:kinesis:eu-central-1:831394476016:stream/testdrive" \ - --cluster-url="crate://crate:crate@localhost:4200/testdrive/kinesis_demo" + "kinesis://?region_name=<region>&table=arn:aws:kinesis:<region>:<account_id>:stream/<stream_name>" \ + --cluster-url="crate://crate:crate@localhost:4200/testdrive/kinesis_demo" +# Notes: +# - Rely on AWS default credential chain (env vars, ~/.aws/{config,credentials}, IAM role). +# - Replace <region>, <account_id>, and <stream_name> with your values.To catch similar issues across the repo, run: ```shell #!/bin/bash # Search for embedded AWS credentials or ARNs in docs rg -n --glob 'docs/**' -e 'aws_access_key_id=' -e 'aws_secret_access_key=' -e 'arn:aws:kinesis:[a-z0-9-]+:[0-9]{12}:stream/[A-Za-z0-9._-]+'
docs/integrate/meltano/index.md (1)
28-33
: Use a stable link target instead of an ephemeral feature branchThe “Examples” card links to
.../tree/amo/meltano/...
, which is a feature branch and may 404 later. Please switch to a stable reference.Options:
- Merge examples to main and link to:
https://github.com/crate/cratedb-examples/tree/main/framework/singer-meltano- Create a release tag (e.g., vX.Y.Z) and link to:
https://github.com/crate/cratedb-examples/tree/vX.Y.Z/framework/singer-meltano- Pin a commit SHA:
https://github.com/crate/cratedb-examples/commit/#diff-…#!/bin/bash # Check current link status and main fallback set -e URL="https://github.com/crate/cratedb-examples/tree/amo/meltano/framework/singer-meltano" URL_MAIN="https://github.com/crate/cratedb-examples/tree/main/framework/singer-meltano" echo "Feature branch URL status: $(curl -s -o /dev/null -w '%{http_code}' "$URL")" echo "Main branch URL status: $(curl -s -o /dev/null -w '%{http_code}' "$URL_MAIN")"docs/integrate/apache-nifi/index.md (1)
41-45
: Add MD034 suppression around Sphinx Design:link:
lineThis is intended syntax; suppress the markdownlint warning locally.
:::{grid-item-card} Tutorial: Connect Apache NiFi and CrateDB +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/connecting-to-cratedb-from-apache-nifi/647 :link-type: url +<!-- markdownlint-enable MD034 --> How to connect from Apache NiFi to CrateDB and ingest data from NiFi into CrateDB. :::
🧹 Nitpick comments (28)
docs/integrate/dbeaver/index.md (3)
7-10
: Unify logo sizing and add lazy loading (replace w= with h=, add loading=lazy)All other integration pages standardize on h=60px for logos and add lazy loading. Use the same here for consistency and perf.
-```{div} .float-right -:style: "margin-left: 0.5em" -[{w=120px}][DBeaver] +```{div} .float-right +:style: "margin-left: 0.5em" +[{h=60px loading=lazy}][DBeaver]
7-10
: Move inline margin style into CSS utility classThe PR aims to centralize styling in custom CSS. Consider replacing the inline margin-left with a reusable utility (e.g., .ml-2) in docs/_static/css/custom.css and apply it here.
52-53
: Improve screenshot alt text and enable lazy loading“Image” is not descriptive. Provide meaningful alt text or mark decorative with empty alt. Also add loading=lazy.
-{h=240px} -{h=240px} +{h=240px loading=lazy} +{h=240px loading=lazy}docs/integrate/cluvio/index.md (2)
4-8
: Add lazy loading to logo and keep clearfixMinor perf tweak: add loading=lazy to the logo image.
-```{div} .float-right -[{h=60px}][Cluvio] +```{div} .float-right +[{h=60px loading=lazy}][Cluvio]
24-26
: Add lazy loading to images inside Details dropdownThese are below-the-fold; lazy loading helps.
-{h=200px} -{h=200px} +{h=200px loading=lazy} +{h=200px loading=lazy}docs/integrate/gradio/index.md (1)
4-9
: Consider removing redundant .text-right if .float-right sufficesIf .float-right already handles alignment, .text-right may be redundant. Trim extra classes for consistency.
docs/integrate/mysql/index.md (1)
5-10
: Add lazy loading to logos and keep height-based sizingAlign with other pages and improve performance.
-```{div} .float-right -[{h=60px}](https://www.mysql.com/) -[{h=60px}](https://www.mariadb.com/) +```{div} .float-right +[{h=60px loading=lazy}](https://www.mysql.com/) +[{h=60px loading=lazy}](https://www.mariadb.com/)docs/integrate/telegraf/index.md (2)
4-8
: Add lazy loading to logo imageConsistent with other pages and improves performance.
-```{div} .float-right -[{h=60px}][Telegraf] +```{div} .float-right +[{h=60px loading=lazy}][Telegraf]
38-41
: Add lazy loading to the architecture diagramBelow-the-fold content should be lazy-loaded.
-{h=200px} +{h=200px loading=lazy}docs/integrate/debezium/index.md (1)
27-41
: Learn grid/cards look good; MD034 bare-URL hint can be ignored for 🔗 optionsThe grid/card structure is clear and consistent. The markdownlint MD034 warnings for lines with
:link: https://...
inside directives are benign in MyST/Sphinx contexts.If desired, you can suppress MD034 for docs or reconfigure the linter to ignore URLs in directive options.
docs/integrate/streamlit/index.md (1)
44-60
: Minor: Improve iframe performance and UXConsider lazy-loading the YouTube iframe to reduce initial page weight and improve performance.
-<iframe width="240" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +<iframe width="240" loading="lazy" referrerpolicy="strict-origin-when-cross-origin" + src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" + title="Streamlit 101 webinar" frameborder="0" + allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" + allowfullscreen></iframe>docs/integrate/grafana/index.md (2)
4-8
: Accessibility: provide descriptive alt text for the logoThe top logo uses an empty alt. Add meaningful alt text for accessibility.
-[{h=60px}][Grafana OSS] +[{h=60px}][Grafana OSS]
46-50
: Accessibility: add descriptive alt text to imagesReplace the generic “image” alt with meaningful descriptions.
-{h=200px} +{h=200px} -{h=200px} +{h=200px}docs/integrate/django/index.md (1)
37-45
: markdownlint MD034 false-positive on:link:
URLsThe linter may flag bare URLs here, but
:link:
expects a URL in MyST cards. Consider suppressing MD034 for these directive lines in markdownlint config, rather than changing the content.docs/integrate/datagrip/index.md (4)
7-9
: Unify logo sizing and avoid inline styles
- Prefer consistent height-based sizing across pages (height=60px) instead of width to match other integrations.
- Drop the inline margin style and replace it with a utility class from your custom CSS (e.g.,
.ml-2
). If not present, add one.-```{div} .float-right -:style: "margin-left: 0.5em" -[{w=120px}][DataGrip] +```{div} .float-right .ml-2 +[{height=60px}][DataGrip]
15-16
: Minor grammar fix“included into” → “included in”.
-It is available as a standalone application and is also included into +It is available as a standalone application and is also included in
51-66
: Add note on credentials handling for JDBCTo preempt confusion (and align with known JDBC behavior), add a sentence that credentials should be provided via DataGrip’s fields (not user:password@ in the URL), as PostgreSQL JDBC doesn’t support that URL form.
Example addition after the URL snippet:
- “Provide username and password in the dedicated fields. Don’t embed credentials in the URL.”
86-94
: markdownlint MD034 false-positive on MyST card:link:
:link:
requires a URL; using a reference label isn’t applicable for external links. Consider disabling MD034 for these lines in your lint config.docs/integrate/apache-hop/index.md (1)
38-61
: Card grid reads well; MD034 may misfireExternal
:link:
URLs in grid-item-cards can trigger MD034. Safe to suppress this rule for such directive lines.docs/integrate/prometheus/index.md (4)
11-16
: Use rubric for consistency with other pagesOther integrations use “:::{rubric} About” and “:::{rubric} Learn”. Consider switching “## About” to a rubric for uniformity.
-## About +:::{rubric} About +:::
40-41
: Use rubric for “Learn” for consistencyMirror the pattern used in other integration pages.
-## Learn +:::{rubric} Learn +:::
82-91
: Hyphenate ‘Long-term’ in titles and referencesAs an adjective, “Long-term” should be hyphenated.
-{material-outlined}`manage_history;2em` **CrateDB as Prometheus Long Term Storage** +{material-outlined}`manage_history;2em` **CrateDB as Prometheus Long-term Storage** -[Prometheus with CrateDB: Long Term Metrics Storage] +[Prometheus with CrateDB: Long-term Metrics Storage]
96-96
: Harden and optimize the YouTube iframe embed
- Add loading="lazy".
- Consider adding height for clearer layout or a responsive wrapper.
- Optionally add referrerpolicy and sandbox for stricter embedding.
-<iframe width="240" src="https://www.youtube-nocookie.com/embed/EfIlRXVyfZM?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +<iframe width="240" height="135" loading="lazy" + src="https://www.youtube-nocookie.com/embed/EfIlRXVyfZM?si=J0w5yG56Ld4fIXfm" + title="Prometheus with CrateDB: Long-term Metrics Storage (YouTube)" + frameborder="0" + allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" + referrerpolicy="strict-origin-when-cross-origin" + sandbox="allow-same-origin allow-scripts allow-popups allow-presentation" + allowfullscreen></iframe>docs/integrate/apache-airflow/index.md (4)
37-41
: Use.float-right
class instead of inline:style:
for consistencyReplace the inline float style with the shared
.float-right
class used elsewhere on this page.-```{div} -:style: "float: right" -[{w=180px}](https://www.astronomer.io/) -``` +```{div} .float-right +[{w=180px}](https://www.astronomer.io/) +```
65-65
: Specify grid column counts for predictable layoutsExplicitly set column counts to align with the intended layout (2 for Starter, 3 for Advanced).
-::::{grid} +::::{grid} 2-::::{grid} +::::{grid} 3Also applies to: 86-86
67-71
: Suppress MD034 “bare URL” for Sphinx Design:link:
fieldsmarkdownlint flags
:link:
lines as bare URLs even though this is intended syntax. Suppress MD034 locally around each card.:::{grid-item-card} Tutorial: Import Parquet files +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/automating-the-import-of-parquet-files-with-apache-airflow/1247 :link-type: url +<!-- markdownlint-enable MD034 --> Define an Airflow DAG to import a Parquet file from S3 into CrateDB. ::::::{grid-item-card} Tutorial: Load stock market data +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/updating-stock-market-data-automatically-with-cratedb-and-apache-airflow/1304 :link-type: url +<!-- markdownlint-enable MD034 --> Define an Airflow DAG to download, process, and store stock market data into CrateDB. ::::::{grid-item-card} Tutorial: Export to S3 +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/cratedb-and-apache-airflow-automating-data-export-to-s3/901 :link-type: url +<!-- markdownlint-enable MD034 --> Recurrently export data from CrateDB to S3. ::::::{grid-item-card} Tutorial: Implement a data retention policy +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/implementing-a-data-retention-policy-in-cratedb-using-apache-airflow/913 :link-type: url +<!-- markdownlint-enable MD034 --> An effective retention policy for time-series data, relating to the practice of storing and managing data for a designated period of time. ::::::{grid-item-card} Tutorial: Implement a hot and cold storage data retention policy +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/cratedb-and-apache-airflow-building-a-hot-cold-storage-data-retention-policy/934 :link-type: url +<!-- markdownlint-enable MD034 --> A hot/cold storage strategy is often motivated by a tradeoff between performance and cost-effectiveness. :::Also applies to: 73-78, 88-93, 94-99, 101-106
30-31
: Tighten grammar (“parameterization uses …”)Minor style fix for readability.
-Pipeline parametrization is using the powerful Jinja templating engine. +Pipeline parameterization uses the powerful Jinja templating engine.docs/integrate/apache-nifi/index.md (1)
55-56
: MD053 is a false positive here; suppress locally around the reference definitionThe link label is used inside the
seealso
directive, but markdownlint may not detect usage within directives. Suppress MD053 to keep the reference style.+[//]: # "markdownlint-disable MD053" [CrateDB and Apache NiFi]: https://cratedb.com/integrations/cratedb-and-apache-nifi +[//]: # "markdownlint-enable MD053"
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (51)
docs/_include/links.md
(2 hunks)docs/_static/css/custom.css
(2 hunks)docs/ingest/cdc/index.md
(2 hunks)docs/ingest/etl/index.md
(3 hunks)docs/integrate/apache-airflow/index.md
(3 hunks)docs/integrate/apache-flink/index.md
(2 hunks)docs/integrate/apache-hop/index.md
(2 hunks)docs/integrate/apache-iceberg/index.md
(1 hunks)docs/integrate/apache-kafka/index.md
(2 hunks)docs/integrate/apache-nifi/index.md
(2 hunks)docs/integrate/apache-superset/index.md
(4 hunks)docs/integrate/aws-dms/index.md
(2 hunks)docs/integrate/aws-dynamodb/index.md
(1 hunks)docs/integrate/aws-kinesis/index.md
(2 hunks)docs/integrate/aws-lambda/index.md
(2 hunks)docs/integrate/azure-functions/index.md
(2 hunks)docs/integrate/cluvio/index.md
(1 hunks)docs/integrate/datagrip/index.md
(6 hunks)docs/integrate/dbeaver/index.md
(3 hunks)docs/integrate/dbt/index.md
(4 hunks)docs/integrate/debezium/index.md
(1 hunks)docs/integrate/django/index.md
(2 hunks)docs/integrate/estuary/index.md
(4 hunks)docs/integrate/explo/index.md
(1 hunks)docs/integrate/gradio/index.md
(1 hunks)docs/integrate/grafana/index.md
(2 hunks)docs/integrate/influxdb/index.md
(2 hunks)docs/integrate/kestra/index.md
(2 hunks)docs/integrate/langchain/index.md
(2 hunks)docs/integrate/llamaindex/index.md
(2 hunks)docs/integrate/marquez/data_ingestion.py
(1 hunks)docs/integrate/marquez/index.md
(2 hunks)docs/integrate/marquez/learn.md
(1 hunks)docs/integrate/meltano/index.md
(1 hunks)docs/integrate/metabase/index.md
(1 hunks)docs/integrate/mongodb/index.md
(2 hunks)docs/integrate/mysql/index.md
(1 hunks)docs/integrate/n8n/index.md
(1 hunks)docs/integrate/node-red/index.md
(3 hunks)docs/integrate/plotly/index.md
(2 hunks)docs/integrate/powerbi/index.md
(2 hunks)docs/integrate/powerbi/service.rst
(9 hunks)docs/integrate/prometheus/index.md
(2 hunks)docs/integrate/pyviz/index.md
(2 hunks)docs/integrate/rill/index.md
(2 hunks)docs/integrate/risingwave/index.md
(1 hunks)docs/integrate/sql-server/index.md
(2 hunks)docs/integrate/streamlit/index.md
(1 hunks)docs/integrate/streamsets/index.md
(2 hunks)docs/integrate/tableau/index.md
(1 hunks)docs/integrate/telegraf/index.md
(2 hunks)
✅ Files skipped from review due to trivial changes (1)
- docs/integrate/llamaindex/index.md
🚧 Files skipped from review as they are similar to previous changes (33)
- docs/integrate/aws-lambda/index.md
- docs/_include/links.md
- docs/integrate/streamsets/index.md
- docs/integrate/plotly/index.md
- docs/integrate/apache-kafka/index.md
- docs/integrate/n8n/index.md
- docs/integrate/azure-functions/index.md
- docs/integrate/apache-iceberg/index.md
- docs/integrate/langchain/index.md
- docs/integrate/marquez/index.md
- docs/integrate/influxdb/index.md
- docs/integrate/sql-server/index.md
- docs/integrate/powerbi/index.md
- docs/integrate/powerbi/service.rst
- docs/integrate/kestra/index.md
- docs/integrate/node-red/index.md
- docs/integrate/apache-flink/index.md
- docs/integrate/explo/index.md
- docs/ingest/cdc/index.md
- docs/integrate/risingwave/index.md
- docs/ingest/etl/index.md
- docs/integrate/rill/index.md
- docs/_static/css/custom.css
- docs/integrate/pyviz/index.md
- docs/integrate/mongodb/index.md
- docs/integrate/tableau/index.md
- docs/integrate/aws-dynamodb/index.md
- docs/integrate/aws-dms/index.md
- docs/integrate/apache-superset/index.md
- docs/integrate/marquez/learn.md
- docs/integrate/dbt/index.md
- docs/integrate/estuary/index.md
- docs/integrate/marquez/data_ingestion.py
🧰 Additional context used
🧠 Learnings (12)
📚 Learning: 2025-08-05T07:14:57.416Z
Learnt from: hammerhead
PR: crate/cratedb-guide#221
File: docs/connect/configure.md:58-66
Timestamp: 2025-08-05T07:14:57.416Z
Learning: In CrateDB connection strings, the user:password@ syntax is valid for HTTP Basic authentication on port 4200, but PostgreSQL JDBC drivers do not support this format and require credentials as query parameters (?user=<user>&password=<password>) instead.
Applied to files:
docs/integrate/datagrip/index.md
📚 Learning: 2025-06-05T14:29:15.512Z
Learnt from: amotl
PR: crate/cratedb-guide#207
File: docs/integrate/etl/iceberg-risingwave.md:205-207
Timestamp: 2025-06-05T14:29:15.512Z
Learning: The `records.Database("crate://", echo=True)` connection string for CrateDB works with defaults: localhost as host, "crate" as user, and blank password. This is valid and functional code in the records library.
Applied to files:
docs/integrate/datagrip/index.md
📚 Learning: 2025-08-09T11:03:33.164Z
Learnt from: amotl
PR: crate/cratedb-guide#236
File: docs/ingest/etl/index.md:22-23
Timestamp: 2025-08-09T11:03:33.164Z
Learning: In the CrateDB Guide documentation, MyST Markdown files can use `{ref}` directives to reference labels defined in reStructuredText files using the RST syntax `.. _label:`. This cross-format referencing between MyST and RST is supported by Sphinx.
Applied to files:
docs/integrate/grafana/index.md
docs/integrate/mysql/index.md
📚 Learning: 2025-08-10T18:17:49.350Z
Learnt from: amotl
PR: crate/cratedb-guide#241
File: docs/integrate/mysql/index.md:51-55
Timestamp: 2025-08-10T18:17:49.350Z
Learning: In the CrateDB Guide documentation, the file `docs/integrate/mysql/import-csv.rst` contains the reStructuredText label `.. _mysql-import-csv:` which can be referenced from MyST Markdown files using `:link: mysql-import-csv` with `:link-type: ref`. This is another example of cross-format referencing between MyST and RST files working correctly in Sphinx.
Applied to files:
docs/integrate/grafana/index.md
docs/integrate/mysql/index.md
📚 Learning: 2025-08-10T17:09:32.583Z
Learnt from: amotl
PR: crate/cratedb-guide#241
File: docs/integrate/azure-functions/index.md:31-36
Timestamp: 2025-08-10T17:09:32.583Z
Learning: In the CrateDB Guide documentation, RST files (`.rst`) use reStructuredText anchor syntax `.. _anchor-name:` while Markdown files (`.md`) use MyST syntax `(anchor-name)=`. Cross-references between MyST Markdown and reStructuredText files work correctly - a MyST `:link:` directive can reference an RST anchor and vice versa.
Applied to files:
docs/integrate/grafana/index.md
docs/integrate/mysql/index.md
📚 Learning: 2025-08-09T21:40:46.125Z
Learnt from: amotl
PR: crate/cratedb-guide#238
File: docs/integrate/streamsets/index.md:18-21
Timestamp: 2025-08-09T21:40:46.125Z
Learning: In the CrateDB Guide documentation, reStructuredText files (`.rst`) use the RST label syntax `.. _label:` while MyST Markdown files (`.md`) use the syntax `(label)=`. Both formats are used throughout the repository and labels can be cross-referenced between them.
Applied to files:
docs/integrate/grafana/index.md
docs/integrate/mysql/index.md
📚 Learning: 2025-08-10T17:59:43.468Z
Learnt from: amotl
PR: crate/cratedb-guide#241
File: docs/integrate/grafana/index.md:37-46
Timestamp: 2025-08-10T17:59:43.468Z
Learning: When verifying cross-references in Sphinx-based documentation, search for both Markdown references (e.g., `(reference-name)=`) and reStructuredText labels (e.g., `.. _reference-name:`) across both .md and .rst files, as Sphinx supports cross-referencing between different markup formats.
Applied to files:
docs/integrate/grafana/index.md
📚 Learning: 2025-08-09T16:19:43.947Z
Learnt from: amotl
PR: crate/cratedb-guide#238
File: docs/integrate/azure-functions/learn.rst:1-1
Timestamp: 2025-08-09T16:19:43.947Z
Learning: In the CrateDB Guide documentation, main integration anchors (e.g., `azure-functions`) are intentionally placed in the `index.md` files of their respective integration folders, while detailed tutorials use the `-learn` suffix (e.g., `azure-functions-learn`) in their `learn.rst` or `learn.md` files. This is a deliberate architectural pattern for the documentation restructuring.
Applied to files:
docs/integrate/grafana/index.md
docs/integrate/metabase/index.md
docs/integrate/mysql/index.md
docs/integrate/prometheus/index.md
📚 Learning: 2025-08-09T11:00:03.537Z
Learnt from: amotl
PR: crate/cratedb-guide#236
File: docs/index.md:312-316
Timestamp: 2025-08-09T11:00:03.537Z
Learning: In the CrateDB Guide documentation, locally stale references (such as `(reference-architectures)=`, `(domain)=`, and similar anchor labels) should be retained even when they appear unused within the repository, as external projects might still reference them. This ensures backward compatibility for external documentation and projects.
Applied to files:
docs/integrate/grafana/index.md
📚 Learning: 2025-05-18T12:50:38.681Z
Learnt from: amotl
PR: crate/cratedb-guide#204
File: docs/integrate/mcp/community.md:8-20
Timestamp: 2025-05-18T12:50:38.681Z
Learning: In the CrateDB guide repository, references with the `ctk:` prefix (like `ctk:query/mcp/landscape`) are intersphinx references that link to resources in the cratedb-toolkit repository (https://github.com/crate/cratedb-toolkit/tree/main/doc), which are rendered at https://cratedb-toolkit.readthedocs.io/. These are valid cross-references between separate Sphinx documentation sets, not local file references.
Applied to files:
docs/integrate/grafana/index.md
📚 Learning: 2025-08-08T16:50:14.965Z
Learnt from: amotl
PR: crate/cratedb-guide#234
File: docs/home/index.md:47-50
Timestamp: 2025-08-08T16:50:14.965Z
Learning: In the CrateDB Guide docs (MyST), the correct intersphinx target for the CrateDB Cloud documentation homepage is `cloud:index` (not `cloud:docs-index` or `cloud-docs-index`). Use `:link: cloud:index` on cards/links. The `cloud` mapping is inherited via crate-docs-theme.
Applied to files:
docs/integrate/mysql/index.md
📚 Learning: 2025-08-10T17:59:43.468Z
Learnt from: amotl
PR: crate/cratedb-guide#241
File: docs/integrate/grafana/index.md:37-46
Timestamp: 2025-08-10T17:59:43.468Z
Learning: In mixed documentation projects using Sphinx, the `:link-type: ref` directive in Markdown files can reference labels defined in reStructuredText files using the `.. _label-name:` syntax, and vice versa.
Applied to files:
docs/integrate/mysql/index.md
🪛 markdownlint-cli2 (0.17.2)
docs/integrate/apache-airflow/index.md
68-68: Bare URL used
(MD034, no-bare-urls)
74-74: Bare URL used
(MD034, no-bare-urls)
89-89: Bare URL used
(MD034, no-bare-urls)
95-95: Bare URL used
(MD034, no-bare-urls)
102-102: Bare URL used
(MD034, no-bare-urls)
docs/integrate/apache-hop/index.md
42-42: Bare URL used
(MD034, no-bare-urls)
49-49: Bare URL used
(MD034, no-bare-urls)
55-55: Bare URL used
(MD034, no-bare-urls)
docs/integrate/apache-nifi/index.md
42-42: Bare URL used
(MD034, no-bare-urls)
55-55: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb and apache nifi"
(MD053, link-image-reference-definitions)
docs/integrate/aws-kinesis/index.md
60-60: Bare URL used
(MD034, no-bare-urls)
docs/integrate/cluvio/index.md
34-34: Bare URL used
(MD034, no-bare-urls)
49-49: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb and cluvio"
(MD053, link-image-reference-definitions)
docs/integrate/datagrip/index.md
87-87: Bare URL used
(MD034, no-bare-urls)
docs/integrate/dbeaver/index.md
64-64: Bare URL used
(MD034, no-bare-urls)
docs/integrate/debezium/index.md
30-30: Bare URL used
(MD034, no-bare-urls)
36-36: Bare URL used
(MD034, no-bare-urls)
docs/integrate/django/index.md
41-41: Bare URL used
(MD034, no-bare-urls)
docs/integrate/gradio/index.md
41-41: Bare URL used
(MD034, no-bare-urls)
docs/integrate/grafana/index.md
40-40: Bare URL used
(MD034, no-bare-urls)
54-54: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb and kestra"
(MD053, link-image-reference-definitions)
docs/integrate/meltano/index.md
29-29: Bare URL used
(MD034, no-bare-urls)
35-35: Bare URL used
(MD034, no-bare-urls)
41-41: Bare URL used
(MD034, no-bare-urls)
docs/integrate/metabase/index.md
29-29: Bare URL used
(MD034, no-bare-urls)
35-35: Bare URL used
(MD034, no-bare-urls)
41-41: Bare URL used
(MD034, no-bare-urls)
docs/integrate/mysql/index.md
60-60: Bare URL used
(MD034, no-bare-urls)
docs/integrate/streamlit/index.md
39-39: Bare URL used
(MD034, no-bare-urls)
docs/integrate/telegraf/index.md
49-49: Bare URL used
(MD034, no-bare-urls)
🪛 LanguageTool
docs/integrate/datagrip/index.md
[style] ~74-~74: Using many exclamation marks might seem excessive (in this case: 6 exclamation marks for a text that’s 2661 characters long)
Context: ...5-0a53-41d7-905b-a71cc4a767e9){h=240px} 
docs/integrate/prometheus/index.md
[uncategorized] ~82-~82: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ory;2em` CrateDB as Prometheus Long Term Storage Learn how to start Prometheu...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[uncategorized] ~90-~90: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...B" tutorial. [Prometheus with CrateDB: Long Term Metrics Storage] ::: :::{grid-item} :c...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
🔇 Additional comments (10)
docs/integrate/cluvio/index.md (1)
43-45
: MD053 “unused reference definition” is a false positive in {seealso}[CrateDB and Cluvio] is used within a {seealso} directive which markdownlint doesn’t parse. Recommend ignoring MD053 for link definitions used inside Sphinx directives.
Example config:
{ "MD053": { "ignore_definitions": ["CrateDB and Cluvio"] } }Alternatively, suppress MD053 when a nearby line matches "^```\{seealso\}".
Also applies to: 49-50
docs/integrate/gradio/index.md (1)
7-9
: Nice hardening on external link (rel=noopener) and accessible badgeLGTM on the security and accessibility adjustments.
docs/integrate/mysql/index.md (1)
49-53
: Cross-format reference to RST label is correct🔗 mysql-import-csv with :link-type: ref properly targets the RST label in import-csv.rst. LGTM.
docs/integrate/debezium/index.md (1)
4-8
: Logo/clearfix pattern LGTMConsistent with the new layout conventions; no issues.
docs/integrate/grafana/index.md (1)
34-44
: Cross-reference to tutorial looks correct
:link: visualize-data-with-grafana
with:link-type: ref
resolves to the RST label and is valid in Sphinx (cross-format). LGTM.docs/integrate/django/index.md (1)
4-11
: Logo + badge block looks solidGood use of height sizing, lazy-loading, and rel="noopener noreferrer". Alt text is descriptive and consistent.
docs/integrate/apache-hop/index.md (1)
4-8
: Header/logo block consistent and cleanRight-floated logo with fixed height and clearfix matches the new pattern. Looks good.
docs/integrate/metabase/index.md (2)
4-11
: Security + accessibility on badge are correcttarget="_blank" is paired with rel="noopener noreferrer", and the badge has descriptive alt text. Good pattern.
69-77
: Anchor pattern aligns with doc architectureThe hidden toctree to a dedicated “learn” page matches the established index/learn split for integrations.
docs/integrate/prometheus/index.md (1)
115-121
: Link references look good; keep using privacy-friendly domainsGood choice using youtube-nocookie in the iframe and keeping external references consolidated here.
ebccc28
to
3d167c4
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (17)
docs/integrate/kestra/index.md (2)
4-8
: Useheight
and lazy loading on the logo (same as prior suggestion)Matches the earlier review; standardize sizing attr and add
loading=lazy
.-```{div} .float-right -[{h=60px}][Kestra] -``` +```{div} .float-right +[{height=60px loading=lazy}][Kestra] +```
28-31
: Applyheight
andloading=lazy
to feature images (same as prior suggestion)Consistent with previous feedback; replace
h
withheight
and add lazy-loading.-{h=120px} -{h=120px} -{h=120px} +{height=120px loading=lazy} +{height=120px loading=lazy} +{height=120px loading=lazy}docs/integrate/apache-nifi/index.md (1)
4-8
: Prefer local logo asset; also standardize attributes
- Duplicate of prior suggestion: host the logo under
docs/_static/
for reproducibility.- Replace
h
withheight
and addloading=lazy
.-```{div} .float-right -[{h=60px}][Apache NiFi] -``` +```{div} .float-right +[{height=60px loading=lazy}][Apache NiFi] +```docs/integrate/mysql/index.md (1)
44-46
: Suppress MD034 “bare URL” for Sphinx 🔗 fields (repo-level)This URL lives in a Sphinx-Design
:link:
field, not bare Markdown. Prefer a lint ignore pattern over inline overrides.Example markdownlint config:
{ "MD034": { "ignore_patterns": ["^\\s*:link:"] } }docs/integrate/apache-flink/index.md (1)
131-160
: Suppress MD034 “bare URL” for Sphinx 🔗 fields (repo-level)The URLs are in Sphinx-Design
:link:
fields, not bare Markdown links. Handle via lint config ignore pattern.{ "MD034": { "ignore_patterns": ["^\\s*:link:"] } }Also applies to: 135-145, 147-157, 153-157
docs/integrate/aws-kinesis/index.md (2)
59-63
: Suppress MD034 “bare URL” for Sphinx 🔗 fieldsURL appears in a
:link:
field; suppress via lint config rather than altering content.{ "MD034": { "ignore_patterns": ["^\\s*:link:"] } }
48-52
: Remove inline AWS credentials and anonymize ARN placeholders in exampleDon’t embed secrets in command examples; rely on AWS default credential chain. Replace region/account/stream with placeholders.
```shell uvx 'cratedb-toolkit[io-ingestr]' load table \ - "kinesis://?aws_access_key_id=${AWS_ACCESS_KEY_ID}&aws_secret_access_key=${AWS_SECRET_ACCESS_KEY}®ion_name=eu-central-1&table=arn:aws:kinesis:eu-central-1:831394476016:stream/testdrive" \ - --cluster-url="crate://crate:crate@localhost:4200/testdrive/kinesis_demo" + "kinesis://?region_name=<region>&table=arn:aws:kinesis:<region>:<account_id>:stream/<stream_name>" \ + --cluster-url="crate://crate:crate@localhost:4200/testdrive/kinesis_demo" +# Notes: +# - Use AWS default credentials (env vars, ~/.aws/{config,credentials}, or IAM role). +# - Replace <...> placeholders with your values.</blockquote></details> <details> <summary>docs/integrate/debezium/index.md (1)</summary><blockquote> `29-38`: **Suppress MD034 “bare URL” for Sphinx :link: fields** The URLs are values of `:link:` in Sphinx-Design cards, not bare Markdown. ```json { "MD034": { "ignore_patterns": ["^\\s*:link:"] } }
Also applies to: 30-33, 36-39
docs/integrate/streamlit/index.md (1)
33-35
: Suppress MD034 “bare URL” for Sphinx 🔗 fieldsThis URL is part of a
:link:
attribute; exclude such lines from MD034.{ "MD034": { "ignore_patterns": ["^\\s*:link:"] } }docs/integrate/telegraf/index.md (1)
49-51
: Suppress MD034 “bare URL” for Sphinx 🔗 fieldsThe blog URL is set via
:link:
in a card; exclude these from MD034 checks.{ "MD034": { "ignore_patterns": ["^\\s*:link:"] } }docs/integrate/marquez/index.md (1)
7-9
: Use lightweight SVG logo; keep lazy loadingSwap the heavy social-card JPG for the official SVG to reduce page weight.
-```{div} .float-right -[{height=60px loading=lazy}][Marquez] +```{div} .float-right +[{height=60px loading=lazy}][Marquez]</blockquote></details> <details> <summary>docs/integrate/datagrip/index.md (1)</summary><blockquote> `32-34`: **Vendor remote images to avoid hot-linking** Mirror assets into docs/_static/ and reference locally to improve reliability and build reproducibility. Also applies to: 41-41, 55-55, 65-65, 74-75 </blockquote></details> <details> <summary>docs/integrate/apache-hop/index.md (1)</summary><blockquote> `5-5`: **Avoid hot-linked images** Consider vendoring these under docs/_static/ for stability. Also applies to: 29-31, 41-59 </blockquote></details> <details> <summary>docs/integrate/tableau/index.md (1)</summary><blockquote> `5-5`: **Vendor external images** Mirror assets locally in docs/_static/ to avoid hot-linking issues. Also applies to: 17-17, 44-49 </blockquote></details> <details> <summary>docs/integrate/apache-superset/index.md (1)</summary><blockquote> `8-12`: **Vendor remote images** Mirror the hero, example dashboard, and Preset logo locally to improve reliability. Also applies to: 21-22, 27-28 </blockquote></details> <details> <summary>docs/integrate/prometheus/index.md (1)</summary><blockquote> `5-5`: **Vendor remote images** Consider vendoring to docs/_static/ to avoid external dependency flakes. Also applies to: 35-35 </blockquote></details> <details> <summary>docs/integrate/apache-airflow/index.md (1)</summary><blockquote> `10-11`: **Vendor remote images** Mirror Airflow and Astronomer logos and embedded assets under docs/_static/ to avoid hot-linking. Also applies to: 39-40, 112-121 </blockquote></details> </blockquote></details> <details> <summary>🧹 Nitpick comments (39)</summary><blockquote> <details> <summary>docs/integrate/aws-lambda/index.md (2)</summary><blockquote> `7-11`: **Standardize image attrs and enable lazy-loading on the logo** Use the standard `height` attribute (instead of `h`) and add `loading=lazy` for perf. ```diff -```{div} .float-right -[{h=60px}][AWS Lambda] -``` +```{div} .float-right +[{height=60px loading=lazy}][AWS Lambda] +```
31-51
: Suppress MD034 lint around Sphinx:link:
URLs in grid cardsmarkdownlint flags
:link: https://...
as a bare URL, but it’s intentional Sphinx syntax. Add scoped disable/enable comments.:::{grid-item-card} DynamoDB Table Loader -:link: ctk:dynamodb-loader +:link: ctk:dynamodb-loader :link-type: ref Load DynamoDB tables into CrateDB (`full-load`). ::: :::{grid-item-card} DynamoDB CDC Relay -:link: ctk:dynamodb-cdc +:link: ctk:dynamodb-cdc :link-type: ref Relay table change stream CDC events from a DynamoDB table into CrateDB (`cdc`). ::: :::{grid-item-card} DynamoDB CDC Relay using AWS Lambda +<!-- markdownlint-disable MD034 --> :link: ctk:io/dynamodb/cdc-lambda :link-type: doc Use serverless replication based on AWS Lambda to relay CDC events into CrateDB (`cdc`). +<!-- markdownlint-enable MD034 --> :::docs/integrate/kestra/index.md (1)
39-44
: Suppress MD034 for Sphinx:link:
in grid cardPrevents false-positive “bare URL” warnings.
:::{grid-item-card} Tutorial: Data pipeline to CrateDB +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/setting-up-data-pipelines-with-cratedb-and-kestra-io/1400 :link-type: url In this tutorial, we will show you how CrateDB integrates with Kestra using the PostgreSQL plugin to create an efficient and scalable data pipeline. +<!-- markdownlint-enable MD034 --> :::docs/integrate/cluvio/index.md (4)
4-8
: Standardize logo attributes and add lazy-loadingSwitch
h
toheight
and addloading=lazy
.-```{div} .float-right -[{h=60px}][Cluvio] -``` +```{div} .float-right +[{height=60px loading=lazy}][Cluvio] +```
24-26
: Addheight
andloading=lazy
to screenshotsMinor perf/accessibility touch-up.
-{h=200px} -{h=200px} +{height=200px loading=lazy} +{height=200px loading=lazy}
33-39
: Suppress MD034 around Sphinx:link:
in the cardAvoids false-positive lint error.
:::{grid-item-card} Data Analysis with Cluvio and CrateDB +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/data-analysis-with-cluvio-and-cratedb/1571 :link-type: url Explore how to leverage the power of Cluvio, a modern data analysis platform with CrateDB Cloud as the underlying database. +<!-- markdownlint-enable MD034 --> :::
49-49
: Optional: Suppress MD053 false positive for link referencemarkdownlint sometimes reports the “Unused link reference” (MD053) for references used within directives. If that happens in CI, add a scoped suppression.
+<!-- markdownlint-disable MD053 --> [CrateDB and Cluvio]: https://cratedb.com/integrations/cratedb-and-cluvio +<!-- markdownlint-enable MD053 -->docs/integrate/dbeaver/index.md (2)
7-10
: Standardize image attributes and add lazy-loadingUse
width
instead ofw
and includeloading=lazy
.```{div} .float-right :style: "margin-left: 0.5em" -[{w=120px}][DBeaver] +[{width=120px loading=lazy}][DBeaver]--- `63-68`: **Suppress MD034 around Sphinx `:link:` in the card** Prevents bare URL warning for intended syntax. ```diff :::{grid-item-card} Blog: Use CrateDB With DBeaver +<!-- markdownlint-disable MD034 --> :link: https://cratedb.com/blog/cratedb-dbeaver :link-type: url DBeaver is a multipurpose database tool for developers and database administrators. With the help of the CrateDB JDBC Standalone Driver, you can use DBeaver with CrateDB. +<!-- markdownlint-enable MD034 --> :::
docs/integrate/sql-server/index.md (2)
4-10
: Standardize logo attributes; consider CSS gap instead of
spacing
- Replace
h
withheight
and addloading=lazy
.- Replace
with CSS-based spacing for maintainability.```{div} .float-right -[{h=60px}](https://www.microsoft.com/) - -[{h=60px}](https://learn.microsoft.com/en-us/sql/) +```{div} .float-right +:style: "display: inline-flex; gap: 8px; align-items: center" +[{height=60px loading=lazy}](https://www.microsoft.com/) +[{height=60px loading=lazy}](https://learn.microsoft.com/en-us/sql/)--- `38-44`: **Suppress MD034 around Sphinx `:link:` in the card** Avoids false-positive bare URL lint warnings. ```diff :::{grid-item-card} SSIS and CrateDB +<!-- markdownlint-disable MD034 --> :link: https://github.com/crate/cratedb-examples/tree/main/application/microsoft-ssis :link-type: url Using SQL Server Integration Services with CrateDB. +++ A demo project which uses SSIS and ODBC to read and write data from CrateDB. +<!-- markdownlint-enable MD034 --> :::
docs/integrate/node-red/index.md (3)
4-8
: Standardize logo attributes and add lazy-loadingSwitch to
height
and includeloading=lazy
.-```{div} .float-right -[{h=60px}](https://nodered.org/) -``` +```{div} .float-right +[{height=60px loading=lazy}](https://nodered.org/) +```
22-26
: Replace inline float style with CSS utility for consistencyUse
.float-right
(and margin utility if available) instead of inline:style:
.-:::{dropdown} **Managed Node-RED** -```{div} -:style: "float: right; margin: 0.5em" -[{w=180px}][FlowFuse] -``` +:::{dropdown} **Managed Node-RED** +```{div} .float-right +[{width=180px loading=lazy}][FlowFuse] +```
59-69
: Suppress MD034 around Sphinx:link:
in the cardsPrevents bare URL warnings for intended Sphinx syntax.
:::{grid-item-card} Tutorial: Ingest MQTT +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/ingesting-mqtt-messages-into-cratedb-using-node-red/803 :link-type: url Ingesting MQTT messages into CrateDB using Node-RED. ::: :::{grid-item-card} Tutorial: Recurrent queries :link: https://community.cratedb.com/t/automating-recurrent-cratedb-queries/788 :link-type: url Automating recurrent CrateDB queries using Node-RED +<!-- markdownlint-enable MD034 --> :::docs/integrate/apache-nifi/index.md (2)
41-45
: Suppress MD034 around Sphinx:link:
in the cardAvoids false-positive lint error.
:::{grid-item-card} Tutorial: Connect Apache NiFi and CrateDB +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/connecting-to-cratedb-from-apache-nifi/647 :link-type: url How to connect from Apache NiFi to CrateDB and ingest data from NiFi into CrateDB. +<!-- markdownlint-enable MD034 --> :::
55-56
: Optional: Suppress MD053 false positive for link referenceIf markdownlint complains the reference is unused (it’s used in seealso), add scoped suppression.
-[CrateDB and Apache NiFi]: https://cratedb.com/integrations/cratedb-and-apache-nifi +<!-- markdownlint-disable MD053 --> +[CrateDB and Apache NiFi]: https://cratedb.com/integrations/cratedb-and-apache-nifi +<!-- markdownlint-enable MD053 -->docs/integrate/rill/index.md (2)
47-48
: Useheight
andloading=lazy
for imagesStandardize attribute names and enable lazy-loading.
-{h=200px} --p-3200.webp){h=200px} +{height=200px loading=lazy} +-p-3200.webp){height=200px loading=lazy}
57-61
: Suppress MD034 around Sphinx:link:
in the cardPrevents bare URL warnings.
:::{grid-item-card} Rill and CrateDB +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/introducing-rill-and-bi-as-code-with-cratedb-cloud/1718 :link-type: url Introducing Rill and BI as Code with CrateDB Cloud. +<!-- markdownlint-enable MD034 --> :::docs/integrate/mysql/index.md (1)
5-10
: Normalize logo attributes and enable lazy loadingUse height plus loading=lazy for consistency and perf. Replace short
h=
withheight=
.-```{div} .float-right -[{h=60px}](https://www.mysql.com/) -[{h=60px}](https://www.mariadb.com/) +```{div} .float-right +[{height=60px loading=lazy}](https://www.mysql.com/) +[{height=60px loading=lazy}](https://www.mariadb.com/)</blockquote></details> <details> <summary>docs/integrate/debezium/index.md (1)</summary><blockquote> `4-8`: **Add lazy loading and normalize image sizing attribute** Use `height` and `loading=lazy` consistently. ```diff -```{div} .float-right -[{h=60px}][Debezium] +```{div} .float-right +[{height=60px loading=lazy}][Debezium]
</blockquote></details> <details> <summary>docs/integrate/streamlit/index.md (1)</summary><blockquote> `4-8`: **Enable lazy loading and standardize logo sizing** Adopt `height=60px` and `loading=lazy` to match other integration pages. ```diff -```{div} .float-right -[{h=60px}][Streamlit] +```{div} .float-right +[{height=60px loading=lazy}][Streamlit]
</blockquote></details> <details> <summary>docs/integrate/telegraf/index.md (1)</summary><blockquote> `4-8`: **Standardize logo attributes and add lazy loading** Use `height` attribute and `loading=lazy` for consistency and performance. ```diff -```{div} .float-right -[{h=60px}][Telegraf] +```{div} .float-right +[{height=60px loading=lazy}][Telegraf]
</blockquote></details> <details> <summary>docs/integrate/datagrip/index.md (3)</summary><blockquote> `7-10`: **Unify logo sizing and add lazy loading for performance** For consistency with other integration pages, prefer height-based sizing and add lazy loading. ```diff -```{div} .float-right -:style: "margin-left: 0.5em" -[{w=120px}][DataGrip] +```{div} .float-right +:style: "margin-left: 0.5em" +[{h=60px loading=lazy}][DataGrip]
32-34
: Add loading=lazy to screenshots to reduce page weightAll screenshots are non-critical and can be lazily loaded.
-{h=180px} -{h=180px} +{h=180px loading=lazy} +{h=180px loading=lazy}-{w=400px} +{w=400px loading=lazy}-{w=480px} +{w=480px loading=lazy}-{w=480px} +{w=480px loading=lazy}-{h=240px} -{h=240px} +{h=240px loading=lazy} +{h=240px loading=lazy}Also applies to: 41-41, 55-55, 65-65, 74-75
58-63
: Add Cloud SSL example and credential guidanceInclude a Cloud variant and clarify credential handling in JDBC UIs.
For connecting to [CrateDB Self-Managed] or [CrateDB Cloud], use a connection URL like:jdbc:crate://:5432/
+For [CrateDB Cloud], enable TLS: +``` +jdbc:crate://<clustername>.cratedb.net:5432/?ssl=true +``` +Note: Provide username/password via the DataGrip UI (preferred) or as JDBC URL query parameters, not in the user:password@ URL segment.
Please confirm the CrateDB JDBC driver’s
?ssl=true
flag is the recommended parameter for Cloud in your current version.docs/integrate/apache-hop/index.md (2)
4-8
: Add lazy loading to the logoImproves LCP and bandwidth.
-```{div} .float-right -[{h=60px}][Apache Hop] +```{div} .float-right +[{h=60px loading=lazy}][Apache Hop]
29-31
: Lazy-load screenshots-{h=120px} -{h=120px} -{h=120px} +{h=120px loading=lazy} +{h=120px loading=lazy} +{h=120px loading=lazy}docs/integrate/tableau/index.md (4)
4-8
: Lazy-load the logo-```{div} .float-right -[{h=60px}][Tableau] +```{div} .float-right +[{h=60px loading=lazy}][Tableau]
17-17
: Lazy-load the hero screenshot-{h=200px} +{h=200px loading=lazy}
65-71
: Prune unused link reference definitionsThese two appear unused after converting to grid-item cards.
-[Connecting to CrateDB from Tableau with JDBC]: https://cratedb.com/blog/connecting-to-cratedb-from-tableau-with-jdbc -[Connector: Issues]: https://github.com/crate/cratedb-tableau-connector/issues +[Connector: Issues]: https://github.com/crate/cratedb-tableau-connector/issues [CrateDB and Tableau]: https://cratedb.com/integrations/cratedb-and-tableau -[CrateDB Tableau Connector]: https://github.com/crate/cratedb-tableau-connector [Tableau]: https://www.tableau.com/ [Tool: Tableau]: https://github.com/crate/crate/labels/tool%3A%20Tableau -[Using CrateDB with Tableau]: https://community.cratedb.com/t/using-cratedb-with-tableau/1192 +[Using CrateDB with Tableau]: https://community.cratedb.com/t/using-cratedb-with-tableau/1192If you still want to keep them for future reuse, consider suppressing MD053 for this file.
23-51
: Credential handling note for PostgreSQL JDBCSince Tableau uses the PostgreSQL JDBC driver, remind readers to supply credentials via driver fields or URL query parameters (not user:password@), per our guidance.
Add a brief note under “Learn” or in “Notes”:
- When using the PostgreSQL JDBC driver with CrateDB, provide credentials via Tableau’s connection dialog or as URL query parameters (e.g., ?user=...&password=...). The user:password@ URL syntax is not supported by PostgreSQL JDBC.
Confirm wording aligns with your existing tutorials.
docs/integrate/apache-superset/index.md (2)
25-28
: Replace inline float style with utility class for consistencyUse the shared
.float-right
class instead of inline style.-:::{dropdown} **Managed Superset** -```{div} -:style: "float: right" -[{height=60px loading=lazy}][Preset Cloud] -``` +:::{dropdown} **Managed Superset** +```{div} .float-right +[{h=60px loading=lazy}][Preset Cloud] +``` ... -```{div} .clearfix -``` +```{div} .clearfix +```Also applies to: 42-44
103-105
: Grammar tweak in webinar description“educates about at all” → “covers all”
-From connecting databases to building charts, dashboards, and interactive filters, -this video educates about at all the basic surfaces and workflows of Apache Superset. +From connecting databases to building charts, dashboards, and interactive filters, +this video covers all the basic surfaces and workflows of Apache Superset.docs/integrate/prometheus/index.md (3)
4-8
: Lazy-load the logo-```{div} .float-right -[{h=60px}][Prometheus] +```{div} .float-right +[{h=60px loading=lazy}][Prometheus]
35-36
: Lazy-load the architecture image-{h=200px} +{h=200px loading=lazy}
82-82
: Hyphenate “Long‑term” when used adjectivallyImproves readability and follows style guidance.
-{material-outlined}`manage_history;2em` **CrateDB as Prometheus Long Term Storage** +{material-outlined}`manage_history;2em` **CrateDB as Prometheus Long‑term Storage**-[Prometheus with CrateDB: Long Term Metrics Storage] +[Prometheus with CrateDB: Long‑term Metrics Storage]Also applies to: 90-91
docs/integrate/apache-airflow/index.md (3)
9-13
: Lazy-load the logo-```{div} .float-right -[{h=60px}][Apache Airflow] +```{div} .float-right +[{h=60px loading=lazy}][Apache Airflow]
25-33
: Hyphenate “open‑source” (adjective)Small style tweak.
-[Apache Airflow] is an open source software platform to programmatically author, +[Apache Airflow] is an open‑source software platform to programmatically author,
37-40
: Replace inline float with.float-right
for consistencyAlign with project-wide utility classes.
-```{div} -:style: "float: right" -[{w=180px}](https://www.astronomer.io/) +```{div} .float-right +[{h=60px loading=lazy}](https://www.astronomer.io/)...
Also applies to: 56-58 </blockquote></details> </blockquote></details> <details> <summary>📜 Review details</summary> **Configuration used: CodeRabbit UI** **Review profile: CHILL** **Plan: Pro** <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between ebccc2865829cec7a890d05b3b086bb9e1d711ff and 3d167c4582016064d11840f0db2f3844720a6478. </details> <details> <summary>📒 Files selected for processing (52)</summary> * `docs/_include/links.md` (2 hunks) * `docs/_static/css/custom.css` (2 hunks) * `docs/connect/drivers.md` (1 hunks) * `docs/ingest/cdc/index.md` (2 hunks) * `docs/ingest/etl/index.md` (3 hunks) * `docs/integrate/apache-airflow/index.md` (3 hunks) * `docs/integrate/apache-flink/index.md` (2 hunks) * `docs/integrate/apache-hop/index.md` (2 hunks) * `docs/integrate/apache-iceberg/index.md` (1 hunks) * `docs/integrate/apache-kafka/index.md` (2 hunks) * `docs/integrate/apache-nifi/index.md` (2 hunks) * `docs/integrate/apache-superset/index.md` (4 hunks) * `docs/integrate/aws-dms/index.md` (2 hunks) * `docs/integrate/aws-dynamodb/index.md` (1 hunks) * `docs/integrate/aws-kinesis/index.md` (2 hunks) * `docs/integrate/aws-lambda/index.md` (2 hunks) * `docs/integrate/azure-functions/index.md` (2 hunks) * `docs/integrate/cluvio/index.md` (1 hunks) * `docs/integrate/datagrip/index.md` (6 hunks) * `docs/integrate/dbeaver/index.md` (3 hunks) * `docs/integrate/dbt/index.md` (4 hunks) * `docs/integrate/debezium/index.md` (1 hunks) * `docs/integrate/django/index.md` (2 hunks) * `docs/integrate/estuary/index.md` (4 hunks) * `docs/integrate/explo/index.md` (1 hunks) * `docs/integrate/gradio/index.md` (1 hunks) * `docs/integrate/grafana/index.md` (2 hunks) * `docs/integrate/influxdb/index.md` (2 hunks) * `docs/integrate/kestra/index.md` (2 hunks) * `docs/integrate/langchain/index.md` (2 hunks) * `docs/integrate/llamaindex/index.md` (2 hunks) * `docs/integrate/marquez/data_ingestion.py` (1 hunks) * `docs/integrate/marquez/index.md` (2 hunks) * `docs/integrate/marquez/learn.md` (1 hunks) * `docs/integrate/meltano/index.md` (1 hunks) * `docs/integrate/metabase/index.md` (1 hunks) * `docs/integrate/mongodb/index.md` (2 hunks) * `docs/integrate/mysql/index.md` (1 hunks) * `docs/integrate/n8n/index.md` (1 hunks) * `docs/integrate/node-red/index.md` (3 hunks) * `docs/integrate/plotly/index.md` (2 hunks) * `docs/integrate/powerbi/index.md` (2 hunks) * `docs/integrate/powerbi/service.rst` (9 hunks) * `docs/integrate/prometheus/index.md` (2 hunks) * `docs/integrate/pyviz/index.md` (2 hunks) * `docs/integrate/rill/index.md` (2 hunks) * `docs/integrate/risingwave/index.md` (1 hunks) * `docs/integrate/sql-server/index.md` (2 hunks) * `docs/integrate/streamlit/index.md` (1 hunks) * `docs/integrate/streamsets/index.md` (2 hunks) * `docs/integrate/tableau/index.md` (1 hunks) * `docs/integrate/telegraf/index.md` (2 hunks) </details> <details> <summary>✅ Files skipped from review due to trivial changes (3)</summary> * docs/connect/drivers.md * docs/integrate/langchain/index.md * docs/ingest/cdc/index.md </details> <details> <summary>🚧 Files skipped from review as they are similar to previous changes (27)</summary> * docs/integrate/streamsets/index.md * docs/_include/links.md * docs/integrate/llamaindex/index.md * docs/integrate/azure-functions/index.md * docs/integrate/explo/index.md * docs/integrate/influxdb/index.md * docs/integrate/apache-iceberg/index.md * docs/integrate/n8n/index.md * docs/integrate/powerbi/index.md * docs/integrate/apache-kafka/index.md * docs/ingest/etl/index.md * docs/_static/css/custom.css * docs/integrate/grafana/index.md * docs/integrate/pyviz/index.md * docs/integrate/risingwave/index.md * docs/integrate/aws-dms/index.md * docs/integrate/plotly/index.md * docs/integrate/aws-dynamodb/index.md * docs/integrate/dbt/index.md * docs/integrate/meltano/index.md * docs/integrate/estuary/index.md * docs/integrate/marquez/data_ingestion.py * docs/integrate/powerbi/service.rst * docs/integrate/gradio/index.md * docs/integrate/marquez/learn.md * docs/integrate/mongodb/index.md * docs/integrate/metabase/index.md </details> <details> <summary>🧰 Additional context used</summary> <details> <summary>🧠 Learnings (9)</summary> <details> <summary>📚 Learning: 2025-08-09T16:19:43.947Z</summary>
Learnt from: amotl
PR: #238
File: docs/integrate/azure-functions/learn.rst:1-1
Timestamp: 2025-08-09T16:19:43.947Z
Learning: In the CrateDB Guide documentation, main integration anchors (e.g.,azure-functions
) are intentionally placed in theindex.md
files of their respective integration folders, while detailed tutorials use the-learn
suffix (e.g.,azure-functions-learn
) in theirlearn.rst
orlearn.md
files. This is a deliberate architectural pattern for the documentation restructuring.**Applied to files:** - `docs/integrate/marquez/index.md` - `docs/integrate/mysql/index.md` - `docs/integrate/prometheus/index.md` </details> <details> <summary>📚 Learning: 2025-08-05T07:14:57.416Z</summary>
Learnt from: hammerhead
PR: #221
File: docs/connect/configure.md:58-66
Timestamp: 2025-08-05T07:14:57.416Z
Learning: In CrateDB connection strings, the user:password@ syntax is valid for HTTP Basic authentication on port 4200, but PostgreSQL JDBC drivers do not support this format and require credentials as query parameters (?user=&password=) instead.**Applied to files:** - `docs/integrate/datagrip/index.md` </details> <details> <summary>📚 Learning: 2025-06-05T14:29:15.512Z</summary>
Learnt from: amotl
PR: #207
File: docs/integrate/etl/iceberg-risingwave.md:205-207
Timestamp: 2025-06-05T14:29:15.512Z
Learning: Therecords.Database("crate://", echo=True)
connection string for CrateDB works with defaults: localhost as host, "crate" as user, and blank password. This is valid and functional code in the records library.**Applied to files:** - `docs/integrate/datagrip/index.md` </details> <details> <summary>📚 Learning: 2025-08-10T18:17:49.350Z</summary>
Learnt from: amotl
PR: #241
File: docs/integrate/mysql/index.md:51-55
Timestamp: 2025-08-10T18:17:49.350Z
Learning: In the CrateDB Guide documentation, the filedocs/integrate/mysql/import-csv.rst
contains the reStructuredText label.. _mysql-import-csv:
which can be referenced from MyST Markdown files using:link: mysql-import-csv
with:link-type: ref
. This is another example of cross-format referencing between MyST and RST files working correctly in Sphinx.**Applied to files:** - `docs/integrate/mysql/index.md` </details> <details> <summary>📚 Learning: 2025-08-08T16:50:14.965Z</summary>
Learnt from: amotl
PR: #234
File: docs/home/index.md:47-50
Timestamp: 2025-08-08T16:50:14.965Z
Learning: In the CrateDB Guide docs (MyST), the correct intersphinx target for the CrateDB Cloud documentation homepage iscloud:index
(notcloud:docs-index
orcloud-docs-index
). Use:link: cloud:index
on cards/links. Thecloud
mapping is inherited via crate-docs-theme.**Applied to files:** - `docs/integrate/mysql/index.md` </details> <details> <summary>📚 Learning: 2025-08-09T21:40:46.125Z</summary>
Learnt from: amotl
PR: #238
File: docs/integrate/streamsets/index.md:18-21
Timestamp: 2025-08-09T21:40:46.125Z
Learning: In the CrateDB Guide documentation, reStructuredText files (.rst
) use the RST label syntax.. _label:
while MyST Markdown files (.md
) use the syntax(label)=
. Both formats are used throughout the repository and labels can be cross-referenced between them.**Applied to files:** - `docs/integrate/mysql/index.md` </details> <details> <summary>📚 Learning: 2025-08-10T17:09:32.583Z</summary>
Learnt from: amotl
PR: #241
File: docs/integrate/azure-functions/index.md:31-36
Timestamp: 2025-08-10T17:09:32.583Z
Learning: In the CrateDB Guide documentation, RST files (.rst
) use reStructuredText anchor syntax.. _anchor-name:
while Markdown files (.md
) use MyST syntax(anchor-name)=
. Cross-references between MyST Markdown and reStructuredText files work correctly - a MyST:link:
directive can reference an RST anchor and vice versa.**Applied to files:** - `docs/integrate/mysql/index.md` </details> <details> <summary>📚 Learning: 2025-08-09T11:03:33.164Z</summary>
Learnt from: amotl
PR: #236
File: docs/ingest/etl/index.md:22-23
Timestamp: 2025-08-09T11:03:33.164Z
Learning: In the CrateDB Guide documentation, MyST Markdown files can use{ref}
directives to reference labels defined in reStructuredText files using the RST syntax.. _label:
. This cross-format referencing between MyST and RST is supported by Sphinx.**Applied to files:** - `docs/integrate/mysql/index.md` </details> <details> <summary>📚 Learning: 2025-08-10T17:59:43.468Z</summary>
Learnt from: amotl
PR: #241
File: docs/integrate/grafana/index.md:37-46
Timestamp: 2025-08-10T17:59:43.468Z
Learning: In mixed documentation projects using Sphinx, the:link-type: ref
directive in Markdown files can reference labels defined in reStructuredText files using the.. _label-name:
syntax, and vice versa.**Applied to files:** - `docs/integrate/mysql/index.md` </details> </details><details> <summary>🪛 LanguageTool</summary> <details> <summary>docs/integrate/apache-airflow/index.md</summary> [uncategorized] ~19-~19: If this is a compound adjective that modifies the following noun, use a hyphen. Context: ...ut ::: :::{div} [Apache Airflow] is an open source software platform to programmatically a... (EN_COMPOUND_ADJECTIVE_INTERNAL) </details> <details> <summary>docs/integrate/datagrip/index.md</summary> [style] ~74-~74: Using many exclamation marks might seem excessive (in this case: 6 exclamation marks for a text that’s 2661 characters long) Context: ...5-0a53-41d7-905b-a71cc4a767e9){h=240px}  </details> <details> <summary>docs/integrate/prometheus/index.md</summary> [uncategorized] ~82-~82: If this is a compound adjective that modifies the following noun, use a hyphen. Context: ...ory;2em` **CrateDB as Prometheus Long Term Storage** Learn how to start Prometheu... (EN_COMPOUND_ADJECTIVE_INTERNAL) --- [uncategorized] ~90-~90: If this is a compound adjective that modifies the following noun, use a hyphen. Context: ...B" tutorial. [Prometheus with CrateDB: Long Term Metrics Storage] ::: :::{grid-item} :c... (EN_COMPOUND_ADJECTIVE_INTERNAL) </details> </details> <details> <summary>🪛 markdownlint-cli2 (0.17.2)</summary> <details> <summary>docs/integrate/apache-airflow/index.md</summary> 68-68: Bare URL used (MD034, no-bare-urls) --- 74-74: Bare URL used (MD034, no-bare-urls) --- 89-89: Bare URL used (MD034, no-bare-urls) --- 95-95: Bare URL used (MD034, no-bare-urls) --- 102-102: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/apache-flink/index.md</summary> 135-135: Bare URL used (MD034, no-bare-urls) --- 148-148: Bare URL used (MD034, no-bare-urls) --- 154-154: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/apache-hop/index.md</summary> 42-42: Bare URL used (MD034, no-bare-urls) --- 49-49: Bare URL used (MD034, no-bare-urls) --- 55-55: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/apache-nifi/index.md</summary> 42-42: Bare URL used (MD034, no-bare-urls) --- 55-55: Link and image reference definitions should be needed Unused link or image reference definition: "cratedb and apache nifi" (MD053, link-image-reference-definitions) </details> <details> <summary>docs/integrate/apache-superset/index.md</summary> 80-80: Bare URL used (MD034, no-bare-urls) --- 86-86: Bare URL used (MD034, no-bare-urls) --- 160-160: Link and image reference definitions should be needed Unused link or image reference definition: "cratedb and apache superset" (MD053, link-image-reference-definitions) </details> <details> <summary>docs/integrate/aws-kinesis/index.md</summary> 60-60: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/cluvio/index.md</summary> 34-34: Bare URL used (MD034, no-bare-urls) --- 49-49: Link and image reference definitions should be needed Unused link or image reference definition: "cratedb and cluvio" (MD053, link-image-reference-definitions) </details> <details> <summary>docs/integrate/datagrip/index.md</summary> 87-87: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/dbeaver/index.md</summary> 64-64: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/debezium/index.md</summary> 33-33: Link fragments should be valid (MD051, link-fragments) --- 33-33: Link fragments should be valid (MD051, link-fragments) --- 35-35: Link fragments should be valid (MD051, link-fragments) --- 37-37: Images should have alternate text (alt text) (MD045, no-alt-text) --- 38-38: Images should have alternate text (alt text) (MD045, no-alt-text) --- 39-39: Images should have alternate text (alt text) (MD045, no-alt-text) </details> <details> <summary>docs/integrate/django/index.md</summary> 32-32: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/kestra/index.md</summary> 40-40: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/mysql/index.md</summary> 44-44: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/node-red/index.md</summary> 62-62: Link and image reference definitions should be needed Unused link or image reference definition: "cratedb and power bi" (MD053, link-image-reference-definitions) </details> <details> <summary>docs/integrate/rill/index.md</summary> 58-58: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/sql-server/index.md</summary> 39-39: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/streamlit/index.md</summary> 33-33: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/tableau/index.md</summary> 27-27: Bare URL used (MD034, no-bare-urls) --- 37-37: Bare URL used (MD034, no-bare-urls) --- 44-44: Bare URL used (MD034, no-bare-urls) --- 65-65: Link and image reference definitions should be needed Unused link or image reference definition: "connecting to cratedb from tableau with jdbc" (MD053, link-image-reference-definitions) --- 67-67: Link and image reference definitions should be needed Unused link or image reference definition: "cratedb and tableau" (MD053, link-image-reference-definitions) --- 68-68: Link and image reference definitions should be needed Unused link or image reference definition: "cratedb tableau connector" (MD053, link-image-reference-definitions) </details> <details> <summary>docs/integrate/telegraf/index.md</summary> 49-49: Bare URL used (MD034, no-bare-urls) </details> </details> </details> <details> <summary>⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)</summary> * GitHub Check: Build docs </details> <details> <summary>🔇 Additional comments (5)</summary><blockquote> <details> <summary>docs/integrate/mysql/index.md (1)</summary> `49-53`: **Cross-format reference is correct** `:link: mysql-import-csv` with `:link-type: ref` correctly targets the RST label `.. _mysql-import-csv:`. </details> <details> <summary>docs/integrate/apache-flink/index.md (1)</summary> `8-15`: **Header/logo and badge block looks solid** Uses `height`, `loading="lazy"`, and `rel="noopener noreferrer"`. Clearfix included. LGTM. </details> <details> <summary>docs/integrate/django/index.md (1)</summary> `4-11`: **LGTM: Hardened external link and accessible, lazy-loaded images** Good use of `height`, `loading="lazy"`, and `rel="noopener noreferrer"`. This aligns with the pattern across other integrations. </details> <details> <summary>docs/integrate/marquez/index.md (1)</summary> `35-37`: **Link reference “marquez-learn” is valid** The label `(marquez-learn)=` is defined in `docs/integrate/marquez/learn.md` on line 1, so the `:link-type: ref` in `index.md` will resolve correctly. No changes needed. </details> <details> <summary>docs/integrate/apache-superset/index.md (1)</summary> `7-12`: **LGTM: rel/alt added and logo sizing** The badge anchor includes rel="noopener noreferrer" and the image has alt text. Good a11y/security practice. </details> </blockquote></details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
e880a64
to
7264bf9
Compare
23fc020
to
a43e52e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (3)
docs/integrate/apache-nifi/index.md (1)
4-6
: Optional: Host the logo locally to improve build robustness.Avoid hot-linking the NiFi logo; store it under
docs/_static/img/integrations/
and reference locally for reliability.-[{height=60px loading=lazy}][Apache NiFi] +[{height=60px loading=lazy}][Apache NiFi]docs/integrate/aws-dynamodb/index.md (1)
11-12
: Harden external badge link and add alt text (repeat from earlier review)Add rel="noopener noreferrer" to the anchor and alt text to the image for security and accessibility.
-<a href="https://github.com/crate/cratedb-toolkit/actions/workflows/dynamodb.yml" target="_blank"> - <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-toolkit/dynamodb.yml?branch=main&label=CTK%2BDynamoDB" loading="lazy"></a> +<a href="https://github.com/crate/cratedb-toolkit/actions/workflows/dynamodb.yml" target="_blank" rel="noopener noreferrer"> + <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-toolkit/dynamodb.yml?branch=main&label=CTK%2BDynamoDB" loading="lazy" alt="CI status: cratedb-toolkit DynamoDB workflow"></a>docs/integrate/apache-airflow/index.md (1)
9-11
: Optional: Vendor remote logo asset locallyHot-linked logos can break previews and impact reproducibility. Consider vendoring into docs/_static/ and referencing locally.
🧹 Nitpick comments (37)
docs/integrate/n8n/index.md (3)
22-26
: Suppress MD034 around Sphinx 🔗 parameter (linter false positive).markdownlint flags the bare URL in
:link:
though this is valid Sphinx Design syntax. Suppress locally.:::{grid-item-card} n8n CrateDB integration +<!-- markdownlint-disable MD034 --> :link: https://n8n.io/integrations/cratedb/ :link-type: url +<!-- markdownlint-enable MD034 --> Create workflows with CrateDB integrations. :::
20-21
: Optional: Add gutter for consistent spacing between cards.This aligns with other integration pages using Sphinx Design grids.
-::::{grid} 2 +::::{grid} 2 +:gutter: 2
31-36
: MD053 “unused reference” appears to be a false positive.
[CrateDB and n8n]
is consumed inside the seealso block. Consider ignoring MD053 for references used in directives.docs/integrate/cluvio/index.md (3)
24-26
: Use standard image attributes and enable lazy loading.Replace non-standard
h=
withheight=
and addloading=lazy
.-{h=200px} -{h=200px} +{height=200px loading=lazy} +{height=200px loading=lazy}
33-38
: Suppress MD034 around Sphinx 🔗 parameter (linter false positive).:::{grid-item-card} Data Analysis with Cluvio and CrateDB +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/data-analysis-with-cluvio-and-cratedb/1571 :link-type: url +<!-- markdownlint-enable MD034 --> Explore how to leverage the power of Cluvio, a modern data analysis platform with CrateDB Cloud as the underlying database. :::
44-50
: MD053 “unused reference” likely noise.
[CrateDB and Cluvio]
is used in the seealso directive. If the linter doesn’t parse directives, suppress MD053 for these cases.docs/integrate/dbeaver/index.md (4)
7-10
: Standardize logo sizing/attributes to match other pages.Other pages use
height=60px
and lazy-loading. Consider the same here.-```{div} .float-right -:style: "margin-left: 0.5em" -[{w=120px}][DBeaver] +```{div} .float-right +:style: "margin-left: 0.5em" +[{height=60px loading=lazy}][DBeaver]
42-43
: Improve alt text for accessibility.Use descriptive alt text instead of a generic “Image”.
-{w=480px} +{w=480px}
52-53
: Improve alt text for accessibility.-{h=240px} -{h=240px} +{h=240px} +{h=240px}
63-68
: Suppress MD034 around Sphinx 🔗 parameter (linter false positive).:::{grid-item-card} Blog: Use CrateDB With DBeaver +<!-- markdownlint-disable MD034 --> :link: https://cratedb.com/blog/cratedb-dbeaver :link-type: url +<!-- markdownlint-enable MD034 --> DBeaver is a multipurpose database tool for developers and database administrators. With the help of the CrateDB JDBC Standalone Driver, you can use DBeaver with CrateDB. :::docs/integrate/sql-server/index.md (2)
37-43
: Suppress MD034 around Sphinx 🔗 parameter (linter false positive).:::{grid-item-card} SSIS and CrateDB +<!-- markdownlint-disable MD034 --> :link: https://github.com/crate/cratedb-examples/tree/main/application/microsoft-ssis :link-type: url +<!-- markdownlint-enable MD034 --> Using SQL Server Integration Services with CrateDB. +++ A demo project which uses SSIS and ODBC to read and write data from CrateDB. :::
48-48
: MD053 “unused reference” likely false positive.
[Microsoft SQL documentation]
is referenced in the logo link. Consider suppressing MD053 for references used in directives or image links.docs/integrate/explo/index.md (2)
22-23
: Use standard image attributes and enable lazy loading.Replace
h=
withheight=
and addloading=lazy
.-{h=200px} -{h=200px} +{height=200px loading=lazy} +{height=200px loading=lazy}
31-35
: Suppress MD034 around Sphinx 🔗 parameter (linter false positive).:::{grid-item-card} Blog: Introduction to Time Series Visualization +<!-- markdownlint-disable MD034 --> :link: https://cratedb.com/blog/introduction-to-time-series-visualization-in-cratedb-and-explo :link-type: url +<!-- markdownlint-enable MD034 --> Introduction to Time Series Visualization in CrateDB and Explo. :::docs/integrate/gradio/index.md (2)
38-44
: Suppress MD034 around Sphinx 🔗 parameter (linter false positive).:::{grid-item-card} Example +<!-- markdownlint-disable MD034 --> :link: https://github.com/crate/cratedb-examples/tree/main/framework/gradio :link-type: url +<!-- markdownlint-enable MD034 --> Example program using Gradio with CrateDB. :::
38-39
: Optional: Add gutter to grid for visual spacing.-::::{grid} 2 +::::{grid} 2 +:gutter: 2docs/integrate/apache-nifi/index.md (2)
30-33
: Use standard image attributes and enable lazy loading.Replace
h=
withheight=
and addloading=lazy
on screenshots.-{h=120px} -{h=120px} -{h=120px} +{height=120px loading=lazy} +{height=120px loading=lazy} +{height=120px loading=lazy}
41-45
: Suppress MD034 around Sphinx 🔗 parameter (linter false positive).:::{grid-item-card} Tutorial: Connect Apache NiFi and CrateDB +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/connecting-to-cratedb-from-apache-nifi/647 :link-type: url +<!-- markdownlint-enable MD034 --> How to connect from Apache NiFi to CrateDB and ingest data from NiFi into CrateDB. :::docs/integrate/node-red/index.md (4)
23-26
: Prefer utility class over inline float for consistency.Use
.float-right
instead of inlinefloat: right;
and keep margin inline or via a utility.-```{div} -:style: "float: right; margin: 0.5em" -[{w=180px}][FlowFuse] +```{div} .float-right +:style: "margin: 0.5em" +[{height=60px loading=lazy}][FlowFuse]
59-64
: Suppress MD034 around Sphinx 🔗 parameter (linter false positive).:::{grid-item-card} Tutorial: Ingest MQTT +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/ingesting-mqtt-messages-into-cratedb-using-node-red/803 :link-type: url +<!-- markdownlint-enable MD034 --> Ingesting MQTT messages into CrateDB using Node-RED. :::
65-69
: Suppress MD034 around Sphinx 🔗 parameter (linter false positive).:::{grid-item-card} Tutorial: Recurrent queries +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/automating-recurrent-cratedb-queries/788 :link-type: url +<!-- markdownlint-enable MD034 --> Automating recurrent CrateDB queries using Node-RED :::
57-58
: Optional: Add gutter on grid for spacing.-::::{grid} +::::{grid} +:gutter: 2docs/integrate/mysql/index.md (1)
32-36
: Optional: clarify uvx prerequisiteConsider a short note that
uvx
requires uv (or how to install it), to reduce friction for first-time users.docs/integrate/apache-flink/index.md (2)
183-189
: Improve performance: lazy-load embedded YouTube iframeAdd
loading="lazy"
to defer iframe loading and speed up initial render.-<iframe width="240" src="https://www.youtube-nocookie.com/embed/3cg5dABA6mo?list=PLa7VYi0yPIH1UdmQcnUr8lvjbUV8JriK0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/3cg5dABA6mo?list=PLa7VYi0yPIH1UdmQcnUr8lvjbUV8JriK0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
212-217
: Also lazy-load this iframeSame suggestion here for consistency and page performance.
-<iframe width="240" src="https://www.youtube-nocookie.com/embed/R4UxMdrR5os?t=2207" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/R4UxMdrR5os?t=2207" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>docs/integrate/django/index.md (1)
19-31
: Minor grammar: hyphenate “open-source” when used adjectivallyApplies to the “It’s free and open source.” sentence.
- It’s free and open source. + It’s free and open-source.docs/integrate/streamlit/index.md (1)
59-60
: Lazy-load the webinar iframeAdd
loading="lazy"
to defer loading until in view.-<iframe width="240" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>docs/integrate/marquez/index.md (1)
7-9
: Use smaller SVG logo and keep lazy-loadingSwitch from the heavy social-card JPEG to the lightweight SVG.
-[{height=60px loading=lazy}][Marquez] +[{height=60px loading=lazy}][Marquez]docs/integrate/datagrip/index.md (1)
7-10
: Add lazy-loading to the logo imageConsistent with other pages, add
loading=lazy
. Optionally standardize on height for visual consistency.-[{w=120px}][DataGrip] +[{w=120px loading=lazy}][DataGrip]docs/integrate/apache-hop/index.md (1)
13-16
: Hyphenate “open-source”When used as a compound adjective before a noun, “open source” should be hyphenated.
-[Apache Hop] aims to be a modern, open source data integration platform that is +[Apache Hop] aims to be a modern, open-source data integration platform that isdocs/integrate/tableau/index.md (3)
17-17
: Use standard MyST attribute name for image sizeReplace non-standard
h=
withheight=
to avoid build/render issues across Sphinx/MyST themes.-{h=200px} +{height=200px}
36-41
: Future-proof driver mentionAvoid pinning to a specific JDBC minor version in prose; it goes stale quickly. Suggest generalizing to “42.x or newer”.
-How to install the latest PostgreSQL JDBC driver (e.g. -`postgresql-42.7.1.jar` or newer) for using Tableau. +How to install the latest PostgreSQL JDBC driver (e.g. 42.x or newer) for using Tableau.
65-71
: Remove unused reference definitions (silence MD053)These link reference definitions aren’t used on this page. Either switch the grid cards to use them or drop the unused definitions.
-[Connecting to CrateDB from Tableau with JDBC]: https://cratedb.com/blog/connecting-to-cratedb-from-tableau-with-jdbc [Connector: Issues]: https://github.com/crate/cratedb-tableau-connector/issues [CrateDB and Tableau]: https://cratedb.com/integrations/cratedb-and-tableau -[CrateDB Tableau Connector]: https://github.com/crate/cratedb-tableau-connector [Tableau]: https://www.tableau.com/ [Tool: Tableau]: https://github.com/crate/crate/labels/tool%3A%20Tableau -[Using CrateDB with Tableau]: https://community.cratedb.com/t/using-cratedb-with-tableau/1192docs/integrate/apache-superset/index.md (2)
11-11
: Encode spaces in badge label parameterThe shields.io URL should URL-encode spaces in query params to avoid intermittent failures.
- <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-examples/application-apache-superset.yml?branch=main&label=Apache Superset" loading="lazy" alt="CI status: Apache Superset"></a> + <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-examples/application-apache-superset.yml?branch=main&label=Apache%20Superset" loading="lazy" alt="CI status: Apache Superset"></a>
101-105
: Fix grammar in webinar description“educates about at all the basic surfaces” → “covers all the basic surfaces”.
-From connecting databases to building charts, dashboards, and interactive filters, -this video educates about at all the basic surfaces and workflows of Apache Superset. +From connecting databases to building charts, dashboards, and interactive filters, +this video covers all the basic surfaces and workflows of Apache Superset.docs/integrate/prometheus/index.md (1)
35-35
: Use standard MyST attribute name for image sizeReplace
h=
withheight=
for compatibility.-{h=200px} +{height=200px}docs/integrate/apache-airflow/index.md (1)
37-40
: Prefer utility class over inline style and standardize width attributeUse the shared
.float-right
class for consistency and changew=
towidth=
for MyST compatibility. Also add lazy loading to the image.-```{div} -:style: "float: right" -[{w=180px}](https://www.astronomer.io/) +```{div} .float-right +[{width=180px loading=lazy}](https://www.astronomer.io/)</blockquote></details> </blockquote></details> <details> <summary>📜 Review details</summary> **Configuration used: CodeRabbit UI** **Review profile: CHILL** **Plan: Pro** <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between 3d167c4582016064d11840f0db2f3844720a6478 and a43e52e96e977f2ac586993bc0409b8d1d422052. </details> <details> <summary>📒 Files selected for processing (81)</summary> * `docs/_include/card/timeseries-datashader.md` (1 hunks) * `docs/_include/links.md` (2 hunks) * `docs/_static/css/custom.css` (2 hunks) * `docs/conf.py` (2 hunks) * `docs/connect/index.md` (0 hunks) * `docs/feature/blob/index.md` (0 hunks) * `docs/feature/ccr/index.md` (0 hunks) * `docs/feature/cloud/index.md` (0 hunks) * `docs/feature/cluster/index.md` (0 hunks) * `docs/feature/document/index.md` (0 hunks) * `docs/feature/fdw/index.md` (0 hunks) * `docs/feature/index.md` (0 hunks) * `docs/feature/index/index.md` (0 hunks) * `docs/feature/relational/index.md` (0 hunks) * `docs/feature/search/fts/index.md` (0 hunks) * `docs/feature/search/geo/index.md` (0 hunks) * `docs/feature/search/hybrid/index.md` (0 hunks) * `docs/feature/search/index.md` (0 hunks) * `docs/feature/search/vector/index.md` (0 hunks) * `docs/feature/snapshot/index.md` (0 hunks) * `docs/feature/sql/index.md` (0 hunks) * `docs/feature/storage/index.md` (0 hunks) * `docs/feature/udf/index.md` (0 hunks) * `docs/ingest/cdc/index.md` (2 hunks) * `docs/ingest/etl/index.md` (3 hunks) * `docs/ingest/index.md` (0 hunks) * `docs/integrate/apache-airflow/index.md` (2 hunks) * `docs/integrate/apache-flink/index.md` (2 hunks) * `docs/integrate/apache-hop/index.md` (2 hunks) * `docs/integrate/apache-iceberg/index.md` (1 hunks) * `docs/integrate/apache-kafka/index.md` (2 hunks) * `docs/integrate/apache-nifi/index.md` (2 hunks) * `docs/integrate/apache-superset/index.md` (4 hunks) * `docs/integrate/aws-dms/index.md` (2 hunks) * `docs/integrate/aws-dynamodb/index.md` (1 hunks) * `docs/integrate/aws-kinesis/index.md` (2 hunks) * `docs/integrate/aws-lambda/index.md` (2 hunks) * `docs/integrate/azure-functions/index.md` (2 hunks) * `docs/integrate/cluvio/index.md` (1 hunks) * `docs/integrate/datagrip/index.md` (6 hunks) * `docs/integrate/dbeaver/index.md` (3 hunks) * `docs/integrate/dbt/index.md` (4 hunks) * `docs/integrate/debezium/index.md` (1 hunks) * `docs/integrate/django/index.md` (2 hunks) * `docs/integrate/estuary/index.md` (4 hunks) * `docs/integrate/explo/index.md` (1 hunks) * `docs/integrate/gradio/index.md` (1 hunks) * `docs/integrate/grafana/index.md` (2 hunks) * `docs/integrate/index.md` (3 hunks) * `docs/integrate/influxdb/index.md` (2 hunks) * `docs/integrate/kestra/index.md` (2 hunks) * `docs/integrate/langchain/index.md` (2 hunks) * `docs/integrate/llamaindex/index.md` (2 hunks) * `docs/integrate/marquez/data_ingestion.py` (1 hunks) * `docs/integrate/marquez/index.md` (2 hunks) * `docs/integrate/marquez/learn.md` (1 hunks) * `docs/integrate/meltano/index.md` (1 hunks) * `docs/integrate/metabase/index.md` (1 hunks) * `docs/integrate/mongodb/index.md` (2 hunks) * `docs/integrate/mysql/import-csv.rst` (1 hunks) * `docs/integrate/mysql/index.md` (1 hunks) * `docs/integrate/n8n/index.md` (1 hunks) * `docs/integrate/node-red/index.md` (3 hunks) * `docs/integrate/plotly/index.md` (2 hunks) * `docs/integrate/powerbi/desktop.rst` (6 hunks) * `docs/integrate/powerbi/index.md` (2 hunks) * `docs/integrate/powerbi/service.rst` (9 hunks) * `docs/integrate/prometheus/index.md` (2 hunks) * `docs/integrate/pyviz/index.md` (2 hunks) * `docs/integrate/rill/index.md` (2 hunks) * `docs/integrate/risingwave/index.md` (1 hunks) * `docs/integrate/sql-server/index.md` (2 hunks) * `docs/integrate/streamlit/index.md` (1 hunks) * `docs/integrate/streamsets/index.md` (2 hunks) * `docs/integrate/tableau/index.md` (1 hunks) * `docs/integrate/telegraf/index.md` (1 hunks) * `docs/topic/index.md` (0 hunks) * `docs/topic/ml/index.md` (0 hunks) * `docs/topic/timeseries/index.md` (0 hunks) * `docs/use/index.md` (0 hunks) * `docs/use/telemetry/index.md` (1 hunks) </details> <details> <summary>💤 Files with no reviewable changes (24)</summary> * docs/feature/search/fts/index.md * docs/feature/sql/index.md * docs/topic/index.md * docs/feature/search/hybrid/index.md * docs/feature/ccr/index.md * docs/feature/search/vector/index.md * docs/ingest/index.md * docs/feature/index.md * docs/feature/search/geo/index.md * docs/feature/blob/index.md * docs/feature/relational/index.md * docs/feature/cluster/index.md * docs/feature/storage/index.md * docs/feature/cloud/index.md * docs/feature/search/index.md * docs/feature/fdw/index.md * docs/feature/snapshot/index.md * docs/feature/udf/index.md * docs/topic/timeseries/index.md * docs/feature/index/index.md * docs/use/index.md * docs/feature/document/index.md * docs/connect/index.md * docs/topic/ml/index.md </details> <details> <summary>✅ Files skipped from review due to trivial changes (4)</summary> * docs/_include/card/timeseries-datashader.md * docs/integrate/telegraf/index.md * docs/integrate/langchain/index.md * docs/conf.py </details> <details> <summary>🚧 Files skipped from review as they are similar to previous changes (32)</summary> * docs/_include/links.md * docs/integrate/azure-functions/index.md * docs/integrate/mysql/import-csv.rst * docs/integrate/index.md * docs/integrate/aws-lambda/index.md * docs/integrate/rill/index.md * docs/integrate/streamsets/index.md * docs/integrate/powerbi/index.md * docs/integrate/llamaindex/index.md * docs/integrate/powerbi/desktop.rst * docs/use/telemetry/index.md * docs/integrate/mongodb/index.md * docs/integrate/apache-iceberg/index.md * docs/integrate/metabase/index.md * docs/integrate/kestra/index.md * docs/integrate/marquez/data_ingestion.py * docs/integrate/aws-kinesis/index.md * docs/ingest/cdc/index.md * docs/ingest/etl/index.md * docs/integrate/pyviz/index.md * docs/integrate/influxdb/index.md * docs/integrate/apache-kafka/index.md * docs/integrate/aws-dms/index.md * docs/integrate/grafana/index.md * docs/integrate/plotly/index.md * docs/integrate/marquez/learn.md * docs/integrate/estuary/index.md * docs/_static/css/custom.css * docs/integrate/dbt/index.md * docs/integrate/meltano/index.md * docs/integrate/powerbi/service.rst * docs/integrate/risingwave/index.md </details> <details> <summary>🧰 Additional context used</summary> <details> <summary>🧠 Learnings (11)</summary> <details> <summary>📚 Learning: 2025-08-09T16:19:43.947Z</summary>
Learnt from: amotl
PR: #238
File: docs/integrate/azure-functions/learn.rst:1-1
Timestamp: 2025-08-09T16:19:43.947Z
Learning: In the CrateDB Guide documentation, main integration anchors (e.g.,azure-functions
) are intentionally placed in theindex.md
files of their respective integration folders, while detailed tutorials use the-learn
suffix (e.g.,azure-functions-learn
) in theirlearn.rst
orlearn.md
files. This is a deliberate architectural pattern for the documentation restructuring.**Applied to files:** - `docs/integrate/marquez/index.md` - `docs/integrate/mysql/index.md` - `docs/integrate/tableau/index.md` </details> <details> <summary>📚 Learning: 2025-08-05T07:14:57.416Z</summary>
Learnt from: hammerhead
PR: #221
File: docs/connect/configure.md:58-66
Timestamp: 2025-08-05T07:14:57.416Z
Learning: In CrateDB connection strings, the user:password@ syntax is valid for HTTP Basic authentication on port 4200, but PostgreSQL JDBC drivers do not support this format and require credentials as query parameters (?user=&password=) instead.**Applied to files:** - `docs/integrate/datagrip/index.md` </details> <details> <summary>📚 Learning: 2025-06-05T14:29:15.512Z</summary>
Learnt from: amotl
PR: #207
File: docs/integrate/etl/iceberg-risingwave.md:205-207
Timestamp: 2025-06-05T14:29:15.512Z
Learning: Therecords.Database("crate://", echo=True)
connection string for CrateDB works with defaults: localhost as host, "crate" as user, and blank password. This is valid and functional code in the records library.**Applied to files:** - `docs/integrate/datagrip/index.md` </details> <details> <summary>📚 Learning: 2025-08-10T18:17:49.350Z</summary>
Learnt from: amotl
PR: #241
File: docs/integrate/mysql/index.md:51-55
Timestamp: 2025-08-10T18:17:49.350Z
Learning: In the CrateDB Guide documentation, the filedocs/integrate/mysql/import-csv.rst
contains the reStructuredText label.. _mysql-import-csv:
which can be referenced from MyST Markdown files using:link: mysql-import-csv
with:link-type: ref
. This is another example of cross-format referencing between MyST and RST files working correctly in Sphinx.**Applied to files:** - `docs/integrate/mysql/index.md` - `docs/integrate/n8n/index.md` </details> <details> <summary>📚 Learning: 2025-08-08T16:50:14.965Z</summary>
Learnt from: amotl
PR: #234
File: docs/home/index.md:47-50
Timestamp: 2025-08-08T16:50:14.965Z
Learning: In the CrateDB Guide docs (MyST), the correct intersphinx target for the CrateDB Cloud documentation homepage iscloud:index
(notcloud:docs-index
orcloud-docs-index
). Use:link: cloud:index
on cards/links. Thecloud
mapping is inherited via crate-docs-theme.**Applied to files:** - `docs/integrate/mysql/index.md` </details> <details> <summary>📚 Learning: 2025-08-09T21:40:46.125Z</summary>
Learnt from: amotl
PR: #238
File: docs/integrate/streamsets/index.md:18-21
Timestamp: 2025-08-09T21:40:46.125Z
Learning: In the CrateDB Guide documentation, reStructuredText files (.rst
) use the RST label syntax.. _label:
while MyST Markdown files (.md
) use the syntax(label)=
. Both formats are used throughout the repository and labels can be cross-referenced between them.**Applied to files:** - `docs/integrate/mysql/index.md` - `docs/integrate/n8n/index.md` </details> <details> <summary>📚 Learning: 2025-08-10T17:09:32.583Z</summary>
Learnt from: amotl
PR: #241
File: docs/integrate/azure-functions/index.md:31-36
Timestamp: 2025-08-10T17:09:32.583Z
Learning: In the CrateDB Guide documentation, RST files (.rst
) use reStructuredText anchor syntax.. _anchor-name:
while Markdown files (.md
) use MyST syntax(anchor-name)=
. Cross-references between MyST Markdown and reStructuredText files work correctly - a MyST:link:
directive can reference an RST anchor and vice versa.**Applied to files:** - `docs/integrate/mysql/index.md` - `docs/integrate/n8n/index.md` </details> <details> <summary>📚 Learning: 2025-08-09T11:03:33.164Z</summary>
Learnt from: amotl
PR: #236
File: docs/ingest/etl/index.md:22-23
Timestamp: 2025-08-09T11:03:33.164Z
Learning: In the CrateDB Guide documentation, MyST Markdown files can use{ref}
directives to reference labels defined in reStructuredText files using the RST syntax.. _label:
. This cross-format referencing between MyST and RST is supported by Sphinx.**Applied to files:** - `docs/integrate/mysql/index.md` - `docs/integrate/n8n/index.md` </details> <details> <summary>📚 Learning: 2025-08-10T17:59:43.468Z</summary>
Learnt from: amotl
PR: #241
File: docs/integrate/grafana/index.md:37-46
Timestamp: 2025-08-10T17:59:43.468Z
Learning: In mixed documentation projects using Sphinx, the:link-type: ref
directive in Markdown files can reference labels defined in reStructuredText files using the.. _label-name:
syntax, and vice versa.**Applied to files:** - `docs/integrate/mysql/index.md` - `docs/integrate/n8n/index.md` </details> <details> <summary>📚 Learning: 2025-08-06T02:11:46.794Z</summary>
Learnt from: amotl
PR: #222
File: docs/integrate/powerbi/index.md:16-23
Timestamp: 2025-08-06T02:11:46.794Z
Learning: Theproject:
role in MyST Markdown syntax like[](project:#powerbi-desktop)
and[](project:#powerbi-service)
is valid cross-reference syntax in the CrateDB Guide repository's MyST Markdown setup.**Applied to files:** - `docs/integrate/n8n/index.md` </details> <details> <summary>📚 Learning: 2025-06-06T08:46:34.552Z</summary>
Learnt from: amotl
PR: crate/cratedb-guide#0
File: :0-0
Timestamp: 2025-06-06T08:46:34.552Z
Learning: In MyST Markdown, the{rubric}
syntax is correct as employed by MyST for rubric directives.**Applied to files:** - `docs/integrate/n8n/index.md` </details> </details><details> <summary>🪛 markdownlint-cli2 (0.17.2)</summary> <details> <summary>docs/integrate/apache-airflow/index.md</summary> 68-68: Bare URL used (MD034, no-bare-urls) --- 74-74: Bare URL used (MD034, no-bare-urls) --- 89-89: Bare URL used (MD034, no-bare-urls) --- 95-95: Bare URL used (MD034, no-bare-urls) --- 102-102: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/apache-flink/index.md</summary> 160-160: Link and image reference definitions should be needed Unused link or image reference definition: "cratedb and apache superset" (MD053, link-image-reference-definitions) </details> <details> <summary>docs/integrate/apache-nifi/index.md</summary> 42-42: Reference links and images should use a label that is defined Missing link or image reference definition: "astronomer" (MD052, reference-links-images) </details> <details> <summary>docs/integrate/apache-superset/index.md</summary> 80-80: Bare URL used (MD034, no-bare-urls) --- 86-86: Bare URL used (MD034, no-bare-urls) --- 160-160: Link and image reference definitions should be needed Unused link or image reference definition: "cratedb and apache superset" (MD053, link-image-reference-definitions) </details> <details> <summary>docs/integrate/cluvio/index.md</summary> 34-34: Bare URL used (MD034, no-bare-urls) --- 49-49: Link and image reference definitions should be needed Unused link or image reference definition: "cratedb and cluvio" (MD053, link-image-reference-definitions) </details> <details> <summary>docs/integrate/dbeaver/index.md</summary> 64-64: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/debezium/index.md</summary> 30-30: Bare URL used (MD034, no-bare-urls) --- 36-36: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/django/index.md</summary> 40-40: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/explo/index.md</summary> 32-32: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/gradio/index.md</summary> 32-32: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/mysql/index.md</summary> 44-44: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/n8n/index.md</summary> 23-23: Bare URL used (MD034, no-bare-urls) --- 35-35: Link and image reference definitions should be needed Unused link or image reference definition: "cratedb and n8n" (MD053, link-image-reference-definitions) </details> <details> <summary>docs/integrate/node-red/index.md</summary> 62-62: Link and image reference definitions should be needed Unused link or image reference definition: "cratedb and power bi" (MD053, link-image-reference-definitions) </details> <details> <summary>docs/integrate/prometheus/index.md</summary> 58-58: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/sql-server/index.md</summary> 38-38: Bare URL used (MD034, no-bare-urls) --- 48-48: Link and image reference definitions should be needed Unused link or image reference definition: "microsoft sql documentation" (MD053, link-image-reference-definitions) </details> <details> <summary>docs/integrate/streamlit/index.md</summary> 33-33: Bare URL used (MD034, no-bare-urls) </details> <details> <summary>docs/integrate/tableau/index.md</summary> 27-27: Bare URL used (MD034, no-bare-urls) --- 37-37: Bare URL used (MD034, no-bare-urls) --- 44-44: Bare URL used (MD034, no-bare-urls) --- 65-65: Link and image reference definitions should be needed Unused link or image reference definition: "connecting to cratedb from tableau with jdbc" (MD053, link-image-reference-definitions) --- 67-67: Link and image reference definitions should be needed Unused link or image reference definition: "cratedb and tableau" (MD053, link-image-reference-definitions) --- 68-68: Link and image reference definitions should be needed Unused link or image reference definition: "cratedb tableau connector" (MD053, link-image-reference-definitions) </details> </details> <details> <summary>🪛 LanguageTool</summary> <details> <summary>docs/integrate/apache-hop/index.md</summary> [uncategorized] ~13-~13: If this is a compound adjective that modifies the following noun, use a hyphen. Context: ... ::: [Apache Hop] aims to be a modern, open source data integration platform that is easy ... (EN_COMPOUND_ADJECTIVE_INTERNAL) </details> <details> <summary>docs/integrate/datagrip/index.md</summary> [style] ~74-~74: Using many exclamation marks might seem excessive (in this case: 6 exclamation marks for a text that’s 2659 characters long) Context: ...5-0a53-41d7-905b-a71cc4a767e9){h=240px}  </details> </details> </details> <details> <summary>⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)</summary> * GitHub Check: Build docs </details> <details> <summary>🔇 Additional comments (9)</summary><blockquote> <details> <summary>docs/integrate/mysql/index.md (1)</summary> `21-27`: **Content restructuring reads well; cross-ref to RST label is correct** The dropdown usage and the `:link-type: ref` to `mysql-import-csv` correctly target the RST label `.. _mysql-import-csv:`. No changes needed. </details> <details> <summary>docs/integrate/debezium/index.md (2)</summary> `4-8`: **LGTM on layout changes** Right-floated logo, clearfix, and About section read cleanly. --- `27-41`: **Cards-based Learn section looks good** Card titles, links, and descriptions are clear and consistent with the new pattern. </details> <details> <summary>docs/integrate/django/index.md (1)</summary> `4-11`: **Good security and accessibility on external badge** Use of `rel="noopener noreferrer"`, `loading="lazy"`, and descriptive `alt` is spot on. </details> <details> <summary>docs/integrate/marquez/index.md (1)</summary> `35-39`: **Verified link target: `marquez-learn`** A `(marquez-learn)=` label is defined in `docs/integrate/marquez/learn.md:1`, so the existing ```rst :link: marquez-learn :link-type: ref
in
docs/integrate/marquez/index.md
is correct. No changes required.docs/integrate/datagrip/index.md (1)
58-66
: Connection URL guidance is correct for JDBCThe
jdbc:crate://<host>:5432/
form aligns with the CrateDB JDBC driver. No user:pass in the URL (JDBC expects separate credentials), which is correct.docs/integrate/apache-hop/index.md (1)
29-31
: Nice: descriptive alts and constrained heights on screenshotsGood accessibility and layout control.
docs/integrate/apache-superset/index.md (1)
7-12
: External badge hardened; looks goodAnchor uses rel="noopener noreferrer", image has alt and lazy loading. LGTM.
docs/integrate/apache-airflow/index.md (1)
56-57
: Clearfix present; keep after floated blockThe clearfix right after the floated content is correct. No changes needed.
a43e52e
to
b8b144e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
🔭 Outside diff range comments (1)
docs/integrate/datagrip/index.md (1)
51-63
: Clarify JDBC credential usage in DataGrip docsAppend the following note below the
jdbc:crate://<host>:5432/
example indocs/integrate/datagrip/index.md
(around line 63):Provide Username/Password via DataGrip’s connection fields.
If you need to include credentials in the URL, pass them as JDBC properties, for example:jdbc:crate://<host>:5432/?user=<user>&password=<password>
The
user:password@
pattern is not supported by JDBC drivers.
♻️ Duplicate comments (4)
docs/integrate/apache-nifi/index.md (1)
42-44
: Suppress markdownlint MD034 for Sphinx:link:
parameterThis mirrors earlier feedback on this file; wrap the
:link:
with MD034 disable/enable comments to quiet the false positive.:::{grid-item-card} Tutorial: Connect Apache NiFi and CrateDB +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/connecting-to-cratedb-from-apache-nifi/647 :link-type: url +<!-- markdownlint-enable MD034 --> How to connect from Apache NiFi to CrateDB and ingest data from NiFi into CrateDB.docs/integrate/meltano/index.md (1)
28-32
: Ephemeral branch in “Examples” link — pin to main/tag/SHA
The link targets a feature branch (amo/meltano) and will 404 when the branch disappears. Prefer main, a release tag, or a specific commit SHA.Suggested options:
- https://github.com/crate/cratedb-examples/tree/main/framework/singer-meltano
- https://github.com/crate/cratedb-examples/tree//framework/singer-meltano
- https://github.com/crate/cratedb-examples/tree//framework/singer-meltano
docs/integrate/estuary/index.md (1)
81-95
: markdownlint MD034 on 🔗 metadata — locally suppress
Same benign “bare URL” on 🔗. Disable MD034 around the card.-:::{grid-item-card} +<!-- markdownlint-disable MD034 --> +:::{grid-item-card} ... -::: +::: +<!-- markdownlint-enable MD034 -->docs/integrate/apache-airflow/index.md (1)
9-11
: Note on hot-linked images (acknowledged decision)External images are still hot-linked. Per prior discussion, this is acceptable for now; no action requested.
Also applies to: 39-40
🧹 Nitpick comments (23)
docs/integrate/n8n/index.md (1)
22-25
: Suppress markdownlint MD034 for Sphinx:link:
parameterThe
:link:
field is intentional MyST/Sphinx syntax and not a bare URL. Suppress MD034 locally to keep lint clean.:::{grid-item-card} n8n CrateDB integration +<!-- markdownlint-disable MD034 --> :link: https://n8n.io/integrations/cratedb/ :link-type: url +<!-- markdownlint-enable MD034 --> Create workflows with CrateDB integrations. :::docs/integrate/cluvio/index.md (1)
34-36
: Suppress markdownlint MD034 for Sphinx:link:
parameterThe
:link:
value is valid MyST/Sphinx usage; silence the linter for this block.:::{grid-item-card} Data Analysis with Cluvio and CrateDB +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/data-analysis-with-cluvio-and-cratedb/1571 :link-type: url +<!-- markdownlint-enable MD034 --> Explore how to leverage the power of Cluvio, a modern data analysis platformdocs/integrate/kestra/index.md (1)
40-42
: Suppress markdownlint MD034 for Sphinx:link:
parameterSilence MD034 around the
:link:
line; this is valid MyST usage.:::{grid-item-card} Tutorial: Data pipeline to CrateDB +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/setting-up-data-pipelines-with-cratedb-and-kestra-io/1400 :link-type: url +<!-- markdownlint-enable MD034 --> In this tutorial, we will show you how CrateDB integrates with Kestra using thedocs/integrate/apache-kafka/index.md (1)
49-51
: Suppress markdownlint MD034 for Sphinx:link:
parametersBoth external cards use valid MyST
:link:
values. Suppress MD034 locally.:::{grid-item-card} Tutorial: Connect Debezium, Kafka, and CrateDB +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/replicating-data-to-cratedb-with-debezium-and-kafka/1388 :link-type: url +<!-- markdownlint-enable MD034 --> Replicating data to CrateDB with Debezium and Kafka. ::::::{grid-item-card} Source: Executable Stack (Java) +<!-- markdownlint-disable MD034 --> :link: https://github.com/crate/cratedb-examples/tree/main/framework/flink/kafka-jdbcsink-java :link-type: url +<!-- markdownlint-enable MD034 --> An executable stack with Apache Kafka, Apache Flink, and CrateDB. Uses Java. :::Also applies to: 55-57
docs/integrate/gradio/index.md (1)
41-43
: Suppress markdownlint MD034 for Sphinx:link:
parameterValid MyST syntax; silence MD034 for this card.
:::{grid-item-card} Example +<!-- markdownlint-disable MD034 --> :link: https://github.com/crate/cratedb-examples/tree/main/framework/gradio :link-type: url +<!-- markdownlint-enable MD034 --> Example program using Gradio with CrateDB.docs/integrate/node-red/index.md (2)
23-26
: Replace inline style and non-standard width attr; use utility class and lazy loadingPrefer repo-wide
.float-right
utility over inline style; also switch{w=}
to{width=}
and add lazy-loading.-```{div} -:style: "float: right; margin: 0.5em" -[{w=180px}][FlowFuse] -``` +```{div} .float-right +[{width=180px loading=lazy}][FlowFuse] +```
60-62
: Suppress markdownlint MD034 for Sphinx:link:
parametersThe
:link:
lines are valid MyST usage. Silence MD034 around them.:::{grid-item-card} Tutorial: Ingest MQTT +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/ingesting-mqtt-messages-into-cratedb-using-node-red/803 :link-type: url +<!-- markdownlint-enable MD034 --> Ingesting MQTT messages into CrateDB using Node-RED.:::{grid-item-card} Tutorial: Recurrent queries +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/automating-recurrent-cratedb-queries/788 :link-type: url +<!-- markdownlint-enable MD034 --> Automating recurrent CrateDB queries using Node-RED.Also applies to: 66-68
docs/integrate/rill/index.md (1)
58-60
: Suppress markdownlint MD034 for Sphinx:link:
parameterSilence the MD034 false positive around the external
:link:
.:::{grid-item-card} Rill and CrateDB +<!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/introducing-rill-and-bi-as-code-with-cratedb-cloud/1718 :link-type: url +<!-- markdownlint-enable MD034 --> Introducing Rill and BI as Code with CrateDB Cloud.docs/integrate/meltano/index.md (2)
4-8
: Logos: add lazy-loading and use consistent sizing (height)
Use height-based sizing and lazy-loading to match the new convention across the docs and improve LCP.-```{div} .float-right -[{w=180px}][Singer] - -[{w=180px}][Meltano] +```{div} .float-right +[{height=60px loading=lazy}][Singer] + +[{height=60px loading=lazy}][Meltano]--- `26-47`: **markdownlint MD034 on :link: metadata — locally suppress** The “bare URL” warnings on :link: fields are benign; suppress around the grid to keep lints clean. ```diff -::::{grid} +<!-- markdownlint-disable MD034 --> +::::{grid} ... -:::: +:::: +<!-- markdownlint-enable MD034 -->
docs/integrate/estuary/index.md (2)
35-35
: Image attributes: prefer height and enable lazy-loading
Unify with the rest of the PR and improve perf.-{h=200px} +{height=200px loading=lazy}
42-47
: Minor: normalize reference label casing
The inline reference uses [Estuary managed] while the definition is [Estuary Managed]. Align casing to avoid confusion (even if case-insensitive).-Estuary offers its solution as a [managed product][Estuary managed], available +Estuary offers its solution as a [managed product][Estuary Managed], availabledocs/integrate/grafana/index.md (1)
47-50
: Images: add lazy-loading and use height attribute for consistency
Pin images already point to a commit SHA (good). Add lazy-loading and use height consistently.-{h=200px} - -{h=200px} +{height=200px loading=lazy} + +{height=200px loading=lazy}docs/integrate/django/index.md (1)
39-43
: Add :link-alt and optionally suppress MD034 around card
Improves accessibility; suppresses benign linter noise on 🔗 metadata.-:::{grid-item-card} CrateDB Django connector -:link: https://github.com/crate/cratedb-django +:::{grid-item-card} CrateDB Django connector +:link: https://github.com/crate/cratedb-django +:link-alt: "CrateDB Django connector repository" :link-type: url Connector backend to use CrateDB as a database in Django ORM. :::Optional MD034 suppression:
-::::{grid} 2 +<!-- markdownlint-disable MD034 --> +::::{grid} 2 ... -:::: +:::: +<!-- markdownlint-enable MD034 -->docs/integrate/streamlit/index.md (1)
32-36
: markdownlint MD034 on 🔗 metadata — locally suppress
Silence benign “bare URL” warnings for the grid card.-:::{grid-item-card} Example -:link: https://github.com/crate/cratedb-examples/tree/main/framework/streamlit +<!-- markdownlint-disable MD034 --> +:::{grid-item-card} Example +:link: https://github.com/crate/cratedb-examples/tree/main/framework/streamlit :link-type: url Example program using Streamlit with CrateDB. ::: +<!-- markdownlint-enable MD034 -->docs/integrate/marquez/index.md (1)
7-9
: Use a lighter logo asset (SVG) instead of the large social-card JPG
Reduces page weight and improves CLS/LCP while keeping lazy-loading.-```{div} .float-right -[{height=60px loading=lazy}][Marquez] +```{div} .float-right +[{height=60px loading=lazy}][Marquez]</blockquote></details> <details> <summary>docs/integrate/apache-superset/index.md (3)</summary><blockquote> `21-22`: **Images: add lazy-loading and use height attribute** Align with repo-wide convention and improve performance. ```diff -{h=200px} -{h=200px} +{height=200px loading=lazy} +{height=200px loading=lazy}
110-110
: Add lazy-loading to YouTube iframes
Helps defer resource loading and speed up first paint.-<iframe width="240" src="https://www.youtube-nocookie.com/embed/mAIH3hUoxEE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/mAIH3hUoxEE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>-<iframe width="240" src="https://www.youtube-nocookie.com/embed/21KXInqrdeg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/21KXInqrdeg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>Also applies to: 136-136
77-91
: markdownlint MD034 on 🔗 metadata — locally suppress
Disable MD034 around the grid with external blog links to avoid benign “bare URL” noise.-::::{grid} +<!-- markdownlint-disable MD034 --> +::::{grid} ... -:::: +:::: +<!-- markdownlint-enable MD034 -->docs/integrate/datagrip/index.md (2)
9-9
: Logo sizing: prefer height and keep lazy-loading
For consistency with other pages, switch to height-based sizing.-[{width=120px loading=lazy}][DataGrip] +[{height=60px loading=lazy}][DataGrip]
60-63
: Code fence lacks language — add one
Satisfy MD040 and improve rendering.-``` +j```text jdbc:crate://<host>:5432/ -``` +```docs/integrate/prometheus/index.md (1)
15-16
: Grammar tweak: drop the article “a”Use “as long-term storage” rather than “as a long-term storage”.
-[CrateDB] can be used as a long-term storage for Prometheus metrics. +[CrateDB] can be used as long-term storage for Prometheus metrics.docs/integrate/apache-airflow/index.md (1)
30-31
: Grammar polish“Pipeline parameterization uses the powerful Jinja templating engine.”
-Pipeline parameterization is using the powerful Jinja templating engine. +Pipeline parameterization uses the powerful Jinja templating engine.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (51)
docs/_include/links.md
(2 hunks)docs/_static/css/custom.css
(3 hunks)docs/ingest/cdc/index.md
(2 hunks)docs/ingest/etl/index.md
(3 hunks)docs/integrate/apache-airflow/index.md
(2 hunks)docs/integrate/apache-flink/index.md
(2 hunks)docs/integrate/apache-hop/index.md
(2 hunks)docs/integrate/apache-iceberg/index.md
(1 hunks)docs/integrate/apache-kafka/index.md
(2 hunks)docs/integrate/apache-nifi/index.md
(1 hunks)docs/integrate/apache-superset/index.md
(4 hunks)docs/integrate/aws-dms/index.md
(2 hunks)docs/integrate/aws-dynamodb/index.md
(1 hunks)docs/integrate/aws-kinesis/index.md
(2 hunks)docs/integrate/aws-lambda/index.md
(2 hunks)docs/integrate/azure-functions/index.md
(2 hunks)docs/integrate/cluvio/index.md
(1 hunks)docs/integrate/datagrip/index.md
(6 hunks)docs/integrate/dbeaver/index.md
(4 hunks)docs/integrate/dbt/index.md
(4 hunks)docs/integrate/debezium/index.md
(1 hunks)docs/integrate/django/index.md
(2 hunks)docs/integrate/estuary/index.md
(4 hunks)docs/integrate/explo/index.md
(1 hunks)docs/integrate/gradio/index.md
(1 hunks)docs/integrate/grafana/index.md
(2 hunks)docs/integrate/influxdb/index.md
(2 hunks)docs/integrate/kestra/index.md
(2 hunks)docs/integrate/langchain/index.md
(2 hunks)docs/integrate/llamaindex/index.md
(2 hunks)docs/integrate/marquez/data_ingestion.py
(1 hunks)docs/integrate/marquez/index.md
(2 hunks)docs/integrate/marquez/learn.md
(1 hunks)docs/integrate/meltano/index.md
(1 hunks)docs/integrate/metabase/index.md
(1 hunks)docs/integrate/mongodb/index.md
(2 hunks)docs/integrate/mysql/index.md
(1 hunks)docs/integrate/n8n/index.md
(1 hunks)docs/integrate/node-red/index.md
(3 hunks)docs/integrate/plotly/index.md
(2 hunks)docs/integrate/powerbi/index.md
(2 hunks)docs/integrate/powerbi/service.rst
(9 hunks)docs/integrate/prometheus/index.md
(2 hunks)docs/integrate/pyviz/index.md
(2 hunks)docs/integrate/rill/index.md
(2 hunks)docs/integrate/risingwave/index.md
(1 hunks)docs/integrate/sql-server/index.md
(2 hunks)docs/integrate/streamlit/index.md
(1 hunks)docs/integrate/streamsets/index.md
(2 hunks)docs/integrate/tableau/index.md
(1 hunks)docs/integrate/telegraf/index.md
(2 hunks)
✅ Files skipped from review due to trivial changes (2)
- docs/integrate/langchain/index.md
- docs/integrate/marquez/learn.md
🚧 Files skipped from review as they are similar to previous changes (31)
- docs/integrate/apache-iceberg/index.md
- docs/integrate/azure-functions/index.md
- docs/integrate/streamsets/index.md
- docs/ingest/etl/index.md
- docs/_include/links.md
- docs/integrate/sql-server/index.md
- docs/integrate/aws-lambda/index.md
- docs/integrate/dbeaver/index.md
- docs/integrate/llamaindex/index.md
- docs/integrate/influxdb/index.md
- docs/integrate/explo/index.md
- docs/integrate/aws-kinesis/index.md
- docs/integrate/plotly/index.md
- docs/integrate/powerbi/service.rst
- docs/integrate/marquez/data_ingestion.py
- docs/_static/css/custom.css
- docs/integrate/aws-dynamodb/index.md
- docs/ingest/cdc/index.md
- docs/integrate/mysql/index.md
- docs/integrate/debezium/index.md
- docs/integrate/apache-hop/index.md
- docs/integrate/powerbi/index.md
- docs/integrate/metabase/index.md
- docs/integrate/mongodb/index.md
- docs/integrate/dbt/index.md
- docs/integrate/pyviz/index.md
- docs/integrate/apache-flink/index.md
- docs/integrate/aws-dms/index.md
- docs/integrate/tableau/index.md
- docs/integrate/risingwave/index.md
- docs/integrate/telegraf/index.md
🧰 Additional context used
🧠 Learnings (14)
📚 Learning: 2025-08-09T16:19:43.947Z
Learnt from: amotl
PR: crate/cratedb-guide#238
File: docs/integrate/azure-functions/learn.rst:1-1
Timestamp: 2025-08-09T16:19:43.947Z
Learning: In the CrateDB Guide documentation, main integration anchors (e.g., `azure-functions`) are intentionally placed in the `index.md` files of their respective integration folders, while detailed tutorials use the `-learn` suffix (e.g., `azure-functions-learn`) in their `learn.rst` or `learn.md` files. This is a deliberate architectural pattern for the documentation restructuring.
Applied to files:
docs/integrate/marquez/index.md
docs/integrate/apache-kafka/index.md
docs/integrate/estuary/index.md
docs/integrate/grafana/index.md
📚 Learning: 2025-08-05T07:14:57.416Z
Learnt from: hammerhead
PR: crate/cratedb-guide#221
File: docs/connect/configure.md:58-66
Timestamp: 2025-08-05T07:14:57.416Z
Learning: In CrateDB connection strings, the user:password@ syntax is valid for HTTP Basic authentication on port 4200, but PostgreSQL JDBC drivers do not support this format and require credentials as query parameters (?user=<user>&password=<password>) instead.
Applied to files:
docs/integrate/datagrip/index.md
📚 Learning: 2025-06-05T14:29:15.512Z
Learnt from: amotl
PR: crate/cratedb-guide#207
File: docs/integrate/etl/iceberg-risingwave.md:205-207
Timestamp: 2025-06-05T14:29:15.512Z
Learning: The `records.Database("crate://", echo=True)` connection string for CrateDB works with defaults: localhost as host, "crate" as user, and blank password. This is valid and functional code in the records library.
Applied to files:
docs/integrate/datagrip/index.md
📚 Learning: 2025-08-09T11:03:33.164Z
Learnt from: amotl
PR: crate/cratedb-guide#236
File: docs/ingest/etl/index.md:22-23
Timestamp: 2025-08-09T11:03:33.164Z
Learning: In the CrateDB Guide documentation, MyST Markdown files can use `{ref}` directives to reference labels defined in reStructuredText files using the RST syntax `.. _label:`. This cross-format referencing between MyST and RST is supported by Sphinx.
Applied to files:
docs/integrate/grafana/index.md
docs/integrate/n8n/index.md
📚 Learning: 2025-08-10T18:17:49.350Z
Learnt from: amotl
PR: crate/cratedb-guide#241
File: docs/integrate/mysql/index.md:51-55
Timestamp: 2025-08-10T18:17:49.350Z
Learning: In the CrateDB Guide documentation, the file `docs/integrate/mysql/import-csv.rst` contains the reStructuredText label `.. _mysql-import-csv:` which can be referenced from MyST Markdown files using `:link: mysql-import-csv` with `:link-type: ref`. This is another example of cross-format referencing between MyST and RST files working correctly in Sphinx.
Applied to files:
docs/integrate/grafana/index.md
docs/integrate/n8n/index.md
📚 Learning: 2025-08-10T17:09:32.583Z
Learnt from: amotl
PR: crate/cratedb-guide#241
File: docs/integrate/azure-functions/index.md:31-36
Timestamp: 2025-08-10T17:09:32.583Z
Learning: In the CrateDB Guide documentation, RST files (`.rst`) use reStructuredText anchor syntax `.. _anchor-name:` while Markdown files (`.md`) use MyST syntax `(anchor-name)=`. Cross-references between MyST Markdown and reStructuredText files work correctly - a MyST `:link:` directive can reference an RST anchor and vice versa.
Applied to files:
docs/integrate/grafana/index.md
docs/integrate/n8n/index.md
📚 Learning: 2025-08-09T21:40:46.125Z
Learnt from: amotl
PR: crate/cratedb-guide#238
File: docs/integrate/streamsets/index.md:18-21
Timestamp: 2025-08-09T21:40:46.125Z
Learning: In the CrateDB Guide documentation, reStructuredText files (`.rst`) use the RST label syntax `.. _label:` while MyST Markdown files (`.md`) use the syntax `(label)=`. Both formats are used throughout the repository and labels can be cross-referenced between them.
Applied to files:
docs/integrate/grafana/index.md
docs/integrate/n8n/index.md
📚 Learning: 2025-08-10T17:59:43.468Z
Learnt from: amotl
PR: crate/cratedb-guide#241
File: docs/integrate/grafana/index.md:37-46
Timestamp: 2025-08-10T17:59:43.468Z
Learning: When verifying cross-references in Sphinx-based documentation, search for both Markdown references (e.g., `(reference-name)=`) and reStructuredText labels (e.g., `.. _reference-name:`) across both .md and .rst files, as Sphinx supports cross-referencing between different markup formats.
Applied to files:
docs/integrate/grafana/index.md
📚 Learning: 2025-08-09T11:00:03.537Z
Learnt from: amotl
PR: crate/cratedb-guide#236
File: docs/index.md:312-316
Timestamp: 2025-08-09T11:00:03.537Z
Learning: In the CrateDB Guide documentation, locally stale references (such as `(reference-architectures)=`, `(domain)=`, and similar anchor labels) should be retained even when they appear unused within the repository, as external projects might still reference them. This ensures backward compatibility for external documentation and projects.
Applied to files:
docs/integrate/grafana/index.md
📚 Learning: 2025-05-18T12:50:38.681Z
Learnt from: amotl
PR: crate/cratedb-guide#204
File: docs/integrate/mcp/community.md:8-20
Timestamp: 2025-05-18T12:50:38.681Z
Learning: In the CrateDB guide repository, references with the `ctk:` prefix (like `ctk:query/mcp/landscape`) are intersphinx references that link to resources in the cratedb-toolkit repository (https://github.com/crate/cratedb-toolkit/tree/main/doc), which are rendered at https://cratedb-toolkit.readthedocs.io/. These are valid cross-references between separate Sphinx documentation sets, not local file references.
Applied to files:
docs/integrate/grafana/index.md
📚 Learning: 2025-08-10T20:30:16.483Z
Learnt from: amotl
PR: crate/cratedb-guide#241
File: docs/integrate/streamsets/index.md:36-40
Timestamp: 2025-08-10T20:30:16.483Z
Learning: In reStructuredText (.rst) files, reference labels are defined using the syntax `.. _label-name:`, while in Markdown (.md) files within Sphinx documentation, labels use the syntax `(label-name)=`. When verifying cross-references in documentation, check the file extension to determine the correct label syntax to search for.
Applied to files:
docs/integrate/grafana/index.md
📚 Learning: 2025-08-06T02:11:46.794Z
Learnt from: amotl
PR: crate/cratedb-guide#222
File: docs/integrate/powerbi/index.md:16-23
Timestamp: 2025-08-06T02:11:46.794Z
Learning: The `project:` role in MyST Markdown syntax like `[](project:#powerbi-desktop)` and `[](project:#powerbi-service)` is valid cross-reference syntax in the CrateDB Guide repository's MyST Markdown setup.
Applied to files:
docs/integrate/n8n/index.md
📚 Learning: 2025-06-06T08:46:34.552Z
Learnt from: amotl
PR: crate/cratedb-guide#0
File: :0-0
Timestamp: 2025-06-06T08:46:34.552Z
Learning: In MyST Markdown, the `{rubric}` syntax is correct as employed by MyST for rubric directives.
Applied to files:
docs/integrate/n8n/index.md
📚 Learning: 2025-08-10T17:59:43.468Z
Learnt from: amotl
PR: crate/cratedb-guide#241
File: docs/integrate/grafana/index.md:37-46
Timestamp: 2025-08-10T17:59:43.468Z
Learning: In mixed documentation projects using Sphinx, the `:link-type: ref` directive in Markdown files can reference labels defined in reStructuredText files using the `.. _label-name:` syntax, and vice versa.
Applied to files:
docs/integrate/n8n/index.md
🪛 markdownlint-cli2 (0.17.2)
docs/integrate/apache-airflow/index.md
68-68: Bare URL used
(MD034, no-bare-urls)
74-74: Bare URL used
(MD034, no-bare-urls)
89-89: Bare URL used
(MD034, no-bare-urls)
95-95: Bare URL used
(MD034, no-bare-urls)
102-102: Bare URL used
(MD034, no-bare-urls)
docs/integrate/apache-kafka/index.md
49-49: Bare URL used
(MD034, no-bare-urls)
55-55: Bare URL used
(MD034, no-bare-urls)
docs/integrate/apache-nifi/index.md
42-42: Bare URL used
(MD034, no-bare-urls)
55-55: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb and apache nifi"
(MD053, link-image-reference-definitions)
docs/integrate/apache-superset/index.md
80-80: Bare URL used
(MD034, no-bare-urls)
86-86: Bare URL used
(MD034, no-bare-urls)
160-160: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb and apache superset"
(MD053, link-image-reference-definitions)
docs/integrate/cluvio/index.md
34-34: Bare URL used
(MD034, no-bare-urls)
49-49: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb and cluvio"
(MD053, link-image-reference-definitions)
docs/integrate/datagrip/index.md
36-36: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
docs/integrate/django/index.md
40-40: Bare URL used
(MD034, no-bare-urls)
docs/integrate/estuary/index.md
82-82: Bare URL used
(MD034, no-bare-urls)
docs/integrate/gradio/index.md
41-41: Bare URL used
(MD034, no-bare-urls)
docs/integrate/grafana/index.md
40-40: Bare URL used
(MD034, no-bare-urls)
54-54: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb and kestra"
(MD053, link-image-reference-definitions)
docs/integrate/kestra/index.md
28-28: Images should have alternate text (alt text)
(MD045, no-alt-text)
29-29: Images should have alternate text (alt text)
(MD045, no-alt-text)
30-30: Images should have alternate text (alt text)
(MD045, no-alt-text)
40-40: Bare URL used
(MD034, no-bare-urls)
docs/integrate/meltano/index.md
29-29: Bare URL used
(MD034, no-bare-urls)
35-35: Bare URL used
(MD034, no-bare-urls)
41-41: Bare URL used
(MD034, no-bare-urls)
docs/integrate/n8n/index.md
23-23: Bare URL used
(MD034, no-bare-urls)
35-35: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb and n8n"
(MD053, link-image-reference-definitions)
docs/integrate/node-red/index.md
60-60: Bare URL used
(MD034, no-bare-urls)
66-66: Bare URL used
(MD034, no-bare-urls)
docs/integrate/prometheus/index.md
62-62: Link and image reference definitions should be needed
Unused link or image reference definition: "cratedb and power bi"
(MD053, link-image-reference-definitions)
docs/integrate/rill/index.md
58-58: Bare URL used
(MD034, no-bare-urls)
docs/integrate/streamlit/index.md
33-33: Bare URL used
(MD034, no-bare-urls)
🪛 LanguageTool
docs/integrate/datagrip/index.md
[style] ~74-~74: Using many exclamation marks might seem excessive (in this case: 6 exclamation marks for a text that’s 2782 characters long)
Context: ...71cc4a767e9){height=240px loading=lazy} 
🔇 Additional comments (8)
docs/integrate/cluvio/index.md (1)
4-8
: Logo block looks goodConsistent float, size, and lazy-loading. Matches patterns elsewhere.
docs/integrate/apache-kafka/index.md (1)
7-8
: Good hardening on external badge linkUse of rel="noopener noreferrer" and alt text looks correct.
docs/integrate/gradio/index.md (1)
7-8
: Security and accessibility improvements look solidtarget="_blank" is paired with rel, and the badge has alt text.
docs/integrate/grafana/index.md (1)
34-44
: Cross-ref to RST label is correct
The card uses :link-type: ref to an RST label; this is valid in Sphinx mixed markup projects.docs/integrate/django/index.md (1)
7-9
: Good hardening and a11y on external badge
rel="noopener noreferrer", alt text, and lazy-loading are correctly applied.docs/integrate/marquez/index.md (1)
35-39
: Reference “marquez-learn” is correctly defined
The:link: marquez-learn
in docs/integrate/marquez/index.md resolves to a label defined in Markdown.• docs/integrate/marquez/learn.md:1 defines
(marquez-learn)=
• No duplicate or conflicting definitions were founddocs/integrate/apache-superset/index.md (1)
7-12
: Top block: solid improvements (logo sizing, badge hardening)
Consistent height sizing, lazy-loading, alt text, and rel="noopener noreferrer" are correctly applied.docs/integrate/apache-airflow/index.md (1)
68-69
: markdownlint MD034 false positives for 🔗 optionsThe “Bare URL” warnings are against directive options, not Markdown body text. Safe to ignore or suppress for these lines.
If desired, convert to reference-style links to appease the linter:
-:link: https://community.cratedb.com/t/automating-the-import-of-parquet-files-with-apache-airflow/1247 +:link: {parquet_tutorial}And define at the bottom:
[parquet_tutorial]: https://community.cratedb.com/t/automating-the-import-of-parquet-files-with-apache-airflow/1247
Also applies to: 74-76, 89-91, 95-97, 102-104
```{div} | ||
:style: "float: right" | ||
[{w=180px}](https://www.astronomer.io/) | ||
[{w=180px}](https://www.astronomer.io/) | ||
``` | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Replace inline float style with shared CSS class; fix image attrs
Align with the PR’s “no inline styles” direction and add lazy loading. Also prefer width over non-standard w.
-```{div}
-:style: "float: right"
-[{w=180px}](https://www.astronomer.io/)
-```
+```{div} .float-right
+[{width=180px loading=lazy}](https://www.astronomer.io/)
+```
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
```{div} | |
:style: "float: right" | |
[{w=180px}](https://www.astronomer.io/) | |
[{w=180px}](https://www.astronomer.io/) | |
``` |
🤖 Prompt for AI Agents
In docs/integrate/apache-airflow/index.md around lines 37 to 41, replace the
inline style attribute :style: "float: right" on the div with a shared CSS class
.float-right to avoid inline styles. Also, update the image attributes by
replacing the non-standard {w=180px} with the standard {width=180px} and add
loading=lazy for better performance. Adjust the markdown accordingly to reflect
these changes.
{height=120px loading=lazy} | ||
{height=120px loading=lazy} | ||
{height=120px loading=lazy} | ||
::: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Add descriptive alt text to images for accessibility
Images lack alt text (MD045). Provide concise, meaningful alt text.
-{height=120px loading=lazy}
-{height=120px loading=lazy}
-{height=120px loading=lazy}
+{height=120px loading=lazy}
+{height=120px loading=lazy}
+{height=120px loading=lazy}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
{height=120px loading=lazy} | |
{height=120px loading=lazy} | |
{height=120px loading=lazy} | |
::: | |
{height=120px loading=lazy} | |
{height=120px loading=lazy} | |
{height=120px loading=lazy} | |
::: |
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
28-28: Images should have alternate text (alt text)
(MD045, no-alt-text)
29-29: Images should have alternate text (alt text)
(MD045, no-alt-text)
30-30: Images should have alternate text (alt text)
(MD045, no-alt-text)
🤖 Prompt for AI Agents
In docs/integrate/kestra/index.md around lines 28 to 31, the images lack alt
text which affects accessibility. Add concise and meaningful alt text
descriptions to each image tag to improve accessibility and comply with MD045
markdown linting rules.
```{div} .float-right | ||
[{height=60px loading=lazy}][Prometheus] | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Verify CSS class availability and inclusion
The new .float-right usage depends on custom CSS being loaded. Ensure docs/conf.py includes docs/_static/css/custom.css and that .float-right is defined.
Run to verify:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Find Sphinx config(s)
fd -a '^conf\.py$' docs | while read -r f; do
echo "==> $f"
echo "Checking sphinx_design extension..."
rg -n "sphinx_design" "$f" || echo "MISSING: sphinx_design in $f"
echo "Checking custom CSS inclusion..."
rg -n 'html_css_files\s*=.*custom\.css' "$f" || echo "MISSING: custom.css in $f"
done
# Confirm the CSS class exists
rg -n '^\s*\.float-right\b' docs/_static/css/custom.css || echo "MISSING: .float-right in docs/_static/css/custom.css"
Length of output: 753
Add sphinx_design
extension and include custom CSS in docs/conf.py
The .float-right
rule is defined in docs/_static/css/custom.css
, but your Sphinx config isn’t loading it (and isn’t enabling the {div}
directive from sphinx_design
). Please update docs/conf.py:
• Under your existing extensions list, add "sphinx_design"
.
• Ensure html_static_path = ["_static"]
is set, then add or extend:
html_css_files = [
"css/custom.css",
]
Example diff:
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -XX,7 +XX,8 @@ extensions = [
"sphinx.ext.autodoc",
"sphinx.ext.viewcode",
-]
+ "sphinx_design",
+]
html_static_path = ["_static"]
@@ -YY,6 +YY,9 @@ html_theme = "sphinx_rtd_theme"
# Add any CSS files (relative to the static path) here.
+html_css_files = [
+ "css/custom.css",
+]
This will load your custom stylesheet (with .float-right
) and enable the Design directives used in your Markdown.
🤖 Prompt for AI Agents
In docs/conf.py around the initial configuration section, add "sphinx_design" to
the extensions list to enable the {div} directive, ensure html_static_path
includes "_static", and add or extend the html_css_files list to include
"css/custom.css" so that the .float-right CSS rule is properly loaded and
applied in the documentation.
{h=200px} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix non-standard image attribute key
MyST/Sphinx recognizes height/width, not h/w shorthand. Use height=200px.
-{h=200px}
+{height=200px}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
{h=200px} | |
{height=200px} |
🤖 Prompt for AI Agents
In docs/integrate/prometheus/index.md around lines 35 to 36, the image uses a
non-standard attribute key 'h=200px' which is not recognized by MyST/Sphinx.
Replace 'h=200px' with the standard attribute 'height=200px' to ensure proper
rendering of the image height.
::::{info-card} | ||
|
||
:::{grid-item} | ||
:columns: 8 | ||
|
||
{material-outlined}`manage_history;2em` **CrateDB as Prometheus Long-Term Storage** | ||
|
||
Learn how to start Prometheus, CrateDB, and the CrateDB Prometheus Adapter with | ||
Docker Compose, and how to configure Prometheus to use CrateDB as remote storage. | ||
|
||
This webinar accompanies the "Storing long-term metrics with Prometheus in CrateDB" | ||
tutorial. | ||
|
||
[Prometheus with CrateDB: Long-Term Metrics Storage] | ||
::: | ||
|
||
:::{grid-item} | ||
:columns: 4 | ||
|
||
<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/EfIlRXVyfZM?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> | ||
::: | ||
|
||
:::: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Potential build issue: non-standard directive
info-card
andgrid-item
use outside grid.
It is true that info-card
is a non-standard directive, see Info Card. However, it actually wraps a grid, so using grid-item
members is perfectly fine and intended.
/cc @coderabbitai
{h=200px} | ||
-p-3200.webp){h=200px} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Use standard height
attribute and enable lazy-loading
Replace non-standard {h=}
with {height=}
and add loading=lazy
for perf.
-{h=200px}
--p-3200.webp){h=200px}
+{height=200px loading=lazy}
+-p-3200.webp){height=200px loading=lazy}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
{h=200px} | |
-p-3200.webp){h=200px} | |
{height=200px loading=lazy} | |
-p-3200.webp){height=200px loading=lazy} |
🤖 Prompt for AI Agents
In docs/integrate/rill/index.md around lines 47 to 48, the image tags use a
non-standard `{h=}` attribute for height and lack lazy-loading. Replace
`{h=200px}` with the standard `{height=200px}` attribute and add `loading=lazy`
to each image tag to improve performance by enabling lazy loading.
::::{info-card} | ||
|
||
:::{grid-item} | ||
:columns: 8 | ||
|
||
{material-outlined}`manage_history;2em` **CrateDB as Prometheus Long-Term Storage** | ||
|
||
Learn how to start Prometheus, CrateDB, and the CrateDB Prometheus Adapter with | ||
Docker Compose, and how to configure Prometheus to use CrateDB as remote storage. | ||
|
||
This webinar accompanies the "Storing long-term metrics with Prometheus in CrateDB" | ||
tutorial. | ||
|
||
[Prometheus with CrateDB: Long-Term Metrics Storage] | ||
::: | ||
|
||
:::{grid-item} | ||
:columns: 4 | ||
|
||
<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/EfIlRXVyfZM?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> | ||
::: | ||
|
||
:::: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Potential build issue: non-standard directive
info-card
andgrid-item
use outside grid.
It is true that info-card
is a non-standard directive, see Info Card. However, it actually wraps a grid, so using grid-item
members is perfectly fine and intended.
/cc @coderabbitai
7264bf9
to
176cc1e
Compare
- Improve layout on each page in `docs/integrate` - Use cards instead of regular HTML anchors for more prominent guidance - Custom css file instead of included html - Naming things
b8b144e
to
3d38d63
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 27
🔭 Outside diff range comments (8)
docs/integrate/datagrip/index.md (1)
58-63
: Fix JDBC URL port: Crate JDBC uses 4200 (HTTP), not 5432 (PostgreSQL wire).You’re explicitly configuring the Crate JDBC driver (
io.crate.client.jdbc.CrateDriver
), which connects over the HTTP interface (default 4200). Port 5432 is for the PostgreSQL wire protocol and would be used with a PostgreSQL driver, not withCrateDriver
.Apply this diff:
-jdbc:crate://<host>:5432/ +jdbc:crate://<host>:4200/Optional: consider adding a second example showing multiple hosts, e.g.
jdbc:crate://node1:4200,node2:4200/
.docs/integrate/estuary/index.md (1)
19-41
: Fix invalid image attribute: use “height” instead of “h”MyST/Sphinx expects “height” (and/or “width”). “h=200px” is not recognized and may be ignored.
Apply this diff:
-{h=200px} +{height=200px}docs/integrate/powerbi/desktop.rst (3)
41-45
: Update ODBC download link and avoid hardcoding a specific, outdated driver filenameThe “downloads section” URL points to versions.old, which is misleading for “latest version.” Also, hardcoding a specific archive version is brittle.
Recommend:
- Point to the current “versions/msi” path.
- Generalize the filename guidance.
Apply this diff:
- To install the PostgreSQL ODBC driver on Windows, head to the `downloads - section`_ for MSI installers and download the latest version corresponding to - your architecture. For example, if you are using 64-bit Windows, at the time - of writing the correct installer would be ``psqlodbc_12_02_0000-x64.zip``. + To install the PostgreSQL ODBC driver on Windows, head to the `downloads + section`_ for MSI installers and download the latest version corresponding to + your architecture (e.g., a 64-bit package for 64-bit Power BI Desktop).-.. _downloads section: https://www.postgresql.org/ftp/odbc/versions.old/msi/ +.. _downloads section: https://www.postgresql.org/ftp/odbc/versions/msi/Also applies to: 191-191
74-80
: Fix COPY statement: missing closing quote and prefer fully qualified table nameThere’s a missing closing quote on the FROM URI. Also recommend qualifying the table with schema for clarity.
Apply this diff:
- COPY population_data - FROM 'file:///path/to/population_data_*.json.gz + COPY doc.population_data + FROM 'file:///path/to/population_data_*.json.gz' WITH (compression='gzip') RETURN SUMMARY;
123-134
: Include “Database” in DSN parametersPostgreSQL ODBC typically requires a Database value. For CrateDB, “crate” is a sensible default. Including it reduces connection issues.
Apply this diff to add the Database row:
+---------------+--------------------------------------------+ | **Parameter** | **Value** | +===============+============================================+ | Data Source | ``CrateDB`` | +---------------+--------------------------------------------+ | Server | The URL or IP of your CrateDB server. | +---------------+--------------------------------------------+ +| Database | ``crate`` | ++---------------+--------------------------------------------+ | User Name | The CrateDB user you wish to connect with. | +---------------+--------------------------------------------+ | Port | ``5432`` | +---------------+--------------------------------------------+docs/integrate/aws-kinesis/index.md (1)
1-77
: Replace hard-coded ARNs and credentials with placeholders
We scanned the entire docs/ directory for embedded AWS credentials, literal ARNs, and CrateDB URLs with user:pass, and found multiple occurrences. To avoid accidental leaks and keep examples generic, replace all concrete values with placeholders.• docs/integrate/aws-kinesis/index.md
– Line 50: table=arn:aws:kinesis:eu-central-1:831394476016:stream/testdrive
– Line 51: --cluster-url="crate://crate:crate@localhost:4200/testdrive/kinesis_demo"
• docs/topic/ml/tensorflow.rst
– Lines 71–72: aws_access_key_id=, aws_secret_access_key=<access_key>
• Other integrations with similar issues:
– MySQL (docs/integrate/mysql/index.md)
– MongoDB (docs/integrate/mongodb/learn.md)
– AWS DMS & DynamoDB (docs/integrate/aws-dms/index.md, docs/integrate/aws-dynamodb/index.md)
– InfluxDB, Apache Superset, Connect guides (multiple files under docs/)Suggested fixes:
- Replace actual ARN/account ID with
arn:aws:kinesis:<REGION>:<ACCOUNT_ID>:stream/<STREAM_NAME>
or<KINESIS_STREAM_ARN>
.- Use
${AWS_ACCESS_KEY_ID}
/${AWS_SECRET_ACCESS_KEY}
(or<AWS_ACCESS_KEY_ID>
) rather than literal keys.- Swap
crate://crate:crate@…
withcrate://<USERNAME>:<PASSWORD>@<CLUSTER_URL>
.- Run a final automated grep/ripgrep across docs/ to confirm no remaining hard-coded secrets or ARNs.
docs/integrate/dbt/index.md (2)
32-36
: Replace hash links with Sphinx/MyST cross-refsIntra-doc hash links will likely break across pages. Use {ref} so Sphinx validates and updates links during builds.
Apply this diff:
-The idea is that data engineers make source data available to an environment where -dbt projects run, for example with [Debezium](#debezium) or with [Airflow](#apache-airflow). -Afterwards, data analysts can run their dbt projects against this data to produce models -(tables and views) that can be used with a number of [BI tools](#bi-tools). +The idea is that data engineers make source data available to an environment where +dbt projects run, for example with {ref}`Debezium <debezium>` or with {ref}`Apache Airflow <apache-airflow>`. +Afterwards, data analysts can run their dbt projects against this data to produce models +(tables and views) that can be used with a number of {ref}`BI tools <bi-tools>`.
37-39
: Fix invalid MyST image attributes and add alt/lazyAttribute h= is not recognized by MyST; use height=. Also add alt and loading for a11y and perf.
Apply this diff:
-{h=120px} -{h=120px} -{h=120px} +{height=120px loading=lazy alt="dbt Cloud IDE screenshot"} +{height=120px loading=lazy alt="dbt Cloud Scheduler screenshot"} +{height=120px loading=lazy alt="dbt Discovery API screenshot"}
♻️ Duplicate comments (15)
docs/integrate/explo/index.md (1)
22-23
: Replace non-standard image attribute and enable lazy-loadingUse the standard height attribute and add lazy-loading for both screenshots. This also aligns with previous review feedback on this file.
-{h=200px} -{h=200px} +{height=200px loading=lazy} +{height=200px loading=lazy}docs/integrate/kestra/index.md (1)
28-31
: Add descriptive alt text for accessibility (MD045).These images lack alt text. Re-raising prior recommendation with concrete copy.
-{height=120px loading=lazy} -{height=120px loading=lazy} -{height=120px loading=lazy} +{height=120px loading=lazy} +{height=120px loading=lazy} +{height=120px loading=lazy}docs/integrate/marquez/index.md (1)
7-11
: Use a lightweight logo asset and verify CSS class availability
- Prefer the official small logo over the heavy social-card JPG to reduce page weight. The past suggestion indicated this was already addressed; current code still references the JPG.
- Confirm
.float-right
and.clearfix
exist in the new custom CSS (or switch to sphinx-design utilities if that’s the convention).Apply:
```{div} .float-right -[{height=60px loading=lazy}][Marquez] +[{height=60px loading=lazy}][Marquez]```{div} .clearfixIf `.float-right`/`.clearfix` aren’t defined, consider using sphinx-design patterns (e.g., grid alignment) instead of float-based layout. </blockquote></details> <details> <summary>docs/integrate/estuary/index.md (1)</summary><blockquote> `81-96`: **Repeat: silence markdownlint MD034 for :link metadata** Same benign MD034 warning as above on this card. Wrap with disable/enable markers. ```diff +<!-- markdownlint-disable MD034 --> :::{grid-item-card} :link: https://estuary.dev/blog/the-complete-introduction-to-change-data-capture-cdc/ :link-type: url :link-alt: "Change Data Capture (CDC): The Complete Guide" :padding: 3 :class-card: sd-text-center sd-pt-4 :class-header: sd-fs-6 :class-footer: text-smaller CDC: The Complete Guide ^^^ {material-outlined}`integration_instructions;4.5em` +++ Understand what Change Data Capture (CDC) is, how it works, and when to use it. Compare top CDC tools like Estuary, Debezium, Fivetran & more. ::: +<!-- markdownlint-enable MD034 -->
docs/integrate/gradio/index.md (1)
4-8
: Good security/accessibility hardening on external link and badgesAdding rel="noopener noreferrer" and descriptive alt text is correct and addresses the earlier review finding.
docs/integrate/prometheus/index.md (1)
27-36
: Use standard MyST image attribute keyheight
(noth
)Non-standard
h=200px
won’t be recognized by MyST/Sphinx.Apply:
-{h=200px} +{height=200px}docs/integrate/plotly/index.md (3)
19-27
: Alt text is too generic and height attribute is non-standard; add descriptive alt text and use height=…Alt text “plotly-1/plotly-2” doesn’t describe the images. Also,
{h=200px}
is not a standard HTML attribute; use{height=200px}
. Addloading=lazy
to defer offscreen images. This was flagged previously and remains applicable.Apply this diff:
-{h=200px} -{h=200px} +{height=200px loading=lazy} +{height=200px loading=lazy}
37-44
: Dash images: improve alt text, standardize height attribute, and add lazy loadingSame issues here: non-descriptive alt text and
{h=200px}
. Recommend descriptive alt text plus{height=200px loading=lazy}
.-{h=200px} -{h=200px} +{height=200px loading=lazy} +{height=200px loading=lazy}
63-65
: Dash Enterprise images: alt text, height attribute, and lazy loadingMake the alt text meaningful and switch to
{height=200px}
withloading=lazy
.-{h=200px} -{h=200px} +{height=200px loading=lazy} +{height=200px loading=lazy}docs/integrate/apache-nifi/index.md (2)
5-5
: Avoid hot-linking the NiFi logo; store locally for reliability and reproducible buildsHost the logo under docs/_static and reference it locally.
Apply:
-[{height=60px loading=lazy}][Apache NiFi] +[{height=60px loading=lazy}][Apache NiFi]Follow-up: add the SVG at docs/_static/img/integrations/apache-nifi-drop-logo.svg (and ensure it’s committed). I can help bulk-apply this across integration pages if you want.
41-45
: Suppress markdownlint MD034 for Sphinx 🔗 directivemarkdownlint flags 🔗 as a bare URL. Wrap with disable/enable comments.
:::{grid-item-card} Tutorial: Connect Apache NiFi and CrateDB +: <!-- markdownlint-disable MD034 --> :link: https://community.cratedb.com/t/connecting-to-cratedb-from-apache-nifi/647 :link-type: url +: <!-- markdownlint-enable MD034 --> How to connect from Apache NiFi to CrateDB and ingest data from NiFi into CrateDB. :::docs/integrate/rill/index.md (1)
47-48
: Replace non-standard h with height and enable lazy-loading on imagesUse the standard height attribute and enable lazy loading for performance. This mirrors earlier feedback on similar images.
-{h=200px} --p-3200.webp){h=200px} +{height=200px loading=lazy decoding=async} +-p-3200.webp){height=200px loading=lazy decoding=async}docs/integrate/meltano/index.md (1)
28-31
: Replace feature-branch URL with a stable reference (main, tag, or commit SHA)The “Examples” card links to
.../tree/amo/meltano/...
, which is an ephemeral branch and risks future 404s.Preferred fix (if path exists on main):
-:link: https://github.com/crate/cratedb-examples/tree/amo/meltano/framework/singer-meltano +:link: https://github.com/crate/cratedb-examples/tree/main/framework/singer-meltanoIf it does not exist on main, pin to a release tag or a commit SHA for stability.
Run this to verify availability and decide which to use:
#!/bin/bash URL_BRANCH="https://github.com/crate/cratedb-examples/tree/amo/meltano/framework/singer-meltano" URL_MAIN="https://github.com/crate/cratedb-examples/tree/main/framework/singer-meltano" for U in "$URL_BRANCH" "$URL_MAIN"; do CODE=$(curl -s -o /dev/null -w "%{http_code}" "$U") echo "$CODE $U" done echo "If main is 404, prefer a tag or permalink to a commit SHA instead of a feature branch."docs/integrate/aws-kinesis/index.md (1)
48-52
: Remove embedded AWS credentials and real-looking ARN; use placeholders and default credential chainThis example exposes credentials on the command line and includes a specific account/stream ARN. Replace with placeholders and rely on the AWS default credential chain (env, shared config, IAM role).
Apply this diff:
```shell uvx 'cratedb-toolkit[io-ingestr]' load table \ - "kinesis://?aws_access_key_id=${AWS_ACCESS_KEY_ID}&aws_secret_access_key=${AWS_SECRET_ACCESS_KEY}®ion_name=eu-central-1&table=arn:aws:kinesis:eu-central-1:831394476016:stream/testdrive" \ + "kinesis://?region_name=<region>&table=arn:aws:kinesis:<region>:<account_id>:stream/<stream_name>" \ --cluster-url="crate://crate:crate@localhost:4200/testdrive/kinesis_demo"
+Note:
+- Rely on the AWS default credential chain (env vars, ~/.aws/{config,credentials}, or IAM role).
+- Replace <...> placeholders with your values.Optionally, consider also replacing the CrateDB demo credentials with placeholders for consistency in docs: ```diff - --cluster-url="crate://crate:crate@localhost:4200/testdrive/kinesis_demo" + --cluster-url="crate://<user>:<password>@<host>:<port>/<schema>/<table>"
docs/integrate/aws-dynamodb/index.md (1)
8-15
: Harden external link: add rel and alt attributesExternal link opens a new tab without rel attributes; image lacks alt. Add rel="noopener noreferrer" and a descriptive alt.
Apply this diff:
```{div} .float-right .text-right [{height=60px loading=lazy}][DynamoDB] <br> -<a href="https://github.com/crate/cratedb-toolkit/actions/workflows/dynamodb.yml" target="_blank"> - <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-toolkit/dynamodb.yml?branch=main&label=CTK%2BDynamoDB" loading="lazy"></a> +<a href="https://github.com/crate/cratedb-toolkit/actions/workflows/dynamodb.yml" target="_blank" rel="noopener noreferrer"> + <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-toolkit/dynamodb.yml?branch=main&label=CTK%2BDynamoDB" + loading="lazy" + alt="CI status badge: cratedb-toolkit DynamoDB workflow"></a></blockquote></details> </blockquote></details> <details> <summary>🧹 Nitpick comments (64)</summary><blockquote> <details> <summary>docs/integrate/explo/index.md (1)</summary><blockquote> `31-34`: **Silence markdownlint MD034 by wrapping the URL in angle brackets** markdownlint flags bare URLs; wrapping the :link: value in angle brackets resolves it without changing behavior of the directive. ```diff -:link: https://cratedb.com/blog/introduction-to-time-series-visualization-in-cratedb-and-explo +:link: <https://cratedb.com/blog/introduction-to-time-series-visualization-in-cratedb-and-explo>
docs/integrate/kestra/index.md (2)
4-8
: Header layout and float utilities look good; consider async decoding for the logo.Adds a small perf win with negligible risk.
```{div} .float-right -[{height=60px loading=lazy}][Kestra] +[{height=60px loading=lazy decoding=async}][Kestra]--- `37-46`: **markdownlint MD034 false-positive on directive URL; optionally suppress.** The bare URL is inside a Sphinx Design directive field and is expected. If CI flags it, consider a local suppression around the block. ```diff +<!-- markdownlint-disable MD034 --> ::::{grid} 2 :::{grid-item-card} Tutorial: Data pipeline to CrateDB :link: https://community.cratedb.com/t/setting-up-data-pipelines-with-cratedb-and-kestra-io/1400 :link-type: url In this tutorial, we will show you how CrateDB integrates with Kestra using the PostgreSQL plugin to create an efficient and scalable data pipeline. ::: :::: +<!-- markdownlint-enable MD034 -->
If you prefer not to inline disables, we can adjust markdownlint configuration to ignore Sphinx/MyST directive fields globally.
docs/integrate/sql-server/index.md (1)
48-52
: markdownlint MD053 likely a false positive; suppress locallyThe reference [Microsoft SQL documentation] is used at Line 6, but markdownlint reports it as unused (MD053). This is likely due to parsing within the MyST div block. Suppress the rule just for this definition.
Apply this diff to silence MD053 for the definition:
+<!-- markdownlint-disable-next-line MD053 --> [Microsoft SQL documentation]: https://learn.microsoft.com/en-us/sql/
docs/integrate/marquez/index.md (1)
16-26
: Redundant container div around body copyThe plain
::{div}
wrapper has no attributes; unless it’s needed for spacing hooks, it can be removed to reduce DOM noise. If spacing is intended, add a semantic class to make the intent explicit.Example:
-:::{div} ... -:::Or, if spacing is needed:
-:::{div} +:::{div} .section-body ... :::docs/integrate/tableau/index.md (4)
4-8
: Verify CSS utility availability and consider localizing external assets
- Confirm that .float-right and .clearfix are defined in docs/_static/css/custom.css and that docs/conf.py includes this stylesheet for all builders.
- The logo hotlinks an external Wikipedia asset. Consider vendoring this image into docs/_static to avoid external dependency and build flakiness.
If you want, I can propose a follow-up patch to add a local asset and update this reference.
43-50
: Revisit :columns: 12 on a 2-column gridSetting :columns: 12 inside a 2-column grid will make this card span the full row, breaking the two-column rhythm. If that’s not intentional, remove the setting (or align it with the grid).
Proposed adjustment:
:::{grid-item-card} Repository: CrateDB Tableau Connector :link: https://github.com/crate/cratedb-tableau-connector :link-type: url -:columns: 12 The native Tableau connector for CrateDB unlocks advanced SQL functionality and resolves compatibility issues beyond standard usage. :::
If full-width is desired only on large screens, we can use responsive columns (e.g., :columns: 12 lg:6) — let me know and I’ll draft it.
61-63
: Enrich See also with related references already defined belowSurfacing [Tool: Tableau] and [Connector: Issues] here improves discoverability (you already define them below).
Apply this diff:
```{seealso} -[CrateDB and Tableau] +[CrateDB and Tableau] + +[Tool: Tableau] +[Connector: Issues]--- `65-69`: **markdownlint false positives due to MyST directives — optionally silence MD034/MD053** The reported MD034 (bare URLs) and MD053 (unused refs) are side-effects of markdownlint not fully understanding MyST directive fences and option fields. You can safely ignore, or add a scoped suppression. If you prefer suppression, add this at the very top of the file: ```markdown <!-- markdownlint-disable MD034 MD053 -->
Alternatively, we can adjust your lint pipeline to use a MyST-aware linter to avoid disabling rules.
docs/integrate/debezium/index.md (1)
29-33
: Prefer consistent product naming: “Microsoft SQL Server (SQL Server)”Elsewhere on this page you use “SQL Server.” Consider aligning the card title/description to “Microsoft SQL Server (SQL Server)” or just “SQL Server” for consistency.
Example tweak:
-:::{grid-item-card} Tutorial: Replicate data from MSSQL +:::{grid-item-card} Tutorial: Replicate data from SQL Server @@ -Replicating data from MSSQL to CrateDB with Debezium and Kafka. +Replicating data from SQL Server to CrateDB with Debezium and Kafka.docs/integrate/cluvio/index.md (4)
18-22
: Fix minor grammar: “time range” and “a few minutes”Two small wording tweaks improve readability and polish.
- specific timerange or filter dashboards by any individual attribute of your data. + specific time range or filter dashboards by any individual attribute of your data. - your entire company in few minutes. + your entire company in a few minutes.
5-5
: Avoid hotlinking remote imagesServing images directly from third-party hosts can break previews/offline builds and risks content drift. Prefer vendoring assets into docs/_static and referencing them locally.
I can help convert these to local assets (optimize, copy under docs/_static/, and update references) if desired.
Also applies to: 24-26
33-38
: Target URL in card: align with intent and fix linter “bare URL” warning
- The card links to the community article, while the PR summary/AI summary imply linking to the product integration page. Confirm the intended destination.
- markdownlint flags MD034 (bare URL) at Line 34. Since 🔗 field values are plain text (not Markdown), consider disabling MD034 around this block.
Option A (switch to the integration page for consistency with See also):
-:link: https://community.cratedb.com/t/data-analysis-with-cluvio-and-cratedb/1571 +:link: https://cratedb.com/integrations/cratedb-and-cluvioOption B (keep the community article but silence MD034 locally):
+<!-- markdownlint-disable MD034 --> ::::{grid} 2 @@ :::{grid-item-card} Data Analysis with Cluvio and CrateDB :link: https://community.cratedb.com/t/data-analysis-with-cluvio-and-cratedb/1571 :link-type: url @@ ::: :::: +<!-- markdownlint-enable MD034 -->
43-45
: Resolve MD053: unused link reference definitionmarkdownlint flags the reference definition “CrateDB and Cluvio” as unused, likely due to the directive context. Inline the link inside the seealso block and remove the dangling reference to satisfy the linter.
-```{seealso} -[CrateDB and Cluvio] -``` +```{seealso} +[CrateDB and Cluvio](https://cratedb.com/integrations/cratedb-and-cluvio) +``` @@ -[CrateDB and Cluvio]: https://cratedb.com/integrations/cratedb-and-cluvioIf you prefer reference-style links globally, alternatively disable MD053 around the reference section.
Also applies to: 49-49
docs/integrate/datagrip/index.md (2)
58-63
: Add a short note differentiating Crate JDBC vs PostgreSQL JDBC usage.Prevent confusion by clarifying that:
- For the Crate JDBC driver: use
jdbc:crate://<host>:4200/
and provide credentials via the UI fields or properties.- For the PostgreSQL JDBC driver alternative: use
jdbc:postgresql://<host>:5432/
and pass credentials as query parameters (?user=<user>&password=<password>
), sinceuser:password@
in the URL is not supported by PostgreSQL JDBC.I can draft a concise
{note}
block for this section if you want.
32-34
: Avoid hotlinking user-attachments; store images in the repo for stability and versioning.External GitHub user-attachments can break or throttle. Prefer committing assets under
docs/_static/...
and referencing them relatively to ensure reproducible docs builds and offline previews.If you want, I can propose a standard path layout and update references accordingly.
Also applies to: 41-41, 55-55, 65-65, 74-75
docs/integrate/telegraf/index.md (4)
5-5
: Use unitless width for robust renderingAttribute lists on images typically expect numeric pixel values; “px” can be ignored by some builders. Prefer
width=180
overwidth=180px
.Apply:
-[{width=180px loading=lazy}][Telegraf] +[{width=180 loading=lazy}][Telegraf]
4-8
: Optional: Avoid empty “clearfix” markup; prefer CSS-based clearfixEmpty elements add noise and are brittle. If possible, remove the extra clearfix div and clear floats via CSS (e.g., apply clearfix to the containing section).
Remove the empty block:
```{div} .float-right [{width=180px loading=lazy}][Telegraf]-
{div} .clearfix -
Then, in your CSS, ensure you clear floats on a meaningful container (example): ```css /* In docs/_static/css/custom.css */ .clearfix::after { content: ""; display: block; clear: both; } /* Apply .clearfix to the section container instead of inserting empty divs */
If you prefer to keep markup-only changes in MD files, consider using a Sphinx-Design grid instead of floats.
35-35
: Vendor external image to avoid hotlinking and broken previewsThe architecture diagram is hotlinked from influxdata.com. External assets can break builds, slow pages, and fail in offline/airgapped builds. Prefer copying the image into
docs/_static/images/
(or an appropriate assets directory) and referencing it locally.Follow-up:
- Add the image to the repo (e.g.,
docs/_static/images/telegraf-architecture.png
)- Update the reference to use a relative path
- Add attribution if licensing requires it
35-35
: Use unitless height for image attributesFor consistency with HTML expectations and Sphinx builders, prefer
height=200
instead ofheight=200px
.Apply:
-{height=200px loading=lazy} +{height=200 loading=lazy}docs/integrate/grafana/index.md (1)
43-44
: Wording nit: streamline the data source phrasing.Small phrasing improvement.
Apply:
-Connecting to a CrateDB cluster uses the Grafana PostgreSQL data source adapter. +Connect to a CrateDB cluster using Grafana’s PostgreSQL data source.docs/integrate/dbeaver/index.md (4)
7-10
: Prefer CSS over inline style; also use standard image attributes
- Inline style defeats the goal of centralizing styles. Move margin to the CSS class and drop the inline style.
- MyST/Sphinx consistently support width/height, not shorthand w/h. If your build isn’t configured to accept w, switch to width to avoid silently ignored attributes.
Apply this diff:
```{div} .float-right -:style: "margin-left: 0.5em" -[{w=120px loading=lazy}][DBeaver] +[{width=120px loading=lazy}][DBeaver]If margin-left is desired, add it to your custom.css for .float-right and remove the inline style here. --- `42-42`: **Avoid external GitHub attachment for long-term stability; fix width shorthand** - GitHub user-attachments URLs can be brittle for long-lived docs. Prefer hosting the asset under docs/_static or your CDN. - Replace w=480px with width=480px to ensure Sphinx renders the attribute. ```diff -{w=480px loading=lazy} +{width=480px loading=lazy}
Optionally, replace the image URL with a local static path if/when you move it into the repository.
52-53
: Use standard height attribute and consider self-hosting images
- Switch h=240px to height=240px for consistent MyST/Sphinx rendering.
- External HubSpot-hosted assets may change or be rate-limited; consider storing copies under docs/_static.
-{h=240px loading=lazy} -{h=240px loading=lazy} +{height=240px loading=lazy} +{height=240px loading=lazy}
61-70
: Suppress markdownlint MD034 for directive option URLmarkdownlint is flagging a bare URL (line 64) within a directive option, which is intended/required by sphinx-design. Suppress MD034 for the next line to keep the linter quiet without altering semantics.
:::{grid-item-card} Blog: Use CrateDB With DBeaver -:link: https://cratedb.com/blog/cratedb-dbeaver +<!-- markdownlint-disable-next-line MD034 --> +:link: https://cratedb.com/blog/cratedb-dbeaver :link-type: url DBeaver is a multipurpose database tool for developers and database administrators. With the help of the CrateDB JDBC Standalone Driver, you can use DBeaver with CrateDB. :::Alternative: keep as-is and disable MD034 repo-wide for directive option lines if this pattern is pervasive.
docs/integrate/apache-hop/index.md (1)
38-61
: Grid cards: align columns across cards and quiet markdownlint MD034 false positives
- Consistency: Only the first card specifies
:columns: 12
. Set the same on the other cards (or remove from the first) to avoid uneven layout across breakpoints.- Lint: markdownlint flags “bare URLs” on the
:link:
fields even though they are directive options. Disable MD034 around this block to keep the linter quiet without changing semantics.Apply this diff:
-::::{grid} +<!-- markdownlint-disable MD034 --> +::::{grid} :gutter: 2 :::{grid-item-card} Tutorial: Use Apache Hop with CrateDB :link: https://community.cratedb.com/t/using-apache-hop-with-cratedb/1754 :link-type: url :columns: 12 The tutorial explains how to deploy Apache Hop using Docker and connect it to CrateDB. ::: :::{grid-item-card} Dialect :link: https://hop.apache.org/manual/latest/database/databases/cratedb.html :link-type: url +:columns: 12 CrateDB dialect for Apache Hop. ::: :::{grid-item-card} Performance :link: https://hop.apache.org/manual/latest/pipeline/transforms/cratedb-bulkloader.html :link-type: url +:columns: 12 CrateDB Apache Hop Bulk Loader transform. ::: :::: +<!-- markdownlint-enable MD034 -->docs/integrate/estuary/index.md (4)
42-47
: Wording and reference label consistencyMinor polish: “per three” reads stilted; prefer “via three”. Also align the link reference label casing to the defined footnote.
-Estuary offers its solution as a [managed product][Estuary managed], available -per [three main deployment options][Estuary Deployment] to cater to various +Estuary offers its solution as a [managed product][Estuary Managed], available +via [three main deployment options][Estuary Deployment] to cater to various organizational needs and security requirements: Public Deployment, -Private Deployment, and BYOC options. +Private Deployment, and BYOC.
56-70
: Silence markdownlint MD034 for :link metadata (benign bare URLs)These :link fields intentionally contain bare URLs and trigger MD034. Add local disable/enable markers around the card.
+<!-- markdownlint-disable MD034 --> :::{grid-item-card} :link: https://estuary.dev/destination/cratedb/ :link-type: url :link-alt: "CrateDB destination connector for Estuary" :padding: 3 :class-card: sd-text-center sd-pt-4 :class-header: sd-fs-6 :class-footer: text-smaller CrateDB destination connector for Estuary ^^^ {material-outlined}`link;4.5em` +++ Continuously ingest and deliver both streaming and batch change data from 100s of sources using Estuary's custom no-code connectors into CrateDB. ::: +<!-- markdownlint-enable MD034 -->If you prefer, we can suppress MD034 globally for metadata URLs. I can open a separate PR to tune markdownlint config.
97-110
: Apply MD034 suppression to this card as wellConsistent with the other cards, suppress MD034 around this :link metadata.
+<!-- markdownlint-disable MD034 --> :::{grid-item-card} :link: https://github.com/crate/cratedb-estuary :link-type: url :link-alt: "Connector Repository" :padding: 3 :class-card: sd-text-center sd-pt-4 :class-header: sd-fs-6 :class-footer: text-smaller Connector Repository ^^^ {material-outlined}`source;4.5em` +++ Issue tracker repository. ::: +<!-- markdownlint-enable MD034 -->
114-117
: Tiny grammar polish“per” reads odd here; “in” is clearer.
-We are tracking interoperability issues per [Tool: Estuary] and appreciate +We are tracking interoperability issues in [Tool: Estuary] and appreciate any contributions and reports.docs/integrate/risingwave/index.md (3)
35-70
: Consider replacing field-list syntax with headings for clarity and searchabilityThe “Synopsis” section uses a field list (:RisingWave:, :CrateDB:). Headings (e.g., “### RisingWave”, “### CrateDB”) improve navigability, anchors, and ToC/search relevance. Keeping style consistent across integration pages is ideal.
Example for “RisingWave”:
-:RisingWave: - Load an Apache Iceberg table, and serve it as a materialized view. +### RisingWave +Load an Apache Iceberg table, and serve it as a materialized view.(Apply similarly for “CrateDB”.)
71-86
: Align Learn card naming with other pagesThis card is titled “RisingWave Table Loader”. The Apache Iceberg page uses “Tutorial: Use RisingWave to load Iceberg tables.” Consider unifying to the “Tutorial:” pattern for consistency across Learn grids.
Apply:
-:::{grid-item-card} RisingWave Table Loader +:::{grid-item-card} Tutorial: Use RisingWave to load Iceberg tables
4-6
: Avoid hotlinking third-party logo/assetsBoth the logo and overview image hotlink external hosts. Prefer vendoring images under docs/_static/ for reliability, build repeatability (offline builds), and avoiding third-party changes.
I can generate a follow-up patch to add local assets and update paths if desired.
Also applies to: 20-27
docs/integrate/gradio/index.md (4)
4-6
: Avoid lazy-loading above-the-fold logoThe page header logo is above the fold; lazy-loading can cause a flash/jank. Prefer eager load here.
Apply this diff:
-[{height=60px loading=lazy}][Gradio] +[{height=60px}][Gradio]
7-8
: Add accessible label to the CI badge linkThe anchor contains only an image. Adding an aria-label improves accessibility for screen readers.
Apply this diff:
-<a href="https://github.com/crate/cratedb-examples/actions/workflows/framework-gradio.yml" target="_blank" rel="noopener noreferrer"> +<a href="https://github.com/crate/cratedb-examples/actions/workflows/framework-gradio.yml" target="_blank" rel="noopener noreferrer" aria-label="GitHub Actions workflow status for Gradio example">
29-29
: Harden and make the video embed responsive
- frameborder is obsolete; use CSS instead.
- Add referrerpolicy to reduce cross-origin referrer leakage.
- Make the iframe responsive to avoid overflow on small screens.
Apply this diff:
-<iframe width="480" height="320" loading="lazy" src="https://www.youtube-nocookie.com/embed/44vi31hehw4?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +<iframe loading="lazy" src="https://www.youtube-nocookie.com/embed/44vi31hehw4?si=J0w5yG56Ld4fIXfm" title="YouTube video player" style="width: 100%; aspect-ratio: 3 / 2; height: auto; border: 0;" referrerpolicy="strict-origin-when-cross-origin" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>If you prefer stricter isolation, consider adding sandbox with the minimum necessary allowlist; test carefully as it can break YouTube:
sandbox="allow-scripts allow-same-origin allow-presentation allow-popups"
49-51
: Link to Hugging Face Spaces (the hosting product) instead of WikipediaUsers looking to deploy Gradio demos are better served by the Spaces product page.
Apply this diff:
-[Hugging Face]: https://en.wikipedia.org/wiki/Hugging_Face +[Hugging Face]: https://huggingface.co/spacesdocs/integrate/prometheus/index.md (2)
40-54
: Minor phrasing improvement“comes into place” reads awkwardly in English; “comes into play” is the standard phrase.
-This is where CrateDB comes into place: The [CrateDB Prometheus +This is where CrateDB comes into play: The [CrateDB Prometheus Adapter] stores collected metrics data into CrateDB and takes advantage of its high ingestion and query speed to massively scale-out Prometheus.
55-72
: Silence markdownlint MD034 for directive option URLsmarkdownlint flags the
:link:
option lines as “bare URLs,” but these are directive options, not Markdown text. Disable MD034 locally around the grid block to avoid false positives.:::{rubric} Tutorials ::: -::::{grid} +<!-- markdownlint-disable MD034 --> +::::{grid} @@ :::: +<!-- markdownlint-enable MD034 -->docs/integrate/streamlit/index.md (2)
17-25
: Minor copy edit to fix comma splice and tighten phrasing.Split the clause and tweak wording for flow.
Apply this diff:
- - No in-depth knowledge of HTML/JS/CSS needed, the framework offers elegant default - styling, which can be adjusted when applicable. + - No in-depth knowledge of HTML/JS/CSS needed: the framework offers elegant default + styling that can be adjusted when applicable.
49-54
: Please confirm Sphinx-Design is enabled and the icon sizing renders correctlyI didn’t find an explicit
sphinx_design
entry in docs/conf.py (it may be pulled in bycrate.theme.rtd.conf.cratedb_guide
). Before merging:
- Verify that your Sphinx build includes the
sphinx_design
extension.- Preview the page to ensure
{material-outlined}
with;2em
actually scales the icon.- Replace the raw
spacer with a small CSS margin on the icon’s wrapper for consistency.Example tweak:
-{material-outlined}`manage_history;2em` **Streamlit 101 - A faster way to build and share data applications** +{material-outlined}`manage_history;2em` **Streamlit 101 – A faster way to build and share data applications**And in your CSS (e.g. css/custom.css):
.material-outlined { margin-inline-end: 0.25em; }docs/integrate/plotly/index.md (1)
6-10
: Verify CSS utility classes and mobile behavior for floated logo blockEnsure
.float-right
and.clearfix
are defined in the new shared stylesheet and that this float-based layout doesn’t overlap headings or break on narrow viewports. Consider using a grid/flex utility instead for better responsiveness.docs/integrate/powerbi/desktop.rst (2)
109-111
: Use the correct 32-bit naming: “x86” (not “x32”)Windows commonly labels the 32-bit driver as “x86”.
Apply this diff:
- and hitting *Add*. From the drivers, select *PostgreSQL Unicode(x64)* if you - are using a 64-bit Windows. Otherwise, select *PostgreSQL Unicode(x32)*. + and hitting *Add*. From the drivers, select *PostgreSQL Unicode (x64)* if you + are using a 64-bit Windows. Otherwise, select *PostgreSQL Unicode (x86)*.
128-129
: Clarify “Server” wording“URL” can imply http(s) and confuse readers. Prefer “Hostname or IP address”.
Apply this diff:
-| Server | The URL or IP of your CrateDB server. | +| Server | The hostname or IP address of your CrateDB server. |docs/integrate/apache-kafka/index.md (2)
39-61
: Silence markdownlint MD034 for URLs used inside directive optionsmarkdownlint flags the bare URLs in 🔗 options (lines 49 and 55). Since these are directive options (not inline Markdown), disabling MD034 around the grid is the least invasive fix.
Apply this diff:
-::::{grid} +<!-- markdownlint-disable MD034 --> +::::{grid} @@ -:::: +:::: +<!-- markdownlint-enable MD034 -->
4-11
: Avoid hot-linking third-party assets for logos (optional)For build reliability, privacy, and performance, consider vendoring the Kafka logo into docs/_static and referencing it locally instead of pulling from kafka.apache.org at build time.
If desired, I can prep a patch to add the asset and update the reference.
docs/integrate/apache-nifi/index.md (3)
30-32
: Mirror screenshots locally instead of hot-linking GitHub assetsExternal assets can break previews and CI docs builds. Prefer local copies under docs/_static.
Proposed replacements (after you add the files):
-{height=120px loading=lazy} -{height=120px loading=lazy} -{height=120px loading=lazy} +{height=120px loading=lazy} +{height=120px loading=lazy} +{height=120px loading=lazy}Optional: Use SVG if available for sharper rendering at small sizes.
39-39
: Grid uses 2 columns but only one card; consider 1 column for balanced layoutUntil there’s a second card, a single-column grid avoids an empty column on wide viewports.
-::::{grid} 2 +::::{grid} 1
49-51
: Resolve markdownlint MD053 (unused reference definition) by inlining the linkmarkdownlint sometimes misses reference usage inside directives like seealso. Inline the link and drop the unused definition.
```{seealso} -[CrateDB and Apache NiFi] +[CrateDB and Apache NiFi](https://cratedb.com/integrations/cratedb-and-apache-nifi)And remove the now-unused reference: ```diff -[CrateDB and Apache NiFi]: https://cratedb.com/integrations/cratedb-and-apache-nifi
Also applies to: 55-55
docs/integrate/django/index.md (1)
37-45
: Note on markdownlint MD034 false positiveThe linter warning about “bare URLs” applies to normal Markdown, but here the URL is an argument to a MyST directive (
:link:
), which is expected. Consider suppressing MD034 for directive argument lines in your linter config rather than altering this valid pattern.docs/integrate/metabase/index.md (2)
25-27
: Prefer local assets over pinned GitHub raw URLsHotlinking images via GitHub commit hashes can be brittle and slower. If those images exist under docs/_assets, consider referencing them relatively to keep assets in the docs build and avoid external fetches.
Example (adjust relative paths as appropriate):
-{h=140px} -{h=140px} +{h=140px} +{h=140px}
55-65
: MD034 “bare URL” warnings are not applicable to MyST directive argumentsThe
:link:
values are intended to be URLs here. If markdownlint flags them, consider excluding those lines/patterns in lint config rather than changing working syntax.docs/integrate/apache-superset/index.md (2)
11-11
: Encode spaces in shields.io query parameterSafer to percent-encode spaces in the
label
parameter.- <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-examples/application-apache-superset.yml?branch=main&label=Apache Superset" loading="lazy" alt="CI status: Apache Superset"></a> + <img src="https://img.shields.io/github/actions/workflow/status/crate/cratedb-examples/application-apache-superset.yml?branch=main&label=Apache%20Superset" loading="lazy" alt="CI status: Apache Superset"></a>
25-28
: Use shared CSS utilities instead of inline float style for consistencyReplace inline
:style: "float: right"
with.float-right .text-right
to align with the new global utilities.-```{div} -:style: "float: right" -[{height=60px loading=lazy}][Preset Cloud] -``` +```{div} .float-right .text-right +[{height=60px loading=lazy}][Preset Cloud] +``` ```{div} .clearfixAlso applies to: 42-44 </blockquote></details> <details> <summary>docs/integrate/apache-flink/index.md (1)</summary><blockquote> `131-160`: **Grid-based Learn section reads well; linter “bare URL” warnings are ignorable here** URLs as `:link:` values are expected in sphinx-design cards. If markdownlint flags MD034, consider a rule override for directive arguments. </blockquote></details> <details> <summary>docs/integrate/rill/index.md (1)</summary><blockquote> `4-8`: **Prefer raw.githubusercontent.com for the logo asset; keep lazy-loading** Direct raw delivery is more reliable and cache-friendly than the github.com/.../raw indirection. Also, add decoding=async for faster rendering. ```diff ```{div} .float-right -[{height=60px loading=lazy}][Rill] +[{height=60px loading=lazy decoding=async}][Rill]
</blockquote></details> <details> <summary>docs/integrate/pyviz/index.md (3)</summary><blockquote> `45-51`: **Make gallery images responsive and consistently lazy-loaded.** Minor polish to improve perceived performance and layout stability. ```diff -[![Datashader map aggregation example][ds1]][ds1] +[![Datashader map aggregation example][ds1]{loading=lazy width=100% height=auto}][ds1] -[![Datashader scatter/heat example][ds2]][ds2] +[![Datashader scatter/heat example][ds2]{loading=lazy width=100% height=auto}][ds2]
52-53
: Place link reference definitions at document bottom to avoid local scoping confusion.While MyST generally handles reference definitions anywhere, defining them inline inside a grid item hurts maintainability and can be overlooked. Move these to the bottom with the other references.
-[ds1]: https://github.com/crate/crate-clients-tools/assets/453543/7f38dff6-04bc-429e-9d31-6beeb9289c4b -[ds2]: https://github.com/crate/crate-clients-tools/assets/453543/23561a87-fb4f-4154-9891-1b3068e40579Add alongside other references at the end of the file:
[ds1]: https://github.com/crate/crate-clients-tools/assets/453543/7f38dff6-04bc-429e-9d31-6beeb9289c4b [ds2]: https://github.com/crate/crate-clients-tools/assets/453543/23561a87-fb4f-4154-9891-1b3068e40579
82-82
: Make the YouTube embed responsive; avoid fixed width.Hardcoding width=240 will look cramped and not scale on various devices. Prefer a responsive wrapper via your custom CSS (since you moved to a custom stylesheet).
Example HTML you can style globally:
<div class="video-embed ratio-16x9"> <iframe src="https://www.youtube-nocookie.com/embed/eWpVUPHrCIA?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen loading="lazy"></iframe> </div>And CSS (in your custom CSS):
.video-embed { position: relative; width: 100%; max-width: 560px; } .video-embed.ratio-16x9 { padding-top: 56.25%; } .video-embed > iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }docs/integrate/meltano/index.md (1)
4-8
: Avoid hotlinking external logos; store assets locally for reliabilityHotlinking images from third-party domains can break unexpectedly or slow down docs. Prefer local assets under docs/_static and reference them, or use a stable CDN you control.
If you want, I can add the assets to docs/_static and adjust references in a follow-up PR.
docs/integrate/node-red/index.md (1)
4-8
: Optional: Avoid hotlinking external images; prefer local static assetsTo improve reliability, performance, and control over caching, consider vendoring the Node-RED logo into docs/_static and referencing it locally instead of hotlinking Wikimedia. This also prevents unexpected third-party changes or outages from affecting our docs.
docs/integrate/aws-dynamodb/index.md (1)
27-31
: Nit: Prefer formal tone (avoid contractions) in docsMinor style consistency: expand “don't” to “do not”.
-[DynamoDB] is a fully managed NoSQL database service provided by Amazon Web Services (AWS). -It is designed for high-performance, scalable applications and offers key-value and -document data structures. DynamoDB is serverless, meaning users don't need to manage -servers or infrastructure. +[DynamoDB] is a fully managed NoSQL database service provided by Amazon Web Services (AWS). +It is designed for high-performance, scalable applications and offers key-value and +document data structures. DynamoDB is serverless, meaning users do not need to manage +servers or infrastructure.docs/integrate/dbt/index.md (2)
187-187
: Harden and lazy-load the YouTube embedAdd height and loading for perf; drop obsolete frameborder; add referrerpolicy for privacy.
Apply this diff:
-<iframe width="240" src="https://www.youtube-nocookie.com/embed/5rNquRnNb4E" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +<iframe width="240" height="135" src="https://www.youtube-nocookie.com/embed/5rNquRnNb4E" title="YouTube video player" loading="lazy" referrerpolicy="strict-origin-when-cross-origin" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
8-8
: Consider hosting third-party images locallyHot-linking to getdbt.com/_next/image may break if providers change URLs/CSP. Prefer placing assets under docs/_static and referencing them locally for stability and build reproducibility.
Also applies to: 37-39
{h=120px} | ||
{h=120px} | ||
{h=120px} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix image sizing attribute: h
is likely ignored by MyST; use height
and add lazy-loading
MyST/Sphinx expects height=...
, not h=...
. As-is, the screenshots may not be sized as intended. Also, apply loading=lazy
for parity with the logo.
Apply this diff:
-{h=120px}
-{h=120px}
-{h=120px}
+{height=120px loading=lazy}
+{height=120px loading=lazy}
+{height=120px loading=lazy}
Optional: Consider hosting these images under docs/_static/
to avoid external asset drift and improve build reliability on RTD.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
{h=120px} | |
{h=120px} | |
{h=120px} | |
{height=120px loading=lazy} | |
{height=120px loading=lazy} | |
{height=120px loading=lazy} |
🤖 Prompt for AI Agents
In docs/integrate/apache-hop/index.md around lines 29 to 31, the image
attributes use `h=...` which MyST/Sphinx ignores; change `h=120px` to
`height=120px` and add `loading="lazy"` to each image tag to enable
lazy-loading; optionally move the image files into docs/_static/ and update the
paths to use the local _static location to avoid external asset drift.
```{div} .float-right | ||
[{height=60px loading=lazy}][Apache NiFi] | ||
``` | ||
```{div} .clearfix | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Verify custom CSS (.float-right/.clearfix) is loaded to avoid layout regressions
These classes rely on docs/_static/css/custom.css being included via conf.py. Please verify to prevent broken floats/clears in HTML output.
Run this to confirm the CSS is included and classes exist:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Check conf.py includes custom.css"
rg -n 'html_css_files\\s*=\\s*\\[.*custom\\.css' -A2 docs/conf.py || { echo "custom.css not referenced in conf.py"; exit 1; }
echo "Check css defines required classes"
if fd custom.css docs/_static | grep -q .; then
fd custom.css docs/_static --exec rg -n '(^|\\.)float-right\\b|(^|\\.)clearfix\\b' {} || { echo "float-right/clearfix not defined in custom.css"; exit 1; }
else
echo "custom.css not found under docs/_static"
exit 1
fi
echo "OK: CSS reference and classes found"
Length of output: 383
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Step 1: Show html_css_files entries in docs/conf.py"
rg -n "html_css_files" docs/conf.py || echo "No html_css_files setting found in docs/conf.py"
echo
echo "Step 2: Check for custom.css reference in html_css_files"
rg -n "custom\.css" docs/conf.py || echo "custom.css not referenced in docs/conf.py"
echo
echo "Step 3: Locate custom.css under docs/_static"
fd custom.css docs/_static || { echo "custom.css not found under docs/_static"; exit 1; }
echo
echo "Step 4: Verify .float-right and .clearfix definitions in custom.css"
rg -nE '(^|\s)\.(float-right|clearfix)\b' docs/_static/css/custom.css \
|| echo "float-right/clearfix not defined in custom.css"
Length of output: 1012
#!/bin/bash
set -euo pipefail
echo "Searching for .float-right definition in custom.css"
rg -n '\.float-right' docs/_static/css/custom.css || echo ".float-right not defined in custom.css"
echo
echo "Searching for .clearfix definition in custom.css"
rg -n '\.clearfix' docs/_static/css/custom.css || echo ".clearfix not defined in custom.css"
Add missing .float-right
and .clearfix
definitions to your custom stylesheet
The Sphinx build is correctly loading css/custom.css
(see docs/conf.py:101–102
) and the file exists at docs/_static/css/custom.css
, but neither of the classes used in your markup is defined in it. Without these rules in place, the float/clear wrappers in your docs will break.
Please update docs/_static/css/custom.css
, for example:
/* docs/_static/css/custom.css */
.float-right {
float: right;
margin-left: 1em;
}
.clearfix::after {
content: "";
display: table;
clear: both;
}
• File needing update: docs/_static/css/custom.css
• Purpose: Ensure .float-right
and .clearfix
are defined to avoid layout regressions in the generated HTML.
🤖 Prompt for AI Agents
In docs/_static/css/custom.css (referenced by
docs/integrate/apache-nifi/index.md lines 4–8), the classes .float-right and
.clearfix used in the MD markup are not defined, causing layout breakage; add
CSS rules to define .float-right (float:right and a left margin) and .clearfix
(using a ::after pseudo-element with content:"", display:table, clear:both) so
the float and clearing wrappers render correctly in the generated HTML.
```shell | ||
uvx 'cratedb-toolkit[kinesis]' load table \ | ||
"kinesis+dynamodb+cdc://${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}@aws/cdc-stream?region=eu-central-1" \ | ||
--cluster-url="crate://crate:crate@localhost:4200/testdrive/demo" | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove embedded AWS credentials from command; use placeholders and default credential chain
Avoid placing secrets in URLs. Replace with placeholders and rely on AWS default credential resolution.
Apply this diff:
```shell
uvx 'cratedb-toolkit[kinesis]' load table \
- "kinesis+dynamodb+cdc://${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}@aws/cdc-stream?region=eu-central-1" \
+ "kinesis+dynamodb+cdc://aws/cdc-stream?region=<region>" \
--cluster-url="crate://crate:crate@localhost:4200/testdrive/demo"
+Note:
+- Use the AWS default credential chain (env vars, ~/.aws/{config,credentials}, or IAM role).
+- Replace and other placeholders with your values.
Optionally generalize demo DB credentials:
```diff
- --cluster-url="crate://crate:crate@localhost:4200/testdrive/demo"
+ --cluster-url="crate://<user>:<password>@<host>:<port>/<schema>/<table>"
::::{grid} | ||
|
||
:::{grid-item-card} Ingestr Table Loader | ||
:link: https://cratedb-toolkit.readthedocs.io/io/ingestr/#amazon-kinesis-to-cratedb | ||
:link-type: url | ||
Relay Kinesis stream into CrateDB. | ||
::: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Fix markdownlint MD034: avoid bare URL in directive option
markdownlint flags the bare URL in the card’s 🔗 option. Prefer an intersphinx ref if available; otherwise, silence MD034 locally.
Preferred fix (if intersphinx mapping “ctk” resolves this target):
-:{grid-item-card} Ingestr Table Loader
-:link: https://cratedb-toolkit.readthedocs.io/io/ingestr/#amazon-kinesis-to-cratedb
-:link-type: url
+:{grid-item-card} Ingestr Table Loader
+:link: ctk:io/ingestr#amazon-kinesis-to-cratedb
+:link-type: ref
Fallback: keep the URL but suppress the lint just above the directive:
+<!-- markdownlint-disable-next-line MD034 -->
:{grid-item-card} Ingestr Table Loader
:link: https://cratedb-toolkit.readthedocs.io/io/ingestr/#amazon-kinesis-to-cratedb
:link-type: url
To verify other bare URLs in cards after this PR:
🏁 Script executed:
#!/bin/bash
# Find grid-item-card :link: fields that contain bare http(s) URLs
rg -nA2 $'^:::\\{grid-item-card\\}' -g 'docs/**/*.md' | rg -n '^[[:space:]]*:link:[[:space:]]+https?://'
Length of output: 103
I’ll check whether an intersphinx alias like ctk
is defined in the Sphinx config before finalizing the recommendation.
🏁 Script executed:
#!/bin/bash
# 1. Locate any intersphinx_mapping definitions in docs conf files
rg -n "intersphinx_mapping" -g "docs/**/conf*.py"
# 2. Search for a 'ctk' alias anywhere in the docs directory
rg -n "ctk" -g "docs"
Length of output: 469
I’ll inspect the intersphinx_mapping
in docs/conf.py
to see if there’s an alias we can use (e.g. ctk
).
🏁 Script executed:
#!/bin/bash
# Show the mapping update block
rg -n "intersphinx_mapping.update" -g docs/conf.py -A8 -B4
# List all mapping keys defined in the file
grep -Po "['\"]\w+['\"](?=\s*:)" docs/conf.py | sort -u
Length of output: 877
Use intersphinx ref for the CrateDB Toolkit link
We’ve confirmed that the ctk
alias is defined in docs/conf.py
(mapping to https://cratedb-toolkit.readthedocs.io/
), so we can replace the bare URL with an intersphinx reference.
File: docs/integrate/aws-kinesis/index.md (lines 57–63)
::: {grid-item-card} Ingestr Table Loader
-:link: https://cratedb-toolkit.readthedocs.io/io/ingestr/#amazon-kinesis-to-cratedb
-:link-type: url
+:link: ctk:io/ingestr#amazon-kinesis-to-cratedb
+:link-type: ref
Relay Kinesis stream into CrateDB.
:::
No other bare HTTP URLs were found in grid-item-card
directives.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
::::{grid} | |
:::{grid-item-card} Ingestr Table Loader | |
:link: https://cratedb-toolkit.readthedocs.io/io/ingestr/#amazon-kinesis-to-cratedb | |
:link-type: url | |
Relay Kinesis stream into CrateDB. | |
::: | |
::::{grid} | |
:::{grid-item-card} Ingestr Table Loader | |
:link: ctk:io/ingestr#amazon-kinesis-to-cratedb | |
:link-type: ref | |
Relay Kinesis stream into CrateDB. | |
::: |
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
60-60: Bare URL used
(MD034, no-bare-urls)
🤖 Prompt for AI Agents
In docs/integrate/aws-kinesis/index.md around lines 57 to 63, replace the bare
HTTP URL used in the grid-item-card :link: with an intersphinx reference using
the existing ctk alias; update the :link: value to point to the CrateDB Toolkit
target via the ctk intersphinx role (e.g. the equivalent ctk reference to
io/ingestr/#amazon-kinesis-to-cratedb) so the card uses the intersphinx-mapped
link instead of the hardcoded URL.
{h=200px loading=lazy} | ||
{h=200px loading=lazy} | ||
:::: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Image attribute typo: use height=...
instead of h=...
MyST/Sphinx expects height
(and/or width
) as image attributes; h
won’t be recognized.
-{h=200px loading=lazy}
-{h=200px loading=lazy}
+{height=200px loading=lazy}
+{height=200px loading=lazy}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
{h=200px loading=lazy} | |
{h=200px loading=lazy} | |
:::: | |
{height=200px loading=lazy} | |
{height=200px loading=lazy} | |
:::: |
🤖 Prompt for AI Agents
In docs/integrate/cluvio/index.md around lines 24 to 26, the image attribute
uses the invalid short form `h=...`; replace `h=200px` with `height=200px`
(and/or add `width=...` if desired) for each image tag so MyST/Sphinx recognizes
the attribute; keep other attributes like `loading=lazy` unchanged.
::::{grid} 2 | ||
|
||
:::{grid-item-card} SSIS and CrateDB | ||
:link: https://github.com/crate/cratedb-examples/tree/main/application/microsoft-ssis | ||
:link-type: url | ||
Using SQL Server Integration Services with CrateDB. | ||
+++ | ||
A demo project which uses SSIS and ODBC to read and write data from CrateDB. | ||
::: | ||
|
||
- [Using SQL Server Integration Services with CrateDB] | ||
:::: | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
❓ Verification inconclusive
Ensure sphinx-design is enabled; silence markdownlint MD034 around 🔗
The grid/card syntax is from sphinx-design. Ensure the extension is enabled; otherwise this won’t render. Also, markdownlint flags a “bare URL” (MD034) for the 🔗 field; that’s a false positive in this directive context. Prefer suppressing the rule locally.
Apply this diff to suppress MD034 for this block:
-::::{grid} 2
+<!-- markdownlint-disable MD034 -->
+::::{grid} 2
@@
-::::
+::::
+<!-- markdownlint-enable MD034 -->
Verify sphinx-design is enabled and available:
🏁 Script executed:
#!/bin/bash
# Check that sphinx_design is enabled
rg -n "sphinx_design" docs/conf.py
# Optional: ensure the package is present in dependency files
fd -a requirements | xargs -I{} rg -n "sphinx-design" {}
fd -a requirements.txt pyproject.toml | xargs -I{} rg -n "sphinx-design" {}
Length of output: 277
Enable sphinx-design and suppress markdownlint MD034 around the grid/card directive
Please make the following updates:
• docs/conf.py
– Add "sphinx_design"
to the extensions
list so the grid/card syntax renders correctly.
• requirements*.txt or pyproject.toml
– Ensure the sphinx-design
package is listed in your documentation dependencies.
• docs/integrate/sql-server/index.md
– Wrap the grid/card block with markdownlint disable/enable comments to silence MD034 around the :link:
fields.
Suggested diffs:
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -XX,6 +XX,7 @@
extensions = [
"sphinx.ext.autodoc",
"sphinx.ext.napoleon",
+ "sphinx_design",
]
--- a/requirements.txt
+++ b/requirements.txt
@@
sphinx
+ sphinx-design
or add sphinx-design = "^1.0"
(or latest) under [tool.poetry.dependencies]
in pyproject.toml
.
--- a/docs/integrate/sql-server/index.md
+++ b/docs/integrate/sql-server/index.md
@@ -35,7 +35,9 @@
-::::{grid} 2
+<!-- markdownlint-disable MD034 -->
+::::{grid} 2
:::{grid-item-card} SSIS and CrateDB
:link: https://github.com/crate/cratedb-examples/tree/main/application/microsoft-ssis
@@ -46,7 +48,9 @@
::::
+<!-- markdownlint-enable MD034 -->
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
::::{grid} 2 | |
:::{grid-item-card} SSIS and CrateDB | |
:link: https://github.com/crate/cratedb-examples/tree/main/application/microsoft-ssis | |
:link-type: url | |
Using SQL Server Integration Services with CrateDB. | |
+++ | |
A demo project which uses SSIS and ODBC to read and write data from CrateDB. | |
::: | |
- [Using SQL Server Integration Services with CrateDB] | |
:::: | |
# docs/conf.py | |
extensions = [ | |
"sphinx.ext.autodoc", | |
"sphinx.ext.napoleon", | |
+ "sphinx_design", | |
] |
::::{grid} 2 | |
:::{grid-item-card} SSIS and CrateDB | |
:link: https://github.com/crate/cratedb-examples/tree/main/application/microsoft-ssis | |
:link-type: url | |
Using SQL Server Integration Services with CrateDB. | |
+++ | |
A demo project which uses SSIS and ODBC to read and write data from CrateDB. | |
::: | |
- [Using SQL Server Integration Services with CrateDB] | |
:::: | |
# requirements.txt | |
sphinx | |
+ sphinx-design |
::::{grid} 2 | |
:::{grid-item-card} SSIS and CrateDB | |
:link: https://github.com/crate/cratedb-examples/tree/main/application/microsoft-ssis | |
:link-type: url | |
Using SQL Server Integration Services with CrateDB. | |
+++ | |
A demo project which uses SSIS and ODBC to read and write data from CrateDB. | |
::: | |
- [Using SQL Server Integration Services with CrateDB] | |
:::: | |
<!-- docs/integrate/sql-server/index.md --> | |
<!-- markdownlint-disable MD034 --> | |
::::{grid} 2 | |
:::{grid-item-card} SSIS and CrateDB | |
:link: https://github.com/crate/cratedb-examples/tree/main/application/microsoft-ssis | |
:link-type: url | |
Using SQL Server Integration Services with CrateDB. | |
+++ | |
A demo project which uses SSIS and ODBC to read and write data from CrateDB. | |
::: | |
:::: | |
<!-- markdownlint-enable MD034 --> |
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
38-38: Bare URL used
(MD034, no-bare-urls)
🤖 Prompt for AI Agents
In docs/integrate/sql-server/index.md around lines 35–46, wrap the grid/card
block with markdownlint disable/enable comments to silence MD034 (e.g. add
markdownlint-disable MD034 before the ::: grid block and markdownlint-enable
MD034 after it); in docs/conf.py add "sphinx_design" to the Sphinx extensions
list so the grid/card directive renders; and add the sphinx-design package to
documentation dependencies (either in requirements*.txt or pyproject.toml under
[tool.poetry.dependencies] with an appropriate version like ^1.0).
::::{info-card} | ||
|
||
:::{grid-item} | ||
:columns: 8 | ||
|
||
{material-outlined}`manage_history;2em` **Streamlit 101 - A faster way to build and share data applications** | ||
|
||
Learn how to get started with Streamlit in building your own interactive data | ||
apps in no time. Streamlit is an open-source Python framework for data scientists | ||
and AI/ML engineers to deliver dynamic data apps – in only a few lines of code. | ||
::: | ||
|
||
:::{grid-item} | ||
:columns: 4 | ||
|
||
<iframe width="480" height="320" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> | ||
<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> | ||
::: | ||
|
||
_Streamlit 101 - A faster way to build and share data applications._ | ||
:::: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Invalid directive and structural issue: grid-item used outside a grid container.
::::{info-card}
is not a standard sphinx/myst or sphinx-design directive. Also, grid-item
directives must be nested inside a grid
container. This will cause build warnings/errors and break layout.
Use a grid container. If you want an “info” look, wrap the grid in a div with an appropriate class and style via CSS. Minimal fix:
-::::{info-card}
+::::{grid}
@@
-::::
+::::
Optional enhancement (wrapper + grid):
-::::{info-card}
+:::{div} .info-card
+::::
@@
-::::
+::::
+:::
Pick one approach; don’t use both.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
::::{info-card} | |
:::{grid-item} | |
:columns: 8 | |
{material-outlined}`manage_history;2em` **Streamlit 101 - A faster way to build and share data applications** | |
Learn how to get started with Streamlit in building your own interactive data | |
apps in no time. Streamlit is an open-source Python framework for data scientists | |
and AI/ML engineers to deliver dynamic data apps – in only a few lines of code. | |
::: | |
:::{grid-item} | |
:columns: 4 | |
<iframe width="480" height="320" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> | |
<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> | |
::: | |
_Streamlit 101 - A faster way to build and share data applications._ | |
:::: | |
::::{grid} | |
:::{grid-item} | |
:columns: 8 | |
{material-outlined}`manage_history;2em` **Streamlit 101 - A faster way to build and share data applications** | |
Learn how to get started with Streamlit in building your own interactive data | |
apps in no time. Streamlit is an open-source Python framework for data scientists | |
and AI/ML engineers to deliver dynamic data apps – in only a few lines of code. | |
::: | |
:::{grid-item} | |
:columns: 4 | |
<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> | |
::: | |
:::: |
🤖 Prompt for AI Agents
docs/integrate/streamlit/index.md lines 44-62: The fragment uses a nonstandard
'::::{info-card}' wrapper and places 'grid-item' directives outside a proper
'grid' container which will break the build; fix by removing the invalid
'info-card' directive and either (A) wrap the two grid-item blocks inside a
proper grid container (i.e., open a single grid block and nest both grid-item
directives directly inside it) or (B) if you want an informational visual, wrap
a proper grid inside a simple div/admonition with an "info" or "info-card" class
(create the div/admonition first, then include a valid grid block with the
grid-item children), ensuring only one approach is used and that every grid-item
is directly nested in its grid container.
<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> | ||
::: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Iframe embed: add height (or aspect-ratio) and tighten privacy defaults.
No height produces a 150px default in browsers and may distort the player. Also add a strict referrer policy.
Apply this diff (keeps your smaller footprint):
-<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
+<iframe width="240" height="135" loading="lazy" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="Streamlit 101 – video" frameborder="0" referrerpolicy="strict-origin-when-cross-origin" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
Alternatively, for responsive layout, wrap with a CSS class using aspect-ratio: 16/9
and set width: 100%; height: auto;
in CSS (iframes won’t honor height: auto
without a container trick).
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
<iframe width="240" loading="lazy" src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> | |
::: | |
<iframe | |
width="240" | |
height="135" | |
loading="lazy" | |
src="https://www.youtube-nocookie.com/embed/UI4f4iiVT6c?si=J0w5yG56Ld4fIXfm" | |
title="Streamlit 101 – video" | |
frameborder="0" | |
referrerpolicy="strict-origin-when-cross-origin" | |
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" | |
allowfullscreen | |
></iframe> | |
::: |
🤖 Prompt for AI Agents
In docs/integrate/streamlit/index.md around lines 59-60, the iframe lacks a
height (causing a 150px browser default) and misses stricter privacy defaults;
add either an explicit height or use an enclosing responsive class that applies
aspect-ratio: 16/9 and width: 100%/a fixed width, and add a strict referrer
policy (e.g., referrerpolicy="no-referrer") to the iframe; update the markup to
include the height/aspect-ratio via inline style or CSS class and add
referrerpolicy="no-referrer" (and optionally tighten sandbox/allow attributes if
needed for playback) so the player renders correctly and leaks no extra referrer
data.
data by translating drag-and-drop actions into data queries through an intuitive interface. | ||
|
||
{h=200px} | ||
{h=200px} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix non-standard image attribute; add lazy-loading
The attribute h=200px is not a standard MyST/HTML attribute and likely won’t be applied. Use height and consider loading=lazy for consistency/perf.
Apply this diff:
-{h=200px}
+{height=200px loading=lazy}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
{h=200px} | |
{height=200px loading=lazy} |
🤖 Prompt for AI Agents
In docs/integrate/tableau/index.md around line 17, replace the non-standard
attribute h=200px with a proper height attribute and add lazy-loading; change
the image attribute block to use height=200px and loading=lazy (e.g.
{height=200px loading=lazy}) so the height is applied correctly and
the image loads lazily for better performance.
```{div} .float-right | ||
[{width=180px loading=lazy}][Telegraf] | ||
``` | ||
```{div} .clearfix | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Confirm Sphinx-Design and CSS utilities are wired up
These blocks rely on the MyST {div}
directive and custom classes (.float-right
, .clearfix
). Please verify:
sphinx_design
is enabled indocs/conf.py
docs/_static/css/custom.css
is loaded and defines those classes
Run:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Check Sphinx extension:"
rg -n "sphinx_design" docs/conf.py || { echo "Missing sphinx_design in docs/conf.py"; exit 1; }
echo "Check custom CSS inclusion:"
rg -n "html_css_files\\s*=\\s*\\[" -n docs/conf.py -A 5 | sed -n 'p'
rg -n "custom\\.css" docs/conf.py || { echo "custom.css not referenced in conf.py"; exit 1; }
echo "Check CSS utility classes exist:"
fd -a custom.css docs/_static | while read -r css; do
echo "Scanning $css"
rg -n "\\.float-right|\\.clearfix" "$css" || { echo "Expected .float-right/.clearfix not found in $css"; exit 1; }
done
echo "OK: sphinx_design enabled and CSS utilities present."
Length of output: 205
Enable sphinx_design and verify CSS utilities
The documentation build currently fails to register MyST’s {div}
directive because sphinx_design
isn’t enabled. Please:
-
In
docs/conf.py
, add"sphinx_design"
to theextensions
list:extensions = [ + "sphinx_design", # …other extensions ]
-
Confirm
html_css_files
includes your custom CSS (e.g."css/custom.css"
). -
Verify that
docs/_static/css/custom.css
defines both.float-right
and.clearfix
.
Once these changes are in place, rebuild and confirm the floating div and clearfix utilities render as expected.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
```{div} .float-right | |
[{width=180px loading=lazy}][Telegraf] | |
``` | |
```{div} .clearfix | |
``` | |
extensions = [ | |
"sphinx_design", | |
# …other extensions | |
] |
🤖 Prompt for AI Agents
In docs/integrate/telegraf/index.md around lines 4–8: the MyST `{div}` directive
used for layout requires the sphinx_design extension and CSS utilities to be
available; edit docs/conf.py to add "sphinx_design" to the extensions list,
ensure html_css_files includes "css/custom.css" (or the correct path under
_static), and make sure docs/_static/css/custom.css defines the .float-right and
.clearfix classes; after making these changes rebuild the docs to confirm the
floating div and clearfix utilities render correctly.
About
After concluding the last mile of the higher-level shape/structure refactoring per GH-238 and GH-239, this patch drills down to the per-page level, touching a few bits of design/layout details across the board of the
integrate
backbone section. It provides better visual guidance by using more prominent card design elements over bare HTML link anchors.The patch also tunes down product card creep by tucking away verbose content using collapsibles.
Details
docs/integrate
Preview
Look at all leaf-node
index
pages within the backbone sectionintegrate
:https://cratedb-guide--241.org.readthedocs.build/integrate/
References