Skip to content

feat: DR-7740 showcase#7734

Open
carlagn wants to merge 15 commits intomainfrom
feat/DR-7740-showcase
Open

feat: DR-7740 showcase#7734
carlagn wants to merge 15 commits intomainfrom
feat/DR-7740-showcase

Conversation

@carlagn
Copy link
Copy Markdown
Contributor

@carlagn carlagn commented Mar 31, 2026

Summary by CodeRabbit

  • New Features

    • Added a Showcase page with a hero, “Made with Prisma” badge, enterprise stories carousel, “Trusted by teams” logos, and a community projects gallery with external links.
    • Interactive, accessible horizontal carousel with snap scrolling, next/previous controls, and responsive navigation.
    • Reusable post/project cards showing images, titles, excerpts, and links.
  • Chores

    • Added the dataset powering showcase stories and community projects.
  • Style

    • Navigation styling/behavior updated to recognize the Showcase route.
@vercel
Copy link
Copy Markdown

vercel bot commented Mar 31, 2026

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

Project Deployment Actions Updated (UTC)
blog Ready Ready Preview, Comment Apr 1, 2026 9:38am
docs Ready Ready Preview, Comment Apr 1, 2026 9:38am
eclipse Ready Ready Preview, Comment Apr 1, 2026 9:38am
site Ready Ready Preview, Comment Apr 1, 2026 9:38am

Request Review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 31, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds a new Next.js /showcase page with metadata and a default page component; introduces ShowcaseScrollCarousel and PostCard components; adds a large showcase dataset; and updates navigation/footer color logic to include the /showcase route.

Changes

