Deploy web surfaces to Prisma Compute#7967
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
WalkthroughThe blog Next.js config gains a ChangesBlog Compute Deployment Adaptation
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
|
The latest updates on your projects. Learn more about Argos notifications ↗︎
|
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (4)
apps/blog/next.config.mjs (1)
214-216: 💤 Low valueConsider whether
outputFileTracingRootandturbopack.rootshould be conditional.These settings are applied unconditionally (both Compute and non-Compute builds), while
outputandassetPrefixare conditional. If workspace-rooted tracing is only required for Compute deployments, you may want to guard them withisPrismaComputeDeploy. However, if they improve monorepo dependency resolution in all build modes, the current unconditional approach is fine.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/blog/next.config.mjs` around lines 214 - 216, Review whether the `outputFileTracingRoot` and `turbopack.root` configuration options in the Next.js config are only required for Compute deployments or needed for all build modes. If they are Compute-specific (like the conditional `output` and `assetPrefix` settings above them), wrap them with the `isPrismaComputeDeploy` conditional check. If they improve monorepo dependency resolution in all build modes, the current unconditional approach is appropriate and no change is needed.apps/docs/src/app/api/search/route.ts (1)
118-123: ⚡ Quick winConsider logging when the API key is missing.
The site search route logs a warning when the Mixedbread client is unavailable. This route silently returns an empty array, which may hinder troubleshooting during deployment.
📋 Suggested logging addition
export function GET(...args: Parameters<SearchApi["GET"]>) { const api = getSearchApi(); - if (!api) return NextResponse.json([]); + if (!api) { + console.warn("Docs search called but MIXEDBREAD_API_KEY is not set"); + return NextResponse.json([]); + } return api.GET(...args); }As per the site search route (apps/site/src/app/api/search/route.ts:114-117), which logs errors when the Mixedbread client is null.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/docs/src/app/api/search/route.ts` around lines 118 - 123, The GET function in this file silently returns an empty array when getSearchApi() returns null, which makes it difficult to troubleshoot deployment issues. Similar to the search route in apps/site/src/app/api/search/route.ts (lines 114-117) which logs a warning when the Mixedbread client is unavailable, add logging to the conditional block in the GET function here that checks if api is falsy. Include a warning or error log message that indicates the search API is not available before returning the empty response.apps/blog/src/app/api/search/route.ts (1)
60-65: ⚡ Quick winConsider logging when the API key is missing.
The site search route logs a warning when the Mixedbread client is unavailable, helping operators diagnose configuration issues. This route silently returns an empty array, which may make troubleshooting harder.
📋 Suggested logging addition
export function GET(...args: Parameters<SearchApi["GET"]>) { const api = getSearchApi(); - if (!api) return NextResponse.json([]); + if (!api) { + console.warn("Blog search called but MIXEDBREAD_API_KEY is not set"); + return NextResponse.json([]); + } return api.GET(...args); }As per the site search route (apps/site/src/app/api/search/route.ts:114-117), which logs errors when the Mixedbread client is null.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/blog/src/app/api/search/route.ts` around lines 60 - 65, The GET function in the search route silently returns an empty array when getSearchApi returns null without any logging, making it difficult for operators to diagnose configuration issues. Add a warning or error log statement in the GET function when the api is null (in the if (!api) condition) to log that the search API is unavailable, similar to how the Mixedbread client unavailability is logged in the site search route.scripts/compute-static-snapshot.mjs (1)
56-56: 💤 Low valueConsider extracting the timeout to a named constant.
The 180-second timeout is embedded as
180_000with no context. A named constant likeSNAPSHOT_TIMEOUT_MSwould improve readability.♻️ Suggested refactor
+const SNAPSHOT_TIMEOUT_MS = 180_000; + async function waitForSnapshot(url) { const started = Date.now(); let lastError; - while (Date.now() - started < 180_000) { + while (Date.now() - started < SNAPSHOT_TIMEOUT_MS) {🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/compute-static-snapshot.mjs` at line 56, The magic number 180_000 appears directly in the while loop condition without any explanation of what it represents. Extract this timeout value into a named constant called SNAPSHOT_TIMEOUT_MS at the top of the file, then replace the hardcoded 180_000 with a reference to this constant. This improves code readability by making the intent clear that this is a snapshot timeout duration measured in milliseconds.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@package.json`:
- Line 16: The `@prisma/compute-sdk` dependency is specified with version ^0.28.0,
which does not exist in the published registry. Update this dependency in
package.json to use an available version, specifically 0.23.0 which is the
latest published version. This will resolve installation failures and ensure the
package can be properly resolved during npm install.
In `@scripts/compute-static-snapshot.mjs`:
- Around line 73-92: The startStandaloneServer function spawns a child process
without handling error conditions such as missing bun executable, missing
server.js file, or immediate process exit failures. Add an 'error' event
listener to the child process to catch spawn failures and log descriptive error
messages, and add an 'exit' event listener to detect if the server process exits
immediately with a non-zero exit code so that failures are reported immediately
rather than allowing waitForSnapshot to retry for 180 seconds.
---
Nitpick comments:
In `@apps/blog/next.config.mjs`:
- Around line 214-216: Review whether the `outputFileTracingRoot` and
`turbopack.root` configuration options in the Next.js config are only required
for Compute deployments or needed for all build modes. If they are
Compute-specific (like the conditional `output` and `assetPrefix` settings above
them), wrap them with the `isPrismaComputeDeploy` conditional check. If they
improve monorepo dependency resolution in all build modes, the current
unconditional approach is appropriate and no change is needed.
In `@apps/blog/src/app/api/search/route.ts`:
- Around line 60-65: The GET function in the search route silently returns an
empty array when getSearchApi returns null without any logging, making it
difficult for operators to diagnose configuration issues. Add a warning or error
log statement in the GET function when the api is null (in the if (!api)
condition) to log that the search API is unavailable, similar to how the
Mixedbread client unavailability is logged in the site search route.
In `@apps/docs/src/app/api/search/route.ts`:
- Around line 118-123: The GET function in this file silently returns an empty
array when getSearchApi() returns null, which makes it difficult to troubleshoot
deployment issues. Similar to the search route in
apps/site/src/app/api/search/route.ts (lines 114-117) which logs a warning when
the Mixedbread client is unavailable, add logging to the conditional block in
the GET function here that checks if api is falsy. Include a warning or error
log message that indicates the search API is not available before returning the
empty response.
In `@scripts/compute-static-snapshot.mjs`:
- Line 56: The magic number 180_000 appears directly in the while loop condition
without any explanation of what it represents. Extract this timeout value into a
named constant called SNAPSHOT_TIMEOUT_MS at the top of the file, then replace
the hardcoded 180_000 with a reference to this constant. This improves code
readability by making the intent clear that this is a snapshot timeout duration
measured in milliseconds.
🪄 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: bbd12154-5109-4b14-a1b2-fb433f4a0b48
⛔ Files ignored due to path filters (4)
docs/compute-deploy/prisma-compute-blog.pngis excluded by!**/*.pngdocs/compute-deploy/prisma-compute-docs.pngis excluded by!**/*.pngdocs/compute-deploy/prisma-compute-homepage.pngis excluded by!**/*.pngpnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (15)
.gitignoreREADME.mdapps/blog/next.config.mjsapps/blog/src/app/api/search/route.tsapps/docs/next.config.mjsapps/docs/src/app/(docs)/(default)/[[...slug]]/page.tsxapps/docs/src/app/api/search/route.tsapps/docs/src/app/llms.mdx/[[...slug]]/route.tsapps/docs/src/app/llms/[...slug]/route.tsapps/docs/src/app/og/[...slug]/route.tsxapps/site/next.config.mjspackage.jsonprisma.compute.tsscripts/compute-static-snapshot.mjsturbo.json
| "lint:spellcheck": "turbo run lint:spellcheck --filter=docs" | ||
| }, | ||
| "devDependencies": { | ||
| "@prisma/compute-sdk": "^0.28.0", |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
What is the latest version of @prisma/compute-sdk npm package?
💡 Result:
The latest version of the @prisma/compute-sdk npm package is 0.23.0 [1]. While the official npm registry page currently lists 0.22.0 as the most recently updated version on June 3, 2026 [2][3][4], the package is also available via the jsDelivr CDN, which documents version 0.23.0 as part of its available files [1].
Citations:
- 1: https://cdn.jsdelivr.net/npm/@prisma/compute-sdk/
- 2: https://registry.npmjs.org/@prisma/compute-sdk
- 3: https://www.jsdelivr.com/package/npm/@prisma/compute-sdk
- 4: https://shoulder.dev/npm/@prisma/compute-sdk
Update @prisma/compute-sdk to an available version.
The specified version ^0.28.0 does not exist. The latest published version is 0.23.0. Update the dependency to use an existing version to avoid installation failures.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@package.json` at line 16, The `@prisma/compute-sdk` dependency is specified
with version ^0.28.0, which does not exist in the published registry. Update
this dependency in package.json to use an available version, specifically 0.23.0
which is the latest published version. This will resolve installation failures
and ensure the package can be properly resolved during npm install.
| function startStandaloneServer() { | ||
| const serverPath = path.join(appDir, ".next/standalone", target.appDir, "server.js"); | ||
| const child = spawn("bun", [serverPath], { | ||
| cwd: repoRoot, | ||
| env: { | ||
| ...process.env, | ||
| HOSTNAME: "127.0.0.1", | ||
| NEXT_TELEMETRY_DISABLED: "1", | ||
| NODE_ENV: "production", | ||
| PORT: port, | ||
| PRISMA_COMPUTE_DEPLOY: "true", | ||
| }, | ||
| stdio: ["ignore", "pipe", "pipe"], | ||
| }); | ||
|
|
||
| child.stdout.on("data", (chunk) => process.stdout.write(chunk)); | ||
| child.stderr.on("data", (chunk) => process.stderr.write(chunk)); | ||
|
|
||
| return child; | ||
| } |
There was a problem hiding this comment.
Add error handling for server spawn failures.
The script spawns the standalone server but doesn't handle cases where:
- The
bunexecutable is not found - The
server.jsfile doesn't exist (if the Turbo build failed silently) - The server process exits immediately with an error
Without error handlers, waitForSnapshot will retry for 180 seconds before timing out with an unclear error message.
🛡️ Proposed fix
function startStandaloneServer() {
const serverPath = path.join(appDir, ".next/standalone", target.appDir, "server.js");
const child = spawn("bun", [serverPath], {
cwd: repoRoot,
env: {
...process.env,
HOSTNAME: "127.0.0.1",
NEXT_TELEMETRY_DISABLED: "1",
NODE_ENV: "production",
PORT: port,
PRISMA_COMPUTE_DEPLOY: "true",
},
stdio: ["ignore", "pipe", "pipe"],
});
+ child.on("error", (error) => {
+ console.error("Failed to spawn server:", error.message);
+ });
+
+ child.on("exit", (code, signal) => {
+ if (code !== null && code !== 0) {
+ console.error(`Server exited with code ${code}`);
+ } else if (signal !== null) {
+ console.error(`Server killed by signal ${signal}`);
+ }
+ });
+
child.stdout.on("data", (chunk) => process.stdout.write(chunk));
child.stderr.on("data", (chunk) => process.stderr.write(chunk));
return child;
}📝 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.
| function startStandaloneServer() { | |
| const serverPath = path.join(appDir, ".next/standalone", target.appDir, "server.js"); | |
| const child = spawn("bun", [serverPath], { | |
| cwd: repoRoot, | |
| env: { | |
| ...process.env, | |
| HOSTNAME: "127.0.0.1", | |
| NEXT_TELEMETRY_DISABLED: "1", | |
| NODE_ENV: "production", | |
| PORT: port, | |
| PRISMA_COMPUTE_DEPLOY: "true", | |
| }, | |
| stdio: ["ignore", "pipe", "pipe"], | |
| }); | |
| child.stdout.on("data", (chunk) => process.stdout.write(chunk)); | |
| child.stderr.on("data", (chunk) => process.stderr.write(chunk)); | |
| return child; | |
| } | |
| function startStandaloneServer() { | |
| const serverPath = path.join(appDir, ".next/standalone", target.appDir, "server.js"); | |
| const child = spawn("bun", [serverPath], { | |
| cwd: repoRoot, | |
| env: { | |
| ...process.env, | |
| HOSTNAME: "127.0.0.1", | |
| NEXT_TELEMETRY_DISABLED: "1", | |
| NODE_ENV: "production", | |
| PORT: port, | |
| PRISMA_COMPUTE_DEPLOY: "true", | |
| }, | |
| stdio: ["ignore", "pipe", "pipe"], | |
| }); | |
| child.on("error", (error) => { | |
| console.error("Failed to spawn server:", error.message); | |
| }); | |
| child.on("exit", (code, signal) => { | |
| if (code !== null && code !== 0) { | |
| console.error(`Server exited with code ${code}`); | |
| } else if (signal !== null) { | |
| console.error(`Server killed by signal ${signal}`); | |
| } | |
| }); | |
| child.stdout.on("data", (chunk) => process.stdout.write(chunk)); | |
| child.stderr.on("data", (chunk) => process.stderr.write(chunk)); | |
| return child; | |
| } |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@scripts/compute-static-snapshot.mjs` around lines 73 - 92, The
startStandaloneServer function spawns a child process without handling error
conditions such as missing bun executable, missing server.js file, or immediate
process exit failures. Add an 'error' event listener to the child process to
catch spawn failures and log descriptive error messages, and add an 'exit' event
listener to detect if the server process exits immediately with a non-zero exit
code so that failures are reported immediately rather than allowing
waitForSnapshot to retry for 180 seconds.
There was a problem hiding this comment.
🧹 Nitpick comments (1)
README.md (1)
43-43: 💤 Low valueMinor grammar suggestion: consider hyphenating compound modifier.
Line 43 reads "does not ship sibling generated files automatically." For clarity and consistency with modern style guides, consider: "does not ship sibling-generated files automatically" or "does not ship generated sibling files automatically."
This is optional and does not affect meaning, but hyphenating compound modifiers is a stylistic best practice.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@README.md` at line 43, In the README.md file, locate the phrase "does not ship sibling generated files automatically" on line 43. Apply proper hyphenation to the compound modifier by changing it to either "does not ship sibling-generated files automatically" or "does not ship generated sibling files automatically" to improve grammar clarity and consistency with modern style guides.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@README.md`:
- Line 43: In the README.md file, locate the phrase "does not ship sibling
generated files automatically" on line 43. Apply proper hyphenation to the
compound modifier by changing it to either "does not ship sibling-generated
files automatically" or "does not ship generated sibling files automatically" to
improve grammar clarity and consistency with modern style guides.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 32abfdd8-08c1-46aa-a42d-a11991c5789d
⛔ Files ignored due to path filters (145)
apps/blog/public/accelerate-ga-release-I9cQM6bSf2g6/imgs/48bf68ea87d144f63f476efc98b9ba9d5ccb29a8-400x400.jpgis excluded by!**/*.jpgapps/blog/public/accelerate-ga-release-I9cQM6bSf2g6/imgs/832974c6ad7e1bb0e8ca928e5d1a0b58ccfe8220-800x800.jpgis excluded by!**/*.jpgapps/blog/public/accelerate-ga-release-I9cQM6bSf2g6/imgs/formbricks.svgis excluded by!**/*.svgapps/blog/public/accelerate-ga-release-I9cQM6bSf2g6/imgs/hero-de83f5f843f2a86abd05659c94c3069e7577a0f5-844x474.svgis excluded by!**/*.svgapps/blog/public/accelerate-ga-release-I9cQM6bSf2g6/imgs/logo-cal.svgis excluded by!**/*.svgapps/blog/public/accelerate-ga-release-I9cQM6bSf2g6/imgs/meta-42554fa75736c00b0ca55e1e440dde26f43dcb3f-1266x711.pngis excluded by!**/*.pngapps/blog/public/accelerate-preview-release-ab229e69ed2/imgs/connection-pool-located-in-the-database-region.pngis excluded by!**/*.pngapps/blog/public/accelerate-preview-release-ab229e69ed2/imgs/global-cache.pngis excluded by!**/*.pngapps/blog/public/accelerate-preview-release-ab229e69ed2/imgs/hero-587aeef34568af2258cd4e5f0453710b0b94259c-844x474.svgis excluded by!**/*.svgapps/blog/public/accelerate-preview-release-ab229e69ed2/imgs/meta-3a75c0ed5f8837980765d5b7589367216653d6b7-1266x711.pngis excluded by!**/*.pngapps/blog/public/all-you-need-to-know-about-apollo-client-2-7e27e36d62fd/imgs/hero-ebd9548e6d9cfb33c4e35eac48e11a80532a8d30-1440x960.jpgis excluded by!**/*.jpgapps/blog/public/ambassador-program-nxkWGcGNuvFx/imgs/hero-1bdf6237d95ded8d448f28db203012147fdcd39e-846x426.pngis excluded by!**/*.pngapps/blog/public/ambassador-program-nxkWGcGNuvFx/imgs/meta-de28b5e0df55c52078065ee2ae0b44d6cdf0da1e-1692x852.pngis excluded by!**/*.pngapps/blog/public/amplication-customer-story-nmlkBNlLlxnN/imgs/159914408-83d5bddb-e3e7-46fa-9d47-f247ce42c68b.jpegis excluded by!**/*.jpegapps/blog/public/amplication-customer-story-nmlkBNlLlxnN/imgs/amplication-prisma-diagram2.pngis excluded by!**/*.pngapps/blog/public/amplication-customer-story-nmlkBNlLlxnN/imgs/amplication-ui.pngis excluded by!**/*.pngapps/blog/public/amplication-customer-story-nmlkBNlLlxnN/imgs/hero-b1fb9ec0c8fca054011688621bfe51ea1836af10-844x474.svgis excluded by!**/*.svgapps/blog/public/amplication-customer-story-nmlkBNlLlxnN/imgs/meta-4baa84e48a0da8e13e23367137d5a17515119aaf-2881x1620.pngis excluded by!**/*.pngapps/blog/public/announcing-accelerate-usrvpi6sfkv4/imgs/hero-9c6258461d73719cebc60136dd4e976d79306dcb-845x475.svgis excluded by!**/*.svgapps/blog/public/announcing-accelerate-usrvpi6sfkv4/imgs/meta-25afee16878423e24c7aff2bb3fe49a433996d03-1200x631.pngis excluded by!**/*.pngapps/blog/public/announcing-discord-1LiAOpS7lxV9/imgs/discord-screenshot.pngis excluded by!**/*.pngapps/blog/public/announcing-discord-1LiAOpS7lxV9/imgs/hero-7ae00282956a1f6a68f815b4cffee5ee1b1ce934-844x474.svgis excluded by!**/*.svgapps/blog/public/announcing-discord-1LiAOpS7lxV9/imgs/meta-388b596e6a40f7eeaf42604a4645c93dd051af6a-1267x712.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-2-n0v98rzc8br1/imgs/5YEs4IC.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-2-n0v98rzc8br1/imgs/YWeTRfU.mp4is excluded by!**/*.mp4apps/blog/public/announcing-prisma-2-n0v98rzc8br1/imgs/cQRivY4.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-2-n0v98rzc8br1/imgs/hero-11436ec45c7ccbc812212d1d6d7c8794d9514f2f-1692x852.jpgis excluded by!**/*.jpgapps/blog/public/announcing-prisma-2-n0v98rzc8br1/imgs/kPGJU6j.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-2-zq1s745db8i5/imgs/AG34kGB.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-2-zq1s745db8i5/imgs/bFUA7LC.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-2-zq1s745db8i5/imgs/gqbGz7b.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-2-zq1s745db8i5/imgs/hero-34a26858c7de3cad0d84a376d12b58b82ee10da0-1200x630.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-2-zq1s745db8i5/imgs/l1Jg54Y.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-day-50cg22nn40qk/imgs/hero-d719c9276cc4c57665d4a32cc5fdae5b5bfcad50-1200x630.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-day-50cg22nn40qk/imgs/meta-eeacc461f1965ed958af330fc9dc93f635920b43-1200x630.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-playground-xeywknkj0e1p/imgs/hero-1735a3ccb59d21fc0d32410b0b3ac83242fcd020-844x474.svgis excluded by!**/*.svgapps/blog/public/announcing-prisma-playground-xeywknkj0e1p/imgs/meta-470fec1fa04cf5fccadfadd70b449d857ee62116-1688x948.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-playground-xeywknkj0e1p/imgs/playground-1.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-playground-xeywknkj0e1p/imgs/playground-2.pngis excluded by!**/*.pngapps/blog/public/announcing-prisma-playground-xeywknkj0e1p/imgs/playground-3.pngis excluded by!**/*.pngapps/blog/public/announcing-the-release-of-nexus-schema-v1-b5eno5g08d0b/imgs/hero-807c11a11df0567a4b2ac96a0cac738b916d7416-1692x852.pngis excluded by!**/*.pngapps/blog/public/announcing-the-release-of-nexus-schema-v1-b5eno5g08d0b/imgs/meta-29585f8afef1e4c94930404a027807ca6ec0c2e3-2398x1208.pngis excluded by!**/*.pngapps/blog/public/announcing-the-release-of-nexus-schema-v1-b5eno5g08d0b/imgs/nexus-jsdoc.pngis excluded by!**/*.pngapps/blog/public/announcing-upcoming-course-8s41wdqrlgc7/imgs/hero-c4f6ff1ce0178636ddc08d50f408c042800bac92-1270x714.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-auth-mngp1ps7kip4/imgs/hero-9f73d35216a42b2bb796a971053669fbc90e36ee-846x426.svgis excluded by!**/*.svgapps/blog/public/backend-prisma-typescript-orm-with-postgresql-auth-mngp1ps7kip4/imgs/meta-9eae0d75afddb1fce65c68320479268f4cdcffd3-1692x852.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-auth-mngp1ps7kip4/imgs/modern-backend-3-auth-flow.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-data-modeling-tsjs1ps7kip1/imgs/grading-app-schema.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-data-modeling-tsjs1ps7kip1/imgs/hero-df67ee11927bde800c1ba033b94e182ab3565110-1692x852.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5/imgs/hero-d3aa9c3e0b081fe4d675e11574d1bbcf8ea9de46-1692x852.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5/imgs/modern-backend-4-actions-enable.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5/imgs/modern-backend-4-actions-tab.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5/imgs/modern-backend-4-github-new-secret.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5/imgs/modern-backend-4-github-no-secrets-arrow.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5/imgs/modern-backend-4-github-secrets.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5/imgs/modern-backend-4-heroku-api-key.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5/imgs/modern-backend-4-workflow-run-deploy-job.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5/imgs/modern-backend-4-workflow-run-details.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5/imgs/modern-backend-4-workflow-run-test-job.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5/imgs/modern-backend-4-workflow-run.pngis excluded by!**/*.pngapps/blog/public/backend-prisma-typescript-orm-with-postgresql-rest-api-validation-dcba1ps7kip3/imgs/hero-21fe21324bb4e62111c88b37b71091676e29f616-1692x852.pngis excluded by!**/*.pngapps/blog/public/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/imgs/1-a-first-request.pngis excluded by!**/*.pngapps/blog/public/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/imgs/1-b-subsequent.pngis excluded by!**/*.pngapps/blog/public/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/imgs/2-a-with-cache.pngis excluded by!**/*.pngapps/blog/public/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/imgs/2-a-without-cache.pngis excluded by!**/*.pngapps/blog/public/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/imgs/3-a-with-cache.pngis excluded by!**/*.pngapps/blog/public/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/imgs/3-a-without-cache.pngis excluded by!**/*.pngapps/blog/public/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/imgs/4-a-cache-syncronization.pngis excluded by!**/*.pngapps/blog/public/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/imgs/5-a-granularity.pngis excluded by!**/*.pngapps/blog/public/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/imgs/6-cache-utilization.pngis excluded by!**/*.pngapps/blog/public/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/imgs/7-cache-avalanche.pngis excluded by!**/*.pngapps/blog/public/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/imgs/hero-ce90e81e707c3b5735077783e1db72216b8a56dd-844x474.svgis excluded by!**/*.svgapps/blog/public/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/imgs/meta-72680f73691cdf86b51087621b4b0e79ac12fde7-1266x712.pngis excluded by!**/*.pngapps/blog/public/build-an-app-with-svelte-and-typescript-PZDY3t93qAtd/imgs/hero-0e8c20420d860a393f68694b8bab707306822df3-1692x852.pngis excluded by!**/*.pngapps/blog/public/build-an-app-with-svelte-and-typescript-PZDY3t93qAtd/imgs/meta-711f2d3f2094907c22c0ef2dd88e69992f950026-2400x1256.pngis excluded by!**/*.pngapps/blog/public/build-an-app-with-svelte-and-typescript-PZDY3t93qAtd/imgs/svelte-typescript-1.pngis excluded by!**/*.pngapps/blog/public/build-an-app-with-svelte-and-typescript-PZDY3t93qAtd/imgs/svelte-typescript-2.pngis excluded by!**/*.pngapps/blog/public/build-an-app-with-svelte-and-typescript-PZDY3t93qAtd/imgs/svelte-typescript-3.pngis excluded by!**/*.pngapps/blog/public/build-an-app-with-svelte-and-typescript-PZDY3t93qAtd/imgs/svelte-typescript-4.pngis excluded by!**/*.pngapps/blog/public/build-an-app-with-svelte-and-typescript-PZDY3t93qAtd/imgs/svelte-typescript-5.pngis excluded by!**/*.pngapps/blog/public/build-an-app-with-svelte-and-typescript-PZDY3t93qAtd/imgs/svelte-typescript-6.pngis excluded by!**/*.pngapps/blog/public/build-an-app-with-svelte-and-typescript-PZDY3t93qAtd/imgs/svelte-typescript-7.pngis excluded by!**/*.pngapps/blog/public/build-an-app-with-svelte-and-typescript-PZDY3t93qAtd/imgs/svelte-typescript-8.pngis excluded by!**/*.pngapps/blog/public/client-extensions-ga-4g4yIu8eOSbB/imgs/hero-b404c12ca7de2f9288368dacbce578b790bfd66d-844x474.svgis excluded by!**/*.svgapps/blog/public/client-extensions-ga-4g4yIu8eOSbB/imgs/meta-50e7e57ea5967ad67ce89e682aca57f5e19fd65a-1266x712.pngis excluded by!**/*.pngapps/blog/public/client-extensions-preview-8t3w27xkrxxn/imgs/hero-1b0474b02ed0759af1c6e3f3bcba5d4ebb1d970b-844x474.svgis excluded by!**/*.svgapps/blog/public/client-extensions-preview-8t3w27xkrxxn/imgs/meta-5ca8711a05c2f835cfce511739e46b5f6df982cd-1266x712.pngis excluded by!**/*.pngapps/blog/public/cloudflare-partnership-qerefgvwirjq/imgs/hero-726190b9f3c5c097cc8cfa5dc08581458138758f-844x474.svgis excluded by!**/*.svgapps/blog/public/cloudflare-partnership-qerefgvwirjq/imgs/meta-c3dfb4dc0d8bc7d99b379b6e68668c6135aca53c-1266x711.pngis excluded by!**/*.pngapps/blog/public/cockroach-ga-5JrD9XVWQDYL/imgs/cockroach-diagram.pngis excluded by!**/*.pngapps/blog/public/cockroach-ga-5JrD9XVWQDYL/imgs/hero-ebf53ec190dab44f271d4f0dd1ad658507f55b66-844x474.svgis excluded by!**/*.svgapps/blog/public/cockroach-ga-5JrD9XVWQDYL/imgs/meta-77148d314c74789939fb2b2af2bf3f82378cebc0-1920x1080.pngis excluded by!**/*.pngapps/blog/public/cockroach-ga-5JrD9XVWQDYL/imgs/migration.pngis excluded by!**/*.pngapps/blog/public/cockroach-ga-5JrD9XVWQDYL/imgs/release-notes.pngis excluded by!**/*.pngapps/blog/public/cockroach-ga-5JrD9XVWQDYL/imgs/statements.pngis excluded by!**/*.pngapps/blog/public/connections-edges-nodes-in-relay-758d358aa4c7/imgs/0*sPafc6eXHJvRSJhZ.pngis excluded by!**/*.pngapps/blog/public/connections-edges-nodes-in-relay-758d358aa4c7/imgs/hero-a86c8de527177e03b9e08b9f1f1522dc1debbc6d-559x361.pngis excluded by!**/*.pngapps/blog/public/connections-edges-nodes-in-relay-758d358aa4c7/imgs/meta-cc730c78d87244cb877764a6a4a850b2c9223871-1200x775.pngis excluded by!**/*.pngapps/blog/public/coo-announcement-aer1fgviirjb/imgs/hero-c79e2c7b7f4cd64f5be9677d4fab38140809b0f9-1267x711.pngis excluded by!**/*.pngapps/blog/public/data-platform-static-ips/imgs/hero-f9991a96b6b8ce0fa61dead528141fa1e8b911be-844x474.svgis excluded by!**/*.svgapps/blog/public/data-platform-static-ips/imgs/meta-725058cd14e118302aa8e56bbaf31e46436bfc91-1269x640.pngis excluded by!**/*.pngapps/blog/public/data-platform-static-ips/imgs/pdp-static-egress-demo.gifis excluded by!**/*.gifapps/blog/public/data-platform-static-ips/imgs/pdp-static-egress-project.gifis excluded by!**/*.gifapps/blog/public/database-access-in-react-server-components-r2xgk9aztgdf/imgs/hero-f388984fa1fe34f5d79d884f6f599c22a4107fa1-846x426.pngis excluded by!**/*.pngapps/blog/public/database-access-in-react-server-components-r2xgk9aztgdf/imgs/meta-8befd7df92cc32135332ef9c28b41e076e2c8998-1251x630.pngis excluded by!**/*.pngapps/blog/public/database-access-in-react-server-components-r2xgk9aztgdf/imgs/network-waterfall.pngis excluded by!**/*.pngapps/blog/public/database-access-in-react-server-components-r2xgk9aztgdf/imgs/server-components-demo.pngis excluded by!**/*.pngapps/blog/public/database-access-in-react-server-components-r2xgk9aztgdf/imgs/spotify-artist-details.pngis excluded by!**/*.pngapps/blog/public/database-access-in-react-server-components-r2xgk9aztgdf/imgs/traditional-and-server-components-comparison.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/1fc839965595779722b9fca14e1e517d94aa9726-844x474.svgis excluded by!**/*.svgapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/41eccd0c9a716384d9635415e90e434abfda6c58-1692x952.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/Screenshot_2022-07-11_at_16.53.33.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/Screenshot_2022-07-12_at_15.46.25.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/Screenshot_2022-07-12_at_16.11.16.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/Screenshot_2022-07-12_at_16.13.16.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/Screenshot_2022-07-12_at_17.40.23.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/Screenshot_2022-07-12_at_17.41.31.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/Screenshot_2022-07-12_at_17.44.48.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/Screenshot_2022-07-12_at_21.09.08.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/add-database-url.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/create-project.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/name-your-project.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/project-dashboard.pngis excluded by!**/*.pngapps/blog/public/database-access-on-the-edge-8F0t1s1BqOJE/imgs/set_env_variables_and_deploy.pngis excluded by!**/*.pngapps/blog/public/datadx-event-recap-z5pcp6hzbz5m/imgs/hero-23097a272172cd3791887b9664ecd25e4dc65cff-843x474.svgis excluded by!**/*.svgapps/blog/public/datadx-event-recap-z5pcp6hzbz5m/imgs/meta-3155f43f9648d3e4eedd05759f69d6876b72d313-1265x711.pngis excluded by!**/*.pngapps/blog/public/datadx-manifesto-ikgyqj170k8h/imgs/hero-2e402be560690da1dd594236284a8efa71a8f82f-844x474.svgis excluded by!**/*.svgapps/blog/public/datadx-manifesto-ikgyqj170k8h/imgs/meta-96de5fd29833ae651da6ecc88c021bb9d84eba1b-1266x711.pngis excluded by!**/*.pngapps/blog/public/datamodel-v11-lrzqy1f56c90/imgs/hero-99f1530d6ebe62110fd2839ba4f0185795ee5db4-1200x630.pngis excluded by!**/*.pngapps/blog/public/datamodel-v11-lrzqy1f56c90/imgs/wJCyxVy.pngis excluded by!**/*.pngapps/blog/public/documenting-apis-mjjpZ7E7NkVP/imgs/115104730-06d2f780-9f63-11eb-9f82-f7bd75d58558.pngis excluded by!**/*.pngapps/blog/public/documenting-apis-mjjpZ7E7NkVP/imgs/115109659-bfa72f80-9f7f-11eb-9fde-f995c6f51262.pngis excluded by!**/*.pngapps/blog/public/documenting-apis-mjjpZ7E7NkVP/imgs/115110406-ef583680-9f83-11eb-9155-753600312788.pngis excluded by!**/*.pngapps/blog/public/documenting-apis-mjjpZ7E7NkVP/imgs/1_btqXg9fLTExVjRDyrY1vsA.jpegis excluded by!**/*.jpegapps/blog/public/documenting-apis-mjjpZ7E7NkVP/imgs/hero-2982f7850de70f0c52daa613dae904b463342823-1692x852.pngis excluded by!**/*.pngapps/blog/public/e2e-type-safety-graphql-react-1-I2GxIfxkSZ/imgs/finished-ui.pngis excluded by!**/*.pngapps/blog/public/e2e-type-safety-graphql-react-1-I2GxIfxkSZ/imgs/hero-2f58c7e9701e7f9a0250db211bdf5284da11d2d8-844x474.svgis excluded by!**/*.svgapps/blog/public/e2e-type-safety-graphql-react-1-I2GxIfxkSZ/imgs/localhost.pngis excluded by!**/*.pngapps/blog/public/e2e-type-safety-graphql-react-1-I2GxIfxkSZ/imgs/messages-displayed.pngis excluded by!**/*.pngapps/blog/public/e2e-type-safety-graphql-react-1-I2GxIfxkSZ/imgs/meta-dc0f147b1428391e4b3d0374523d45639d1318a6-1269x715.pngis excluded by!**/*.pngapps/blog/public/e2e-type-safety-graphql-react-1-I2GxIfxkSZ/imgs/tailwind-complete.pngis excluded by!**/*.pngapps/blog/public/e2e-type-safety-graphql-react-1-I2GxIfxkSZ/imgs/user-displayed.pngis excluded by!**/*.pngapps/blog/public/e2e-type-safety-graphql-react-1-I2GxIfxkSZ/imgs/vite-starter.pngis excluded by!**/*.pngapps/blog/public/e2e-type-safety-graphql-react-2-j9mEyHY0Ej/imgs/hero-838c88ca3817165045cc051d8845880e5a313baf-844x474.svgis excluded by!**/*.svgapps/blog/public/e2e-type-safety-graphql-react-2-j9mEyHY0Ej/imgs/meta-06962f83ac8be93c511d0ef6cbc29e2cff49e387-1269x715.pngis excluded by!**/*.png
📒 Files selected for processing (154)
.gitignoreREADME.mdapps/blog/content/blog/accelerate-ga-release-I9cQM6bSf2g6/index.mdxapps/blog/content/blog/accelerate-preview-release-ab229e69ed2/index.mdxapps/blog/content/blog/all-you-need-to-know-about-apollo-client-2-7e27e36d62fd/index.mdxapps/blog/content/blog/ambassador-program-nxkWGcGNuvFx/index.mdxapps/blog/content/blog/amplication-customer-story-nmlkBNlLlxnN/index.mdxapps/blog/content/blog/announcing-accelerate-usrvpi6sfkv4/index.mdxapps/blog/content/blog/announcing-discord-1LiAOpS7lxV9/index.mdxapps/blog/content/blog/announcing-prisma-2-n0v98rzc8br1/index.mdxapps/blog/content/blog/announcing-prisma-2-zq1s745db8i5/index.mdxapps/blog/content/blog/announcing-prisma-day-50cg22nn40qk/index.mdxapps/blog/content/blog/announcing-prisma-playground-xeywknkj0e1p/index.mdxapps/blog/content/blog/announcing-the-release-of-nexus-schema-v1-b5eno5g08d0b/index.mdxapps/blog/content/blog/announcing-upcoming-course-8s41wdqrlgc7/index.mdxapps/blog/content/blog/backend-prisma-typescript-orm-with-postgresql-auth-mngp1ps7kip4/index.mdxapps/blog/content/blog/backend-prisma-typescript-orm-with-postgresql-data-modeling-tsjs1ps7kip1/index.mdxapps/blog/content/blog/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5/index.mdxapps/blog/content/blog/backend-prisma-typescript-orm-with-postgresql-rest-api-validation-dcba1ps7kip3/index.mdxapps/blog/content/blog/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/index.mdxapps/blog/content/blog/build-an-app-with-svelte-and-typescript-PZDY3t93qAtd/index.mdxapps/blog/content/blog/client-extensions-ga-4g4yIu8eOSbB/index.mdxapps/blog/content/blog/client-extensions-preview-8t3w27xkrxxn/index.mdxapps/blog/content/blog/cloudflare-partnership-qerefgvwirjq/index.mdxapps/blog/content/blog/cockroach-ga-5JrD9XVWQDYL/index.mdxapps/blog/content/blog/connections-edges-nodes-in-relay-758d358aa4c7/index.mdxapps/blog/content/blog/coo-announcement-aer1fgviirjb/index.mdxapps/blog/content/blog/data-platform-static-ips/index.mdxapps/blog/content/blog/database-access-in-react-server-components-r2xgk9aztgdf/index.mdxapps/blog/content/blog/database-access-on-the-edge-8F0t1s1BqOJE/index.mdxapps/blog/content/blog/datadx-event-recap-z5pcp6hzbz5m/index.mdxapps/blog/content/blog/datadx-manifesto-ikgyqj170k8h/index.mdxapps/blog/content/blog/datamodel-v11-lrzqy1f56c90/index.mdxapps/blog/content/blog/documenting-apis-mjjpZ7E7NkVP/index.mdxapps/blog/content/blog/e2e-type-safety-graphql-react-1-I2GxIfxkSZ/index.mdxapps/blog/content/blog/e2e-type-safety-graphql-react-2-j9mEyHY0Ej/index.mdxapps/blog/content/blog/e2e-type-safety-graphql-react-3-fbV2ZVIGWg/index.mdxapps/blog/content/blog/e2e-type-safety-graphql-react-4-JaHA8GbkER/index.mdxapps/blog/content/blog/elsevier-customer-story-SsAASKagMHtN/index.mdxapps/blog/content/blog/enabling-cors-for-express-graphql-apollo-server-1ef999bfb38d/index.mdxapps/blog/content/blog/full-stack-typesafety-with-angular-nest-nx-and-prisma-CcMK7fbQfTWc/index.mdxapps/blog/content/blog/fullstack-nextjs-graphql-prisma-2-fwpc6ds155/index.mdxapps/blog/content/blog/fullstack-nextjs-graphql-prisma-3-clxbrcqppv/index.mdxapps/blog/content/blog/fullstack-nextjs-graphql-prisma-4-1k1kc83x3v/index.mdxapps/blog/content/blog/fullstack-nextjs-graphql-prisma-5-m2fna60h7c/index.mdxapps/blog/content/blog/fullstack-nextjs-graphql-prisma-oklidw1rhw/index.mdxapps/blog/content/blog/fullstack-remix-prisma-mongodb-1-7d0bftxbmb6r/index.mdxapps/blog/content/blog/fullstack-remix-prisma-mongodb-2-ZTmOy58p4re8/index.mdxapps/blog/content/blog/fullstack-remix-prisma-mongodb-3-By5pmN5Nzo1v/index.mdxapps/blog/content/blog/fullstack-remix-prisma-mongodb-4-l3mwep4zlim2/index.mdxapps/blog/content/blog/fullstack-remix-prisma-mongodb-5-gOhQsnfUPXSx/index.mdxapps/blog/content/blog/getting-started-with-relay-modern-46f8de6bd6ec/index.mdxapps/blog/content/blog/graphql-directive-permissions-authorization-made-easy-54c076b5368e/index.mdxapps/blog/content/blog/graphql-eu-18-eiw8bishe2di/index.mdxapps/blog/content/blog/graphql-middleware-zie3iphithxy/index.mdxapps/blog/content/blog/graphql-schema-stitching-explained-schema-delegation-4c6caf468405/index.mdxapps/blog/content/blog/graphql-sdl-schema-definition-language-6755bcb9ce51/index.mdxapps/blog/content/blog/graphql-server-basics-demystifying-the-info-argument-in-graphql-resolvers-6f26249f613a/index.mdxapps/blog/content/blog/graphql-server-basics-the-network-layer-51d97d21861/index.mdxapps/blog/content/blog/graphql-server-basics-the-schema-ac5e2950214e/index.mdxapps/blog/content/blog/graphql-vs-firebase-496498546142/index.mdxapps/blog/content/blog/grover-customer-success-story-nxkWGcGNuvFd/index.mdxapps/blog/content/blog/helping-rapha-access-data-across-platforms-n3jfhtyu6rgn/index.mdxapps/blog/content/blog/how-do-graphql-remote-schemas-work-7118237c89d7/index.mdxapps/blog/content/blog/how-migrating-from-Sequelize-to-Prisma-allowed-Invisible-to-scale-i4pz2mwu6q/index.mdxapps/blog/content/blog/how-prisma-and-serverless-fit-together-iaSfcPQVi0/index.mdxapps/blog/content/blog/how-prisma-supports-transactions-x45s1d5l0ww1/index.mdxapps/blog/content/blog/how-to-build-a-real-time-chat-with-graphql-subscriptions-and-apollo-d4004369b0d4/index.mdxapps/blog/content/blog/how-to-improve-startup-times-kdRB9MjPEv/index.mdxapps/blog/content/blog/how-to-use-create-react-app-with-graphql-apollo-62e574617cff/index.mdxapps/blog/content/blog/how-to-wrap-a-rest-api-with-graphql-8bf3fb17547d/index.mdxapps/blog/content/blog/improving-performance-with-apollo-query-batching-66455ea9d8b/index.mdxapps/blog/content/blog/improving-prismas-release-process-yaey8deiwaex/index.mdxapps/blog/content/blog/improving-query-performance-using-indexes-1-zuLNZwBkuL/index.mdxapps/blog/content/blog/improving-query-performance-using-indexes-2-MyoiJNMFTsfq/index.mdxapps/blog/content/blog/improving-query-performance-using-indexes-3-kduk351qv1/index.mdxapps/blog/content/blog/introducing-graphql-nexus-code-first-graphql-server-development-ll6s1yy5cxl5/index.mdxapps/blog/content/blog/iopool-customer-success-story-uLsCWvaqzXoa/index.mdxapps/blog/content/blog/jamstack-with-nextjs-prisma-jamstackN3XT/index.mdxapps/blog/content/blog/labelbox-simnycbotiok/index.mdxapps/blog/content/blog/learn-typescript-a-pocketguide-tutorial-q329XmXQHUjz/index.mdxapps/blog/content/blog/metrics-tutorial-prisma-pmoldgq10kz/index.mdxapps/blog/content/blog/mongodb-general-availability-pixnun6mffmu/index.mdxapps/blog/content/blog/monitoring-best-practices-monitor5g08d0b/index.mdxapps/blog/content/blog/nestjs-prisma-authentication-7D056s1s0k3l/index.mdxapps/blog/content/blog/nestjs-prisma-error-handling-7D056s1kOop2/index.mdxapps/blog/content/blog/nestjs-prisma-relational-data-7D056s1kOabc/index.mdxapps/blog/content/blog/nestjs-prisma-rest-api-7D056s1BmOL0/index.mdxapps/blog/content/blog/nestjs-prisma-validation-7D056s1kOla1/index.mdxapps/blog/content/blog/new-tooling-to-improve-your-graphql-workflows-7240c81e1ba3/index.mdxapps/blog/content/blog/overcoming-challenges-in-serverless-and-edge-environments-TQtONA0RVxuW/index.mdxapps/blog/content/blog/panther-customer-story-pdmdrrhtupsl/index.mdxapps/blog/content/blog/pearly-plan-customer-success-pdmdrRhTupve/index.mdxapps/blog/content/blog/performance-engineering-aeduv0rei0jk/index.mdxapps/blog/content/blog/poppy-customer-success-story-swnWQcGRRvpd/index.mdxapps/blog/content/blog/prisma-2-beta-b7bcl0gd8d8e/index.mdxapps/blog/content/blog/prisma-5-f66prwkjx72s/index.mdxapps/blog/content/blog/prisma-adopts-semver-strictly/index.mdxapps/blog/content/blog/prisma-and-graphql-mfl5y2r7t49c/index.mdxapps/blog/content/blog/prisma-and-serverless-73hbgKnZ6t/index.mdxapps/blog/content/blog/prisma-client-preview-ahph4o1umail/index.mdxapps/blog/content/blog/prisma-data-platform-now-generally-available-8D058s1BqOL1/index.mdxapps/blog/content/blog/prisma-data-proxy-xb16ba0p21/index.mdxapps/blog/content/blog/prisma-day-2022-announcement-v8t178dsf/index.mdxapps/blog/content/blog/prisma-foss-fund-announcement-XW9DqI1HC24L/index.mdxapps/blog/content/blog/prisma-microsoft-sql-server-azure-sql-production-ga/index.mdxapps/blog/content/blog/prisma-migrate-dx-primitives/index.mdxapps/blog/content/blog/prisma-migrate-ga-b5eno5g08d0b/index.mdxapps/blog/content/blog/prisma-migrate-preview-b5eno5g08d0b/index.mdxapps/blog/content/blog/prisma-mongodb-preview-release/index.mdxapps/blog/content/blog/prisma-online-data-browser-ejgg5c8p3u4x/index.mdxapps/blog/content/blog/prisma-preview-cockroach-db-release/index.mdxapps/blog/content/blog/prisma-raises-4-5m-to-build-the-graphql-data-layer-for-all-databases-663484df0f60/index.mdxapps/blog/content/blog/prisma-raises-series-a-saks1zr7kip6/index.mdxapps/blog/content/blog/prisma-sql-server-support-preview-a4anl2gd8d3a/index.mdxapps/blog/content/blog/prisma-studio-3rtf78dg99fe/index.mdxapps/blog/content/blog/prisma-the-complete-orm-inw24qjeawmb/index.mdxapps/blog/content/blog/prisma-turso-ea-support-rXGd_Tmy3UXX/index.mdxapps/blog/content/blog/read-replicas-prisma-client-extension-f66prwk56wow/index.mdxapps/blog/content/blog/relay-moderns-connection-directive-1ecd8322f5c8/index.mdxapps/blog/content/blog/relay-vs-apollo-comparing-graphql-clients-for-react-apps-b40af58c1534/index.mdxapps/blog/content/blog/restructure-announcement-1a9ek279du8j/index.mdxapps/blog/content/blog/satisfies-operator-ur8ys8ccq7zb/index.mdxapps/blog/content/blog/series-b-announcement-v8t12ksi6x/index.mdxapps/blog/content/blog/serverless-database-drivers-KML1ehXORxZV/index.mdxapps/blog/content/blog/state-of-prisma-2-december-rcrwcqyu655e/index.mdxapps/blog/content/blog/sveltekit-prisma-kvCOEoeQlC/index.mdxapps/blog/content/blog/testing-series-1-8eRB5p0Y8o/index.mdxapps/blog/content/blog/testing-series-2-xPhjjmIEsM/index.mdxapps/blog/content/blog/testing-series-3-aBUyF8nxAn/index.mdxapps/blog/content/blog/testing-series-4-OVXtDis201/index.mdxapps/blog/content/blog/testing-series-5-xWogenROXm/index.mdxapps/blog/content/blog/the-guild-takes-over-oss-libraries-vvluy2i4uevs/index.mdxapps/blog/content/blog/the-problems-of-schema-first-graphql-development-x1mn4cb0tyl3/index.mdxapps/blog/content/blog/top-5-reasons-to-use-graphql-b60cfa683511/index.mdxapps/blog/content/blog/tracing-launch-announcement-pmk4rlpc0ll/index.mdxapps/blog/content/blog/tracing-tutorial-prisma-pmkddgq1lm2/index.mdxapps/blog/content/blog/try-prisma-announcment-Kv6bwRcdjd/index.mdxapps/blog/content/blog/tryg-customer-story-pdmdrRhTupvd/index.mdxapps/blog/content/blog/tutorial-building-a-realtime-graphql-server-with-subscriptions-2758cfc6d427/index.mdxapps/blog/content/blog/tutorial-render-props-in-react-apollo-2-1-199e9e2bd01e/index.mdxapps/blog/content/blog/tutorial-using-create-react-native-app-with-graphql-apollo-e630aee3ae1e/index.mdxapps/blog/content/blog/tweets-for-trees-arboreal/index.mdxapps/blog/content/blog/type-safe-js-with-jsdoc-typeSaf3js/index.mdxapps/blog/content/blog/using-graphql-nexus-with-a-database-pmyl3660ncst/index.mdxapps/blog/content/blog/vscode-extension-prisma-rust-webassembly/index.mdxapps/blog/content/blog/watch-prisma-day-talks-z11sg6ipb3i1/index.mdxapps/blog/content/blog/whats-new-in-prisma-q1-2021-spjyqp0e2rk1/index.mdxapps/blog/content/blog/whats-new-in-prisma-q2-2021-z70muetl386d/index.mdxapps/blog/content/blog/wnip-q1-dsk0golh8v/index.mdxapps/blog/content/blog/wnip-q2-2022-pmn7rulcj8x/index.mdxapps/blog/content/blog/wnip-q3-hpk7pyth8v/index.mdxapps/blog/content/blog/wnip-q4-2022-f66prwkjx72s/index.mdxapps/blog/content/blog/wnip-q4-dsk0golh8v/index.mdx
💤 Files with no reviewable changes (46)
- apps/blog/content/blog/cloudflare-partnership-qerefgvwirjq/index.mdx
- apps/blog/content/blog/client-extensions-ga-4g4yIu8eOSbB/index.mdx
- apps/blog/content/blog/database-access-on-the-edge-8F0t1s1BqOJE/index.mdx
- apps/blog/content/blog/coo-announcement-aer1fgviirjb/index.mdx
- apps/blog/content/blog/amplication-customer-story-nmlkBNlLlxnN/index.mdx
- apps/blog/content/blog/data-platform-static-ips/index.mdx
- apps/blog/content/blog/connections-edges-nodes-in-relay-758d358aa4c7/index.mdx
- apps/blog/content/blog/announcing-upcoming-course-8s41wdqrlgc7/index.mdx
- apps/blog/content/blog/accelerate-ga-release-I9cQM6bSf2g6/index.mdx
- apps/blog/content/blog/fullstack-nextjs-graphql-prisma-5-m2fna60h7c/index.mdx
- apps/blog/content/blog/announcing-prisma-2-zq1s745db8i5/index.mdx
- apps/blog/content/blog/client-extensions-preview-8t3w27xkrxxn/index.mdx
- apps/blog/content/blog/benefits-and-challenges-of-caching-database-query-results-x2s9ei21e8kq/index.mdx
- apps/blog/content/blog/datadx-event-recap-z5pcp6hzbz5m/index.mdx
- apps/blog/content/blog/fullstack-remix-prisma-mongodb-2-ZTmOy58p4re8/index.mdx
- apps/blog/content/blog/datamodel-v11-lrzqy1f56c90/index.mdx
- apps/blog/content/blog/announcing-accelerate-usrvpi6sfkv4/index.mdx
- apps/blog/content/blog/all-you-need-to-know-about-apollo-client-2-7e27e36d62fd/index.mdx
- apps/blog/content/blog/documenting-apis-mjjpZ7E7NkVP/index.mdx
- apps/blog/content/blog/datadx-manifesto-ikgyqj170k8h/index.mdx
- apps/blog/content/blog/database-access-in-react-server-components-r2xgk9aztgdf/index.mdx
- apps/blog/content/blog/cockroach-ga-5JrD9XVWQDYL/index.mdx
- apps/blog/content/blog/announcing-prisma-2-n0v98rzc8br1/index.mdx
- apps/blog/content/blog/announcing-discord-1LiAOpS7lxV9/index.mdx
- apps/blog/content/blog/e2e-type-safety-graphql-react-1-I2GxIfxkSZ/index.mdx
- apps/blog/content/blog/fullstack-nextjs-graphql-prisma-3-clxbrcqppv/index.mdx
- apps/blog/content/blog/fullstack-remix-prisma-mongodb-1-7d0bftxbmb6r/index.mdx
- apps/blog/content/blog/fullstack-nextjs-graphql-prisma-4-1k1kc83x3v/index.mdx
- apps/blog/content/blog/fullstack-nextjs-graphql-prisma-2-fwpc6ds155/index.mdx
- apps/blog/content/blog/backend-prisma-typescript-orm-with-postgresql-data-modeling-tsjs1ps7kip1/index.mdx
- apps/blog/content/blog/announcing-the-release-of-nexus-schema-v1-b5eno5g08d0b/index.mdx
- apps/blog/content/blog/announcing-prisma-playground-xeywknkj0e1p/index.mdx
- apps/blog/content/blog/e2e-type-safety-graphql-react-2-j9mEyHY0Ej/index.mdx
- apps/blog/content/blog/e2e-type-safety-graphql-react-4-JaHA8GbkER/index.mdx
- apps/blog/content/blog/enabling-cors-for-express-graphql-apollo-server-1ef999bfb38d/index.mdx
- apps/blog/content/blog/elsevier-customer-story-SsAASKagMHtN/index.mdx
- apps/blog/content/blog/backend-prisma-typescript-orm-with-postgresql-auth-mngp1ps7kip4/index.mdx
- apps/blog/content/blog/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5/index.mdx
- apps/blog/content/blog/full-stack-typesafety-with-angular-nest-nx-and-prisma-CcMK7fbQfTWc/index.mdx
- apps/blog/content/blog/announcing-prisma-day-50cg22nn40qk/index.mdx
- apps/blog/content/blog/e2e-type-safety-graphql-react-3-fbV2ZVIGWg/index.mdx
- apps/blog/content/blog/fullstack-nextjs-graphql-prisma-oklidw1rhw/index.mdx
- apps/blog/content/blog/backend-prisma-typescript-orm-with-postgresql-rest-api-validation-dcba1ps7kip3/index.mdx
- apps/blog/content/blog/accelerate-preview-release-ab229e69ed2/index.mdx
- apps/blog/content/blog/ambassador-program-nxkWGcGNuvFx/index.mdx
- apps/blog/content/blog/build-an-app-with-svelte-and-typescript-PZDY3t93qAtd/index.mdx
✅ Files skipped from review due to trivial changes (1)
- .gitignore
Summary by CodeRabbit