Skip to content

Commit ca81b18

Browse files
Merge branch 'main' into fix/various-seo-updates
Made-with: Cursor # Conflicts: # apps/site/src/app/pricing/page.tsx
2 parents 512b239 + 30c2c7d commit ca81b18

10 files changed

Lines changed: 132 additions & 112 deletions

File tree

apps/blog/content/blog/rethinking-database-migrations/index.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ slug: "rethinking-database-migrations"
44
date: "2026-03-27"
55
authors:
66
- "Mike Hartington"
7+
- "Will Madden"
78
metaTitle: "Rethinking Database Migrations"
89
metaDescription: "Database migrations are brittle and they break when you're most vulnerable; when you're deploying to production. Prisma Next migrations make them explicit, verifiable and safe to retry."
910
metaImagePath: "/rethinking-database-migrations/imgs/meta.png"
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
---
2+
title: "Try Prisma: The Fastest Way to Explore Prisma Examples"
3+
slug: "try-prisma-announcment-Kv6bwRcdjd"
4+
date: "2022-11-25"
5+
authors:
6+
- "Sabin Adams"
7+
metaTitle: "Try Prisma: The Fastest Way to Explore Prisma Examples"
8+
metaDescription: "Announcing: Try Prisma. A CLI utility that allows you to easily set up and try out an example projects using Prisma."
9+
metaImagePath: "/try-prisma-announcment-Kv6bwRcdjd/imgs/meta.png"
10+
heroImagePath: "/try-prisma-announcment-Kv6bwRcdjd/imgs/hero.svg"
11+
heroImageAlt: "Try Prisma: The Fastest Way to Explore Prisma Examples"
12+
tags:
13+
- "announcement"
14+
- "orm"
15+
16+
---
17+
18+
We are very excited to announce our new CLI utility, `try-prisma`. This tool allows you to easily set up an official Prisma example project from the [prisma-examples](https://github.com/prisma/prisma-examples) repository locally with a single command: `npx try-prisma`.
19+
20+
## Announcing `try-prisma`
21+
22+
Here at Prisma, our goal is to make your lives as developers easier.
23+
Today, we are very excited to announce the release of our new tool that does just that: [`try-prisma`](https://github.com/prisma/try-prisma).
24+
25+
For a while now, we at Prisma have maintained our [prisma-examples](https://github.com/prisma/prisma-examples) repository with up to date, ready-to-go projects using Prisma. The intent for these projects is to allow users to experience what Prisma would be like in their new stack while evaluating technologies.
26+
27+
The process to set up one of these example projects, however, has been a very manual one, not providing the best developer experience we could provide.
28+
`try-prisma` fixes this by allowing you to run a single command to set up any example project you want to try.
29+
30+
<Youtube videoId="2sCWMNGGGUE" />
31+
32+
## Embracing hands-on exploration
33+
34+
As developers, we love to jump in and get our hands dirty when evaluating a new project or set of tools.
35+
With `try-prisma`, going from zero to experimentation is as simple as running a single command:
36+
37+
```shell
38+
npx try-prisma
39+
```
40+
41+
The starter projects available typically include:
42+
43+
- A fully configured and ready-to-go application in the selected stack
44+
- A detailed README with instructions on how to use the project
45+
- Prisma set up and configured with a starter schema
46+
- A seed script to populate your test database
47+
48+
These projects allow you to skip the steps where you have to learn how all the little pieces of your stack work together, allowing you to jump right in and begin experimenting.
49+
50+
## The `prisma-examples` repository
51+
52+
The `try-prisma` CLI tool gives you easy access to the projects available in the [prisma-examples](https://github.com/prisma/prisma-examples) repository.
53+
54+
This repository contains an assortment of projects using different technologies that are organized into various folders based on the technologies used.
55+
56+
A few examples include:
57+
58+
- [`javascript/graphql`](https://github.com/prisma/prisma-examples/tree/latest/javascript/graphql)
59+
- [`javascript/rest-nextjs`](https://github.com/prisma/prisma-examples/tree/latest/javascript/rest-nextjs)
60+
- [`typescript/rest-nestjs`](https://github.com/prisma/prisma-examples/tree/latest/typescript/rest-nestjs)
61+
- [`typescript/grpc`](https://github.com/prisma/prisma-examples/tree/latest/typescript/grpc)
62+
63+
## Built on your suggestions
64+
65+
The [prisma-examples](https://github.com/prisma/prisma-examples) repository is a resource for the community that includes examples of various technologies in use with Prisma.
66+
67+
![Suggestions for new Prisma examples](/try-prisma-announcment-Kv6bwRcdjd/imgs/suggestions.png)
68+
69+
We love receiving feedback and encourage you to submit suggestions for new example projects or enhancements for existing projects.
70+
71+
If you have any technologies you would like to see added to our library of examples or would like to submit a suggestion for an existing project, feel free to use either of the links below:
72+
73+
- [Suggest a new example](https://pris.ly/prisma-examples-suggestion)
74+
- [Submit feedback for an existing example](https://pris.ly/prisma-examples-feedback)
75+
76+
Alternatively, you may submit a pull request to the [prisma-examples](https://github.com/prisma/prisma-examples) repository with your own example project or revisions following the [Contribution Guidelines](https://github.com/prisma/prisma-examples/blob/latest/CONTRIBUTING.md).
77+
78+
These suggestions will be closely monitored and acted upon by the Developer Advocate team here at Prisma.
79+
80+
## Try it out
81+
82+
Sound exciting? Give it a try.
83+
84+
To get started, head over to your terminal and run the following command:
85+
86+
```shell
87+
npx try-prisma
88+
```
89+
90+
You will be walked through a series of questions about which project you would like to use, where it should be installed, and how it should be configured:
91+
92+
![The try-prisma CLI setup flow](/try-prisma-announcment-Kv6bwRcdjd/imgs/process.gif)
93+
94+
Open up the new project and head to the README for information on how to start experimenting.
95+
96+
If you are curious about all of the options available via the CLI, head over to the [`try-prisma` repository](https://github.com/prisma/try-prisma) and check out the README.
97+
98+
<Button
99+
variant="ppg"
100+
href="https://github.com/prisma/try-prisma"
101+
className="no-underline hover:no-underline w-fit mx-auto px-4"
102+
>Head over to the try-prisma repository</Button>
103+
104+
If you run into any issues, feel free to leave an issue in the repository's [issues](https://github.com/prisma/try-prisma/issues) tab.
105+
106+
We hope you'll give `try-prisma` a try and that it improves your experience when testing out new tools.
20.2 KB
Loading

apps/blog/public/try-prisma-announcment-Kv6bwRcdjd/imgs/hero.svg

Lines changed: 18 additions & 0 deletions
Loading
50.9 KB
Loading
6.15 MB
Loading
339 KB
Loading

apps/blog/src/app/layout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export default function Layout({ children }: LayoutProps<"/">) {
3636
crossOrigin="anonymous"
3737
></Script>
3838
</head>
39-
<body className="flex flex-col min-h-screen pt-24 relative">
39+
<body className="flex flex-col min-h-screen relative">
4040
<div className="bg-blog absolute inset-0 -z-1 overflow-hidden" />
4141
<Provider>{children}</Provider>
4242
</body>

apps/site/src/app/pricing/page.tsx

Lines changed: 6 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,19 @@
1-
import { createPricingStructuredData } from "@/lib/structured-data";
2-
import type { Metadata } from "next";
1+
import { createPageMetadata } from "@/lib/page-metadata";
32
import { Accordion, Accordions, Button } from "@prisma/eclipse";
4-
import { JsonLd } from "@prisma-docs/ui/components/json-ld";
53
import { faqs } from "./pricing-data";
64
import { PricingPageContent } from "./pricing-page-content";
75

8-
const pricingStructuredData = createPricingStructuredData([
9-
{
10-
name: "Free",
11-
description: "Perfect for that weekend idea. 100,000 operations and 500 MB storage included.",
12-
price: 0,
13-
billingPeriod: "month",
14-
},
15-
{
16-
name: "Starter",
17-
description: "The basics you need to launch. 1,000,000 operations and 10 GB storage included.",
18-
price: 10,
19-
billingPeriod: "month",
20-
},
21-
{
22-
name: "Pro",
23-
description: "Growing for business success. 10,000,000 operations and 50 GB storage included.",
24-
price: 49,
25-
billingPeriod: "month",
26-
},
27-
{
28-
name: "Business",
29-
description: "For mission-critical apps. 50,000,000 operations and 100 GB storage included.",
30-
price: 129,
31-
billingPeriod: "month",
32-
},
33-
]);
34-
35-
export const metadata: Metadata = {
6+
export const metadata = createPageMetadata({
367
title: "Pricing — Prisma Postgres Plans & Features",
378
description:
38-
"Get started for free with Prisma Postgres. Choose the right plan for your workspace based on your project requirements.",
39-
alternates: {
40-
canonical: "https://www.prisma.io/pricing",
41-
},
42-
openGraph: {
43-
title: "Pricing — Prisma Postgres Plans & Features",
44-
description:
45-
"Get started for free with Prisma Postgres. Choose the right plan for your workspace based on your project requirements.",
46-
url: "https://www.prisma.io/pricing",
47-
images: [
48-
{
49-
url: "/og/og-pricing.png",
50-
},
51-
],
52-
},
53-
twitter: {
54-
card: "summary_large_image",
55-
title: "Pricing — Prisma Postgres Plans & Features",
56-
description:
57-
"Get started for free with Prisma Postgres. Choose the right plan for your workspace based on your project requirements.",
58-
images: ["/og/og-pricing.png"],
59-
},
60-
};
9+
"Get started for free with Prisma Postgres. Choose the right plan for your workspace based on your project requirements.",
10+
path: "/pricing",
11+
ogImage: "/og/og-pricing.png",
12+
});
6113

6214
export default function PricingPage() {
6315
return (
6416
<main className="flex-1 w-full -mt-24 bg-background-default text-background-neutral-weak pt-24">
65-
<JsonLd id="pricing-structured-data" data={pricingStructuredData} />
6617
<PricingPageContent />
6718

6819
{/* FAQ */}

apps/site/src/lib/structured-data.ts

Lines changed: 0 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,6 @@ type FaqEntry = {
66
answer: string;
77
};
88

9-
type PricingTier = {
10-
name: string;
11-
description: string;
12-
price: number;
13-
billingPeriod: string;
14-
};
15-
169
type ListEntry = {
1710
name: string;
1811
url: string;
@@ -90,55 +83,6 @@ export function createFaqStructuredData(pagePath: string, faqs: FaqEntry[], name
9083
};
9184
}
9285

93-
export function createPricingStructuredData(tiers: PricingTier[]) {
94-
const url = absoluteUrl("/pricing");
95-
const baseUrl = getBaseUrl();
96-
return {
97-
"@context": "https://schema.org",
98-
"@graph": [
99-
{
100-
"@type": "WebPage",
101-
"@id": `${url}#webpage`,
102-
name: "Prisma Pricing — Plans & Features",
103-
url,
104-
description:
105-
"Get started for free with Prisma Postgres. Choose the right plan for your workspace based on your project requirements.",
106-
publisher: {
107-
"@id": `${baseUrl}#organization`,
108-
},
109-
isPartOf: {
110-
"@id": `${baseUrl}#website`,
111-
},
112-
},
113-
...tiers.map((tier) => ({
114-
"@type": "Product",
115-
name: `Prisma Postgres ${tier.name}`,
116-
description: tier.description,
117-
brand: {
118-
"@id": `${baseUrl}#organization`,
119-
},
120-
offers: {
121-
"@type": "Offer",
122-
url,
123-
priceCurrency: "USD",
124-
price: tier.price,
125-
priceValidUntil: new Date(
126-
new Date().getFullYear() + 1,
127-
new Date().getMonth(),
128-
new Date().getDate(),
129-
)
130-
.toISOString()
131-
.split("T")[0],
132-
availability: "https://schema.org/InStock",
133-
...(tier.price > 0
134-
? { priceSpecification: { "@type": "UnitPriceSpecification", billingDuration: "P1M" } }
135-
: {}),
136-
},
137-
})),
138-
],
139-
};
140-
}
141-
14286
export function createSoftwareApplicationStructuredData({
14387
path,
14488
name,

0 commit comments

Comments
 (0)