Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added apps/site/public/og/og-about.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-client.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-ecosystem.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-event-code-of-conduct.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-events.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-migrate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-newsletter.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-orm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-oss-friends.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-partners-tos.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-partners.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-prisma-stack-apollo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-prisma-stack-express.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-prisma-stack-fastify.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-prisma-stack-graphql.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-prisma-stack-hapi.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-prisma-stack-nextjs.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-prisma-stack-react.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-privacy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-sla.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-stack.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-terms.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/og/og-typedsql.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion apps/site/src/app/(index)/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ export default function SiteHome() {
imageUrl: "/illustrations/homepage/typesafe",
imageAlt: "Type-safe queries",
icon: "fa-light fa-message-text",
link: "https://prisma.io/docs/orm/prisma-client/type-safety",
link: "https://www.prisma.io/docs/orm/prisma-client/type-safety",
},
{
title: "Work collaboratively",
Expand Down
19 changes: 9 additions & 10 deletions apps/site/src/app/about/page.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
import Antigravity from "../../components/homepage/antigravity";
import type { Metadata } from "next";
import {
SITE_HOME_DESCRIPTION,
SITE_HOME_TITLE,
} from "../../lib/blog-metadata";
import { createPageMetadata } from "@/lib/page-metadata";
import {
Action,
Accordion,
Expand Down Expand Up @@ -195,7 +191,7 @@ const boxes = [
description: (
<p className="text-foreground-neutral text-foreground-neutral-weak text-sm font-normal m-0 leading-6">
We equip developers with the right tools at every stage, whether they
are <a href="/blog/bfg">building, fortifying, or growing</a> their
are <a href="https://www.prisma.io/blog/bfg">building, fortifying, or growing</a> their
applications.
</p>
),
Expand Down Expand Up @@ -325,10 +321,13 @@ const investors = {
],
};

export const metadata: Metadata = {
title: SITE_HOME_TITLE,
description: SITE_HOME_DESCRIPTION,
};
export const metadata = createPageMetadata({
title: "About Prisma | Mission, investors & open source",
description:
"Discover Prisma's mission and Data DX focus, our open-source roots, backers, and programs that help developers build faster with data.",
path: "/about",
ogImage: "/og/og-about.png",
});

export default function About() {
return (
Expand Down
2 changes: 1 addition & 1 deletion apps/site/src/app/api/search/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const storeIdentifiers = ["blog-search", "web-search"] as const;
const client = mixedbreadApiKey
? new Mixedbread({ apiKey: mixedbreadApiKey })
: null;
const websiteBaseUrl = "https://prisma.io";
const websiteBaseUrl = "https://www.prisma.io";
const blogPrefix = "/blog";
const docsPrefix = "/docs";

Expand Down
17 changes: 8 additions & 9 deletions apps/site/src/app/client/page.tsx
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
import type { Metadata } from "next";
import {
SITE_HOME_DESCRIPTION,
SITE_HOME_TITLE,
} from "../../lib/blog-metadata";
import { createPageMetadata } from "@/lib/page-metadata";
import { Action, Button, Card } from "@prisma/eclipse";
import API from "@/components/client/api";
import { CardSection } from "@/components/homepage/card-section/card-section";
import { cn } from "@/lib/cn";
import { Technology } from "@/components/client/technology";

export const metadata: Metadata = {
title: SITE_HOME_TITLE,
description: SITE_HOME_DESCRIPTION,
};
export const metadata = createPageMetadata({
title: "Prisma Client | Type-safe database client for TypeScript & Node.js",
description:
"Prisma Client is a type-safe database client for TypeScript and Node.js with autocomplete, raw SQL support, and broad database compatibility.",
path: "/client",
ogImage: "/og/og-client.png",
});

const databases = {
title: "Supported Databases",
Expand Down
17 changes: 8 additions & 9 deletions apps/site/src/app/ecosystem/page.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
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 { createPageMetadata } from "@/lib/page-metadata";
import { Button } from "@prisma/eclipse";
import { CopyCode } from "@/components/homepage/copy-btn";
import LogoParade from "@prisma-docs/ui/components/logo-parade";
Expand Down Expand Up @@ -59,10 +55,13 @@ const twoCol = [
visualType: "image" as const,
},
];
export const metadata: Metadata = {
title: SITE_HOME_TITLE,
description: SITE_HOME_DESCRIPTION,
};
export const metadata = createPageMetadata({
title: "Prisma Ecosystem | Community tools and ORM integrations",
description:
"Discover community-built tools, packages, and integrations for Prisma, plus support options and ways to share your project with the ecosystem.",
path: "/ecosystem",
ogImage: "/og/og-ecosystem.png",
});

export default function SiteHome() {
return (
Expand Down
8 changes: 5 additions & 3 deletions apps/site/src/app/event-code-of-conduct/page.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
import type { Metadata } from "next";
import { createPageMetadata } from "@/lib/page-metadata";
import {
cocSections,
cocLastUpdated,
cocDescription,
} from "@/data/event-code-of-conduct";
import { LegalAccordion } from "@/components/legal-accordion";

export const metadata: Metadata = {
export const metadata = createPageMetadata({
title: "Event Code of Conduct | Prisma",
description:
"All attendees, speakers, sponsors, and volunteers at Prisma events are required to agree to this code of conduct.",
};
path: "/event-code-of-conduct",
ogImage: "/og/og-event-code-of-conduct.png",
});

export default function EventCodeOfConductPage() {
return (
Expand Down
40 changes: 33 additions & 7 deletions apps/site/src/app/events/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import type { Metadata } from "next";
import { createPageMetadata } from "@/lib/page-metadata";
import { JsonLd } from "@/components/json-ld";
import { createCollectionPageStructuredData } from "@/lib/structured-data";
import { Badge, Button, Card, CardContent } from "@prisma/eclipse";
import Image from "next/image";
import {
Expand All @@ -10,18 +12,42 @@ import {
type SponsoredEvent,
} from "./events-data";

export const metadata: Metadata = {
export const metadata = createPageMetadata({
title: "Events | Prisma",
description:
"Find out when the next event or Meetup is happening, at which conferences you can see Prisma folks, and explore the content from previous events.",
alternates: {
canonical: "https://www.prisma.io/events",
},
};
"Find upcoming Prisma events and Meetups, see where the team will be speaking, and explore recordings and resources from past events.",
path: "/events",
ogImage: "/og/og-events.png",
});

const eventsStructuredData = createCollectionPageStructuredData({
path: "/events",
name: "Prisma Events",
description:
"Find upcoming Prisma events and Meetups, see where the team will be speaking, and explore recordings and resources from past events.",
items: [
...meetups.map((meetup) => ({
name: meetup.title,
url: meetup.link,
description: meetup.description,
})),
...sponsoredEvents.map((event) => ({
name: event.name,
url: event.link,
description: "Sponsored event supported by Prisma.",
})),
...pastEvents.map((event) => ({
name: event.name,
url: event.link,
description: event.description,
})),
],
});

export default function EventsPage() {
return (
<main className="flex-1 w-full -mt-24 bg-background-default text-foreground-neutral">
<JsonLd id="events-structured-data" data={eventsStructuredData} />
{/* Hero */}
<section className="px-4 pt-36 pb-12 md:pb-16">
<div className="mx-auto flex max-w-[720px] flex-col items-center gap-6 text-center">
Expand Down
59 changes: 44 additions & 15 deletions apps/site/src/app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { Provider } from "@/components/provider";
import { JsonLd } from "@/components/json-ld";
import { createSiteStructuredData } from "@/lib/structured-data";
import { getBaseUrl } from "@/lib/url";
import "./global.css";
import { Inter } from "next/font/google";
Expand Down Expand Up @@ -47,6 +49,8 @@ const themeInitScript = `
})();
`;

const siteStructuredData = createSiteStructuredData();

function baseOptions() {
return {
nav: {
Expand All @@ -58,32 +62,27 @@ function baseOptions() {
sub: [
{
text: "Postgres",
url: "https://www.prisma.io/postgres",
url: "/postgres",
desc: "Managed Postgres for global workloads",
icon: "fa-regular fa-chart-pyramid",
},
{
text: "ORM",
url: "https://www.prisma.io/orm",
url: "/orm",
desc: "Managed Postgres for global workloads",
icon: "fa-regular fa-database",
},
{
text: "Studio",
icon: "fa-regular fa-table",
url: "https://www.prisma.io/studio",
url: "/studio",
desc: "Explore and manipulate your data",
},
{
icon: "fa-regular fa-bolt",
text: "Accelerate",
desc: "Make your database global",
url: "https://www.prisma.io/accelerate",
},

],
},
{
url: "https://www.prisma.io/pricing",
url: "/pricing",
text: "Pricing",
},
{
Expand All @@ -92,7 +91,7 @@ function baseOptions() {
sub: [
{
text: "MCP",
url: "https://www.prisma.io/mcp",
url: "/mcp",
icon: "fa-regular fa-message-code",
},
{
Expand All @@ -113,17 +112,17 @@ function baseOptions() {
},
{
text: "Stack",
url: "https://www.prisma.io/stack",
url: "/stack",
icon: "fa-regular fa-layer-group",
},
{
text: "Ecosystem",
url: "https://www.prisma.io/ecosystem",
url: "/ecosystem",
icon: "fa-regular fa-globe",
},
{
text: "Customer stories",
url: "https://www.prisma.io/showcase",
url: "/showcase",
icon: "fa-regular fa-users",
},
{
Expand All @@ -135,7 +134,7 @@ function baseOptions() {
],
},
{
url: "/docs",
url: "https://www.prisma.io/docs",
text: "Docs",
},
{
Expand All @@ -152,6 +151,36 @@ export default function Layout({ children }: { children: React.ReactNode }) {
<head>
<script dangerouslySetInnerHTML={{ __html: themeInitScript }} />
<Script src={WebFA} crossOrigin="anonymous" />

<Script
id="cookieyes"
type="text/javascript"
src="https://cdn-cookieyes.com/client_data/96980f76df67ad5235fc3f0d/script.js"
/>

<script
async
type="text/plain"
src="https://cdn.tolt.io/tolt.js"
data-tolt="fda67739-7ed0-42d2-b716-6da0edbec191"
data-cookieyes="cookieyes-analytics"
data-cookieyes-category="analytics"
/>
<script
id="gmanager"
type="text/plain"
data-cookieyes="cookieyes-analytics"
data-cookieyes-category="analytics"
dangerouslySetInnerHTML={{
__html: `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-KCGZPWB');
`,
}}
/>
<JsonLd id="site-structured-data" data={siteStructuredData} />
</head>
<body className="flex flex-col min-h-screen pt-24 relative">
<div className="bg-background-default absolute inset-0 -z-1 overflow-hidden" />
Expand Down
19 changes: 9 additions & 10 deletions apps/site/src/app/migrate/page.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import type { Metadata } from "next";
import {
SITE_HOME_DESCRIPTION,
SITE_HOME_TITLE,
} from "../../lib/blog-metadata";
import { createPageMetadata } from "@/lib/page-metadata";
import { Action, Button, Card } from "@prisma/eclipse";
import HeroCode, { HeroCodeStep } from "@/components/migrate/hero-code";

export const metadata: Metadata = {
title: SITE_HOME_TITLE,
description: SITE_HOME_DESCRIPTION,
};
export const metadata = createPageMetadata({
title: "Prisma Migrate | Schema-driven SQL database migrations",
description:
"Prisma Migrate turns schema changes into SQL migrations with safe, repeatable workflows for local development, CI, and production.",
path: "/migrate",
ogImage: "/og/og-migrate.png",
});

const migrateSteps: HeroCodeStep[] = [
{
Expand Down Expand Up @@ -101,7 +100,7 @@ export default function Migrate() {
<Button
variant="orm"
size="3xl"
href="/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql"
href="https://www.prisma.io/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql"
>
<span>Install Prisma</span>
</Button>
Expand Down
13 changes: 6 additions & 7 deletions apps/site/src/app/newsletter/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Metadata } from "next";
import { createPageMetadata } from "@/lib/page-metadata";
import Image from "next/image";
import Link from "next/link";
import {
Expand All @@ -10,14 +10,13 @@ import {
} from "@prisma/eclipse";
import { NewsletterSignup } from "./newsletter-signup";

export const metadata: Metadata = {
export const metadata = createPageMetadata({
title: "Newsletter | Prisma",
description:
"Get release updates, tutorials, and more content delivered to your inbox monthly.",
alternates: {
canonical: "https://www.prisma.io/newsletter",
},
};
"Subscribe for monthly Prisma release notes, tutorials, and product updates covering ORM, Postgres, and the developer ecosystem.",
path: "/newsletter",
ogImage: "/og/og-newsletter.png",
});

type RssItem = {
title: string;
Expand Down
Loading
Loading