Skip to content

feat: DR-7734 Ecosystem page#7717

Open
carlagn wants to merge 4 commits intomainfrom
feat/DR-7734-ecosystem
Open

feat: DR-7734 Ecosystem page#7717
carlagn wants to merge 4 commits intomainfrom
feat/DR-7734-ecosystem

Conversation

@carlagn
Copy link
Contributor

@carlagn carlagn commented Mar 27, 2026

Summary by CodeRabbit

  • New Features

    • Ecosystem landing page showcasing community packages
    • Filter controls to browse by category (generators, middleware, other)
    • GitHub star display integrated for package repositories
    • Curated dataset of ecosystem entries added
  • Style

    • Updated badge and button styling variants for improved UI consistency
  • Chores

    • Added GitHub button dependency for star display functionality

@vercel
Copy link

vercel bot commented Mar 27, 2026

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

Project Deployment Actions Updated (UTC)
blog Ready Ready Preview, Comment Mar 27, 2026 10:03am
docs Ready Ready Preview, Comment Mar 27, 2026 10:03am
eclipse Ready Ready Preview, Comment Mar 27, 2026 10:03am
site Ready Ready Preview, Comment Mar 27, 2026 10:03am

Request Review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 27, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 2d19fc16-7eb3-4749-9036-482f3a7921c8

📥 Commits

Reviewing files that changed from the base of the PR and between 51d8274 and 5d04e8d.

📒 Files selected for processing (1)
  • apps/site/src/components/ecosystem/grid.tsx
✅ Files skipped from review due to trivial changes (1)
  • apps/site/src/components/ecosystem/grid.tsx

Walkthrough

Adds a Prisma Ecosystem landing page and client-side filterable grid backed by new JSON data, introduces react-github-btn dependency, and adds an orm-reverse variant to badge and button component styling.

Changes

Cohort / File(s) Summary
Ecosystem page & data
apps/site/src/app/ecosystem/page.tsx, apps/site/src/components/ecosystem/grid.tsx, apps/site/src/data/ecosystem.json
New Next.js ecosystem page and exported EcosystemGrid client component. Adds filter toolbar (generator, middleware, other, show-all), category sections, and card rendering driven by the new ecosystem.json dataset.
Site dependency
apps/site/package.json
Added dependency react-github-btn@^1.4.0 to support GitHub star buttons used in grid cards.
Design system variants
packages/eclipse/src/components/badge.tsx, packages/eclipse/src/components/button.tsx
Introduced orm-reverse styling variant: badge color mapping adjusted and buttonVariants gains an orm-reverse option with ORM-themed classes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 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-7734 Ecosystem page' clearly references the specific task (DR-7734) and describes the main change—adding an ecosystem page feature. It directly summarizes the primary deliverable of the changeset.

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

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: 5

Caution

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

⚠️ Outside diff range comments (1)
packages/eclipse/src/components/badge.tsx (1)

43-43: ⚠️ Potential issue | 🟡 Minor

Type definition is missing "orm-reverse" — will cause TypeScript errors.

The badgeVariants at line 16 includes "orm-reverse", but the color prop type union here doesn't include it. Anyone trying to use <Badge color="orm-reverse" /> will get a TypeScript error even though it works at runtime.

🔧 Proposed fix
-  color?: "neutral" | "ppg" | "orm" | "error" | "success" | "warning";
+  color?: "neutral" | "ppg" | "orm" | "orm-reverse" | "error" | "success" | "warning";
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/eclipse/src/components/badge.tsx` at line 43, The TypeScript union
for the Badge color prop is missing "orm-reverse" which mismatches
badgeVariants; update the color type (the prop/BadgeProps where color?:
"neutral" | "ppg" | "orm" | "error" | "success" | "warning") to include
"orm-reverse" so it aligns with the badgeVariants constant and prevents compile
errors when using <Badge color="orm-reverse" />.
🧹 Nitpick comments (3)
apps/site/src/app/ecosystem/page.tsx (3)

17-61: Dead code — twoCol array is defined but never used.

This entire data structure appears to be leftover from copying the homepage. Remove it to keep the file clean.

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

In `@apps/site/src/app/ecosystem/page.tsx` around lines 17 - 61, Remove the dead
unused data structure named twoCol: delete the entire const twoCol = [...]
declaration (and any trailing commas) from the file so the unused variable is
not defined; also search for any references to twoCol in this module (none
expected) and remove or update them if found to avoid breaking imports/usage.

1-16: Significant unused imports — likely copy-paste artifacts.

Most of these imports are not used anywhere in the component:

  • Antigravity, CopyCode, LogoParade, Bento, CardSection, Testimonials, review
  • React is also not needed in modern React/Next.js

This adds unnecessary bundle weight and clutters the file.

♻️ Clean up imports
 import { EcosystemGrid } from "@/components/ecosystem/grid";
-import Antigravity from "../../components/homepage/antigravity";
 import type { Metadata } from "next";
 import {
   SITE_HOME_DESCRIPTION,
   SITE_HOME_TITLE,
 } from "../../lib/blog-metadata";
 import { Button } from "@prisma/eclipse";
-import { CopyCode } from "@/components/homepage/copy-btn";
-import LogoParade from "@prisma-docs/ui/components/logo-parade";
-import React from "react";
-import { Bento } from "@/components/homepage/bento";
-import { CardSection } from "@/components/homepage/card-section/card-section";
-import review from "../../data/homepage.json";
-import Testimonials from "../../components/homepage/testimonials";
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/app/ecosystem/page.tsx` around lines 1 - 16, Remove the unused
imports to eliminate dead code and bundle weight: delete Antigravity, CopyCode,
LogoParade, Bento, CardSection, Testimonials, the review import from
"../../data/homepage.json", and the redundant React import; keep only imports
that are referenced (e.g., EcosystemGrid, Metadata, SITE_HOME_DESCRIPTION,
SITE_HOME_TITLE, Button) and ensure any removed symbol references are not used
elsewhere in this file (check for references to Antigravity, CopyCode,
LogoParade, Bento, CardSection, Testimonials, and review before removing).

62-65: Metadata uses home page values — consider ecosystem-specific titles.

Using SITE_HOME_TITLE and SITE_HOME_DESCRIPTION for the ecosystem page means the page title/description won't reflect the ecosystem content. This affects SEO and browser tab readability.

♻️ Use ecosystem-specific metadata
 export const metadata: Metadata = {
-  title: SITE_HOME_TITLE,
-  description: SITE_HOME_DESCRIPTION,
+  title: "Prisma Ecosystem - Community Tools & Generators",
+  description: "Explore the wide variety of tools created by our amazing community.",
 };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/app/ecosystem/page.tsx` around lines 62 - 65, The page-level
metadata currently reuses SITE_HOME_TITLE and SITE_HOME_DESCRIPTION which are
wrong for the ecosystem page; update the export const metadata in page.tsx to
use ecosystem-specific values (either create and import SITE_ECOSYSTEM_TITLE and
SITE_ECOSYSTEM_DESCRIPTION or inline appropriate strings) so the ecosystem page
has its own title and description; ensure you update imports or constants where
metadata is defined and keep the symbol name metadata unchanged.
🤖 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/ecosystem/page.tsx`:
- Around line 80-90: The CTA label "Submit your package" on the Button (look for
the Button component with inner span "Submit your package" and href attribute)
doesn't match the href which points to "console.prisma.io/sign-up"; update
either the destination or the copy: either change href to the actual package
submission URL/guide (if you have an ecosystem submission form) or change the
button text to a signup-focused label like "Sign up" (and adjust aria-label if
present) so the Button's href and visible text (and intent) match. Ensure the
Button's target and rel attributes remain for external links and keep the
existing className and icon.

In `@apps/site/src/components/ecosystem/grid.tsx`:
- Around line 50-51: The Card elements are using box.title as the React key but
the ecosystem items use the property name, causing undefined keys; update the
Card key prop to use box.name (i.e., replace references to box.title with
box.name on the Card component) and ensure any other usages in the same file
(e.g., map callback or other Card props) that reference box.title are also
changed to box.name so keys and displays are correct.
- Around line 34-42: The mapped section div inside the filters.slice(0, -1).map
callback is missing a React key, causing warnings; add a unique key prop to that
outer <div> (use the filter value or a stable identifier like `${filter}` or
`${filter}-${index}` if duplicates are possible) in the map callback where
filters, activeFilter, and cn are used so each generated element has a stable
unique key.

