From 95e834ee988968d48251b9d18ab12ab1aa701a8f Mon Sep 17 00:00:00 2001 From: Carla Goncalves Date: Fri, 27 Mar 2026 09:50:17 +0000 Subject: [PATCH 1/4] Add ecosystem page --- apps/site/package.json | 1 + apps/site/src/app/ecosystem/page.tsx | 108 +++++++ apps/site/src/components/ecosystem/grid.tsx | 86 ++++++ apps/site/src/data/ecosystem.json | 316 ++++++++++++++++++++ packages/eclipse/src/components/badge.tsx | 3 +- packages/eclipse/src/components/button.tsx | 2 + pnpm-lock.yaml | 18 ++ 7 files changed, 533 insertions(+), 1 deletion(-) create mode 100644 apps/site/src/app/ecosystem/page.tsx create mode 100644 apps/site/src/components/ecosystem/grid.tsx create mode 100644 apps/site/src/data/ecosystem.json diff --git a/apps/site/package.json b/apps/site/package.json index c9d6de8357..c2196368b4 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -24,6 +24,7 @@ "posthog-js": "catalog:", "react": "catalog:", "react-dom": "catalog:", + "react-github-btn": "^1.4.0", "react-tweet": "catalog:", "remark-directive": "catalog:", "tailwind-merge": "catalog:", diff --git a/apps/site/src/app/ecosystem/page.tsx b/apps/site/src/app/ecosystem/page.tsx new file mode 100644 index 0000000000..32ba9746b6 --- /dev/null +++ b/apps/site/src/app/ecosystem/page.tsx @@ -0,0 +1,108 @@ +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"; + +const twoCol = [ + { + content: ( + <> +

+ Postgres that
fits your stack. +

+

+ Works with your existing stack, wherever you deploy.Your choice of + ORM, frameworks, and tools, they all just connect. +

