Skip to content

feat(case-study): add Espai de Dades — PortalJS Cloud portal for Catalonia's third sector#1606

Merged
demenech merged 1 commit into
mainfrom
feat/espai-de-dades-case-study
Jun 23, 2026
Merged

feat(case-study): add Espai de Dades — PortalJS Cloud portal for Catalonia's third sector#1606
demenech merged 1 commit into
mainfrom
feat/espai-de-dades-case-study

Conversation

@popovayoana

@popovayoana popovayoana commented Jun 23, 2026

Copy link
Copy Markdown
Member

Summary

New case study for Espai de Dades — a public-facing open data portal built by OneTandem for Taula d'entitats del Tercer Sector de Catalunya using PortalJS Cloud.

Depends on #1608 — merge the Journey layout redesign first.

What's included

  • content/case-studies/espai-de-dades-third-sector-data-portal.md — full case study with:
    • 5-paragraph narrative (context, before state, OneTandem's discovery, custom taxonomy, outcome)
    • Hyperlinks to client (tercersector.cat), partner (onetandem.com), PortalJS Cloud, and live portal
    • Challenge / Solution / Impact content with inline links
    • 6 features, testimonial (Pere Rovira, OneTandem), 4 FAQs
    • Keystats: 139 datasets live / Full Catalan localisation / Zero infra overhead
  • 5 images: hero (Catalunya landscape), 3 portal screenshots, OneTandem logo

Test plan

  • Visit /case-studies/espai-de-dades-third-sector-data-portal — hero, story intro, Journey columns, features, testimonial, portal screenshots, FAQs, CTA all render
  • Narrative section appears before Challenge / Solution / Impact (requires refactor(case-study): redesign Journey section — borderless editorial layout #1608)
  • All hyperlinks in narrative and Journey cards open correctly in new tab
  • Keystats, quote block, and portal screenshots display correctly
  • No hydration errors in browser console

🤖 Generated with Claude Code

@vercel

vercel Bot commented Jun 23, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
www.portaljs.com Ready Ready Preview, Comment Jun 23, 2026 3:28pm
7 Skipped Deployments
Project Deployment Actions Updated (UTC)
portaljs-alan-turing Ignored Ignored Preview Jun 23, 2026 3:28pm
portaljs-ckan Ignored Ignored Preview Jun 23, 2026 3:28pm
portaljs-ckan-ssg Ignored Ignored Preview Jun 23, 2026 3:28pm
portaljs-fivethirtyeight Ignored Ignored Preview Jun 23, 2026 3:28pm
portaljs-git-example Ignored Ignored Preview Jun 23, 2026 3:28pm
portaljs-learn Ignored Ignored Preview Jun 23, 2026 3:28pm
portaljs-openspending Ignored Ignored Preview Jun 23, 2026 3:28pm

Request Review

@changeset-bot

changeset-bot Bot commented Jun 23, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 9a1570f

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai

coderabbitai Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

A new case study markdown file is added for "Espai de Dades / Open Data Portal for Catalonia's Third Sector." It contains frontmatter metadata, keystats, problem/solution/results sections, a features list, a testimonial quote, a portal link, four FAQ entries, and a multi-paragraph narrative.

Changes

Espai de Dades Case Study

Layer / File(s) Summary
Case study frontmatter, sections, FAQs, and narrative
site/content/case-studies/espai-de-dades-third-sector-data-portal.md
Adds the complete case study file: frontmatter (type, date, SEO titles, featured/additional images, author, keystats), problem/solution/results sections, features array (launch speed, Catalan localisation, domain categorisation, dataset catalogue, managed infrastructure, non-technical management), quote with attribution and logo, portal link, four faqs Q&A entries (localisation, àmbits/col·lectius taxonomy, launch timeline, non-technical administration), and a narrative block describing Taula's umbrella role, pre-2025 state, partner selection, and the 139-dataset launch.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • datopian/portaljs#1419: Updates the features data structure and rendering logic in casestudy.tsx, which the new case study's features frontmatter array must match.
  • datopian/portaljs#1597: Refactors casestudy.tsx to render FAQSection from frontmatter faqs and portal fields, which are both introduced by this new case study file.
  • datopian/portaljs#1598: Adds faqs frontmatter to an existing case study markdown file, directly paralleling the faqs block added here.

Suggested reviewers

  • demenech
  • willy1989cv

Poem

🐇 Hop, hop, through the Catalan hills I go,
A portal blooms where data used to hide below,
One hundred thirty-nine datasets, neatly lined,
With àmbits and col·lectius carefully defined.
Taula's third sector shines — the rabbit nods with cheer! 🌟

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title accurately captures the main addition: a new case study for Espai de Dades, a PortalJS Cloud portal for Catalonia's third sector, matching the core content change in the PR.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/espai-de-dades-case-study

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@site/layouts/casestudy.tsx`:
- Around line 374-376: Replace the span element that contains "The story" text
with an h2 heading element while preserving all the existing className
attributes (font-mono text-xs font-semibold uppercase tracking-[0.18em]
text-blue-600 dark:text-blue-400). This improves accessibility for assistive
technologies by using a semantic heading element instead of a generic span for
the section title.
- Around line 743-745: The inline arrow SVG element within the CTA link is
decorative and should be hidden from assistive technologies to prevent
unnecessary screen reader announcements. Add the aria-hidden="true" attribute to
the SVG element that contains the path with the arrow icon (the one with
viewBox="0 0 16 16") to mark it as purely decorative and exclude it from
accessibility announcements.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 0650b7a7-5ccf-43f5-b085-ac5759370621

📥 Commits

Reviewing files that changed from the base of the PR and between f1b5dd9 and 9336d22.

📒 Files selected for processing (7)
  • site/content/case-studies/espai-de-dades-third-sector-data-portal.md
  • site/layouts/casestudy.tsx
  • site/public/images/casestudies/espai-de-dades-dataset.webp
  • site/public/images/casestudies/espai-de-dades-featured.webp
  • site/public/images/casestudies/espai-de-dades-homepage.webp
  • site/public/images/casestudies/espai-de-dades-search.webp
  • site/public/images/casestudies/onetandem-logo.webp

Comment thread site/layouts/casestudy.tsx Outdated
Comment on lines +374 to +376
<span className="font-mono text-xs font-semibold uppercase tracking-[0.18em] text-blue-600 dark:text-blue-400">
The story
</span>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use a semantic heading element for the section title.

Line 374 renders the section title with a <span>, which weakens heading navigation for assistive tech. Use an h2 (or the correct heading level) with the same classes.

Suggested fix
-        <span className="font-mono text-xs font-semibold uppercase tracking-[0.18em] text-blue-600 dark:text-blue-400">
+        <h2 className="font-mono text-xs font-semibold uppercase tracking-[0.18em] text-blue-600 dark:text-blue-400">
           The story
-        </span>
+        </h2>
📝 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.

Suggested change
<span className="font-mono text-xs font-semibold uppercase tracking-[0.18em] text-blue-600 dark:text-blue-400">
The story
</span>
<h2 className="font-mono text-xs font-semibold uppercase tracking-[0.18em] text-blue-600 dark:text-blue-400">
The story
</h2>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@site/layouts/casestudy.tsx` around lines 374 - 376, Replace the span element
that contains "The story" text with an h2 heading element while preserving all
the existing className attributes (font-mono text-xs font-semibold uppercase
tracking-[0.18em] text-blue-600 dark:text-blue-400). This improves accessibility
for assistive technologies by using a semantic heading element instead of a
generic span for the section title.

Comment thread site/layouts/casestudy.tsx Outdated
Comment on lines 743 to 745
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="w-4 h-4">
<path d="M3 8h10M9 4l4 4-4 4" />
</svg>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Hide decorative CTA SVG from assistive technologies.

The inline arrow is decorative; mark it aria-hidden and non-focusable to avoid noisy link announcements.

Suggested fix
-                  <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="w-4 h-4">
+                  <svg
+                    viewBox="0 0 16 16"
+                    fill="none"
+                    stroke="currentColor"
+                    strokeWidth="2"
+                    strokeLinecap="round"
+                    strokeLinejoin="round"
+                    className="w-4 h-4"
+                    aria-hidden="true"
+                    focusable="false"
+                  >
                     <path d="M3 8h10M9 4l4 4-4 4" />
                   </svg>
📝 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.

Suggested change
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="w-4 h-4">
<path d="M3 8h10M9 4l4 4-4 4" />
</svg>
<svg
viewBox="0 0 16 16"
fill="none"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
className="w-4 h-4"
aria-hidden="true"
focusable="false"
>
<path d="M3 8h10M9 4l4 4-4 4" />
</svg>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@site/layouts/casestudy.tsx` around lines 743 - 745, The inline arrow SVG
element within the CTA link is decorative and should be hidden from assistive
technologies to prevent unnecessary screen reader announcements. Add the
aria-hidden="true" attribute to the SVG element that contains the path with the
arrow icon (the one with viewBox="0 0 16 16") to mark it as purely decorative
and exclude it from accessibility announcements.

…lonia's third sector

New case study for Espai de Dades, built by OneTandem for Taula d'entitats
del Tercer Sector de Catalunya. Includes hero image, 3 portal screenshots,
and OneTandem logo. Content covers context narrative, challenge/solution/impact,
6 features, testimonial, FAQ, and hyperlinks to client and partner sites.

Depends on: feat/casestudy-journey-redesign

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@popovayoana popovayoana force-pushed the feat/espai-de-dades-case-study branch from 9336d22 to 9a1570f Compare June 23, 2026 15:27
@popovayoana popovayoana changed the title feat(case-study): add Espai de Dades case study + redesign Journey section feat(case-study): add Espai de Dades — PortalJS Cloud portal for Catalonia's third sector Jun 23, 2026

@demenech demenech left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@demenech demenech merged commit 14a068e into main Jun 23, 2026
10 checks passed
@demenech demenech deleted the feat/espai-de-dades-case-study branch June 23, 2026 19:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants