feat(blog): add CipherStash searchable encryption cross-post - #8119
Conversation
Adds "Search encrypted data with Prisma 8 and CipherStash", a partner post announcing first-class CipherStash support. The original is published on the CipherStash blog, so the post declares that copy as its canonical URL. Supporting changes: - `canonicalUrl` frontmatter field on the blog collection, wired into the canonical link tag, og:url, and the BlogPosting JSON-LD. Posts without it are unaffected. - Author bio and avatar for Dan Draper (CipherStash), a first-time contributor to this blog. Linear: n/a — external contribution, no Linear issue. Happy to attach one if a Prisma maintainer creates it.
|
@coderdan is attempting to deploy a commit to the Prisma Team on Vercel. A member of the Team first needs to authorize it. |
WalkthroughUpdates the CipherStash article’s headings and DLAC callout, adds Dan Draper’s author profile, and introduces optional canonical URL frontmatter used in JSON-LD, canonical metadata, and Open Graph metadata. ChangesBlog publishing updates
Estimated code review effort: 2 (Simple) | ~10 minutes Sequence Diagram(s)sequenceDiagram
participant Frontmatter
participant BlogPage
participant SearchEngines
Frontmatter->>BlogPage: Provide optional canonicalUrl
BlogPage->>BlogPage: Select canonicalUrl or page URL fallback
BlogPage->>SearchEngines: Emit JSON-LD and metadata canonical URLs
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
apps/blog/source.config.ts (1)
45-50: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winUse Zod 4's top-level
z.url()instead of the deprecated.url()chain.Zod 4 promotes string-format validators to top-level functions;
z.string().url()still works but is deprecated and slated for removal in a future major version.♻️ Proposed fix
- canonicalUrl: z.string().url().optional(), + canonicalUrl: z.url().optional(),🤖 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 `@apps/blog/source.config.ts` around lines 45 - 50, Update the canonicalUrl schema field to use Zod 4’s top-level z.url() validator instead of chaining .url() onto z.string(), while preserving its optional behavior.
🤖 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.
Nitpick comments:
In `@apps/blog/source.config.ts`:
- Around line 45-50: Update the canonicalUrl schema field to use Zod 4’s
top-level z.url() validator instead of chaining .url() onto z.string(), while
preserving its optional behavior.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: dfd74080-d874-41bb-b859-8cf852379c30
⛔ Files ignored due to path filters (6)
apps/blog/public/authors/dan-draper.pngis excluded by!**/*.pngapps/blog/public/search-encrypted-data-with-prisma-next-and-cipherstash/imgs/encrypted-data-flow.svgis excluded by!**/*.svgapps/blog/public/search-encrypted-data-with-prisma-next-and-cipherstash/imgs/hero.svgis excluded by!**/*.svgapps/blog/public/search-encrypted-data-with-prisma-next-and-cipherstash/imgs/meta.pngis excluded by!**/*.pngapps/blog/public/search-encrypted-data-with-prisma-next-and-cipherstash/imgs/postgres-queries.pngis excluded by!**/*.pngapps/blog/public/search-encrypted-data-with-prisma-next-and-cipherstash/imgs/studio-encrypted-columns.pngis excluded by!**/*.png
📒 Files selected for processing (4)
apps/blog/content/blog/search-encrypted-data-with-prisma-next-and-cipherstash/index.mdxapps/blog/source.config.tsapps/blog/src/app/(blog)/[slug]/page.tsxapps/blog/src/lib/author-bios.ts
Mirrors the heading changes made on the CipherStash version of the post (cipherstash/cipherstash-js-suite#586), and switches the DLAC callout from `warning` to `note` so it no longer renders red — matching the other callout in the post. Linear: n/a — external contribution, no Linear issue.
Cross-post of the CipherStash announcement of first-class support for Prisma, published in parallel on the CipherStash blog.
The body prose is unchanged from the version we're publishing; only the frontmatter and the Markdoc-specific syntax were converted for this repo.
Please look at these first
canonicalUrltohttps://cipherstash.com/blog/search-encrypted-data-with-prisma-next-and-cipherstash, which currently 404s — our post is still in review. Please don't merge this ahead of our publish, or hold it until we confirm the URL is live. Happy to drop the canonical entirely if you'd rather this copy rank on its own.pris.ly/pn-cipherstashresolves toprisma.io/docs/orm/next. We kept our original wording rather than guess at your launch timing — tell us which you want and we'll change it here and on our side.Changes
The post —
apps/blog/content/blog/search-encrypted-data-with-prisma-next-and-cipherstash/Converted from Markdoc to this repo's MDX conventions:
{% eyebrow index="01" label="Problem" … %}### Problem 1: …/### 1. …headings (keeps them in the TOC){% figure src caption %}{% quote %}<Quotes>{% callout %}:::note[…]Images live in
public/<slug>/imgs/. The hero and meta image are new, generated in the Eclipse house style via the repo'scontent-create-hero-imageskill rather than reusing our CipherStash-branded card.canonicalUrlfrontmatter support —source.config.ts,src/app/(blog)/[slug]/page.tsxThere was no way to point a post's canonical at another domain:
alternates.canonicalwas hardcoded to the Prisma URL. Added an optionalcanonicalUrlfield that feeds the canonical link tag,og:url, andmainEntityOfPage/urlin the BlogPosting JSON-LD. Posts that don't set it behave exactly as before.This is a general-purpose addition rather than something specific to this post, so it's the part most worth a second opinion. Happy to split it into its own PR.
Author profile —
src/lib/author-bios.ts,public/authors/dan-draper.pngFirst-time contributor here, so this adds a bio entry and avatar. Every existing bio is a Prisma employee; ours notes the CipherStash affiliation. Please reword if it doesn't fit the section's voice.
Validation
pnpm --filter blog types:check— passespnpm --filter blog lint:links— 0 errorsoxfmt --check/oxlinton the changed files — clean (the one warning is a pre-existing unusedcnimport inpage.tsx)/blog/author/dan-draperall 200; all seven images resolve; canonical,og:url, and JSON-LD all emit the CipherStash URLdocs, so they don't cover thispackages/eclipsefailstypes:checkoncodeblock.tsxonmainalready — untouched hereNotes
fonttools+brotli, which I didn't want to install into the environment. Regenerating with those available would bring it to ~25 KB.Summary by CodeRabbit
Content Updates
SEO Improvements