Skip to content

Conversation

iammajid
Copy link
Contributor

@iammajid iammajid commented Oct 8, 2025

This PR introduces our first customer success story showcasing how Walbusch GmbH & Co. KG successfully migrated from Boxcryptor to Cryptomator Hub.

@iammajid iammajid requested a review from tobihagemann October 8, 2025 09:17
Copy link
Contributor

coderabbitai bot commented Oct 8, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

Renames front-matter keys from case_studies_* to success_stories_* across solution pages (education and ngos, en/de) and updates the solutions template to use the new keys. Adds a success-stories section with index pages and new Hugo layouts (list and single), a new Walbusch success-story page (de/en), and a small teams-page block to surface a success story. Adds i18n entries for success_story_* (en/de) and quote delimiters, expands Book a Demo translations, and inserts a /success-stories nav item in data/nav.yaml.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • CuriousPurah

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed The title “Walbusch Success Story” succinctly identifies the primary change by naming the new customer success story being added, without extraneous details or unrelated information.
Description Check ✅ Passed The description directly summarizes the content and intent of the PR by stating that it introduces the first customer success story for Walbusch, which aligns clearly with the changeset.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8c206b7 and 5c9c335.

📒 Files selected for processing (6)
  • content/success-stories/walbusch.de.html (1 hunks)
  • content/success-stories/walbusch.en.html (1 hunks)
  • i18n/de.yaml (2 hunks)
  • i18n/en.yaml (3 hunks)
  • layouts/for-teams/single.html (1 hunks)
  • layouts/success-stories/single.html (1 hunks)

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
layouts/solutions/single.html (1)

115-156: Make success story cards actual links (accessibility + UX).

Cards show a pointer cursor but aren’t clickable/focusable. Add an optional slug and wrap with an overlay anchor.

-      {{ range .Params.success_stories }}
+      {{ range .Params.success_stories }}
       <article class="white-box overflow-hidden relative {{ if not .comingsoon }}group cursor-pointer{{ end }}">
         <figure class="aspect-video relative">
@@
         <div class="p-6 {{ if .comingsoon }}opacity-70{{ end }}">
           <h3 class="font-h2 mb-4 {{ if not .comingsoon }}group-hover:text-primary transition-colors duration-200{{ end }}">
             {{ if .comingsoon }}
               <span class="text-gray-600">{{ .title }}</span>
             {{ else }}
               <span class="text-link">{{ .title }}</span>
             {{ end }}
           </h3>
           <p class="font-p leading-relaxed {{ if .comingsoon }}text-gray-500{{ else }}text-gray-700{{ end }}">{{ .description | safeHTML }}</p>
         </div>
+        {{ if and (not .comingsoon) .slug }}
+        <a class="absolute inset-0 z-10" href="{{ printf "%s/success-stories/%s/" $.Site.LanguagePrefix .slug }}" aria-label="{{ .title }}"></a>
+        {{ end }}
       </article>

Follow-up: add slug fields to items (e.g., slug: "walbusch") when enabling links.

🧹 Nitpick comments (3)
content/success-stories/walbusch.de.html (1)

37-42: Optional: fix German quotes and spacing.

  • Use German closing quotes („…“) consistently.
  • Remove extra space before the dash.

Examples:

  • „… eingeführt – von der …“
  • „… gering bleibt“, … „Genau das ….“
layouts/success-stories/single.html (1)

6-8: Localize the “SUCCESS STORY” badge.

Use an i18n key for this label to support de/en.

-        <span class="bg-primary text-white px-3 py-1 rounded-full text-sm font-medium uppercase tracking-wide">SUCCESS STORY</span>
+        <span class="bg-primary text-white px-3 py-1 rounded-full text-sm font-medium uppercase tracking-wide">{{ i18n "success_story_badge" . }}</span>
i18n/de.yaml (1)

3-20: Use informal singular imperative and “Jetzt loslegen” for success-story CTA

  • Replace success_story_cta_description:
    “Entdecken Sie, wie Cryptomator Hub auch Ihr Unternehmen bei der sicheren Verwaltung sensibler Daten unterstützen kann.”
    → “Entdecke, wie Cryptomator Hub auch euer Unternehmen bei der sicheren Verwaltung sensibler Daten unterstützen kann.”
  • Change success_story_cta_get_started from “Jetzt starten” to “Jetzt loslegen”
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f95550b and 6117dfa.

⛔ Files ignored due to path filters (2)
  • static/img/success-stories/walbusch-logo.svg is excluded by !**/*.svg
  • static/img/success-stories/walbusch.png is excluded by !**/*.png
📒 Files selected for processing (10)
  • content/solutions/education.de.html (1 hunks)
  • content/solutions/education.en.html (1 hunks)
  • content/solutions/ngos.de.html (1 hunks)
  • content/solutions/ngos.en.html (1 hunks)
  • content/success-stories/walbusch.de.html (1 hunks)
  • content/success-stories/walbusch.en.html (1 hunks)
  • i18n/de.yaml (1 hunks)
  • i18n/en.yaml (1 hunks)
  • layouts/solutions/single.html (1 hunks)
  • layouts/success-stories/single.html (1 hunks)
🔇 Additional comments (8)
content/solutions/education.de.html (2)

85-101: Rename to success_stories_ looks consistent with template changes.*

Keys align with layouts/solutions/single.html updates.


102-107: Same here, structure and keys are consistent.

content/solutions/ngos.de.html (2)

88-104: Success stories key migration is correct.

Matches updated layout expectations.


105-110: Keys and structure consistent.

content/solutions/ngos.en.html (2)

88-104: Success stories key migration is correct (EN).

Aligned with layouts/solutions/single.html.


105-110: Items structure preserved; OK.

content/solutions/education.en.html (2)

88-104: Success stories key migration is correct (EN).

Matches the updated layouts.


105-110: Items retained under new key; OK.

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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

🧹 Nitpick comments (4)
layouts/success-stories/list.html (3)

9-9: Sort stories (and consider pagination) for predictable ordering and scalability.

Use weight/date for ordering and Hugo’s paginator if the list grows.

-      {{ range .Pages }}
+      {{ $pages := .Pages.ByWeight }}
+      {{ range $pages }}

Optional pagination:

{{ $p := .Paginate .Pages.ByWeight }}
{{ range $p.Pages }}
  ...
{{ end }}
{{ template "_internal/pagination.html" . }}

12-17: Normalize image URLs and add lazy loading.

Ensure paths respect baseURL/lang and improve perf.

-            <a href="{{ .RelPermalink }}">
+            <a href="{{ .RelPermalink }}">
               {{ if .Params.cardimage }}
-                <img class="size-full object-cover" src="{{ .Params.cardimage }}" alt="{{ .Title }}">
+                <img class="size-full object-cover" src="{{ .Params.cardimage | relURL }}" alt="{{ .Title }}" loading="lazy">
               {{ else }}
-                <img class="size-full object-contain p-6" src="/img/logo.svg" alt="{{ .Title }}">
+                <img class="size-full object-contain p-6" src="{{ "/img/logo.svg" | relURL }}" alt="{{ .Title }}" loading="lazy">
               {{ end }}

21-25: Provide robust fallbacks for missing card fields (title/text).

Avoid empty cards if front matter lacks these params.

-            <h2 class="font-h2 mb-4">
-              <a class="text-link" href="{{ .RelPermalink }}">{{ .Params.cardtitle }}</a>
-            </h2>
-            <p class="font-p">{{ .Params.cardtext }}</p>
+            <h2 class="font-h2 mb-4">
+              <a class="text-link" href="{{ .RelPermalink }}">{{ .Params.cardtitle | default .Title }}</a>
+            </h2>
+            {{ with .Params.cardtext }}
+              <p class="font-p">{{ . }}</p>
+            {{ else }}
+              {{ with .Summary }}<p class="font-p">{{ . }}</p>{{ else if .Description }}<p class="font-p">{{ .Description }}</p>{{ end }}
+            {{ end }}

Optional: support an explicit alt, e.g., alt="{{ .Params.cardimageAlt | default .Title }}".

data/nav.yaml (1)

21-24: Move "/success-stories" above the separator
Place it between "/compliance" and the separator to maintain the intended grouping.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 900efec and 8c206b7.

⛔ Files ignored due to path filters (1)
  • static/img/success-stories/walbusch.png is excluded by !**/*.png
📒 Files selected for processing (7)
  • content/success-stories/_index.de.md (1 hunks)
  • content/success-stories/_index.en.md (1 hunks)
  • content/success-stories/walbusch.de.html (1 hunks)
  • content/success-stories/walbusch.en.html (1 hunks)
  • data/nav.yaml (1 hunks)
  • layouts/success-stories/list.html (1 hunks)
  • layouts/success-stories/single.html (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • content/success-stories/_index.de.md
  • content/success-stories/_index.en.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • content/success-stories/walbusch.en.html
  • layouts/success-stories/single.html
  • content/success-stories/walbusch.de.html
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-07-07T13:13:38.304Z
Learnt from: tobihagemann
PR: cryptomator/cryptomator.github.io#129
File: data/nav.yaml:9-9
Timestamp: 2025-07-07T13:13:38.304Z
Learning: In data/nav.yaml, the navigation structure supports both dropdown sections (with Title and Dropdown arrays) and top-level direct links (with just Path). Top-level items like "/solutions" and "/pricing" are intended to be at the same indentation level as the dropdown sections, not nested inside them.

Applied to files:

  • data/nav.yaml

@tobihagemann tobihagemann merged commit c2dac79 into develop Oct 10, 2025
4 of 5 checks passed
@tobihagemann tobihagemann deleted the feature/success-story-wahlbusch branch October 10, 2025 14:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants