Skip to content

feat(blog): add CipherStash searchable encryption cross-post - #8119

Merged
ankur-arch merged 2 commits into
prisma:mainfrom
coderdan:dan/cipherstash-searchable-encryption-post
Jul 30, 2026
Merged

feat(blog): add CipherStash searchable encryption cross-post#8119
ankur-arch merged 2 commits into
prisma:mainfrom
coderdan:dan/cipherstash-searchable-encryption-post

Conversation

@coderdan

@coderdan coderdan commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

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.

Draft: the searchable encryption diagram is being revised.
Everything else in here is ready for review.

Please look at these first

  • The canonical URL points at a page that isn't live yet. The post sets canonicalUrl to https://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.
  • Naming: the post says "Prisma 8 RC1" throughout. Your docs use "Prisma Next" and describe it as Early Access (~574 mentions vs 2 for "Prisma 8"), and pris.ly/pn-cipherstash resolves to prisma.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.
  • The Will Madden quote is included with sign-off on our end. Flagging it so someone at Prisma confirms the wording before this ships.

Changes

The postapps/blog/content/blog/search-encrypted-data-with-prisma-next-and-cipherstash/

Converted from Markdoc to this repo's MDX conventions:

Original Here
{% eyebrow index="01" label="Problem" … %} ### Problem 1: … / ### 1. … headings (keeps them in the TOC)
{% figure src caption %} markdown image + italic caption line, matching existing posts
{% 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's content-create-hero-image skill rather than reusing our CipherStash-branded card.

canonicalUrl frontmatter supportsource.config.ts, src/app/(blog)/[slug]/page.tsx

There was no way to point a post's canonical at another domain: alternates.canonical was hardcoded to the Prisma URL. Added an optional canonicalUrl field that feeds the canonical link tag, og:url, and mainEntityOfPage/url in 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 profilesrc/lib/author-bios.ts, public/authors/dan-draper.png

First-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 — passes
  • pnpm --filter blog lint:links — 0 errors
  • oxfmt --check / oxlint on the changed files — clean (the one warning is a pre-existing unused cn import in page.tsx)
  • Rendered locally: post, blog index card, and /blog/author/dan-draper all 200; all seven images resolve; canonical, og:url, and JSON-LD all emit the CipherStash URL
  • Spellcheck and lychee workflows are scoped to docs, so they don't cover this
  • packages/eclipse fails types:check on codeblock.tsx on main already — untouched here

Notes

  • No Linear issue, since this comes from outside the org — happy to add a reference if a maintainer creates one.
  • The hero SVG is ~239 KB because the brand fonts are embedded whole; the skill's subsetting path needs 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

    • Updated an existing blog post on searchable field-level encryption with Prisma and CipherStash to improve readability and callout wording.
    • Added an author bio for Dan Draper, including biography and social links.
  • SEO Improvements

    • Added support for per-post custom canonical URLs, consistently applying them to both metadata and structured data.
    • Ensures syndicated/cross-posted articles are indexed as the original source.

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.
@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown

@coderdan is attempting to deploy a commit to the Prisma Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Updates 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.

Changes

Blog publishing updates

Layer / File(s) Summary
Searchable encryption article updates
apps/blog/content/blog/search-encrypted-data-with-prisma-next-and-cipherstash/index.mdx
Renames and relevels article headings and changes the DLAC question admonition from warning to note without changing the surrounding content.
Canonical URL metadata
apps/blog/source.config.ts, apps/blog/src/app/(blog)/[slug]/page.tsx
Adds an optional URL-validated canonicalUrl frontmatter field and uses it for JSON-LD, canonical metadata, and Open Graph URLs, with a page URL fallback.
Author metadata
apps/blog/src/lib/author-bios.ts
Adds Dan Draper’s biography and X, LinkedIn, and GitHub profile URLs to the author dataset.

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
Loading

Possibly related PRs

  • prisma/web#8085: Extends the same shared author bio dataset with another author entry.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: adding a CipherStash searchable encryption blog cross-post.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with 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.

❤️ 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.

🧹 Nitpick comments (1)
apps/blog/source.config.ts (1)

45-50: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use 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

📥 Commits

Reviewing files that changed from the base of the PR and between 002cbf6 and 200008d.

⛔ Files ignored due to path filters (6)
  • apps/blog/public/authors/dan-draper.png is excluded by !**/*.png
  • apps/blog/public/search-encrypted-data-with-prisma-next-and-cipherstash/imgs/encrypted-data-flow.svg is excluded by !**/*.svg
  • apps/blog/public/search-encrypted-data-with-prisma-next-and-cipherstash/imgs/hero.svg is excluded by !**/*.svg
  • apps/blog/public/search-encrypted-data-with-prisma-next-and-cipherstash/imgs/meta.png is excluded by !**/*.png
  • apps/blog/public/search-encrypted-data-with-prisma-next-and-cipherstash/imgs/postgres-queries.png is excluded by !**/*.png
  • apps/blog/public/search-encrypted-data-with-prisma-next-and-cipherstash/imgs/studio-encrypted-columns.png is excluded by !**/*.png
📒 Files selected for processing (4)
  • apps/blog/content/blog/search-encrypted-data-with-prisma-next-and-cipherstash/index.mdx
  • apps/blog/source.config.ts
  • apps/blog/src/app/(blog)/[slug]/page.tsx
  • apps/blog/src/lib/author-bios.ts

coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 30, 2026
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.
@coderdan
coderdan marked this pull request as draft July 30, 2026 11:44
@ankur-arch
ankur-arch marked this pull request as ready for review July 30, 2026 13:58
@ankur-arch
ankur-arch merged commit fbca6c9 into prisma:main Jul 30, 2026
5 checks passed
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