In `@apps/site/src/data/ecosystem.json`:
- Line 254: The "npmUrl" value for the package entry currently contains only the
package name ("idb-client-generator") which yields a broken link; update the
JSON entry's "npmUrl" field to the full npm package URL (e.g.
https://www.npmjs.com/package/idb-client-generator) so consumers can navigate
correctly—locate the entry by the "npmUrl" key and the package name
"idb-client-generator" and replace the value with the complete
https://www.npmjs.com/package/<package-name> URL.
- Around line 263-266: Update the malformed githubRepo fields in
apps/site/src/data/ecosystem.json so they use the GitHub "owner/repo" format
rather than full URLs or npm links: replace the githubRepo values for the
entries with packageName "prisma-query-formatter", "prisma-rls", "prisma-admin",
"eav-to-prisma", "prisma-qb", "prisma-sql", and "zod-prisma-gen" with the
correct owner/repo strings (e.g., "s1owjke/prisma-query-formatter" for
prisma-query-formatter) so the grid component's template
(`https://github.com/${box.githubRepo}`) builds valid links.

---

Outside diff comments:
In `@packages/eclipse/src/components/badge.tsx`:
- Line 43: The TypeScript union for the Badge color prop is missing
"orm-reverse" which mismatches badgeVariants; update the color type (the
prop/BadgeProps where color?: "neutral" | "ppg" | "orm" | "error" | "success" |
"warning") to include "orm-reverse" so it aligns with the badgeVariants constant
and prevents compile errors when using <Badge color="orm-reverse" />.

---

Nitpick comments:
In `@apps/site/src/app/ecosystem/page.tsx`:
- Around line 17-61: Remove the dead unused data structure named twoCol: delete
the entire const twoCol = [...] declaration (and any trailing commas) from the
file so the unused variable is not defined; also search for any references to
twoCol in this module (none expected) and remove or update them if found to
avoid breaking imports/usage.
- Around line 1-16: Remove the unused imports to eliminate dead code and bundle
weight: delete Antigravity, CopyCode, LogoParade, Bento, CardSection,
Testimonials, the review import from "../../data/homepage.json", and the
redundant React import; keep only imports that are referenced (e.g.,
EcosystemGrid, Metadata, SITE_HOME_DESCRIPTION, SITE_HOME_TITLE, Button) and
ensure any removed symbol references are not used elsewhere in this file (check
for references to Antigravity, CopyCode, LogoParade, Bento, CardSection,
Testimonials, and review before removing).
- Around line 62-65: The page-level metadata currently reuses SITE_HOME_TITLE
and SITE_HOME_DESCRIPTION which are wrong for the ecosystem page; update the
export const metadata in page.tsx to use ecosystem-specific values (either
create and import SITE_ECOSYSTEM_TITLE and SITE_ECOSYSTEM_DESCRIPTION or inline
appropriate strings) so the ecosystem page has its own title and description;
ensure you update imports or constants where metadata is defined and keep the
symbol name metadata unchanged.
🪄 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: 288d18d2-b03b-45a4-8d97-be522adc2f29

📥 Commits

Reviewing files that changed from the base of the PR and between 6f79795 and b6a339e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (6)
  • apps/site/package.json
  • apps/site/src/app/ecosystem/page.tsx
  • apps/site/src/components/ecosystem/grid.tsx
  • apps/site/src/data/ecosystem.json
  • packages/eclipse/src/components/badge.tsx
  • packages/eclipse/src/components/button.tsx

Comment on lines +80 to +90
<Button
variant="orm"
href="https://console.prisma.io/sign-up?utm_source=website&utm_medium=index&utm_campaign=cta"
size="3xl"
target="_blank"
rel="noopener noreferrer"
className="font-sans-display! font-[650]"
>
<span>Submit your package</span>
<i className="fa-regular fa-envelope ml-2" />
</Button>
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

CTA mismatch — button says "Submit your package" but links to sign-up.

The button text implies users can submit their package, but the href points to console.prisma.io/sign-up. This is confusing UX. If this is intentional (sign up first, then submit), consider clarifying the flow or linking to a proper submission form/instructions.

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

In `@apps/site/src/app/ecosystem/page.tsx` around lines 80 - 90, The CTA label
"Submit your package" on the Button (look for the Button component with inner
span "Submit your package" and href attribute) doesn't match the href which
points to "console.prisma.io/sign-up"; update either the destination or the
copy: either change href to the actual package submission URL/guide (if you have
an ecosystem submission form) or change the button text to a signup-focused
label like "Sign up" (and adjust aria-label if present) so the Button's href and
visible text (and intent) match. Ensure the Button's target and rel attributes
remain for external links and keep the existing className and icon.

{
"name": "idb-client-generator",
"description": "The Prisma IndexedDB Client Generator creates a Prisma-like client for IndexedDB. It brings familiar Prisma syntax and CRUD operations to local browser storage. Ideal for web apps needing structured offline data with a type-safe API.",
"npmUrl": "idb-client-generator",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Malformed npmUrl — missing full URL.

This entry has just the package name instead of the full npm URL, which will create a broken link.

🔧 Proposed fix
-      "npmUrl": "idb-client-generator",
+      "npmUrl": "https://www.npmjs.com/package/idb-client-generator",
📝 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
"npmUrl": "idb-client-generator",
"npmUrl": "https://www.npmjs.com/package/idb-client-generator",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/data/ecosystem.json` at line 254, The "npmUrl" value for the
package entry currently contains only the package name ("idb-client-generator")
which yields a broken link; update the JSON entry's "npmUrl" field to the full
npm package URL (e.g. https://www.npmjs.com/package/idb-client-generator) so
consumers can navigate correctly—locate the entry by the "npmUrl" key and the
package name "idb-client-generator" and replace the value with the complete
https://www.npmjs.com/package/<package-name> URL.

Comment on lines +263 to +266
"packageName": "prisma-query-formatter",
"githubRepo": "https://github.com/s1owjke/prisma-query-formatter",
"type": "middleware"
},
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Malformed githubRepo values will break GitHub button links.

Several entries use full URLs instead of the expected owner/repo format. The grid component constructs links as `https://github.com/${box.githubRepo}`, so these will produce broken URLs like https://github.com/https://github.com/....

Affected entries:

  • Line 264: prisma-query-formatter
  • Line 272: prisma-rls
  • Line 280: prisma-admin
  • Line 288: eav-to-prisma
  • Line 296: prisma-qb (points to npm, not GitHub)
  • Line 304: prisma-sql (points to npm, not GitHub)
  • Line 312: zod-prisma-gen
🔧 Example fix for prisma-query-formatter
-      "githubRepo": "https://github.com/s1owjke/prisma-query-formatter",
+      "githubRepo": "s1owjke/prisma-query-formatter",
📝 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
"packageName": "prisma-query-formatter",
"githubRepo": "https://github.com/s1owjke/prisma-query-formatter",
"type": "middleware"
},
"packageName": "prisma-query-formatter",
"githubRepo": "s1owjke/prisma-query-formatter",
"type": "middleware"
},
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/data/ecosystem.json` around lines 263 - 266, Update the
malformed githubRepo fields in apps/site/src/data/ecosystem.json so they use the
GitHub "owner/repo" format rather than full URLs or npm links: replace the
githubRepo values for the entries with packageName "prisma-query-formatter",
"prisma-rls", "prisma-admin", "eav-to-prisma", "prisma-qb", "prisma-sql", and
"zod-prisma-gen" with the correct owner/repo strings (e.g.,
"s1owjke/prisma-query-formatter" for prisma-query-formatter) so the grid
component's template (`https://github.com/${box.githubRepo}`) builds valid
links.

@argos-ci
Copy link

argos-ci bot commented Mar 27, 2026

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

Build Status Details Updated (UTC)
default (Inspect) ✅ No changes detected - Mar 27, 2026, 10:09 AM

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.

1 participant