Cohort / File(s) Summary
Showcase Page
apps/site/src/app/showcase/page.tsx
New Next.js route page exporting metadata: Metadata and default EnterprisePage. Renders hero, "Trusted by" logos, ShowcaseScrollCarousel (uses data.stories), and a "Built with Prisma" grid of community project Card links.
Showcase UI Components
apps/site/src/components/showcase/components.tsx, apps/site/src/components/showcase/post-card.tsx
Added ShowcaseScrollCarousel (client) with snap-scrolling, scroll/resize/ResizeObserver tracking, and navigation buttons. Added PostCard and PostCardItem types/component rendering cards with optional responsive next/image, conditional loading/priority, and composed Tailwind classes.
Showcase Data
apps/site/src/data/showcase.ts
New data module exporting default showcaseData containing stories and communityProjects arrays with images/logos, URLs, tags, quotes, and optional light-mode assets. Large content addition (+1159 lines).
Navigation Styling
apps/site/src/components/navigation-wrapper.tsx
Extended ORM whitelist by adding "/showcase" so navigation/footer color-variant logic selects the ORM variant for that route (single-line change).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 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 (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: DR-7740 showcase' clearly identifies the main change: adding a new showcase feature. It includes the ticket reference (DR-7740) and describes the primary addition.

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


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

@argos-ci
Copy link
Copy Markdown

argos-ci bot commented Mar 31, 2026

The latest updates on your projects. Learn more about Argos notifications ↗︎

Build Status Details Updated (UTC)
default (Inspect) ⚠️ Changes detected (Review) 1 removed Apr 1, 2026, 9:49 AM
ArthurGamby
ArthurGamby previously approved these changes Mar 31, 2026
Copy link
Copy Markdown
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: 3

🧹 Nitpick comments (5)
apps/site/src/app/showcase/page.tsx (3)

43-43: Component name doesn't match file purpose.

The component is named EnterprisePage but lives in showcase/page.tsx. Consider renaming to ShowcasePage for clarity.

♻️ Proposed fix
-export default function EnterprisePage() {
+export default function ShowcasePage() {
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/app/showcase/page.tsx` at line 43, The exported React component
is named EnterprisePage but the file represents the showcase page; rename the
component to ShowcasePage to match the file intent and avoid confusion: update
the function declaration/export from EnterprisePage to ShowcasePage and update
any internal references or imports that import EnterprisePage to use
ShowcasePage instead (search for EnterprisePage and replace with ShowcasePage in
this module and its consumers).

1-12: Remove unused imports.

Several imports are declared but never used: EnterpriseForm, FooterAccordion, SwitchEnterprise, Technology, Button, Action, and Avatar. This suggests the file may have been scaffolded from another page template.

🧹 Proposed fix
-import { EnterpriseForm } from "@/components/enterprise/form";
 import { ShowcaseScrollCarousel } from "@/components/showcase/components";
 import Image from "next/image";
-import { FooterAccordion } from "@/components/enterprise/footer-accordion";
-import { SwitchEnterprise } from "@/components/enterprise/switch-enterprise";
 import LogoParade from "@/components/logo-parade";
 import type { Metadata } from "next";
-import { Button, Card, Action, Avatar } from "@prisma/eclipse";
-import { CardSection } from "@/components/homepage/card-section/card-section";
+import { Card } from "@prisma/eclipse";
 import { cn } from "@/lib/cn";
-import { Technology } from "@/components/technology";
 import data from "@/data/showcase";
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/app/showcase/page.tsx` around lines 1 - 12, The file imports
several symbols that are not used—remove the unused imports EnterpriseForm,
FooterAccordion, SwitchEnterprise, Technology and the unused UI imports Button,
Action, Avatar (from `@prisma/eclipse`) to clean up the module; keep only the
imports referenced in this file (e.g., ShowcaseScrollCarousel, Image,
LogoParade, Metadata type, Card, CardSection, cn, data) and update the import
list accordingly so there are no unused bindings or ESLint warnings.

62-71: Consider using Next.js Image component for optimization.

The badge images (lines 62-71) and project logos (lines 105-108) use native <img> tags. For consistent optimization, lazy loading, and format conversion benefits, consider using the Next.js <Image> component, especially since it's already imported but unused for the badge.

Also applies to: 105-108

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/app/showcase/page.tsx` around lines 62 - 71, Replace the native
<img> tags used for the Prisma badges (src "/icons/made_with_prisma.svg" and
"/icons/made_with_prisma_light.svg") and the project logos (the images around
lines 105-108) with the Next.js Image component you've already imported; for
each image use <Image src="..." alt="..." className="..." width={...}
height={...} (or fill + parent styling) to satisfy Next/Image requirements, keep
the dark/light class toggles, and remove the unused import warning by actually
using the Image component in page.tsx.
apps/site/src/components/navigation-wrapper.tsx (1)

48-54: Consider extracting the duplicated getButtonVariant logic.

Both NavigationWrapper and FooterWrapper define identical getButtonVariant functions. This duplication could lead to drift if one is updated without the other.

♻️ Proposed refactor to extract shared logic
+const getButtonVariant = (pathname: string): ColorType => {
+  if (orm.includes(pathname.split("?")[0])) {
+    return "orm";
+  }
+  return "ppg";
+};
+
 export function NavigationWrapper({ links, utm }: NavigationWrapperProps) {
   const pathname = usePathname();
-
-  // Determine button variant based on pathname
-  const getButtonVariant = (): ColorType => {
-    if (orm.includes(pathname.split("?")[0])) {
-      return "orm";
-    }
-    // Add more conditions here for other pages as needed
-    return "ppg"; // default variant
-  };
-
   return (
-    <WebNavigation links={links} utm={utm} buttonVariant={getButtonVariant()} />
+    <WebNavigation links={links} utm={utm} buttonVariant={getButtonVariant(pathname)} />
   );
 }
 
 export function FooterWrapper() {
   const pathname = usePathname();
-
-  // Determine button variant based on pathname
-  const getButtonVariant = (): ColorType => {
-    if (orm.includes(pathname.split("?")[0])) {
-      return "orm";
-    }
-    // Add more conditions here for other pages as needed
-    return "ppg"; // default variant
-  };
-
-  return <Footer color={getButtonVariant()} />;
+  return <Footer color={getButtonVariant(pathname)} />;
 }

Also applies to: 65-71

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/components/navigation-wrapper.tsx` around lines 48 - 54, The
getButtonVariant function is duplicated in NavigationWrapper and FooterWrapper;
extract it into a single shared utility (e.g., a helper like
computeButtonVariant or getButtonVariant in a new/central module) and have both
components import and call that function; ensure the utility accepts the inputs
it needs (pathname and orm or whatever list is used) and returns the ColorType
("orm" or "ppg") so you can remove the duplicate implementations from
NavigationWrapper and FooterWrapper and keep behavior identical.
apps/site/src/components/showcase/post-card.tsx (1)

5-8: Remove unused imports.

Badge from @prisma/eclipse and formatDate, formatTag from @/lib/format are imported but never used in this component.

🧹 Proposed fix
 import Image from "next/image";
 import Link from "next/link";
-import { Badge, Card } from "@prisma/eclipse";
+import { Card } from "@prisma/eclipse";
 import { cn } from "@prisma-docs/ui/lib/cn";
-
-import { formatDate, formatTag } from "@/lib/format";
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/components/showcase/post-card.tsx` around lines 5 - 8, The
imports Badge and formatDate/formatTag are unused in post-card.tsx; remove Badge
from the "@prisma/eclipse" import and remove formatDate and formatTag from the
"@/lib/format" import so only the used symbols (e.g., Card and cn) remain;
locate the import statements at the top of the file (references: Badge, Card,
cn, formatDate, formatTag) and update them accordingly to eliminate the unused
imports.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/site/src/app/showcase/page.tsx`:
- Line 84: The div with className "content relative z-2 flex flex-col gap-8
max-w-" has a truncated Tailwind class that does nothing; update that JSX
element (the div in page.tsx whose className contains max-w-) to use a valid
max-width utility such as "max-w-7xl", "max-w-screen-lg", or a custom value like
"max-w-[1200px]" depending on desired layout, ensuring the className string is
updated accordingly.
- Around line 19-41: The metadata block uses enterprise-specific values: update
the alternates.canonical, openGraph.url and any hardcoded image/url values in
metadata (the metadata object), openGraph and twitter sections to point to
"/showcase" (e.g. "https://www.prisma.io/showcase") and replace ENTERPRISE_TITLE
and ENTERPRISE_DESCRIPTION with the appropriate SHOWCASE_TITLE and
SHOWCASE_DESCRIPTION constants (or create them if missing) so the page
title/description and social previews match the showcase page.

In `@apps/site/src/data/showcase.ts`:
- Around line 123-125: Fix the typo in the showcase entry's excerpt string:
change "they ve" to "they've" in the excerpt value associated with the Poppy
entry (the object containing excerpt: "Poppy offers rides..." and url:
"/blog/poppy-customer-success-story-swnWQcGRRvpd") so the contraction is
correctly written as "they've".

---

Nitpick comments:
In `@apps/site/src/app/showcase/page.tsx`:
- Line 43: The exported React component is named EnterprisePage but the file
represents the showcase page; rename the component to ShowcasePage to match the
file intent and avoid confusion: update the function declaration/export from
EnterprisePage to ShowcasePage and update any internal references or imports
that import EnterprisePage to use ShowcasePage instead (search for
EnterprisePage and replace with ShowcasePage in this module and its consumers).
- Around line 1-12: The file imports several symbols that are not used—remove
the unused imports EnterpriseForm, FooterAccordion, SwitchEnterprise, Technology
and the unused UI imports Button, Action, Avatar (from `@prisma/eclipse`) to clean
up the module; keep only the imports referenced in this file (e.g.,
ShowcaseScrollCarousel, Image, LogoParade, Metadata type, Card, CardSection, cn,
data) and update the import list accordingly so there are no unused bindings or
ESLint warnings.
- Around line 62-71: Replace the native <img> tags used for the Prisma badges
(src "/icons/made_with_prisma.svg" and "/icons/made_with_prisma_light.svg") and
the project logos (the images around lines 105-108) with the Next.js Image
component you've already imported; for each image use <Image src="..." alt="..."
className="..." width={...} height={...} (or fill + parent styling) to satisfy
Next/Image requirements, keep the dark/light class toggles, and remove the
unused import warning by actually using the Image component in page.tsx.

In `@apps/site/src/components/navigation-wrapper.tsx`:
- Around line 48-54: The getButtonVariant function is duplicated in
NavigationWrapper and FooterWrapper; extract it into a single shared utility
(e.g., a helper like computeButtonVariant or getButtonVariant in a new/central
module) and have both components import and call that function; ensure the
utility accepts the inputs it needs (pathname and orm or whatever list is used)
and returns the ColorType ("orm" or "ppg") so you can remove the duplicate
implementations from NavigationWrapper and FooterWrapper and keep behavior
identical.

In `@apps/site/src/components/showcase/post-card.tsx`:
- Around line 5-8: The imports Badge and formatDate/formatTag are unused in
post-card.tsx; remove Badge from the "@prisma/eclipse" import and remove
formatDate and formatTag from the "@/lib/format" import so only the used symbols
(e.g., Card and cn) remain; locate the import statements at the top of the file
(references: Badge, Card, cn, formatDate, formatTag) and update them accordingly
to eliminate the unused imports.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 514dedea-3597-4e04-99ee-74b533b5b52e

📥 Commits

Reviewing files that changed from the base of the PR and between a3cda20 and dd99958.

⛔ Files ignored due to path filters (16)
  • apps/site/public/icons/made_with_prisma.svg is excluded by !**/*.svg
  • apps/site/public/icons/made_with_prisma_light.svg is excluded by !**/*.svg
  • apps/site/public/photos/showcase/stories/amplication.png is excluded by !**/*.png
  • apps/site/public/photos/showcase/stories/bucket.png is excluded by !**/*.png
  • apps/site/public/photos/showcase/stories/elsevierstory.svg is excluded by !**/*.svg
  • apps/site/public/photos/showcase/stories/formbricks.svg is excluded by !**/*.svg
  • apps/site/public/photos/showcase/stories/grover.png is excluded by !**/*.png
  • apps/site/public/photos/showcase/stories/invisible.png is excluded by !**/*.png
  • apps/site/public/photos/showcase/stories/iopool.png is excluded by !**/*.png
  • apps/site/public/photos/showcase/stories/panther.png is excluded by !**/*.png
  • apps/site/public/photos/showcase/stories/pearly.png is excluded by !**/*.png
  • apps/site/public/photos/showcase/stories/poppy.png is excluded by !**/*.png
  • apps/site/public/photos/showcase/stories/rapha.png is excluded by !**/*.png
  • apps/site/public/photos/showcase/stories/solin.svg is excluded by !**/*.svg
  • apps/site/public/photos/showcase/stories/tryg.png is excluded by !**/*.png
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (5)
  • apps/site/src/app/showcase/page.tsx
  • apps/site/src/components/navigation-wrapper.tsx
  • apps/site/src/components/showcase/components.tsx
  • apps/site/src/components/showcase/post-card.tsx
  • apps/site/src/data/showcase.ts
</section>

<section className="my-12 px-4">
<div className="content relative z-2 flex flex-col gap-8 max-w-">
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.

⚠️ Potential issue | 🟡 Minor

Incomplete CSS class max-w-.

The class max-w- is truncated and will have no effect. If a max-width constraint is intended, specify a value (e.g., max-w-7xl or max-w-[1200px]).

🔧 Proposed fix
-        <div className="content relative z-2 flex flex-col gap-8 max-w-">
+        <div className="content relative z-2 flex flex-col gap-8 max-w-[1200px] mx-auto">
📝 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
<div className="content relative z-2 flex flex-col gap-8 max-w-">
<div className="content relative z-2 flex flex-col gap-8 max-w-[1200px] mx-auto">
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/app/showcase/page.tsx` at line 84, The div with className
"content relative z-2 flex flex-col gap-8 max-w-" has a truncated Tailwind class
that does nothing; update that JSX element (the div in page.tsx whose className
contains max-w-) to use a valid max-width utility such as "max-w-7xl",
"max-w-screen-lg", or a custom value like "max-w-[1200px]" depending on desired
layout, ensuring the className string is updated accordingly.
Comment on lines +123 to +125
excerpt:
"Poppy offers rides of all kinds through its mobile app. Whether its a car, scooter, or e-step, Poppy has it. Prisma plays a vital role in helping Poppy ship quickly and confidently and is a big reason they ve just hit 1.5 million total rides taken.",
url: "/blog/poppy-customer-success-story-swnWQcGRRvpd",
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.

⚠️ Potential issue | 🟡 Minor

Typo in excerpt text.

Line 124 contains "they ve" which should be "they've".

📝 Proposed fix
     excerpt:
-      "Poppy offers rides of all kinds through its mobile app. Whether its a car, scooter, or e-step, Poppy has it. Prisma plays a vital role in helping Poppy ship quickly and confidently and is a big reason they ve just hit 1.5 million total rides taken.",
+      "Poppy offers rides of all kinds through its mobile app. Whether it's a car, scooter, or e-step, Poppy has it. Prisma plays a vital role in helping Poppy ship quickly and confidently and is a big reason they've just hit 1.5 million total rides taken.",
📝 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
excerpt:
"Poppy offers rides of all kinds through its mobile app. Whether its a car, scooter, or e-step, Poppy has it. Prisma plays a vital role in helping Poppy ship quickly and confidently and is a big reason they ve just hit 1.5 million total rides taken.",
url: "/blog/poppy-customer-success-story-swnWQcGRRvpd",
excerpt:
"Poppy offers rides of all kinds through its mobile app. Whether it's a car, scooter, or e-step, Poppy has it. Prisma plays a vital role in helping Poppy ship quickly and confidently and is a big reason they've just hit 1.5 million total rides taken.",
url: "/blog/poppy-customer-success-story-swnWQcGRRvpd",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/data/showcase.ts` around lines 123 - 125, Fix the typo in the
showcase entry's excerpt string: change "they ve" to "they've" in the excerpt
value associated with the Poppy entry (the object containing excerpt: "Poppy
offers rides..." and url: "/blog/poppy-customer-success-story-swnWQcGRRvpd") so
the contraction is correctly written as "they've".
Copy link
Copy Markdown
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: 4

🧹 Nitpick comments (1)
apps/site/src/data/showcase.ts (1)

1-11: Consider adding TypeScript types for data validation.

This large data file (~1150 lines) has no explicit type definitions, which allowed the logo_light/light_logo inconsistency to slip through. Defining interfaces would catch such issues at compile time.

💡 Example type definitions
interface Story {
  name: string;
  id: string;
  title: string;
  imageSrc: string;
  imageAlt: string;
  technologies: string[];
  excerpt: string;
  url: string;
}

interface CommunityProject {
  name: string;
  id: string;
  logo: string;
  light_logo?: string;
  technologies: string[];
  description: string;
  link: string;
  externalLink?: boolean;
  quote: {
    text: string;
    author: string;
    title: string;
    socials?: Record<string, string>;
  };
  points?: Array<{ title: string; description: string }>;
}

const stories: Story[] = [
  // ...
];

const communityProjects: CommunityProject[] = [
  // ...
];
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/data/showcase.ts` around lines 1 - 11, The file defines large
data arrays like stories without TypeScript types which allowed inconsistent
property names (e.g., logo_light vs light_logo) to slip through; add interfaces
(e.g., Story and CommunityProject) describing required/optional fields and use
them for the arrays (stories: Story[], communityProjects: CommunityProject[]) so
the compiler will catch mismatched keys such as logo_light/light_logo, missing
required fields, and type errors—update object entries to conform to the new
interfaces and rename fields consistently to the chosen property name (e.g.,
light_logo) across the data.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/site/src/data/showcase.ts`:
- Around line 210-211: In the showcase data entry where the property text
contains the testimonial string (the object with property "text" in
apps/site/src/data/showcase.ts), fix the typo by replacing "previous time" with
"precious time" so the sentence reads "...it saves us precious time..."; update
only that phrase in the text value.
- Line 16: The title string in the showcase data uses a nonstandard word
"evolutionize"; update the title property (title) in the showcase entry to use
"revolutionize" so it reads "How Prisma helps Amplication revolutionize backend
development" (or adjust subject-verb agreement if needed) to correct the typo.
- Around line 590-591: The quote text in the showcase object (quote.text)
contains a grammatical error; update the sentence "The most impressive aspect is
how helpful the community to help beginners up and running" to a correct
phrasing such as "The most impressive aspect is how helpful the community is in
getting beginners up and running" (or similar) so the quote reads fluently and
grammatically correct.
- Line 454: Several showcase entries use the wrong field name "light_logo"
instead of the expected "logo_light", causing dark-mode image switching in
page.tsx to fail; edit the affected company objects (Nuna, wingfield, Superblog,
Prevalentware) and rename each "light_logo" key to "logo_light" so the consuming
code (page.tsx) can find the light-mode asset.

---

Nitpick comments:
In `@apps/site/src/data/showcase.ts`:
- Around line 1-11: The file defines large data arrays like stories without
TypeScript types which allowed inconsistent property names (e.g., logo_light vs
light_logo) to slip through; add interfaces (e.g., Story and CommunityProject)
describing required/optional fields and use them for the arrays (stories:
Story[], communityProjects: CommunityProject[]) so the compiler will catch
mismatched keys such as logo_light/light_logo, missing required fields, and type
errors—update object entries to conform to the new interfaces and rename fields
consistently to the chosen property name (e.g., light_logo) across the data.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 918fbce8-e226-4fd1-b384-c773d4aa8d48

📥 Commits

Reviewing files that changed from the base of the PR and between 655fd8d and 5631549.

⛔ Files ignored due to path filters (25)
  • apps/site/public/icons/companies/agvolution.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/agvolution_light.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/antstack_light.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/cal.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/cal_light.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/cargon_light.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/coinrotator.png is excluded by !**/*.png
  • apps/site/public/icons/companies/digitalspeed.png is excluded by !**/*.png
  • apps/site/public/icons/companies/digitalspeed.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/digitalspeed_light.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/instatus.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/instatus_light.png is excluded by !**/*.png
  • apps/site/public/icons/companies/krisenchat.png is excluded by !**/*.png
  • apps/site/public/icons/companies/krisenchat.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/krisenchat_light.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/nachonacho_light.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/nuna.png is excluded by !**/*.png
  • apps/site/public/icons/companies/nuna_light.png is excluded by !**/*.png
  • apps/site/public/icons/companies/oxio_light.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/prevalentware_light.png is excluded by !**/*.png
  • apps/site/public/icons/companies/superblog.png is excluded by !**/*.png
  • apps/site/public/icons/companies/superblog.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/superblog_light.png is excluded by !**/*.png
  • apps/site/public/icons/companies/wingfield.svg is excluded by !**/*.svg
  • apps/site/public/icons/companies/wingfield_light.svg is excluded by !**/*.svg
📒 Files selected for processing (4)
  • apps/site/public/icons/companies/jelly_light.webp
  • apps/site/public/icons/companies/prevalentware.webp
  • apps/site/src/app/showcase/page.tsx
  • apps/site/src/data/showcase.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/site/src/app/showcase/page.tsx
{
name: "Amplication",
id: "amplication",
title: "How Prisma helps Amplication evolutionize backend development",
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.

⚠️ Potential issue | 🟡 Minor

Typo: "evolutionize" should likely be "revolutionize".

The word "evolutionize" isn't standard English. Based on context, this probably should read "revolutionize backend development."

📝 Proposed fix
-    title: "How Prisma helps Amplication evolutionize backend development",
+    title: "How Prisma helps Amplication revolutionize backend development",
📝 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
title: "How Prisma helps Amplication evolutionize backend development",
title: "How Prisma helps Amplication revolutionize backend development",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/data/showcase.ts` at line 16, The title string in the showcase
data uses a nonstandard word "evolutionize"; update the title property (title)
in the showcase entry to use "revolutionize" so it reads "How Prisma helps
Amplication revolutionize backend development" (or adjust subject-verb agreement
if needed) to correct the typo.
Comment on lines +210 to +211
text: `Prisma is the best way for us to work with databases in microservices written with TypeScript. It makes hard things much easier to achieve and it saves us previous time which we can dedicate to the business logic instead of having to write a lot of redundant boilerplate code.
The developer experience and the documentation are great!`,
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.

⚠️ Potential issue | 🟡 Minor

Typo: "previous time" should be "precious time".

The quote says "saves us previous time" but the intended meaning is clearly "saves us precious time."

📝 Proposed fix
-      text: `Prisma is the best way for us to work with databases in microservices written with TypeScript. It makes hard things much easier to achieve and it saves us previous time which we can dedicate to the business logic instead of having to write a lot of redundant boilerplate code.
+      text: `Prisma is the best way for us to work with databases in microservices written with TypeScript. It makes hard things much easier to achieve and it saves us precious time which we can dedicate to the business logic instead of having to write a lot of redundant boilerplate code.
📝 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
text: `Prisma is the best way for us to work with databases in microservices written with TypeScript. It makes hard things much easier to achieve and it saves us previous time which we can dedicate to the business logic instead of having to write a lot of redundant boilerplate code.
The developer experience and the documentation are great!`,
text: `Prisma is the best way for us to work with databases in microservices written with TypeScript. It makes hard things much easier to achieve and it saves us precious time which we can dedicate to the business logic instead of having to write a lot of redundant boilerplate code.
The developer experience and the documentation are great!`,
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/data/showcase.ts` around lines 210 - 211, In the showcase data
entry where the property text contains the testimonial string (the object with
property "text" in apps/site/src/data/showcase.ts), fix the typo by replacing
"previous time" with "precious time" so the sentence reads "...it saves us
precious time..."; update only that phrase in the text value.
name: "Cal.com",
id: "cal",
logo: "/icons/companies/cal.svg",
logo_light: "/icons/companies/cal_light.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.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Check how the showcase page accesses the light logo field

# Search for light_logo or logo_light usage in the showcase page
rg -n 'light_logo|logo_light' apps/site/src/app/showcase/

Repository: prisma/web

Length of output: 316


Inconsistent field name: light_logo should be logo_light.

The consuming code in page.tsx uses logo_light for dark-mode image switching, but 4 entries incorrectly use light_logo instead. This mismatch means the light logos for Nuna, wingfield, Superblog, and Prevalentware won't render correctly.

Affected lines: 281, 358, 953, 1097

🐛 Proposed fix (showing one example, apply pattern to all)
-    light_logo: "/icons/companies/nuna_light.svg",
+    logo_light: "/icons/companies/nuna_light.svg",

Apply the same rename (light_logologo_light) to all affected entries.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/data/showcase.ts` at line 454, Several showcase entries use the
wrong field name "light_logo" instead of the expected "logo_light", causing
dark-mode image switching in page.tsx to fail; edit the affected company objects
(Nuna, wingfield, Superblog, Prevalentware) and rename each "light_logo" key to
"logo_light" so the consuming code (page.tsx) can find the light-mode asset.
Comment on lines +590 to +591
quote: {
text: `Prisma lives up to its promise to deliver an excellent backend developer experience. You achieve clean code design without sacrificing time. The most impressive aspect is how helpful the community to help beginners up and running.`,
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.

⚠️ Potential issue | 🟡 Minor

Grammar issue in quote text.

The sentence "The most impressive aspect is how helpful the community to help beginners up and running" is grammatically broken. Consider revising.

📝 Proposed fix
-      text: `Prisma lives up to its promise to deliver an excellent backend developer experience. You achieve clean code design without sacrificing time. The most impressive aspect is how helpful the community to help beginners up and running.`,
+      text: `Prisma lives up to its promise to deliver an excellent backend developer experience. You achieve clean code design without sacrificing time. The most impressive aspect is how helpful the community is in getting beginners up and running.`,
📝 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
quote: {
text: `Prisma lives up to its promise to deliver an excellent backend developer experience. You achieve clean code design without sacrificing time. The most impressive aspect is how helpful the community to help beginners up and running.`,
quote: {
text: `Prisma lives up to its promise to deliver an excellent backend developer experience. You achieve clean code design without sacrificing time. The most impressive aspect is how helpful the community is in getting beginners up and running.`,
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/data/showcase.ts` around lines 590 - 591, The quote text in the
showcase object (quote.text) contains a grammatical error; update the sentence
"The most impressive aspect is how helpful the community to help beginners up
and running" to a correct phrasing such as "The most impressive aspect is how
helpful the community is in getting beginners up and running" (or similar) so
the quote reads fluently and grammatically correct.
@vercel
Copy link
Copy Markdown

vercel bot commented Mar 31, 2026

Deployment failed with the following error:

Invalid request: `attribution.gitUser` should NOT have additional property `isBot`.
@carlagn carlagn force-pushed the feat/DR-7740-showcase branch from 63de57b to cb8087c Compare April 1, 2026 08:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

3 participants