+ + ), + imageUrl: null, + imageAlt: null, + mobileImageUrl: null, + mobileImageAlt: null, + logos: null, + useDefaultLogos: true, + visualPosition: "right" as const, + visualType: "logoGrid" as const, + }, + { + content: ( + <> +

+ Real Postgres.
Better experience. +

+

+ The PostgreSQL millions know and trust in production, ready in seconds + with zero configuration. Automatic backups, observability and + compliance. +

+ + ), + imageUrl: "/illustrations/homepage/real_ppg", + imageAlt: "Real Postgres", + mobileImageUrl: "/illustrations/homepage/real_ppg_mobile", + mobileImageAlt: "Real PPG mobile", + logos: null, + useDefaultLogos: false, + visualPosition: "left" as const, + visualType: "image" as const, + }, +]; +export const metadata: Metadata = { + title: SITE_HOME_TITLE, + description: SITE_HOME_DESCRIPTION, +}; + +export default function SiteHome() { + return ( +
+
+
+
+

+ Prisma Ecosystem +

+

+ Explore the wide variety of tools created by our amazing community. +

+
+ +
+
+
+
+
+

+ Dedicated ORM support options +

+

+ Focus on core competencies of your team, rather than building and + managing complex infrastructure components. +

+ +
+
+
+ ); +} diff --git a/apps/site/src/components/ecosystem/grid.tsx b/apps/site/src/components/ecosystem/grid.tsx new file mode 100644 index 0000000000..a1a918d91a --- /dev/null +++ b/apps/site/src/components/ecosystem/grid.tsx @@ -0,0 +1,86 @@ +"use client"; +import { useState } from "react"; +import { Button, Card, Badge } from "@prisma/eclipse"; +import ecosystem from "../../data/ecosystem.json"; +import { cn } from "@/lib/cn"; + +import GitHubButton from "react-github-btn"; +export const EcosystemGrid = () => { + const filters = ["generator", "middleware", "other", "show-all"]; + const [activeFilter, setActiveFilter] = useState("show-all"); + return ( + <> +
+
+ Filter by: +
+
+ {filters.map((filter) => ( + + ))} +
+
+
+ {filters.slice(0, -1).map((filter) => ( +
+

+ {filter.replace("-", " ")} +

+
+ {ecosystem.list + .filter((box) => box.type === filter) + .map((box) => ( + +

+ {box.name} +

+

+ {box.description} +

+
+ + +
+ +
+
+
+ ))} +
+
+ ))} +
+ + ); +}; diff --git a/apps/site/src/data/ecosystem.json b/apps/site/src/data/ecosystem.json new file mode 100644 index 0000000000..d0c088d5e7 --- /dev/null +++ b/apps/site/src/data/ecosystem.json @@ -0,0 +1,316 @@ +{ + "list": [ + { + "name": "dbml-generator", + "description": "Transforms the Prisma schema into Database Markup Language (DBML) which allows for an easy visual representation", + "npmUrl": "https://www.npmjs.com/package/prisma-dbml-generator", + "packageName": "prisma-dbml-generator", + "githubRepo": "notiz-dev/prisma-dbml-generator", + "type": "generator" + }, + { + "name": "docs-generator", + "description": "Generates an individual API reference for Prisma", + "npmUrl": "https://www.npmjs.com/package/prisma-docs-generator", + "packageName": "prisma-docs-generator", + "githubRepo": "pantharshit00/prisma-docs-generator", + "type": "generator" + }, + { + "name": "json-schema-generator", + "description": "Transforms the Prisma schema in JSON schema", + "npmUrl": "https://www.npmjs.com/package/prisma-json-schema-generator", + "packageName": "prisma-json-schema-generator", + "githubRepo": "valentinpalkovic/prisma-json-schema-generator", + "type": "generator" + }, + { + "name": "typegraphql-prisma", + "description": "Generates TypeGraphQL CRUD resolvers for Prisma models", + "npmUrl": "https://www.npmjs.com/package/typegraphql-prisma", + "packageName": "typegraphql-prisma", + "githubRepo": "MichalLytek/typegraphql-prisma", + "type": "generator" + }, + { + "name": "typegraphql-types-generator", + "description": "Generates TypeGraphQL class types and enums from your Prisma type definitions; the generated output can be edited without being overwritten by the next gen and has the ability to correct you when you mess up the types with your edits.", + "npmUrl": "https://www.npmjs.com/package/prisma-typegraphql-types-generator", + "packageName": "prisma-typegraphql-types-generator", + "githubRepo": "YassinEldeeb/prisma-tgql-types-gen", + "type": "generator" + }, + { + "name": "nestjs-graphql", + "description": "Generates object types, inputs, args, etc. from the Prisma schema file for usage with @nestjs/graphql module", + "npmUrl": "https://www.npmjs.com/package/prisma-nestjs-graphql", + "packageName": "prisma-nestjs-graphql", + "githubRepo": "unlight/nestjs-graphql-prisma", + "type": "generator" + }, + { + "name": "prisma-appsync", + "description": "Generates object types, inputs, args, etc. from the Prisma schema file for usage with @nestjs/graphql module", + "npmUrl": "https://www.npmjs.com/package/prisma-appsync", + "packageName": "prisma-appsync", + "githubRepo": "maoosi/prisma-appsync", + "type": "generator" + }, + { + "name": "generator-nestjs-dto", + "description": "Generates DTO and Entity classes with relation connect and create options for use with NestJS Resources and @nestjs/swagger", + "npmUrl": "https://www.npmjs.com/package/@vegardit/prisma-generator-nestjs-dto", + "packageName": "@vegardit/prisma-generator-nestjs-dto", + "githubRepo": "vegardit/prisma-generator-nestjs-dto", + "type": "generator" + }, + { + "name": "erd-generator", + "description": "Generates an entity relationship diagram", + "npmUrl": "https://www.npmjs.com/package/prisma-erd-generator", + "packageName": "prisma-erd-generator", + "githubRepo": "keonik/prisma-erd-generator", + "type": "generator" + }, + { + "name": "prisma-class-generator", + "description": "Generates classes from your Prisma Schema that can be used as DTO, Swagger Response, TypeGraphQL, and so on.", + "npmUrl": "https://www.npmjs.com/package/prisma-class-generator", + "packageName": "prisma-class-generator", + "githubRepo": "kimjbstar/prisma-class-generator", + "type": "generator" + }, + { + "name": "zod-prisma", + "description": "Creates Zod schemas from your Prisma models.", + "npmUrl": "https://www.npmjs.com/package/zod-prisma", + "packageName": "zod-prisma", + "githubRepo": "CarterGrimmeisen/zod-prisma", + "type": "other" + }, + { + "name": "prisma-pothos-types", + "description": "Makes it easier to define Prisma-based object types, and helps solve n+1 queries for relations. It also has integrations for the Relay plugin to make defining nodes and connections easy and efficient.", + "npmUrl": "https://github.com/hayes/pothos/tree/main/packages/plugin-prisma", + "packageName": "prisma-pothos-types", + "githubRepo": "hayes/pothos", + "type": "other" + }, + { + "name": "prisma-joi-generator", + "description": "Generate full Joi schemas from your Prisma schema.", + "npmUrl": "https://www.npmjs.com/package/prisma-joi-generator", + "packageName": "prisma-joi-generator", + "githubRepo": "omar-dulaimi/prisma-joi-generator", + "type": "generator" + }, + { + "name": "prisma-yup-generator", + "description": "Generate full Yup schemas from your Prisma schema.", + "npmUrl": "https://www.npmjs.com/package/prisma-yup-generator", + "packageName": "prisma-yup-generator", + "githubRepo": "omar-dulaimi/prisma-yup-generator", + "type": "generator" + }, + { + "name": "prisma-class-validator-generator", + "description": "Emit TypeScript models from your Prisma schema with class validator validations ready.", + "npmUrl": "https://www.npmjs.com/package/prisma-class-validator-generator", + "packageName": "prisma-class-validator-generator", + "githubRepo": "omar-dulaimi/prisma-class-validator-generator", + "type": "generator" + }, + { + "name": "prisma-zod-generator", + "description": "Emit Zod schemas from your Prisma schema.", + "npmUrl": "https://www.npmjs.com/package/prisma-zod-generator", + "packageName": "prisma-zod-generator", + "githubRepo": "omar-dulaimi/prisma-zod-generator", + "type": "generator" + }, + { + "name": "prisma-trpc-generator", + "description": "Emit fully implemented tRPC routers.", + "npmUrl": "https://www.npmjs.com/package/prisma-trpc-generator", + "packageName": "prisma-trpc-generator", + "githubRepo": "omar-dulaimi/prisma-trpc-generator", + "type": "generator" + }, + { + "name": "prisma-json-server-generator", + "description": "Emit a JSON file that can be run with json-server", + "npmUrl": "https://www.npmjs.com/package/prisma-json-server-generator", + "packageName": "prisma-json-server-generator", + "githubRepo": "omar-dulaimi/prisma-json-server-generator", + "type": "generator" + }, + { + "name": "prisma-trpc-shield-generator", + "description": "Emit a tRPC shield from your Prisma schema.", + "npmUrl": "https://www.npmjs.com/package/prisma-trpc-shield-generator", + "packageName": "prisma-trpc-shield-generator", + "githubRepo": "omar-dulaimi/prisma-trpc-shield-generator", + "type": "generator" + }, + { + "name": "create-prisma-generator", + "description": "Everything you need to build your Prisma generator like an elite open-source maintainer", + "npmUrl": "https://www.npmjs.com/package/create-prisma-generator", + "packageName": "create-prisma-generator", + "githubRepo": "YassinEldeeb/create-prisma-generator", + "type": "generator" + }, + { + "name": "prisma-redis-middleware", + "description": "This is a Prisma middleware used for caching and storing of Prisma queries in Redis (uses an in-memory LRU cache as fallback storage).", + "npmUrl": "https://www.npmjs.com/package/prisma-redis-middleware", + "packageName": "prisma-redis-middleware", + "githubRepo": "Asjas/prisma-redis-middleware", + "type": "middleware" + }, + { + "name": "prisma-cache-middleware", + "description": "With this middleware you can cache your database queries into the Redis (one of the fastest in-memory databases for caching) and reduce your database queries.", + "npmUrl": "https://www.npmjs.com/package/prisma-cache-middleware", + "packageName": "prisma-cache-middleware", + "githubRepo": "rouzbehsbz/prisma-cache-middleware", + "type": "middleware" + }, + { + "name": "prisma-auth", + "description": "A declarative authorisation middleware that operates on Prisma model level (and not on GraphQL resolver level).", + "npmUrl": "https://www.npmjs.com/package/@joindeed/prisma-auth", + "packageName": "@joindeed/prisma-auth", + "githubRepo": "joindeed/prisma-auth", + "type": "middleware" + }, + { + "name": "prisma-slug", + "description": "A slugification middleware for Prisma. It generates slugs for your models by using other model attributes with logic that you can define.", + "npmUrl": "https://www.npmjs.com/package/prisma-slug", + "packageName": "prisma-slug", + "githubRepo": "tubbo/prisma-slug", + "type": "middleware" + }, + { + "name": "prisma-mongo-json-schema-generator", + "description": "A generator, which takes a Prisma 2 schema.prisma and generates a JSON Schema in flavor which MongoDB accepts", + "npmUrl": "https://www.npmjs.com/package/prisma-mongo-json-schema-generator", + "packageName": "prisma-mongo-json-schema-generator", + "githubRepo": "joindeed/prisma-mongo-json-schema-generator", + "type": "generator" + }, + { + "name": "prisma-util", + "description": "Merge multiple files, create model inheritance and abstraction and create cross-file relations. Additionally, generate schemas using code, configure your data source using YAML and XML and more.", + "npmUrl": "https://www.npmjs.com/package/prisma-util", + "packageName": "prisma-util", + "githubRepo": "DavidHancu/prisma-util", + "type": "generator" + }, + { + "name": "adonis-prisma", + "description": "This package provides you with Prisma Client Provider and Auth Provider for working with Prisma and Adonis.js", + "npmUrl": "https://www.npmjs.com/package/@wahyubucil/adonis-prisma", + "packageName": "adonis-prisma", + "githubRepo": "wahyubucil/adonis-prisma", + "type": "other" + }, + { + "name": "prisma-event-dispatcher", + "description": "Dispatches several types of events while working with Prisma models. EventEmitter agnostic, and allows you to choose for what kind of models, actions and moment of lifecycle to emit the events, configure your data source using YAML and XML and more.", + "npmUrl": "https://www.npmjs.com/package/prisma-event-dispatcher", + "packageName": "prisma-event-dispatcher", + "githubRepo": "AvantaR/prisma-event-dispatcher", + "type": "other" + }, + { + "name": "react-admin", + "description": "Open-source, low-code framework that accelerates the development of admins, dashboards, and B2B apps.", + "npmUrl": "https://github.com/marmelab/react-admin", + "packageName": "react-admin", + "githubRepo": "marmelab/react-admin", + "type": "other" + }, + { + "name": "bun-mock-prisma", + "description": "A simple and type-safe mocking utility for Prisma Client in Bun tests.", + "npmUrl": "https://www.npmjs.com/package/bun-mock-prisma", + "packageName": "bun-mock-prisma", + "githubRepo": "tkoehlerlg/bun-mock-prisma", + "type": "other" + }, + { + "name": "prisma-valibot-generator", + "description": "The Prisma Valibot Generator creates Valibot schemas directly from your Prisma models. It provides type-safe Full, Create, and Update validators with zero boilerplate. Lightweight, tree-shakeable, and built for Prisma 6.12+ and Node.js 18+.", + "npmUrl": "https://www.npmjs.com/package/prisma-valibot-generator", + "packageName": "prisma-valibot-generator", + "githubRepo": "omar-dulaimi/prisma-valibot-generator", + "type": "generator" + }, + { + "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", + "packageName": "idb-client-generator", + "githubRepo": "prisma-idb/idb-client-generator", + "type": "generator" + }, + { + "name": "prisma-query-formatter", + "description": "This small zero-dependency utility correctly formats Prisma queries by substituting placeholders with their corresponding values, support all databases including PostgreSQL.", + "npmUrl": "https://www.npmjs.com/package/prisma-query-formatter", + "packageName": "prisma-query-formatter", + "githubRepo": "https://github.com/s1owjke/prisma-query-formatter", + "type": "middleware" + }, + { + "name": "prisma-rls", + "description": "Row-Level Security (RLS) traditionally requires databases with native support and custom security policies for each table. This library provides an alternative: a Prisma client extension that automatically adds \"where\" clauses to all model queries. This method works without database-side RLS support (e.g., in MySQL).", + "npmUrl": "https://www.npmjs.com/package/prisma-rls", + "packageName": "prisma-rls", + "githubRepo": "https://github.com/s1owjke/prisma-rls", + "type": "other" + }, + { + "name": "prisma-admin", + "description": "A powerful, framework-agnostic admin panel for Prisma ORM with full TypeScript support. Automatically generate CRUD interfaces for your Prisma models with advanced features like inline editing, custom actions, file uploads, and comprehensive permission control.", + "npmUrl": "https://github.com/gzebrowski/prisma-admin", + "packageName": "prisma-admin", + "githubRepo": "https://github.com/gzebrowski/prisma-admin", + "type": "other" + }, + { + "name": "eav-to-prisma", + "description": "Transform flexible EAV database structures into type-safe, performant Prisma schemas", + "npmUrl": "https://www.npmjs.com/package/eav-to-prisma", + "packageName": "eav-to-prisma", + "githubRepo": "https://github.com/dee-wan-cms/eav-to-prisma#readme", + "type": "other" + }, + { + "name": "prisma-qb", + "description": "A Lightweight but powerful query builder that removes the need to manually write sorting, searching, and filtering logic in backend services.", + "npmUrl": "https://www.npmjs.com/package/prisma-qb", + "packageName": "prisma-qb", + "githubRepo": "https://www.npmjs.com/package/prisma-qb", + "type": "other" + }, + { + "name": "prisma-sql", + "description": "Speed up Prisma reads 2-7x by executing queries via postgres.js or better-sqlite3 instead of Prisma's query engine.", + "npmUrl": "https://www.npmjs.com/package/prisma-sql?activeTab=readme", + "packageName": "prisma-sql", + "githubRepo": "https://www.npmjs.com/package/prisma-sql?activeTab=readme", + "type": "other" + }, + { + "name": "zod-prisma-gen", + "description": "A simple Prisma generator that creates Zod validation schemas.", + "npmUrl": "https://www.npmjs.com/package/zod-prisma-gen", + "packageName": "zod-prisma-gen", + "githubRepo": "https://github.com/enemyrr/zod-prisma-gen", + "type": "generator" + } + ] +} diff --git a/packages/eclipse/src/components/badge.tsx b/packages/eclipse/src/components/badge.tsx index 3649ae4d6e..5479eb6b53 100644 --- a/packages/eclipse/src/components/badge.tsx +++ b/packages/eclipse/src/components/badge.tsx @@ -12,7 +12,8 @@ const badgeVariants = cva( color: { neutral: "bg-background-neutral text-foreground-neutral", ppg: "bg-background-ppg text-foreground-ppg", - orm: "bg-background-orm text-foreground-orm", + orm: "bg-background-orm-reverse text-foreground-orm-reverse", + "orm-reverse": "bg-background-orm text-foreground-orm", error: "bg-background-error text-foreground-error", success: "bg-background-success text-foreground-success", warning: "bg-background-warning text-foreground-warning", diff --git a/packages/eclipse/src/components/button.tsx b/packages/eclipse/src/components/button.tsx index 256477d76d..608a74b33a 100644 --- a/packages/eclipse/src/components/button.tsx +++ b/packages/eclipse/src/components/button.tsx @@ -9,6 +9,8 @@ const buttonVariants = cva( variant: { ppg: "bg-background-ppg-reverse text-foreground-ppg-reverse hover:bg-background-ppg-reverse-strong shadow-box-low", orm: "bg-background-orm-reverse text-foreground-orm-reverse hover:bg-background-orm-reverse-strong shadow-box-low", + "orm-reverse": + "bg-background-orm text-foreground-orm hover:bg-background-orm-strong shadow-box-low", "default-stronger": "bg-background-neutral text-foreground-neutral hover:bg-background-neutral-strong border border-stroke-neutral-strong", default: diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b24cda31ba..7a058bee86 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -615,6 +615,9 @@ importers: react-dom: specifier: 'catalog:' version: 19.2.4(react@19.2.4) + react-github-btn: + specifier: ^1.4.0 + version: 1.4.0(react@19.2.4) react-tweet: specifier: 'catalog:' version: 3.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -4512,6 +4515,9 @@ packages: get-tsconfig@4.13.6: resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} + github-buttons@2.32.0: + resolution: {integrity: sha512-DbKam2n7JGbccpbAoQ7UHhxH2XYlumCakTM4Ln7v8A9TzMaaEgKV6S7A+Suyx3EVBE1DPEqA6QSgyCoGJamymg==} + github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -5345,6 +5351,11 @@ packages: peerDependencies: react: ^19.2.4 + react-github-btn@1.4.0: + resolution: {integrity: sha512-lV4FYClAfjWnBfv0iNlJUGhamDgIq6TayD0kPZED6VzHWdpcHmPfsYOZ/CFwLfPv4Zp+F4m8QKTj0oy2HjiGXg==} + peerDependencies: + react: '>=16.3.0' + react-hook-form@7.71.2: resolution: {integrity: sha512-1CHvcDYzuRUNOflt4MOq3ZM46AronNJtQ1S7tnX6YN4y72qhgiUItpacZUAQ0TyWYci3yz1X+rXaSxiuEm86PA==} engines: {node: '>=18.0.0'} @@ -9444,6 +9455,8 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + github-buttons@2.32.0: {} + github-slugger@2.0.0: {} glob-parent@5.1.2: @@ -10649,6 +10662,11 @@ snapshots: react: 19.2.4 scheduler: 0.27.0 + react-github-btn@1.4.0(react@19.2.4): + dependencies: + github-buttons: 2.32.0 + react: 19.2.4 + react-hook-form@7.71.2(react@19.2.4): dependencies: react: 19.2.4 From b6a339e63210cdf504e0a62a50d6c756e6bac20a Mon Sep 17 00:00:00 2001 From: Carla Goncalves Date: Fri, 27 Mar 2026 09:51:38 +0000 Subject: [PATCH 2/4] Update for mobile --- apps/site/src/components/ecosystem/grid.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/src/components/ecosystem/grid.tsx b/apps/site/src/components/ecosystem/grid.tsx index a1a918d91a..f66a3748e8 100644 --- a/apps/site/src/components/ecosystem/grid.tsx +++ b/apps/site/src/components/ecosystem/grid.tsx @@ -10,7 +10,7 @@ export const EcosystemGrid = () => { const [activeFilter, setActiveFilter] = useState("show-all"); return ( <> -
+
Filter by:
@@ -43,7 +43,7 @@ export const EcosystemGrid = () => {

{filter.replace("-", " ")}

-
+
{ecosystem.list .filter((box) => box.type === filter) .map((box) => ( From 51d8274ad6e12e387ad6c2ab92d7372365371a9c Mon Sep 17 00:00:00 2001 From: Carla Goncalves Date: Fri, 27 Mar 2026 09:52:54 +0000 Subject: [PATCH 3/4] Update typo --- apps/site/src/components/ecosystem/grid.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/src/components/ecosystem/grid.tsx b/apps/site/src/components/ecosystem/grid.tsx index f66a3748e8..7b975aa8bb 100644 --- a/apps/site/src/components/ecosystem/grid.tsx +++ b/apps/site/src/components/ecosystem/grid.tsx @@ -48,7 +48,7 @@ export const EcosystemGrid = () => { .filter((box) => box.type === filter) .map((box) => (

From 5d04e8db2ed8ed06bf7a5dbd78c7cc76a75731d4 Mon Sep 17 00:00:00 2001 From: Carla Goncalves Date: Fri, 27 Mar 2026 10:00:18 +0000 Subject: [PATCH 4/4] Add links --- apps/site/src/components/ecosystem/grid.tsx | 59 ++++++++++++--------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/apps/site/src/components/ecosystem/grid.tsx b/apps/site/src/components/ecosystem/grid.tsx index 7b975aa8bb..1c11f6f446 100644 --- a/apps/site/src/components/ecosystem/grid.tsx +++ b/apps/site/src/components/ecosystem/grid.tsx @@ -47,35 +47,42 @@ export const EcosystemGrid = () => { {ecosystem.list .filter((box) => box.type === filter) .map((box) => ( - -

- {box.name} -

-

- {box.description} -

-
- + +

+ {box.name} +

+

+ {box.description} +

+
+ -
- +
+ +
-
-
+ + ))}