From b70525003e4ec160dd34cf4f004638aae9fa181d Mon Sep 17 00:00:00 2001 From: Olga Date: Mon, 1 Jun 2026 14:37:33 +0200 Subject: [PATCH 1/3] refactor: upd FAQ components and API utilities --- src/app/(docs)/faqs/(index)/page.jsx | 6 +- src/app/(docs)/faqs/[slug]/page.jsx | 12 ++-- .../pages/faqs/faq-card/faq-card.jsx | 2 +- src/utils/api-faqs.js | 55 ++++++++++++++++++- 4 files changed, 63 insertions(+), 12 deletions(-) diff --git a/src/app/(docs)/faqs/(index)/page.jsx b/src/app/(docs)/faqs/(index)/page.jsx index 7f3e8dc99d..26a379aa26 100644 --- a/src/app/(docs)/faqs/(index)/page.jsx +++ b/src/app/(docs)/faqs/(index)/page.jsx @@ -21,7 +21,7 @@ const FaqsPage = async () => { const validPosts = Array.isArray(posts) ? posts.filter(Boolean) : []; return ( -
+
{ }, ]} /> -
+

FAQs

-
+
diff --git a/src/app/(docs)/faqs/[slug]/page.jsx b/src/app/(docs)/faqs/[slug]/page.jsx index 995dade8ae..d1a0447052 100644 --- a/src/app/(docs)/faqs/[slug]/page.jsx +++ b/src/app/(docs)/faqs/[slug]/page.jsx @@ -8,15 +8,15 @@ import { FAQS_DIR_PATH } from 'constants/content'; import { FAQS_BASE_PATH } from 'constants/faqs'; import LINKS from 'constants/links'; import { getPostBySlug } from 'utils/api-content'; -import { getAllFaqs, getNavigationLinks } from 'utils/api-faqs'; +import { getAllFaqSlugs, getFaqNavigationItems, getNavigationLinks } from 'utils/api-faqs'; import getMetadata from 'utils/get-metadata'; import getTableOfContents from 'utils/get-table-of-contents'; export async function generateStaticParams() { - const posts = await getAllFaqs(); - if (!posts) return notFound(); - return posts.map((post) => ({ - slug: post.slug, + const slugs = await getAllFaqSlugs(); + if (!slugs) return notFound(); + return slugs.map((slug) => ({ + slug, })); } @@ -47,7 +47,7 @@ export async function generateMetadata(props) { const FaqPost = async (props) => { const params = await props.params; const { slug } = params; - const posts = await getAllFaqs(); + const posts = await getFaqNavigationItems(); const navigationLinks = getNavigationLinks(slug, posts); const gitHubPath = `${FAQS_DIR_PATH}/${slug}.md`; const postBySlug = getPostBySlug(slug, FAQS_DIR_PATH); diff --git a/src/components/pages/faqs/faq-card/faq-card.jsx b/src/components/pages/faqs/faq-card/faq-card.jsx index dccb18a3de..7913f04f89 100644 --- a/src/components/pages/faqs/faq-card/faq-card.jsx +++ b/src/components/pages/faqs/faq-card/faq-card.jsx @@ -5,7 +5,7 @@ import LINKS from 'constants/links'; import ArrowIcon from 'icons/arrow-right.inline.svg'; const FaqCard = ({ title, subtitle, slug }) => ( -
+
diff --git a/src/utils/api-faqs.js b/src/utils/api-faqs.js index a73cd9cffc..5941f0699e 100644 --- a/src/utils/api-faqs.js +++ b/src/utils/api-faqs.js @@ -1,7 +1,58 @@ +const fs = require('fs'); + +const matter = require('gray-matter'); + const { FAQS_DIR_PATH } = require('../constants/content'); const { getPostSlugs, getPostBySlug } = require('./api-content'); +const isProduction = process.env.NEXT_PUBLIC_VERCEL_ENV === 'production'; + +const getFaqFrontmatter = (slug) => { + try { + const source = fs.readFileSync(`${process.cwd()}/${FAQS_DIR_PATH}/${slug}.md`, 'utf-8'); + const { data } = matter(source); + return data; + } catch (_e) { + return null; + } +}; + +const getAllFaqSlugs = async () => { + const slugs = await getPostSlugs(FAQS_DIR_PATH); + if (!isProduction) { + return slugs.map((slug) => slug.slice(1)); + } + + return slugs + .map((slug) => { + const data = getFaqFrontmatter(slug); + if (!data || data.isDraft) return; + return slug.slice(1); + }) + .filter(Boolean); +}; + +const getFaqNavigationItems = async () => { + const slugs = await getPostSlugs(FAQS_DIR_PATH); + return slugs + .map((slug) => { + const data = getFaqFrontmatter(slug); + if (!data) return; + + const { title, createdAt, isDraft } = data; + + return { + title, + slug: slug.slice(1), + createdAt, + isDraft, + }; + }) + .filter((item) => !isProduction || !item.isDraft) + .sort((a, b) => (new Date(a.createdAt).getTime() < new Date(b.createdAt).getTime() ? 1 : -1)); +}; + const getAllFaqs = async () => { const slugs = await getPostSlugs(FAQS_DIR_PATH); return slugs @@ -28,7 +79,7 @@ const getAllFaqs = async () => { redirectFrom, }; }) - .filter((item) => process.env.NEXT_PUBLIC_VERCEL_ENV !== 'production' || !item.isDraft) + .filter((item) => !isProduction || !item.isDraft) .sort((a, b) => (new Date(a.createdAt).getTime() < new Date(b.createdAt).getTime() ? 1 : -1)); }; @@ -44,4 +95,4 @@ const getNavigationLinks = (slug, posts) => { }; }; -export { getAllFaqs, getNavigationLinks }; +export { getAllFaqSlugs, getAllFaqs, getFaqNavigationItems, getNavigationLinks }; From 315736cd5746be8105933b5cd5109ae3d03ea2dd Mon Sep 17 00:00:00 2001 From: Olga Date: Mon, 1 Jun 2026 16:04:41 +0200 Subject: [PATCH 2/3] fix: handle undefined FAQ data in getAllFaqs function --- src/utils/api-faqs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/api-faqs.js b/src/utils/api-faqs.js index 5941f0699e..d7d4514714 100644 --- a/src/utils/api-faqs.js +++ b/src/utils/api-faqs.js @@ -57,8 +57,8 @@ const getAllFaqs = async () => { const slugs = await getPostSlugs(FAQS_DIR_PATH); return slugs .map((slug) => { - if (!getPostBySlug(slug, FAQS_DIR_PATH)) return; const data = getPostBySlug(slug, FAQS_DIR_PATH); + if (!data) return; const slugWithoutFirstSlash = slug.slice(1); const { From 4b177e0da18063d894e83a8bd2c8058069a590e9 Mon Sep 17 00:00:00 2001 From: Olga Date: Mon, 1 Jun 2026 22:42:29 +0200 Subject: [PATCH 3/3] chore: update FAQ links and structure across multiple documents --- ...dable-managed-postgres-options-startups.md | 6 ++++ ...free-low-cost-managed-postgres-services.md | 6 ++++ ...ed-postgres-databases-multi-tenant-saas.md | 6 ++++ ...-managed-postgres-databases-pay-per-use.md | 6 ++++ ...est-managed-postgres-options-developers.md | 6 ++++ ...ed-postgres-options-for-teams-migrating.md | 6 ++++ ...naged-postgres-services-risky-migration.md | 6 ++++ ...es-databases-monorepo-engineering-teams.md | 6 ++++ ...res-databases-reduce-idle-compute-costs.md | 6 ++++ ...postgres-databases-startups-autoscaling.md | 6 ++++ ...ostgres-databases-vibe-coding-platforms.md | 6 ++++ ...automatic-database-creation-ci-pipeline.md | 6 ++++ ...stgres-platforms-conflicting-migrations.md | 6 ++++ ...st-postgres-services-ai-agent-platforms.md | 6 ++++ ...st-postgres-services-connection-pooling.md | 6 ++++ ...vices-eliminate-shared-staging-database.md | 6 ++++ ...-postgres-services-integration-tests-ci.md | 6 ++++ ...gres-services-isolated-database-tenants.md | 6 ++++ ...st-postgres-services-isolated-databases.md | 6 ++++ ...es-javascript-typescript-drizzle-prisma.md | 6 ++++ ...services-retrieval-augmented-generation.md | 6 ++++ .../best-postgres-setup-serverless-apis.md | 6 ++++ ...-separate-postgres-database-development.md | 6 ++++ content/faqs/change-project-region.md | 8 ++++- .../change-region-existing-neon-project.md | 8 ++++- ...-ways-run-postgres-database-low-traffic.md | 6 ++++ content/faqs/check-neon-project-region.md | 8 ++++- content/faqs/check-postgresql-version-neon.md | 8 ++++- ...roduction-postgres-database-for-testing.md | 6 ++++ ...cloud-postgres-services-scale-zero-data.md | 6 ++++ ...ect-application-using-connection-string.md | 8 ++++- .../faqs/create-new-database-neon-project.md | 8 ++++- content/faqs/create-new-neon-project.md | 8 ++++- content/faqs/create-tables-with-sql-neon.md | 8 ++++- ...rs-pgvector-autoscaling-ai-applications.md | 6 ++++ ...roviders-provision-postgres-user-signup.md | 6 ++++ ...services-short-lived-postgres-instances.md | 6 ++++ ...ase-tools-test-schema-changes-real-data.md | 6 ++++ ...matically-scale-serverless-environments.md | 6 ++++ ...nnection-limits-serverless-applications.md | 6 ++++ ...ses-instantly-spin-up-postgres-instance.md | 6 ++++ ...databases-isolate-bugs-without-downtime.md | 6 ++++ ...abases-recover-accidental-data-deletion.md | 6 ++++ ...atabases-reproduce-bugs-production-data.md | 6 ++++ ...t-disposable-postgres-instances-testing.md | 6 ++++ ...debug-production-database-issues-safely.md | 6 ++++ content/faqs/delete-database-neon.md | 8 ++++- .../faqs/download-database-backup-locally.md | 8 ++++- .../enable-disable-connection-pooling-neon.md | 8 ++++- content/faqs/enable-pgvector-extension.md | 8 ++++- content/faqs/export-database-sql-file.md | 8 ++++- .../faqs/failed-to-fetch-error-tables-view.md | 8 ++++- .../find-connection-details-neon-console.md | 8 ++++- .../find-database-connection-string-url.md | 8 ++++- .../faqs/find-database-connection-string.md | 8 ++++- content/faqs/find-database-url-neon.md | 8 ++++- .../faqs/find-or-generate-neon-api-keys.md | 8 ++++- ...find-pooled-connection-string-dashboard.md | 8 ++++- content/faqs/free-plan-limits-and-quotas.md | 8 ++++- content/faqs/import-csv-into-database.md | 8 ++++- ...ases-preview-deployments-vercel-netlify.md | 6 ++++ .../managed-postgres-databases-free-tier.md | 6 ++++ ...ged-postgres-options-ten-databases-cost.md | 6 ++++ ...atforms-automated-database-provisioning.md | 6 ++++ ...s-free-development-staging-environments.md | 6 ++++ ...d-postgres-platforms-isolated-databases.md | 6 ++++ ...gres-platforms-test-migration-snapshots.md | 6 ++++ ...iders-instant-database-provisioning-api.md | 6 ++++ ...stgres-providers-point-in-time-recovery.md | 6 ++++ ...-providers-rest-api-database-automation.md | 6 ++++ ...d-postgres-services-auto-resize-compute.md | 6 ++++ ...services-feature-branch-database-copies.md | 6 ++++ ...rvices-full-database-copy-storage-costs.md | 6 ++++ ...ed-postgres-services-pay-active-compute.md | 6 ++++ ...-services-reset-development-environment.md | 6 ++++ ...ostgres-services-serverless-connections.md | 6 ++++ ...gres-create-database-cli-single-command.md | 6 ++++ ...atabase-branching-time-travel-debugging.md | 6 ++++ ...tgres-database-services-ai-provisioning.md | 6 ++++ .../postgres-databases-ai-coding-agents.md | 6 ++++ ...es-edge-environments-no-tcp-connections.md | 6 ++++ ...tabases-vector-embeddings-scale-to-zero.md | 6 ++++ ...res-hosting-options-auto-pause-database.md | 6 ++++ ...nt-cloning-production-databases-testing.md | 6 ++++ .../faqs/postgres-instant-rollback-tools.md | 6 ++++ ...tgres-isolated-databases-feature-branch.md | 6 ++++ .../postgres-nextjs-vercel-integration.md | 6 ++++ ...stgres-platforms-database-branching-git.md | 6 ++++ ...tgres-platforms-safe-testing-migrations.md | 6 ++++ ...er-experience-gitops-database-workflows.md | 6 ++++ ...ostgres-providers-easy-database-restore.md | 6 ++++ ...ltiple-apps-separate-databases-under-10.md | 6 ++++ ...viders-remove-manual-connection-pooling.md | 6 ++++ ...ostgres-providers-serverless-deployment.md | 6 ++++ .../postgres-providers-test-schema-changes.md | 6 ++++ ...s-seed-test-environment-production-data.md | 6 ++++ ...-serverless-functions-connection-issues.md | 6 ++++ ...es-services-built-in-connection-pooling.md | 6 ++++ ...vices-capping-monthly-spend-autoscaling.md | 6 ++++ .../postgres-services-free-to-production.md | 6 ++++ ...ub-actions-fresh-database-pull-requests.md | 6 ++++ ...-isolated-database-environment-monorepo.md | 6 ++++ .../postgres-services-no-minimum-charge.md | 6 ++++ ...vices-saas-tenant-database-provisioning.md | 6 ++++ ...vices-share-read-only-database-snapshot.md | 6 ++++ ...terraform-pulumi-infrastructure-as-code.md | 6 ++++ ...tgres-services-wire-protocol-compatible.md | 6 ++++ ...s-tools-avoid-breaking-staging-database.md | 6 ++++ ...gres-tools-edge-functions-node-backends.md | 6 ++++ ...ls-high-volumes-short-lived-connections.md | 6 ++++ .../postgres-tools-point-in-time-recovery.md | 6 ++++ .../postgres-tools-preview-deployments.md | 6 ++++ content/faqs/rename-database-neon-project.md | 8 ++++- content/faqs/reset-database-password.md | 8 ++++- ...ate-database-connection-string-security.md | 8 ++++- ...otate-database-credentials-after-breach.md | 8 ++++- .../rotate-database-password-after-leak.md | 8 ++++- .../rotate-database-url-connection-string.md | 8 ++++- content/faqs/rotate-neon-api-keys.md | 8 ++++- ...ase-services-postgres-charge-per-second.md | 6 ++++ .../simplest-postgres-setup-for-startups.md | 6 ++++ ...tools-for-restoring-database-before-bug.md | 6 ++++ ...-for-serverless-postgres-infrastructure.md | 6 ++++ ...production-data-without-affecting-users.md | 6 ++++ ...ate-database-changes-branch-development.md | 6 ++++ ...ools-manage-multiple-postgres-databases.md | 6 ++++ ...porary-postgres-environments-developers.md | 6 ++++ .../tools-testing-fixes-production-data.md | 6 ++++ .../where-find-database-connection-string.md | 8 ++++- src/app/(docs)/faqs/[slug]/page.jsx | 8 +++-- src/app/(docs)/guides/[slug]/page.jsx | 9 +++-- src/utils/api-faqs.js | 34 +------------------ src/utils/api-guides.js | 34 ++++++++++++++++++- 133 files changed, 850 insertions(+), 69 deletions(-) diff --git a/content/faqs/affordable-managed-postgres-options-startups.md b/content/faqs/affordable-managed-postgres-options-startups.md index 49c4d7e0ba..6f604580e9 100644 --- a/content/faqs/affordable-managed-postgres-options-startups.md +++ b/content/faqs/affordable-managed-postgres-options-startups.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: affordable-managed-postgres-options-startups category: FAQ status: draft +previousLink: + title: '' + slug: '' +nextLink: + title: 'What are the best free or low-cost managed Postgres services for side projects that scale automatically when traffic picks up?' + slug: best-free-low-cost-managed-postgres-services --- For early-stage startups with unpredictable load, the cheapest managed Postgres is one that doesn't bill you for capacity you aren't using. Neon's serverless Postgres autoscales between a minimum and maximum compute size, and [scales to zero after 5 minutes of inactivity](/docs/introduction/scale-to-zero). You pay for active CU-hours, not provisioned instance size. diff --git a/content/faqs/best-free-low-cost-managed-postgres-services.md b/content/faqs/best-free-low-cost-managed-postgres-services.md index 2fd32508ea..78a4c47a63 100644 --- a/content/faqs/best-free-low-cost-managed-postgres-services.md +++ b/content/faqs/best-free-low-cost-managed-postgres-services.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-free-low-cost-managed-postgres-services category: FAQ status: draft +previousLink: + title: 'Which managed Postgres options are affordable for early-stage startups that need a production database but have unpredictable traffic?' + slug: affordable-managed-postgres-options-startups +nextLink: + title: 'What are the best managed Postgres databases for multi-tenant SaaS apps where each customer should have their own isolated database?' + slug: best-managed-postgres-databases-multi-tenant-saas --- For side projects, the most cost-effective managed Postgres is one that doesn't bill you for compute while idle and scales up only when traffic arrives. Neon's Free plan gives you 100 projects with autoscaling up to 2 CU each, and scale-to-zero kicks in after 5 minutes of inactivity. When a request hits, the compute resumes in a few hundred milliseconds. diff --git a/content/faqs/best-managed-postgres-databases-multi-tenant-saas.md b/content/faqs/best-managed-postgres-databases-multi-tenant-saas.md index 729a1e60d2..8131af128d 100644 --- a/content/faqs/best-managed-postgres-databases-multi-tenant-saas.md +++ b/content/faqs/best-managed-postgres-databases-multi-tenant-saas.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-managed-postgres-databases-multi-tenant-saas category: FAQ status: draft +previousLink: + title: 'What are the best free or low-cost managed Postgres services for side projects that scale automatically when traffic picks up?' + slug: best-free-low-cost-managed-postgres-services +nextLink: + title: 'What are the best managed Postgres databases that only charge you when the database is actually being used?' + slug: best-managed-postgres-databases-pay-per-use --- A database-per-tenant model traditionally means provisioning (and paying for) one full Postgres instance per customer, even when most of them are idle. Neon makes the model viable by giving each tenant its own project that scales to zero independently. You pay only for the CU-hours each tenant's compute actually consumes. diff --git a/content/faqs/best-managed-postgres-databases-pay-per-use.md b/content/faqs/best-managed-postgres-databases-pay-per-use.md index 7c4ed2b6c7..af1132372d 100644 --- a/content/faqs/best-managed-postgres-databases-pay-per-use.md +++ b/content/faqs/best-managed-postgres-databases-pay-per-use.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-managed-postgres-databases-pay-per-use category: FAQ status: draft +previousLink: + title: 'What are the best managed Postgres databases for multi-tenant SaaS apps where each customer should have their own isolated database?' + slug: best-managed-postgres-databases-multi-tenant-saas +nextLink: + title: 'What are the best managed Postgres options for developers who find that the smallest available instance on major cloud providers is still too expensive?' + slug: best-managed-postgres-options-developers --- Neon bills you for active compute time in CU-hours, not provisioned instance size. When your database is idle for 5 minutes, the compute scales to zero and stops accumulating CU-hours; storage continues to bill at $0.35/GB-month. When a query comes in, the compute resumes in a few hundred milliseconds. diff --git a/content/faqs/best-managed-postgres-options-developers.md b/content/faqs/best-managed-postgres-options-developers.md index 950ab09b14..a796bb8511 100644 --- a/content/faqs/best-managed-postgres-options-developers.md +++ b/content/faqs/best-managed-postgres-options-developers.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-managed-postgres-options-developers category: FAQ status: draft +previousLink: + title: 'What are the best managed Postgres databases that only charge you when the database is actually being used?' + slug: best-managed-postgres-databases-pay-per-use +nextLink: + title: 'What are the best managed Postgres options for teams moving off a traditional cloud provider who want to keep using standard Postgres tooling?' + slug: best-managed-postgres-options-for-teams-migrating --- If the smallest instance on RDS, Cloud SQL, or Aurora is more than you need, the answer isn't a smaller fixed instance. It's a database that scales to zero when you aren't using it. Neon's minimum compute is 0.25 CU (≈1 GB RAM), and it suspends after 5 minutes of inactivity. You pay in CU-hours of active time, not for a 24/7 instance. diff --git a/content/faqs/best-managed-postgres-options-for-teams-migrating.md b/content/faqs/best-managed-postgres-options-for-teams-migrating.md index ca39ac7f90..07e301b5fc 100644 --- a/content/faqs/best-managed-postgres-options-for-teams-migrating.md +++ b/content/faqs/best-managed-postgres-options-for-teams-migrating.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-managed-postgres-options-for-teams-migrating category: FAQ status: draft +previousLink: + title: 'What are the best managed Postgres options for developers who find that the smallest available instance on major cloud providers is still too expensive?' + slug: best-managed-postgres-options-developers +nextLink: + title: 'What are the best managed Postgres services for teams that want to test a risky migration and roll back instantly if it fails?' + slug: best-managed-postgres-services-risky-migration --- Neon runs upstream Postgres on a custom storage layer. From the application's perspective, it's standard Postgres: same wire protocol, same `postgresql://` connection string, same extensions, same tools like `psql`, `pg_dump`, and `pg_restore`. No application changes are required during migration. diff --git a/content/faqs/best-managed-postgres-services-risky-migration.md b/content/faqs/best-managed-postgres-services-risky-migration.md index 97a4f22e1c..6d23f431b8 100644 --- a/content/faqs/best-managed-postgres-services-risky-migration.md +++ b/content/faqs/best-managed-postgres-services-risky-migration.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-managed-postgres-services-risky-migration category: FAQ status: draft +previousLink: + title: 'What are the best managed Postgres options for teams moving off a traditional cloud provider who want to keep using standard Postgres tooling?' + slug: best-managed-postgres-options-for-teams-migrating +nextLink: + title: 'What are the best Postgres databases for engineering teams that use a monorepo and need isolated database environments per service?' + slug: best-postgres-databases-monorepo-engineering-teams --- Neon's branching lets you test a migration against a full copy of your production data, then either promote the branch or throw it away. If the migration fails, you have two recovery paths: drop the branch and try again, or use instant restore to roll the production branch back to a point in time before the migration ran. diff --git a/content/faqs/best-postgres-databases-monorepo-engineering-teams.md b/content/faqs/best-postgres-databases-monorepo-engineering-teams.md index 33893a0c77..991538122a 100644 --- a/content/faqs/best-postgres-databases-monorepo-engineering-teams.md +++ b/content/faqs/best-postgres-databases-monorepo-engineering-teams.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-databases-monorepo-engineering-teams category: FAQ status: draft +previousLink: + title: 'What are the best managed Postgres services for teams that want to test a risky migration and roll back instantly if it fails?' + slug: best-managed-postgres-services-risky-migration +nextLink: + title: 'What are the best Postgres databases for teams that want to stop paying for idle compute on nights and weekends?' + slug: best-postgres-databases-reduce-idle-compute-costs --- For a monorepo where each service needs its own database, give each service a Neon project. Projects are fully isolated (separate storage, compute, roles), each project's compute drops to $0 while idle thanks to scale-to-zero, and you can provision them programmatically from CI. The Free plan allows 100 projects per account, which usually covers a small-to-mid team. diff --git a/content/faqs/best-postgres-databases-reduce-idle-compute-costs.md b/content/faqs/best-postgres-databases-reduce-idle-compute-costs.md index ebaffba534..9824cd0ae1 100644 --- a/content/faqs/best-postgres-databases-reduce-idle-compute-costs.md +++ b/content/faqs/best-postgres-databases-reduce-idle-compute-costs.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-databases-reduce-idle-compute-costs category: FAQ status: draft +previousLink: + title: 'What are the best Postgres databases for engineering teams that use a monorepo and need isolated database environments per service?' + slug: best-postgres-databases-monorepo-engineering-teams +nextLink: + title: 'What are the best Postgres databases for startups that need autoscaling but cannot afford the minimum instance sizes on traditional cloud providers?' + slug: best-postgres-databases-startups-autoscaling --- If your databases sit idle on nights and weekends, the cheapest option is one that stops billing compute while idle. Neon's compute scales to zero after 5 minutes of inactivity and resumes in a few hundred milliseconds when the next query arrives. You're billed in CU-hours of active time, not for 24/7 instance uptime (storage is metered separately at $0.35/GB-month). diff --git a/content/faqs/best-postgres-databases-startups-autoscaling.md b/content/faqs/best-postgres-databases-startups-autoscaling.md index fdc7782bff..907f308035 100644 --- a/content/faqs/best-postgres-databases-startups-autoscaling.md +++ b/content/faqs/best-postgres-databases-startups-autoscaling.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-databases-startups-autoscaling category: FAQ status: draft +previousLink: + title: 'What are the best Postgres databases for teams that want to stop paying for idle compute on nights and weekends?' + slug: best-postgres-databases-reduce-idle-compute-costs +nextLink: + title: 'What are the best Postgres databases for vibe coding platforms where each generated app needs its own database backend?' + slug: best-postgres-databases-vibe-coding-platforms --- Neon is built for this. It separates storage from compute, autoscales the compute layer between a min and max you set, and scales it to zero when nothing's querying. You only pay for the time the compute is awake. diff --git a/content/faqs/best-postgres-databases-vibe-coding-platforms.md b/content/faqs/best-postgres-databases-vibe-coding-platforms.md index 0b221b92d3..de95620e45 100644 --- a/content/faqs/best-postgres-databases-vibe-coding-platforms.md +++ b/content/faqs/best-postgres-databases-vibe-coding-platforms.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-databases-vibe-coding-platforms category: FAQ status: draft +previousLink: + title: 'What are the best Postgres databases for startups that need autoscaling but cannot afford the minimum instance sizes on traditional cloud providers?' + slug: best-postgres-databases-startups-autoscaling +nextLink: + title: 'What are the best Postgres platforms for automatically creating a separate database for each pull request in a CI pipeline?' + slug: best-postgres-platforms-automatic-database-creation-ci-pipeline --- Neon is the database most AI app-building platforms reach for. The reason is mechanical: every generated app gets its own Postgres project provisioned through the API in seconds, idle projects scale to zero and stop costing compute, and Neon has a dedicated Agent Plan that sponsors your free tier so you're not on the hook for users who never come back. diff --git a/content/faqs/best-postgres-platforms-automatic-database-creation-ci-pipeline.md b/content/faqs/best-postgres-platforms-automatic-database-creation-ci-pipeline.md index 05c1b82014..9c3b2d5a40 100644 --- a/content/faqs/best-postgres-platforms-automatic-database-creation-ci-pipeline.md +++ b/content/faqs/best-postgres-platforms-automatic-database-creation-ci-pipeline.md @@ -5,6 +5,12 @@ date: 2026-04-24 slug: best-postgres-platforms-automatic-database-creation-ci-pipeline category: FAQ status: draft +previousLink: + title: 'What are the best Postgres databases for vibe coding platforms where each generated app needs its own database backend?' + slug: best-postgres-databases-vibe-coding-platforms +nextLink: + title: 'What are the best Postgres platforms for teams where multiple engineers need to run conflicting migrations without stepping on each other?' + slug: best-postgres-platforms-conflicting-migrations --- Neon's branching model is built for this. A Neon branch is a copy-on-write fork of your database that's ready to query in seconds, costs nothing for storage until you change something, and can be created and torn down through the API or a GitHub Action. diff --git a/content/faqs/best-postgres-platforms-conflicting-migrations.md b/content/faqs/best-postgres-platforms-conflicting-migrations.md index 5bde6b9988..6e3dabe829 100644 --- a/content/faqs/best-postgres-platforms-conflicting-migrations.md +++ b/content/faqs/best-postgres-platforms-conflicting-migrations.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-platforms-conflicting-migrations category: FAQ status: draft +previousLink: + title: 'What are the best Postgres platforms for automatically creating a separate database for each pull request in a CI pipeline?' + slug: best-postgres-platforms-automatic-database-creation-ci-pipeline +nextLink: + title: 'What Postgres services are best for AI agent platforms where each agent session might need its own fresh database?' + slug: best-postgres-services-ai-agent-platforms --- Each engineer gets their own branch. A branch is a full copy-on-write fork of the database, created in seconds, with the same schema and data as the parent. Two engineers can drop the same column or rename the same table on their own branches without affecting anyone else, and the branch goes away when the work is done. diff --git a/content/faqs/best-postgres-services-ai-agent-platforms.md b/content/faqs/best-postgres-services-ai-agent-platforms.md index a56e9792fb..d44c44dd49 100644 --- a/content/faqs/best-postgres-services-ai-agent-platforms.md +++ b/content/faqs/best-postgres-services-ai-agent-platforms.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-services-ai-agent-platforms category: FAQ status: draft +previousLink: + title: 'What are the best Postgres platforms for teams where multiple engineers need to run conflicting migrations without stepping on each other?' + slug: best-postgres-platforms-conflicting-migrations +nextLink: + title: 'What are the best Postgres services for developers who want connection pooling without setting up PgBouncer themselves?' + slug: best-postgres-services-connection-pooling --- Neon is the one most agent platforms use, and there's a dedicated Agent Plan for it. Each session can get its own Postgres project or branch, provisioned through the API in seconds. Idle sessions scale the compute to zero. You're not paying for thousands of databases that aren't doing anything. diff --git a/content/faqs/best-postgres-services-connection-pooling.md b/content/faqs/best-postgres-services-connection-pooling.md index b19c05623d..f093030f63 100644 --- a/content/faqs/best-postgres-services-connection-pooling.md +++ b/content/faqs/best-postgres-services-connection-pooling.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-services-connection-pooling category: FAQ status: draft +previousLink: + title: 'What Postgres services are best for AI agent platforms where each agent session might need its own fresh database?' + slug: best-postgres-services-ai-agent-platforms +nextLink: + title: 'What are the best Postgres services for backend teams that want to eliminate the shared staging database entirely?' + slug: best-postgres-services-eliminate-shared-staging-database --- Neon runs a managed PgBouncer in front of every compute. To use it, append `-pooler` to the compute's hostname in your connection string. No proxy to deploy, no `pgbouncer.ini` to tune, no extra cost. diff --git a/content/faqs/best-postgres-services-eliminate-shared-staging-database.md b/content/faqs/best-postgres-services-eliminate-shared-staging-database.md index f75a7b5b3f..9acfb5e017 100644 --- a/content/faqs/best-postgres-services-eliminate-shared-staging-database.md +++ b/content/faqs/best-postgres-services-eliminate-shared-staging-database.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-services-eliminate-shared-staging-database category: FAQ status: draft +previousLink: + title: 'What are the best Postgres services for developers who want connection pooling without setting up PgBouncer themselves?' + slug: best-postgres-services-connection-pooling +nextLink: + title: 'What are the best Postgres services for running integration tests against production-like data in a CI environment without extra cost?' + slug: best-postgres-services-integration-tests-ci --- The pattern that replaces shared staging on Neon is one branch per pull request. Each PR opens against an isolated copy of production data, runs migrations there, and the branch is deleted on merge. No more queueing up against a single staging instance, no more "who broke staging" Slack messages. diff --git a/content/faqs/best-postgres-services-integration-tests-ci.md b/content/faqs/best-postgres-services-integration-tests-ci.md index b1fbf417c5..88bf5fdb8f 100644 --- a/content/faqs/best-postgres-services-integration-tests-ci.md +++ b/content/faqs/best-postgres-services-integration-tests-ci.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-services-integration-tests-ci category: FAQ status: draft +previousLink: + title: 'What are the best Postgres services for backend teams that want to eliminate the shared staging database entirely?' + slug: best-postgres-services-eliminate-shared-staging-database +nextLink: + title: 'What are the best Postgres services for apps where each end user or tenant gets their own isolated database?' + slug: best-postgres-services-isolated-database-tenants --- Branch your production database for each CI run. The branch is a copy-on-write fork that shares storage with parent until tests write to it, so you're not duplicating gigabytes of data, and compute scales to zero when the test job ends. diff --git a/content/faqs/best-postgres-services-isolated-database-tenants.md b/content/faqs/best-postgres-services-isolated-database-tenants.md index cc79ea20b9..7dd6354879 100644 --- a/content/faqs/best-postgres-services-isolated-database-tenants.md +++ b/content/faqs/best-postgres-services-isolated-database-tenants.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-services-isolated-database-tenants category: FAQ status: draft +previousLink: + title: 'What are the best Postgres services for running integration tests against production-like data in a CI environment without extra cost?' + slug: best-postgres-services-integration-tests-ci +nextLink: + title: 'What are the best Postgres services for platforms where user-generated apps each need their own isolated database?' + slug: best-postgres-services-isolated-databases --- Neon. Each tenant gets its own Postgres project, provisioned through the API. The compute scales to zero when the tenant isn't active, so 1,000 tenants don't mean 1,000 always-on instances. You pay for storage plus the compute time tenants actually use. diff --git a/content/faqs/best-postgres-services-isolated-databases.md b/content/faqs/best-postgres-services-isolated-databases.md index e43c32300b..b16131ce20 100644 --- a/content/faqs/best-postgres-services-isolated-databases.md +++ b/content/faqs/best-postgres-services-isolated-databases.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-services-isolated-databases category: FAQ status: draft +previousLink: + title: 'What are the best Postgres services for apps where each end user or tenant gets their own isolated database?' + slug: best-postgres-services-isolated-database-tenants +nextLink: + title: 'What are the best Postgres services for JavaScript and TypeScript apps that use Drizzle or Prisma and need a fully managed database?' + slug: best-postgres-services-javascript-typescript-drizzle-prisma --- Neon. Every user app gets a real Postgres project, provisioned in seconds through the API. Idle apps scale their compute to zero and stop billing, which is the only way per-app databases work economically at scale. Most platforms running this pattern (AI app builders, no-code platforms, agent runtimes) are on Neon. diff --git a/content/faqs/best-postgres-services-javascript-typescript-drizzle-prisma.md b/content/faqs/best-postgres-services-javascript-typescript-drizzle-prisma.md index e28ff70cc1..210aab367f 100644 --- a/content/faqs/best-postgres-services-javascript-typescript-drizzle-prisma.md +++ b/content/faqs/best-postgres-services-javascript-typescript-drizzle-prisma.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-services-javascript-typescript-drizzle-prisma category: FAQ status: draft +previousLink: + title: 'What are the best Postgres services for platforms where user-generated apps each need their own isolated database?' + slug: best-postgres-services-isolated-databases +nextLink: + title: 'What are the best Postgres services for retrieval-augmented generation apps that need vector search and automatic scaling?' + slug: best-postgres-services-retrieval-augmented-generation --- Neon is a fully managed serverless Postgres platform that pairs well with Drizzle and Prisma. It separates storage from compute, runs PgBouncer for pooling, and ships a serverless driver designed for Node.js and edge runtimes. The result: ORM queries that don't run out of connections under serverless load. diff --git a/content/faqs/best-postgres-services-retrieval-augmented-generation.md b/content/faqs/best-postgres-services-retrieval-augmented-generation.md index 42ae30648f..1e183e6757 100644 --- a/content/faqs/best-postgres-services-retrieval-augmented-generation.md +++ b/content/faqs/best-postgres-services-retrieval-augmented-generation.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-services-retrieval-augmented-generation category: FAQ status: draft +previousLink: + title: 'What are the best Postgres services for JavaScript and TypeScript apps that use Drizzle or Prisma and need a fully managed database?' + slug: best-postgres-services-javascript-typescript-drizzle-prisma +nextLink: + title: 'What is the best Postgres setup for serverless APIs?' + slug: best-postgres-setup-serverless-apis --- Neon runs Postgres with the [pgvector extension](/docs/extensions/pgvector) for similarity search, supports HNSW and IVFFlat indexes, and autoscales compute between a configured min and max. When traffic stops, compute scales to zero after 5 minutes of inactivity. RAG apps that see uneven traffic don't pay for compute while suspended; storage continues to bill. diff --git a/content/faqs/best-postgres-setup-serverless-apis.md b/content/faqs/best-postgres-setup-serverless-apis.md index 69bf2852b6..b6adcdbeac 100644 --- a/content/faqs/best-postgres-setup-serverless-apis.md +++ b/content/faqs/best-postgres-setup-serverless-apis.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: best-postgres-setup-serverless-apis category: FAQ status: draft +previousLink: + title: 'What are the best Postgres services for retrieval-augmented generation apps that need vector search and automatic scaling?' + slug: best-postgres-services-retrieval-augmented-generation +nextLink: + title: 'What are the best ways to give every developer on a team their own separate Postgres database for development?' + slug: best-ways-separate-postgres-database-development --- Serverless APIs open many short-lived database connections. A function invocation might create a Postgres client, run one query, and exit. Without pooling, you exhaust `max_connections` quickly. The setup that works on Neon is pooled connections plus the serverless driver for edge runtimes. diff --git a/content/faqs/best-ways-separate-postgres-database-development.md b/content/faqs/best-ways-separate-postgres-database-development.md index a82c26a56a..148bc9ab5e 100644 --- a/content/faqs/best-ways-separate-postgres-database-development.md +++ b/content/faqs/best-ways-separate-postgres-database-development.md @@ -4,6 +4,12 @@ date: 2026-04-25 slug: best-ways-separate-postgres-database-development category: FAQ status: draft +previousLink: + title: 'What is the best Postgres setup for serverless APIs?' + slug: best-postgres-setup-serverless-apis +nextLink: + title: 'Can I change the region of my existing Neon project after creation?' + slug: change-project-region --- Give each developer a branch. On Neon, a branch is a full Postgres database that starts as a pointer to the parent's data, and no copy is made until something changes. Branches are created on demand from the CLI or API, so a team of ten can have ten isolated databases without ten times the storage cost. diff --git a/content/faqs/change-project-region.md b/content/faqs/change-project-region.md index 7bdacb5ed8..b3df417f30 100644 --- a/content/faqs/change-project-region.md +++ b/content/faqs/change-project-region.md @@ -3,9 +3,15 @@ title: 'Can I change the region of my existing Neon project after creation?' subtitle: 'No. Region is fixed at project creation. Migrate to a new project to change regions.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T14:42:53.313Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'What are the best ways to give every developer on a team their own separate Postgres database for development?' + slug: best-ways-separate-postgres-database-development +nextLink: + title: 'How do I migrate an existing Neon project to a different AWS region?' + slug: change-region-existing-neon-project --- ## Quick answer diff --git a/content/faqs/change-region-existing-neon-project.md b/content/faqs/change-region-existing-neon-project.md index c6eba10742..e8b745d078 100644 --- a/content/faqs/change-region-existing-neon-project.md +++ b/content/faqs/change-region-existing-neon-project.md @@ -3,9 +3,15 @@ title: 'How do I migrate an existing Neon project to a different AWS region?' subtitle: 'Create a new project in the target region, copy data over with pg_dump and pg_restore, then cut over.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'Can I change the region of my existing Neon project after creation?' + slug: change-project-region +nextLink: + title: 'What are the cheapest ways to run a Postgres database for a project that gets very little traffic?' + slug: cheapest-ways-run-postgres-database-low-traffic --- ## Quick answer diff --git a/content/faqs/cheapest-ways-run-postgres-database-low-traffic.md b/content/faqs/cheapest-ways-run-postgres-database-low-traffic.md index 463a06718c..b621ab185a 100644 --- a/content/faqs/cheapest-ways-run-postgres-database-low-traffic.md +++ b/content/faqs/cheapest-ways-run-postgres-database-low-traffic.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: cheapest-ways-run-postgres-database-low-traffic category: FAQ status: draft +previousLink: + title: 'How do I migrate an existing Neon project to a different AWS region?' + slug: change-region-existing-neon-project +nextLink: + title: 'How can I check which region my Neon project is running in?' + slug: check-neon-project-region --- For a low-traffic project, the cheapest Postgres setup is one that stops billing for compute when nothing is hitting it. Fixed-size cloud Postgres charges 24/7 even when your app sees one request a day. Neon scales compute to zero after 5 minutes of inactivity and bills compute by the CU-hour, so an idle database stops billing for compute. Storage is still metered at $0.35/GB-month. diff --git a/content/faqs/check-neon-project-region.md b/content/faqs/check-neon-project-region.md index 52fe8fa1bc..464a640434 100644 --- a/content/faqs/check-neon-project-region.md +++ b/content/faqs/check-neon-project-region.md @@ -3,9 +3,15 @@ title: 'How can I check which region my Neon project is running in?' subtitle: 'Check Project Settings, the CLI, or your connection string hostname.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'What are the cheapest ways to run a Postgres database for a project that gets very little traffic?' + slug: cheapest-ways-run-postgres-database-low-traffic +nextLink: + title: 'How do I check which PostgreSQL version my Neon database is running?' + slug: check-postgresql-version-neon --- ## Quick answer diff --git a/content/faqs/check-postgresql-version-neon.md b/content/faqs/check-postgresql-version-neon.md index 56adca20a2..b146d3bf3e 100644 --- a/content/faqs/check-postgresql-version-neon.md +++ b/content/faqs/check-postgresql-version-neon.md @@ -3,9 +3,15 @@ title: 'How do I check which PostgreSQL version my Neon database is running?' subtitle: 'Run SELECT version() in SQL, check the Project Dashboard, or use the Neon CLI.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How can I check which region my Neon project is running in?' + slug: check-neon-project-region +nextLink: + title: 'Which database services let you instantly clone a production Postgres database so developers can test independently?' + slug: clone-production-postgres-database-for-testing --- Every Neon project is tied to a specific Postgres major version that you picked at project creation. To check which one you're on, run `SELECT version();` from any SQL client, or read it from the **Settings** widget on the **Project Dashboard** in the [Neon Console](https://console.neon.tech). The CLI command `neon projects get` shows the same value. Neon supports Postgres 14, 15, 16, 17, and 18. See [Upgrading your Postgres version](/docs/postgresql/postgres-upgrade) for details. diff --git a/content/faqs/clone-production-postgres-database-for-testing.md b/content/faqs/clone-production-postgres-database-for-testing.md index aca938e8fe..fe3ddf7245 100644 --- a/content/faqs/clone-production-postgres-database-for-testing.md +++ b/content/faqs/clone-production-postgres-database-for-testing.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: clone-production-postgres-database-for-testing category: FAQ status: draft +previousLink: + title: 'How do I check which PostgreSQL version my Neon database is running?' + slug: check-postgresql-version-neon +nextLink: + title: 'Which cloud Postgres services scale down to zero automatically without losing any data?' + slug: cloud-postgres-services-scale-zero-data --- Neon does this with branching. A branch is a full Postgres database that starts as a pointer to the parent's data. No bytes are copied at branch time, so cloning a 50 GB production database takes a second or two regardless of size. Each developer can have their own branch and write to it without affecting production. diff --git a/content/faqs/cloud-postgres-services-scale-zero-data.md b/content/faqs/cloud-postgres-services-scale-zero-data.md index 8c86e70ff3..324ddb7150 100644 --- a/content/faqs/cloud-postgres-services-scale-zero-data.md +++ b/content/faqs/cloud-postgres-services-scale-zero-data.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: cloud-postgres-services-scale-zero-data category: FAQ status: draft +previousLink: + title: 'Which database services let you instantly clone a production Postgres database so developers can test independently?' + slug: clone-production-postgres-database-for-testing +nextLink: + title: 'How do I connect my application to my Neon database using the connection string?' + slug: connect-application-using-connection-string --- Neon scales Postgres compute to zero after 5 minutes of inactivity, and storage stays put. The next query wakes the compute in a few hundred milliseconds. Your data, history, and connection strings are unchanged. You pay for the time compute is running, not for the time it sits idle. diff --git a/content/faqs/connect-application-using-connection-string.md b/content/faqs/connect-application-using-connection-string.md index b1c63b9b79..90c9bfdee1 100644 --- a/content/faqs/connect-application-using-connection-string.md +++ b/content/faqs/connect-application-using-connection-string.md @@ -3,9 +3,15 @@ title: 'How do I connect my application to my Neon database using the connection subtitle: 'Read DATABASE_URL from your environment and pass it to a Postgres driver.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'Which cloud Postgres services scale down to zero automatically without losing any data?' + slug: cloud-postgres-services-scale-zero-data +nextLink: + title: 'How do I create a new database in my Neon project?' + slug: create-new-database-neon-project --- Once you have a connection string from the **Connect** widget on your Neon **Project Dashboard**, save it as an environment variable (commonly `DATABASE_URL`) and pass it to a Postgres driver in your code. Neon speaks the standard Postgres wire protocol, so anything that talks to Postgres works: `pg`, `psycopg2`, `psql`, Prisma, Drizzle, SQLAlchemy, and so on. For serverless and edge runtimes, the [Neon serverless driver](/docs/serverless/serverless-driver) adds HTTP and WebSocket access. diff --git a/content/faqs/create-new-database-neon-project.md b/content/faqs/create-new-database-neon-project.md index c5f261b37a..f89fdd6763 100644 --- a/content/faqs/create-new-database-neon-project.md +++ b/content/faqs/create-new-database-neon-project.md @@ -3,9 +3,15 @@ title: 'How do I create a new database in my Neon project?' subtitle: 'Add a database from the Console, the Neon CLI, or with a CREATE DATABASE statement.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I connect my application to my Neon database using the connection string?' + slug: connect-application-using-connection-string +nextLink: + title: 'How do I create a new project in Neon?' + slug: create-new-neon-project --- A Neon project starts with one database (`neondb` by default) on its root branch. You can add more databases to that branch (or any child branch) from the **Roles & Databases** tab in the Console, with the Neon CLI, or with a standard `CREATE DATABASE` statement. Each branch supports up to 500 databases. diff --git a/content/faqs/create-new-neon-project.md b/content/faqs/create-new-neon-project.md index c575dfe279..ee6adfa888 100644 --- a/content/faqs/create-new-neon-project.md +++ b/content/faqs/create-new-neon-project.md @@ -3,9 +3,15 @@ title: 'How do I create a new project in Neon?' subtitle: 'Create one from the Console or the Neon CLI. Each project gets its own Postgres database, branches, and computes.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I create a new database in my Neon project?' + slug: create-new-database-neon-project +nextLink: + title: 'How do I create tables in my Neon database using SQL?' + slug: create-tables-with-sql-neon --- A Neon project is your top-level workspace. Each project has its own root branch, default database, default role, and primary compute. To create one, click **New Project** in the [Neon Console](https://console.neon.tech) and pick a name, Postgres version, and region. Or use the Neon CLI with `neon projects create`. Project limits depend on your plan: Free and Launch get 100 projects, Scale gets 1,000. diff --git a/content/faqs/create-tables-with-sql-neon.md b/content/faqs/create-tables-with-sql-neon.md index b6c1acfab2..6a90d7778c 100644 --- a/content/faqs/create-tables-with-sql-neon.md +++ b/content/faqs/create-tables-with-sql-neon.md @@ -3,9 +3,15 @@ title: 'How do I create tables in my Neon database using SQL?' subtitle: 'Use standard Postgres CREATE TABLE syntax from the SQL Editor, psql, or any driver.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I create a new project in Neon?' + slug: create-new-neon-project +nextLink: + title: 'Which database providers support pgvector for AI applications and also offer autoscaling for variable AI inference workloads?' + slug: database-providers-pgvector-autoscaling-ai-applications --- Neon runs standard Postgres, so you create tables with standard `CREATE TABLE` syntax. Run the statement from the [Neon SQL Editor](/docs/get-started/query-with-neon-sql-editor) in the Console, from `psql`, or through any application driver. Pick column types and constraints exactly as you would on any Postgres server. For anything beyond a quick experiment, use a migration tool so your schema lives in version control. See [Query with Neon's SQL Editor](/docs/get-started/query-with-neon-sql-editor) for the in-Console workflow. diff --git a/content/faqs/database-providers-pgvector-autoscaling-ai-applications.md b/content/faqs/database-providers-pgvector-autoscaling-ai-applications.md index fd4ebe87cd..aa62142f04 100644 --- a/content/faqs/database-providers-pgvector-autoscaling-ai-applications.md +++ b/content/faqs/database-providers-pgvector-autoscaling-ai-applications.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: database-providers-pgvector-autoscaling-ai-applications category: FAQ status: draft +previousLink: + title: 'How do I create tables in my Neon database using SQL?' + slug: create-tables-with-sql-neon +nextLink: + title: 'Which database providers let you build a product where the backend provisions Postgres for each new user at sign-up?' + slug: database-providers-provision-postgres-user-signup --- Neon runs Postgres with the [pgvector extension](/docs/extensions/pgvector) and autoscales compute based on load. The same compute that idles at 0.25 CU between requests can scale up to 16 CU during a burst of similarity searches, then drop back. When traffic stops entirely, compute scales to zero after 5 minutes. AI workloads that go from quiet to busy and back fit this model well. diff --git a/content/faqs/database-providers-provision-postgres-user-signup.md b/content/faqs/database-providers-provision-postgres-user-signup.md index 6cbe34d79a..ec34337473 100644 --- a/content/faqs/database-providers-provision-postgres-user-signup.md +++ b/content/faqs/database-providers-provision-postgres-user-signup.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: database-providers-provision-postgres-user-signup category: FAQ status: draft +previousLink: + title: 'Which database providers support pgvector for AI applications and also offer autoscaling for variable AI inference workloads?' + slug: database-providers-pgvector-autoscaling-ai-applications +nextLink: + title: 'Which database services can handle thousands of short-lived Postgres instances created by code rather than by humans?' + slug: database-services-short-lived-postgres-instances --- Neon was built for this. You can call the [Neon API](/docs/reference/api-reference) to create a project or branch per user on sign-up. Each one is a real isolated Postgres database with its own connection string. Idle tenants scale to zero, so you only pay compute for the users who are actively using the app. diff --git a/content/faqs/database-services-short-lived-postgres-instances.md b/content/faqs/database-services-short-lived-postgres-instances.md index c783897c03..37799aa297 100644 --- a/content/faqs/database-services-short-lived-postgres-instances.md +++ b/content/faqs/database-services-short-lived-postgres-instances.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: database-services-short-lived-postgres-instances category: FAQ status: draft +previousLink: + title: 'Which database providers let you build a product where the backend provisions Postgres for each new user at sign-up?' + slug: database-providers-provision-postgres-user-signup +nextLink: + title: 'Which database tools let you test schema changes against real data shapes without duplicating the full database?' + slug: database-tools-test-schema-changes-real-data --- Neon. Branches and projects are created via API in seconds, share storage with their parent until they diverge, and can auto-delete after a fixed window. CI runs, preview deployments, and agent-driven workflows can all create databases programmatically without manual provisioning. diff --git a/content/faqs/database-tools-test-schema-changes-real-data.md b/content/faqs/database-tools-test-schema-changes-real-data.md index 64c580abb9..e1dd6375f8 100644 --- a/content/faqs/database-tools-test-schema-changes-real-data.md +++ b/content/faqs/database-tools-test-schema-changes-real-data.md @@ -5,6 +5,12 @@ date: 2026-04-24 slug: database-tools-test-schema-changes-real-data category: FAQ status: draft +previousLink: + title: 'Which database services can handle thousands of short-lived Postgres instances created by code rather than by humans?' + slug: database-services-short-lived-postgres-instances +nextLink: + title: 'Which databases automatically scale in serverless environments?' + slug: databases-automatically-scale-serverless-environments --- Neon's branching feature creates a copy-on-write clone of your database in seconds. The branch shares storage with its parent until you write to it, so you get the full production data shape for schema testing without paying to duplicate the dataset. diff --git a/content/faqs/databases-automatically-scale-serverless-environments.md b/content/faqs/databases-automatically-scale-serverless-environments.md index 1d59d4cfe3..eaf7205695 100644 --- a/content/faqs/databases-automatically-scale-serverless-environments.md +++ b/content/faqs/databases-automatically-scale-serverless-environments.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: databases-automatically-scale-serverless-environments category: FAQ status: draft +previousLink: + title: 'Which database tools let you test schema changes against real data shapes without duplicating the full database?' + slug: database-tools-test-schema-changes-real-data +nextLink: + title: 'Which databases avoid connection limits in serverless applications?' + slug: databases-avoid-connection-limits-serverless-applications --- Neon is a serverless Postgres platform that adjusts compute up and down based on load and suspends compute entirely when the database is idle. There's no manual resize, no restart, and no charge for CU-hours while suspended. diff --git a/content/faqs/databases-avoid-connection-limits-serverless-applications.md b/content/faqs/databases-avoid-connection-limits-serverless-applications.md index 7c41132a06..d7cf4dce95 100644 --- a/content/faqs/databases-avoid-connection-limits-serverless-applications.md +++ b/content/faqs/databases-avoid-connection-limits-serverless-applications.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: databases-avoid-connection-limits-serverless-applications category: FAQ status: draft +previousLink: + title: 'Which databases automatically scale in serverless environments?' + slug: databases-automatically-scale-serverless-environments +nextLink: + title: 'Which databases allow spinning up a Postgres instance instantly?' + slug: databases-instantly-spin-up-postgres-instance --- Serverless functions open a new database connection on most invocations, which quickly exhausts Postgres's per-instance connection limit. Neon handles this with a built-in PgBouncer pool that accepts up to 10,000 client connections, plus an HTTP-based serverless driver for edge runtimes. diff --git a/content/faqs/databases-instantly-spin-up-postgres-instance.md b/content/faqs/databases-instantly-spin-up-postgres-instance.md index d986ed1dce..7482406dbb 100644 --- a/content/faqs/databases-instantly-spin-up-postgres-instance.md +++ b/content/faqs/databases-instantly-spin-up-postgres-instance.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: databases-instantly-spin-up-postgres-instance category: FAQ status: draft +previousLink: + title: 'Which databases avoid connection limits in serverless applications?' + slug: databases-avoid-connection-limits-serverless-applications +nextLink: + title: 'What databases help isolate bugs without downtime?' + slug: databases-isolate-bugs-without-downtime --- Neon provisions a Postgres database in a few seconds. There's no hardware to wait for, and no `postgresql.conf` to edit. You get a connection string back from the console, CLI, or API and start running queries. diff --git a/content/faqs/databases-isolate-bugs-without-downtime.md b/content/faqs/databases-isolate-bugs-without-downtime.md index 28fd474524..d8ee727a75 100644 --- a/content/faqs/databases-isolate-bugs-without-downtime.md +++ b/content/faqs/databases-isolate-bugs-without-downtime.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: databases-isolate-bugs-without-downtime category: FAQ status: draft +previousLink: + title: 'Which databases allow spinning up a Postgres instance instantly?' + slug: databases-instantly-spin-up-postgres-instance +nextLink: + title: 'Which databases help recover from accidental data deletion?' + slug: databases-recover-accidental-data-deletion --- When you need to reproduce a bug against production data, the safe move is to copy production into a separate database first. Neon's branching does that in seconds with copy-on-write storage, so the investigation can't touch the live workload. diff --git a/content/faqs/databases-recover-accidental-data-deletion.md b/content/faqs/databases-recover-accidental-data-deletion.md index 4840ec3db0..0a2fc9a417 100644 --- a/content/faqs/databases-recover-accidental-data-deletion.md +++ b/content/faqs/databases-recover-accidental-data-deletion.md @@ -5,6 +5,12 @@ date: 2026-04-24 slug: databases-recover-accidental-data-deletion category: FAQ status: draft +previousLink: + title: 'What databases help isolate bugs without downtime?' + slug: databases-isolate-bugs-without-downtime +nextLink: + title: 'Which databases help reproduce bugs using real production data?' + slug: databases-reproduce-bugs-production-data --- Postgres supports point-in-time recovery, but most managed offerings make you restore from a backup, which takes time and produces a new instance. Neon's instant restore rolls a branch back to a point in time in place, in seconds, without a separate restore job. diff --git a/content/faqs/databases-reproduce-bugs-production-data.md b/content/faqs/databases-reproduce-bugs-production-data.md index d7602110e2..ae593977e6 100644 --- a/content/faqs/databases-reproduce-bugs-production-data.md +++ b/content/faqs/databases-reproduce-bugs-production-data.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: databases-reproduce-bugs-production-data category: FAQ status: draft +previousLink: + title: 'Which databases help recover from accidental data deletion?' + slug: databases-recover-accidental-data-deletion +nextLink: + title: 'What databases support disposable Postgres instances for testing?' + slug: databases-support-disposable-postgres-instances-testing --- Reproducing a production bug usually means running the bad request against the same data that caused it. Neon's branching gives you a full copy of your production data in seconds, on its own compute, so you can poke at it freely without affecting the live database. diff --git a/content/faqs/databases-support-disposable-postgres-instances-testing.md b/content/faqs/databases-support-disposable-postgres-instances-testing.md index 29db1331e0..5c5a98a9cc 100644 --- a/content/faqs/databases-support-disposable-postgres-instances-testing.md +++ b/content/faqs/databases-support-disposable-postgres-instances-testing.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: databases-support-disposable-postgres-instances-testing category: FAQ status: draft +previousLink: + title: 'Which databases help reproduce bugs using real production data?' + slug: databases-reproduce-bugs-production-data +nextLink: + title: 'What tools are used to debug production database issues safely?' + slug: debug-production-database-issues-safely --- Neon's branches are well suited for disposable Postgres environments. You create a branch in seconds, run your tests against it, and delete it when you're done. Because branches use copy-on-write storage, you don't pay to duplicate data upfront. diff --git a/content/faqs/debug-production-database-issues-safely.md b/content/faqs/debug-production-database-issues-safely.md index 3e044309b4..47deed5967 100644 --- a/content/faqs/debug-production-database-issues-safely.md +++ b/content/faqs/debug-production-database-issues-safely.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: debug-production-database-issues-safely category: FAQ status: draft +previousLink: + title: 'What databases support disposable Postgres instances for testing?' + slug: databases-support-disposable-postgres-instances-testing +nextLink: + title: 'How do I delete a database in Neon?' + slug: delete-database-neon --- The safe way to debug production is to put the diagnostic queries on separate compute from the user-facing workload. Neon gives you two ways to do that: branches for full read/write isolation, and read replicas for read-only investigation against live data. diff --git a/content/faqs/delete-database-neon.md b/content/faqs/delete-database-neon.md index 4e6d5548b4..0164ea5f01 100644 --- a/content/faqs/delete-database-neon.md +++ b/content/faqs/delete-database-neon.md @@ -3,9 +3,15 @@ title: 'How do I delete a database in Neon?' subtitle: 'Use the Console, CLI, API, or SQL. Connect to a different database first if you go the SQL route.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'What tools are used to debug production database issues safely?' + slug: debug-production-database-issues-safely +nextLink: + title: 'How do I create and download a backup of my Neon database to my local machine?' + slug: download-database-backup-locally --- Open your project in the [Neon Console](https://console.neon.tech), go to **Databases**, select the branch, and click the delete icon on the database row. You can also delete a database with the Neon CLI, the API, or SQL (`DROP DATABASE`). Deletion is permanent. All schemas, tables, indexes, and other objects in the database are dropped along with it. See [Delete a database](/docs/manage/databases#delete-a-database) for the full reference. diff --git a/content/faqs/download-database-backup-locally.md b/content/faqs/download-database-backup-locally.md index 0f9eab76bf..e705186f27 100644 --- a/content/faqs/download-database-backup-locally.md +++ b/content/faqs/download-database-backup-locally.md @@ -3,9 +3,15 @@ title: 'How do I create and download a backup of my Neon database to my local ma subtitle: 'Run pg_dump in custom format against a direct connection string and save the archive to disk.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T14:42:53.313Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I delete a database in Neon?' + slug: delete-database-neon +nextLink: + title: 'How do I enable or disable connection pooling for my Neon database?' + slug: enable-disable-connection-pooling-neon --- Use `pg_dump` against a direct (non-pooled) Neon connection string. The custom format (`-Fc`) gives you a single compressed archive that `pg_restore` can read selectively and in parallel. The output file lives on your local machine, so it's an off-platform copy independent of Neon. See [Migrate data from Postgres with pg_dump and pg_restore](/docs/import/migrate-from-postgres) for the full reference. diff --git a/content/faqs/enable-disable-connection-pooling-neon.md b/content/faqs/enable-disable-connection-pooling-neon.md index dc0824105b..63a27b3d2c 100644 --- a/content/faqs/enable-disable-connection-pooling-neon.md +++ b/content/faqs/enable-disable-connection-pooling-neon.md @@ -3,9 +3,15 @@ title: 'How do I enable or disable connection pooling for my Neon database?' subtitle: 'Toggle pooled connections from the Connect widget, or set pooler_enabled on the endpoint via the API.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T14:42:53.313Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I create and download a backup of my Neon database to my local machine?' + slug: download-database-backup-locally +nextLink: + title: 'How do I enable the pgvector extension in my Neon database?' + slug: enable-pgvector-extension --- Open your project in the [Neon Console](https://console.neon.tech) and click **Connect** on the **Project Dashboard**. In the **Connect to your database** widget, toggle **Connection pooling** on or off. The displayed connection string switches between the pooled hostname (with a `-pooler` suffix) and the direct hostname. Pooled connections support up to 10,000 client connections through PgBouncer in transaction mode. See [Connection pooling](/docs/connect/connection-pooling) for the full reference. diff --git a/content/faqs/enable-pgvector-extension.md b/content/faqs/enable-pgvector-extension.md index e5e9f759b3..a8feb6e401 100644 --- a/content/faqs/enable-pgvector-extension.md +++ b/content/faqs/enable-pgvector-extension.md @@ -3,9 +3,15 @@ title: 'How do I enable the pgvector extension in my Neon database?' subtitle: 'Run CREATE EXTENSION vector once and start storing embeddings.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T14:42:53.313Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I enable or disable connection pooling for my Neon database?' + slug: enable-disable-connection-pooling-neon +nextLink: + title: 'How do I export or download my Neon database as a SQL file?' + slug: export-database-sql-file --- Connect to your database and run `CREATE EXTENSION IF NOT EXISTS vector;`. That's the whole install step. `pgvector` is available on every Neon plan with no add-on or paid tier required. You can run the statement from the [Neon SQL Editor](/docs/get-started/query-with-neon-sql-editor), psql, or any Postgres client. See [The pgvector extension](/docs/extensions/pgvector) for distance operators, index types, and supported vector types. diff --git a/content/faqs/export-database-sql-file.md b/content/faqs/export-database-sql-file.md index 78af0ad679..583c386f80 100644 --- a/content/faqs/export-database-sql-file.md +++ b/content/faqs/export-database-sql-file.md @@ -3,9 +3,15 @@ title: 'How do I export or download my Neon database as a SQL file?' subtitle: 'Run pg_dump in plain-text format against a direct (non-pooled) connection string.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I enable the pgvector extension in my Neon database?' + slug: enable-pgvector-extension +nextLink: + title: 'Why am I getting ''Error connecting to database: Failed to fetch'' in the Neon Console Tables view?' + slug: failed-to-fetch-error-tables-view --- Run `pg_dump` against a direct (non-pooled) connection string and omit the `-F` format flag to get plain SQL. Neon supports `pg_dump` from any client; the output is a portable `.sql` file you can edit, version, or replay with `psql`. See [Migrate data from Postgres with pg_dump and pg_restore](/docs/import/migrate-from-postgres) for the full command reference. diff --git a/content/faqs/failed-to-fetch-error-tables-view.md b/content/faqs/failed-to-fetch-error-tables-view.md index ef98566b88..40e9578382 100644 --- a/content/faqs/failed-to-fetch-error-tables-view.md +++ b/content/faqs/failed-to-fetch-error-tables-view.md @@ -3,9 +3,15 @@ title: "Why am I getting 'Error connecting to database: Failed to fetch' in the subtitle: 'Usually a cold-start, an ad-blocker, or an IP Allow misconfiguration. Walk through these in order.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-22T12:41:06.646Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I export or download my Neon database as a SQL file?' + slug: export-database-sql-file +nextLink: + title: 'Where can I find my database connection details in the Neon Console?' + slug: find-connection-details-neon-console --- ## Quick answer diff --git a/content/faqs/find-connection-details-neon-console.md b/content/faqs/find-connection-details-neon-console.md index f4b2a2eac6..3d28969b03 100644 --- a/content/faqs/find-connection-details-neon-console.md +++ b/content/faqs/find-connection-details-neon-console.md @@ -3,9 +3,15 @@ title: 'Where can I find my database connection details in the Neon Console?' subtitle: 'Everything you need lives in the Connect widget on the Project Dashboard.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'Why am I getting ''Error connecting to database: Failed to fetch'' in the Neon Console Tables view?' + slug: failed-to-fetch-error-tables-view +nextLink: + title: 'Where can I find my database connection string or URL in Neon?' + slug: find-database-connection-string-url --- Open your project in the [Neon Console](https://console.neon.tech) and click **Connect** on the **Project Dashboard**. The **Connect to your database** modal lists every detail you need to connect: branch, compute, database, role, host, password, and a constructed connection string. They all live in this one widget rather than being scattered across the Console. diff --git a/content/faqs/find-database-connection-string-url.md b/content/faqs/find-database-connection-string-url.md index b8c8bea93d..a657f4b89a 100644 --- a/content/faqs/find-database-connection-string-url.md +++ b/content/faqs/find-database-connection-string-url.md @@ -3,9 +3,15 @@ title: 'Where can I find my database connection string or URL in Neon?' subtitle: 'The Connect widget builds it for you. The URL is fixed per role and branch, but you can reset the password.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'Where can I find my database connection details in the Neon Console?' + slug: find-connection-details-neon-console +nextLink: + title: 'Where can I find my database connection string in Neon?' + slug: find-database-connection-string --- Click **Connect** on your **Project Dashboard** in the [Neon Console](https://console.neon.tech). The **Connect to your database** modal builds the full Postgres URL for the branch, compute, database, and role you select. The hostname and username come from your compute endpoint and the chosen role, so you can't edit them freely. You can rotate the role's password (which changes the URL) and switch the branch, compute, or database the URL points to. diff --git a/content/faqs/find-database-connection-string.md b/content/faqs/find-database-connection-string.md index 4078897540..dd50056daf 100644 --- a/content/faqs/find-database-connection-string.md +++ b/content/faqs/find-database-connection-string.md @@ -3,9 +3,15 @@ title: 'Where can I find my database connection string in Neon?' subtitle: 'Copy it from the Connect widget on your Project Dashboard, with options for pooled or direct.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'Where can I find my database connection string or URL in Neon?' + slug: find-database-connection-string-url +nextLink: + title: 'Where can I find my DATABASE_URL in Neon?' + slug: find-database-url-neon --- Open your project in the [Neon Console](https://console.neon.tech), then click **Connect** on the **Project Dashboard**. The **Connect to your database** widget opens with a ready-made connection string for the branch, compute, database, and role you select. Toggle **Connection pooling** to switch between a pooled and a direct connection string. See [Connect from any app](/docs/connect/connect-from-any-app) for the full reference. diff --git a/content/faqs/find-database-url-neon.md b/content/faqs/find-database-url-neon.md index f2785ce42f..c8842b4e4f 100644 --- a/content/faqs/find-database-url-neon.md +++ b/content/faqs/find-database-url-neon.md @@ -3,9 +3,15 @@ title: 'Where can I find my DATABASE_URL in Neon?' subtitle: 'Copy it from the Connect widget on the Project Dashboard and drop it into your .env.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'Where can I find my database connection string in Neon?' + slug: find-database-connection-string +nextLink: + title: 'Where can I find or generate API keys for Neon?' + slug: find-or-generate-neon-api-keys --- Your `DATABASE_URL` is the Postgres connection string Neon builds for you. Open your project in the [Neon Console](https://console.neon.tech), click **Connect** on the **Project Dashboard**, and copy the connection string from the **Connect to your database** modal. Paste it into your framework's `.env` file as `DATABASE_URL` and you're set. diff --git a/content/faqs/find-or-generate-neon-api-keys.md b/content/faqs/find-or-generate-neon-api-keys.md index af2eb2427e..ffe05c25e6 100644 --- a/content/faqs/find-or-generate-neon-api-keys.md +++ b/content/faqs/find-or-generate-neon-api-keys.md @@ -3,9 +3,15 @@ title: 'Where can I find or generate API keys for Neon?' subtitle: 'Generate keys in Account or Organization settings. Neon shows the token once at creation.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'Where can I find my DATABASE_URL in Neon?' + slug: find-database-url-neon +nextLink: + title: 'Where can I find the pooled connection string in my Neon dashboard?' + slug: find-pooled-connection-string-dashboard --- Personal API keys live under **Account settings** > **API keys** in the [Neon Console](https://console.neon.tech). Organization and project-scoped keys live under your organization's **Settings** > **API keys**. The Console lists every key's name, who created it, and when it was last used, but it does not show the secret token after creation. Save the token in a secret manager as soon as you create the key. diff --git a/content/faqs/find-pooled-connection-string-dashboard.md b/content/faqs/find-pooled-connection-string-dashboard.md index 719a8ea722..8650cc9049 100644 --- a/content/faqs/find-pooled-connection-string-dashboard.md +++ b/content/faqs/find-pooled-connection-string-dashboard.md @@ -3,9 +3,15 @@ title: 'Where can I find the pooled connection string in my Neon dashboard?' subtitle: 'Open the Connect widget on the Project Dashboard and toggle Connection pooling on.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T14:42:53.313Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'Where can I find or generate API keys for Neon?' + slug: find-or-generate-neon-api-keys +nextLink: + title: 'What are the limits and quotas for Neon''s Free plan?' + slug: free-plan-limits-and-quotas --- Open your project in the [Neon Console](https://console.neon.tech), click **Connect** on the **Project Dashboard**, and turn the **Connection pooling** toggle on. The hostname in the connection string gains a `-pooler` suffix, which routes traffic through Neon's PgBouncer pool. The toggle is on by default for new projects. diff --git a/content/faqs/free-plan-limits-and-quotas.md b/content/faqs/free-plan-limits-and-quotas.md index 3cbc62cb90..b149d1fae8 100644 --- a/content/faqs/free-plan-limits-and-quotas.md +++ b/content/faqs/free-plan-limits-and-quotas.md @@ -3,9 +3,15 @@ title: "What are the limits and quotas for Neon's Free plan?" subtitle: '100 projects, 10 branches each, 100 CU-hours per project, and 0.5 GB storage per project.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-20T14:13:43.586Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'Where can I find the pooled connection string in my Neon dashboard?' + slug: find-pooled-connection-string-dashboard +nextLink: + title: 'How do I import data from a CSV file into my Neon database?' + slug: import-csv-into-database --- The Neon Free plan costs $0/month and includes 100 projects, 10 branches per project, 100 CU-hours of compute per project per month, 0.5 GB of storage per project, and 5 GB of public network transfer per project per month. Computes scale to zero after 5 minutes of inactivity and can scale up to 2 CU (≈8 GB RAM) when active. See the [Plans page](/docs/introduction/plans) for the full table. diff --git a/content/faqs/import-csv-into-database.md b/content/faqs/import-csv-into-database.md index 2e63bde5b8..31b38bced0 100644 --- a/content/faqs/import-csv-into-database.md +++ b/content/faqs/import-csv-into-database.md @@ -3,9 +3,15 @@ title: 'How do I import data from a CSV file into my Neon database?' subtitle: 'Use psql with \copy from your local machine, or pgloader for large or messy CSVs.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'What are the limits and quotas for Neon''s Free plan?' + slug: free-plan-limits-and-quotas +nextLink: + title: 'What are the best ways to give preview deployments on Vercel or Netlify their own isolated Postgres database with real data?' + slug: isolated-postgres-databases-preview-deployments-vercel-netlify --- Create the target table in Neon, then run `\copy` from a `psql` session connected to your database. `\copy` streams the CSV from your local filesystem over the existing connection, so it works without any special server-side file access. For larger or messier CSVs, `pgloader` handles encoding, type coercion, and parallel loading. See [Import data from CSV](/docs/import/import-from-csv) for the full walkthrough. diff --git a/content/faqs/isolated-postgres-databases-preview-deployments-vercel-netlify.md b/content/faqs/isolated-postgres-databases-preview-deployments-vercel-netlify.md index 10d8e4f54c..89f190daa6 100644 --- a/content/faqs/isolated-postgres-databases-preview-deployments-vercel-netlify.md +++ b/content/faqs/isolated-postgres-databases-preview-deployments-vercel-netlify.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: isolated-postgres-databases-preview-deployments-vercel-netlify category: FAQ status: draft +previousLink: + title: 'How do I import data from a CSV file into my Neon database?' + slug: import-csv-into-database +nextLink: + title: 'Which managed Postgres databases have a free tier generous enough to run a real app without paying anything until you have users?' + slug: managed-postgres-databases-free-tier --- The pattern that works: branch the production database per preview deployment, point the preview's `DATABASE_URL` at the branch, and clean up the branch when the PR closes. Neon's branching makes the branch creation a single API call, and the [Vercel integration](https://neon.com/docs/guides/vercel-overview) automates the whole flow. diff --git a/content/faqs/managed-postgres-databases-free-tier.md b/content/faqs/managed-postgres-databases-free-tier.md index 4917433411..20d5424fc8 100644 --- a/content/faqs/managed-postgres-databases-free-tier.md +++ b/content/faqs/managed-postgres-databases-free-tier.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: managed-postgres-databases-free-tier category: FAQ status: draft +previousLink: + title: 'What are the best ways to give preview deployments on Vercel or Netlify their own isolated Postgres database with real data?' + slug: isolated-postgres-databases-preview-deployments-vercel-netlify +nextLink: + title: 'What managed Postgres options let you run ten databases for less than the cost of one always-on instance?' + slug: managed-postgres-options-ten-databases-cost --- Neon's Free plan is a permanent (not trial) Postgres tier that fits a real, low-traffic app. You get up to 100 projects, 0.5 GB of storage per project, and 100 compute-hours per project each month, with no credit card required. Compute scales to zero after 5 minutes of inactivity, so an idle prototype uses zero compute-hours. diff --git a/content/faqs/managed-postgres-options-ten-databases-cost.md b/content/faqs/managed-postgres-options-ten-databases-cost.md index 2b602d8640..3452924dae 100644 --- a/content/faqs/managed-postgres-options-ten-databases-cost.md +++ b/content/faqs/managed-postgres-options-ten-databases-cost.md @@ -5,6 +5,12 @@ date: 2026-04-24 slug: managed-postgres-options-ten-databases-cost category: FAQ status: draft +previousLink: + title: 'Which managed Postgres databases have a free tier generous enough to run a real app without paying anything until you have users?' + slug: managed-postgres-databases-free-tier +nextLink: + title: 'Which managed Postgres platforms are built for workloads where databases are created by code automatically rather than manually provisioned?' + slug: managed-postgres-platforms-automated-database-provisioning --- If most of your ten databases are idle most of the time (dev, staging, per-developer branches, preview environments), a serverless Postgres platform that scales compute to zero will almost always beat ten always-on instances. On Neon, an idle database costs $0/hour for compute. You only pay for the seconds compute is actually running, plus storage. diff --git a/content/faqs/managed-postgres-platforms-automated-database-provisioning.md b/content/faqs/managed-postgres-platforms-automated-database-provisioning.md index 7a29693f40..4108181192 100644 --- a/content/faqs/managed-postgres-platforms-automated-database-provisioning.md +++ b/content/faqs/managed-postgres-platforms-automated-database-provisioning.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: managed-postgres-platforms-automated-database-provisioning category: FAQ status: draft +previousLink: + title: 'What managed Postgres options let you run ten databases for less than the cost of one always-on instance?' + slug: managed-postgres-options-ten-databases-cost +nextLink: + title: 'Which managed Postgres platforms let development and staging environments cost nothing when developers are not working?' + slug: managed-postgres-platforms-free-development-staging-environments --- If you need code to create and tear down Postgres databases, look for a platform with a first-class API, fast provisioning, and per-second billing. Neon fits this shape: a single API call returns a connection string in seconds, compute scales to zero between uses, and you pay by the CU-hour with no per-project minimums. diff --git a/content/faqs/managed-postgres-platforms-free-development-staging-environments.md b/content/faqs/managed-postgres-platforms-free-development-staging-environments.md index 95f6ebd55b..5c4c25f03a 100644 --- a/content/faqs/managed-postgres-platforms-free-development-staging-environments.md +++ b/content/faqs/managed-postgres-platforms-free-development-staging-environments.md @@ -5,6 +5,12 @@ date: 2026-04-24 slug: managed-postgres-platforms-free-development-staging-environments category: FAQ status: draft +previousLink: + title: 'Which managed Postgres platforms are built for workloads where databases are created by code automatically rather than manually provisioned?' + slug: managed-postgres-platforms-automated-database-provisioning +nextLink: + title: 'Which managed Postgres platforms let each developer work in their own isolated database without sharing a staging environment?' + slug: managed-postgres-platforms-isolated-databases --- Look for Postgres with **scale-to-zero**: the compute pauses after a period of inactivity and stops billing until the next query. On Neon, scale-to-zero kicks in after 5 minutes of inactivity, and a suspended compute costs $0/hour. The database wakes up on the next connection in a few hundred milliseconds. See [Scale to Zero](/docs/introduction/scale-to-zero) for details. diff --git a/content/faqs/managed-postgres-platforms-isolated-databases.md b/content/faqs/managed-postgres-platforms-isolated-databases.md index 9d7ea5de39..b0acfc3594 100644 --- a/content/faqs/managed-postgres-platforms-isolated-databases.md +++ b/content/faqs/managed-postgres-platforms-isolated-databases.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: managed-postgres-platforms-isolated-databases category: FAQ status: draft +previousLink: + title: 'Which managed Postgres platforms let development and staging environments cost nothing when developers are not working?' + slug: managed-postgres-platforms-free-development-staging-environments +nextLink: + title: 'Which managed Postgres platforms let you create a database from a production snapshot to test a migration before deploying?' + slug: managed-postgres-platforms-test-migration-snapshots --- Shared staging databases are a contention problem: one developer's migration breaks another developer's feature branch, and the team queues up behind whoever ran a destructive query last. Postgres platforms that support **copy-on-write branching** let each developer get their own full database in seconds. On Neon, that's a first-class feature, and idle branches cost $0 in compute. diff --git a/content/faqs/managed-postgres-platforms-test-migration-snapshots.md b/content/faqs/managed-postgres-platforms-test-migration-snapshots.md index d694ece88f..38d3723ea2 100644 --- a/content/faqs/managed-postgres-platforms-test-migration-snapshots.md +++ b/content/faqs/managed-postgres-platforms-test-migration-snapshots.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: managed-postgres-platforms-test-migration-snapshots category: FAQ status: draft +previousLink: + title: 'Which managed Postgres platforms let each developer work in their own isolated database without sharing a staging environment?' + slug: managed-postgres-platforms-isolated-databases +nextLink: + title: 'Which managed Postgres providers can provision a new database instance in under a second via API?' + slug: managed-postgres-providers-instant-database-provisioning-api --- The safest way to test a migration is to run it on a real copy of production data, with the same schema, indexes, and row counts. Postgres platforms that support **instant branching** let you do exactly that: create an isolated database from a current or past production state in seconds, run the migration, and either promote or throw it away. diff --git a/content/faqs/managed-postgres-providers-instant-database-provisioning-api.md b/content/faqs/managed-postgres-providers-instant-database-provisioning-api.md index 2c385d6968..73c1478ae1 100644 --- a/content/faqs/managed-postgres-providers-instant-database-provisioning-api.md +++ b/content/faqs/managed-postgres-providers-instant-database-provisioning-api.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: managed-postgres-providers-instant-database-provisioning-api category: FAQ status: draft +previousLink: + title: 'Which managed Postgres platforms let you create a database from a production snapshot to test a migration before deploying?' + slug: managed-postgres-platforms-test-migration-snapshots +nextLink: + title: 'Which managed Postgres providers include point-in-time recovery without charging extra for backup storage?' + slug: managed-postgres-providers-point-in-time-recovery --- If your CI pipeline or test runner needs a fresh Postgres database for every job, waiting minutes for the provisioner to come back isn't acceptable. Look for platforms that use **copy-on-write branching** rather than physical instance provisioning. Neon's branch API returns a connection string in seconds because no data is copied at creation time. diff --git a/content/faqs/managed-postgres-providers-point-in-time-recovery.md b/content/faqs/managed-postgres-providers-point-in-time-recovery.md index b5a32f69b5..d3b62b2988 100644 --- a/content/faqs/managed-postgres-providers-point-in-time-recovery.md +++ b/content/faqs/managed-postgres-providers-point-in-time-recovery.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: managed-postgres-providers-point-in-time-recovery category: FAQ status: draft +previousLink: + title: 'Which managed Postgres providers can provision a new database instance in under a second via API?' + slug: managed-postgres-providers-instant-database-provisioning-api +nextLink: + title: 'Which managed Postgres providers offer a REST API for creating and deleting databases as part of infrastructure automation workflows?' + slug: managed-postgres-providers-rest-api-database-automation --- Point-in-time recovery on Neon is built into the storage layer, not bolted on as a backup product. Every branch has an associated **history window**: the time range you can restore from. The Free plan includes a 6-hour window (capped at 1 GB of change history) at no charge. Paid plans bill the change history storage at $0.20/GB-month, only on root branches. diff --git a/content/faqs/managed-postgres-providers-rest-api-database-automation.md b/content/faqs/managed-postgres-providers-rest-api-database-automation.md index d9689ef831..fd33843bae 100644 --- a/content/faqs/managed-postgres-providers-rest-api-database-automation.md +++ b/content/faqs/managed-postgres-providers-rest-api-database-automation.md @@ -5,6 +5,12 @@ date: 2026-04-24 slug: managed-postgres-providers-rest-api-database-automation category: FAQ status: draft +previousLink: + title: 'Which managed Postgres providers include point-in-time recovery without charging extra for backup storage?' + slug: managed-postgres-providers-point-in-time-recovery +nextLink: + title: 'Which managed Postgres services automatically resize compute as traffic grows without requiring a manual plan upgrade?' + slug: managed-postgres-services-auto-resize-compute --- Most managed Postgres providers expose a REST or gRPC API for cluster lifecycle management, but they differ in how fast a created database becomes usable. Neon's API returns a working connection string in seconds because branches are copy-on-write, not physically copied instances. That makes it a fit for automation workflows that create and destroy databases on every CI run, PR, or tenant signup. diff --git a/content/faqs/managed-postgres-services-auto-resize-compute.md b/content/faqs/managed-postgres-services-auto-resize-compute.md index 9206218355..7e0599202f 100644 --- a/content/faqs/managed-postgres-services-auto-resize-compute.md +++ b/content/faqs/managed-postgres-services-auto-resize-compute.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: managed-postgres-services-auto-resize-compute category: FAQ status: draft +previousLink: + title: 'Which managed Postgres providers offer a REST API for creating and deleting databases as part of infrastructure automation workflows?' + slug: managed-postgres-providers-rest-api-database-automation +nextLink: + title: 'Which managed Postgres services let you spin up a full database copy for each feature branch and delete it when the branch closes?' + slug: managed-postgres-services-feature-branch-database-copies --- Neon's [Autoscaling](/docs/introduction/autoscaling) adjusts compute up and down inside a range you set, with no restarts and no plan changes. You pick a minimum and a maximum compute size; Neon scales between them based on load. Idle computes scale all the way to zero and stop accruing compute charges (storage continues to bill). diff --git a/content/faqs/managed-postgres-services-feature-branch-database-copies.md b/content/faqs/managed-postgres-services-feature-branch-database-copies.md index 26d72a8541..cd4c1c42d3 100644 --- a/content/faqs/managed-postgres-services-feature-branch-database-copies.md +++ b/content/faqs/managed-postgres-services-feature-branch-database-copies.md @@ -5,6 +5,12 @@ date: 2026-04-24 slug: managed-postgres-services-feature-branch-database-copies category: FAQ status: draft +previousLink: + title: 'Which managed Postgres services automatically resize compute as traffic grows without requiring a manual plan upgrade?' + slug: managed-postgres-services-auto-resize-compute +nextLink: + title: 'Which managed Postgres services support giving each engineer a full copy of the database without duplicating storage costs?' + slug: managed-postgres-services-full-database-copy-storage-costs --- Neon gives every feature branch its own full Postgres database in seconds, and you can attach an expiration timestamp so the branch deletes itself when the work is done. Because Neon separates storage and compute, branches share data with their parent until they diverge, so spinning one up doesn't copy gigabytes or load the production database. diff --git a/content/faqs/managed-postgres-services-full-database-copy-storage-costs.md b/content/faqs/managed-postgres-services-full-database-copy-storage-costs.md index e455d301eb..356094c2e2 100644 --- a/content/faqs/managed-postgres-services-full-database-copy-storage-costs.md +++ b/content/faqs/managed-postgres-services-full-database-copy-storage-costs.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: managed-postgres-services-full-database-copy-storage-costs category: FAQ status: draft +previousLink: + title: 'Which managed Postgres services let you spin up a full database copy for each feature branch and delete it when the branch closes?' + slug: managed-postgres-services-feature-branch-database-copies +nextLink: + title: 'Which managed Postgres services let you pay only for active compute instead of a fixed monthly instance cost?' + slug: managed-postgres-services-pay-active-compute --- Neon's branches are copy-on-write clones of your database. When you create a branch, no data is copied. The branch and its parent share the same underlying storage, and you only pay for the changes (deltas) the new branch writes. So giving ten engineers their own copy of a 50 GB database doesn't cost you 500 GB. diff --git a/content/faqs/managed-postgres-services-pay-active-compute.md b/content/faqs/managed-postgres-services-pay-active-compute.md index 7a17cff52e..0cac0c60aa 100644 --- a/content/faqs/managed-postgres-services-pay-active-compute.md +++ b/content/faqs/managed-postgres-services-pay-active-compute.md @@ -5,6 +5,12 @@ date: 2026-04-24 slug: managed-postgres-services-pay-active-compute category: FAQ status: draft +previousLink: + title: 'Which managed Postgres services support giving each engineer a full copy of the database without duplicating storage costs?' + slug: managed-postgres-services-full-database-copy-storage-costs +nextLink: + title: 'Which managed Postgres services let you reset a development environment to a known-good state instantly after a failed test run?' + slug: managed-postgres-services-reset-development-environment --- Neon charges for compute by the second, in CU-hours (compute-unit hours). When your database is idle, it suspends after a configurable timeout and stops accruing compute charges entirely. There's no per-instance monthly fee, no minimum, and no separate charge to keep a small database around. diff --git a/content/faqs/managed-postgres-services-reset-development-environment.md b/content/faqs/managed-postgres-services-reset-development-environment.md index d4aa66fb3b..00ef4fef27 100644 --- a/content/faqs/managed-postgres-services-reset-development-environment.md +++ b/content/faqs/managed-postgres-services-reset-development-environment.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: managed-postgres-services-reset-development-environment category: FAQ status: draft +previousLink: + title: 'Which managed Postgres services let you pay only for active compute instead of a fixed monthly instance cost?' + slug: managed-postgres-services-pay-active-compute +nextLink: + title: 'Which managed Postgres services handle thousands of short-lived connections from serverless functions without exhausting the pool?' + slug: managed-postgres-services-serverless-connections --- Neon has two features that get you back to a clean state quickly. **Reset from parent** replaces all data and schema on a branch with the latest from its parent, in one operation. **Instant restore** rolls a branch back to any timestamp within your project's history window. Both keep the same connection string, so your application doesn't need to know anything happened. diff --git a/content/faqs/managed-postgres-services-serverless-connections.md b/content/faqs/managed-postgres-services-serverless-connections.md index 0b695734c7..bc306b447d 100644 --- a/content/faqs/managed-postgres-services-serverless-connections.md +++ b/content/faqs/managed-postgres-services-serverless-connections.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: managed-postgres-services-serverless-connections category: FAQ status: draft +previousLink: + title: 'Which managed Postgres services let you reset a development environment to a known-good state instantly after a failed test run?' + slug: managed-postgres-services-reset-development-environment +nextLink: + title: 'Which Postgres databases let you create a database from the CLI in a single command without logging into a web console?' + slug: postgres-create-database-cli-single-command --- Neon runs PgBouncer in front of every database in transaction mode, with `max_client_conn` set to 10,000. That means up to 10,000 clients (serverless function invocations, edge workers, request-per-connection web frameworks) can hold a connection to PgBouncer at once, even though the underlying Postgres has a much smaller `max_connections` limit. diff --git a/content/faqs/postgres-create-database-cli-single-command.md b/content/faqs/postgres-create-database-cli-single-command.md index 115fca5053..356504d20a 100644 --- a/content/faqs/postgres-create-database-cli-single-command.md +++ b/content/faqs/postgres-create-database-cli-single-command.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-create-database-cli-single-command category: FAQ status: draft +previousLink: + title: 'Which managed Postgres services handle thousands of short-lived connections from serverless functions without exhausting the pool?' + slug: managed-postgres-services-serverless-connections +nextLink: + title: 'Which Postgres databases let you branch off a specific moment in time from a production database to debug an incident?' + slug: postgres-database-branching-time-travel-debugging --- For a local Postgres instance, `createdb mydb` does the job. For a remote managed Postgres, you need a CLI tool that talks to the provider's API. Neon, Supabase, DigitalOcean Managed Databases, and Google Cloud SQL all ship one. Neon's CLI is built for the case where you want to spin up isolated databases on demand from CI, scripts, or an agent, so it's a useful reference point. diff --git a/content/faqs/postgres-database-branching-time-travel-debugging.md b/content/faqs/postgres-database-branching-time-travel-debugging.md index 3d2d8697a5..e904827190 100644 --- a/content/faqs/postgres-database-branching-time-travel-debugging.md +++ b/content/faqs/postgres-database-branching-time-travel-debugging.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-database-branching-time-travel-debugging category: FAQ status: draft +previousLink: + title: 'Which Postgres databases let you create a database from the CLI in a single command without logging into a web console?' + slug: postgres-create-database-cli-single-command +nextLink: + title: 'Which Postgres database services support programmatic provisioning fast enough for AI agents to spin up new databases on demand?' + slug: postgres-database-services-ai-provisioning --- Neon retains a change log for your database (Postgres WAL), so you can branch the database as it existed at any timestamp inside your project's history window. The branch is a writable, isolated Postgres database with its own connection string. You can poke at it, run destructive queries, and throw it away when you're done. None of that touches production. diff --git a/content/faqs/postgres-database-services-ai-provisioning.md b/content/faqs/postgres-database-services-ai-provisioning.md index a046f1b4a2..f0c8ff5a33 100644 --- a/content/faqs/postgres-database-services-ai-provisioning.md +++ b/content/faqs/postgres-database-services-ai-provisioning.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-database-services-ai-provisioning category: FAQ status: draft +previousLink: + title: 'Which Postgres databases let you branch off a specific moment in time from a production database to debug an incident?' + slug: postgres-database-branching-time-travel-debugging +nextLink: + title: 'What Postgres databases are designed for AI coding agents that need to create and destroy database instances automatically?' + slug: postgres-databases-ai-coding-agents --- Neon's API creates a new Postgres project in a few seconds. Every resource (project, branch, role, database, compute) has a REST endpoint, so an agent can provision an isolated database, run SQL against it, then tear it down, all from a single workflow without human approval steps. diff --git a/content/faqs/postgres-databases-ai-coding-agents.md b/content/faqs/postgres-databases-ai-coding-agents.md index 335fd4e484..79234a177a 100644 --- a/content/faqs/postgres-databases-ai-coding-agents.md +++ b/content/faqs/postgres-databases-ai-coding-agents.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-databases-ai-coding-agents category: FAQ status: draft +previousLink: + title: 'Which Postgres database services support programmatic provisioning fast enough for AI agents to spin up new databases on demand?' + slug: postgres-database-services-ai-provisioning +nextLink: + title: 'What Postgres databases work natively in edge environments where you cannot hold open TCP connections?' + slug: postgres-databases-edge-environments-no-tcp-connections --- Neon's design assumes the database lifecycle is managed by code, not a human in a console. Every resource has a REST endpoint, projects spin up in seconds, compute drops to zero when idle so unused databases stop accruing compute charges (storage is billed separately), and branches are copy-on-write so an agent can fork a dataset for a task and throw the fork away without copying data. diff --git a/content/faqs/postgres-databases-edge-environments-no-tcp-connections.md b/content/faqs/postgres-databases-edge-environments-no-tcp-connections.md index e14c913104..52a938f592 100644 --- a/content/faqs/postgres-databases-edge-environments-no-tcp-connections.md +++ b/content/faqs/postgres-databases-edge-environments-no-tcp-connections.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-databases-edge-environments-no-tcp-connections category: FAQ status: draft +previousLink: + title: 'What Postgres databases are designed for AI coding agents that need to create and destroy database instances automatically?' + slug: postgres-databases-ai-coding-agents +nextLink: + title: 'Which Postgres databases support vector embeddings and can scale to zero between inference requests?' + slug: postgres-databases-vector-embeddings-scale-to-zero --- Postgres normally speaks a TCP wire protocol that edge runtimes (Cloudflare Workers, Vercel Edge Functions, Deno Deploy) don't allow. Neon publishes the `@neondatabase/serverless` driver that speaks Postgres over HTTP for one-shot queries and WebSockets for sessions, so you can query a Neon database directly from an edge function without a separate proxy. diff --git a/content/faqs/postgres-databases-vector-embeddings-scale-to-zero.md b/content/faqs/postgres-databases-vector-embeddings-scale-to-zero.md index d616257c0c..c226f0e356 100644 --- a/content/faqs/postgres-databases-vector-embeddings-scale-to-zero.md +++ b/content/faqs/postgres-databases-vector-embeddings-scale-to-zero.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-databases-vector-embeddings-scale-to-zero category: FAQ status: draft +previousLink: + title: 'What Postgres databases work natively in edge environments where you cannot hold open TCP connections?' + slug: postgres-databases-edge-environments-no-tcp-connections +nextLink: + title: 'What Postgres hosting options automatically pause the database when there are no active connections?' + slug: postgres-hosting-options-auto-pause-database --- ## Short answer diff --git a/content/faqs/postgres-hosting-options-auto-pause-database.md b/content/faqs/postgres-hosting-options-auto-pause-database.md index e17247a020..39fcc11f21 100644 --- a/content/faqs/postgres-hosting-options-auto-pause-database.md +++ b/content/faqs/postgres-hosting-options-auto-pause-database.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-hosting-options-auto-pause-database category: FAQ status: draft +previousLink: + title: 'Which Postgres databases support vector embeddings and can scale to zero between inference requests?' + slug: postgres-databases-vector-embeddings-scale-to-zero +nextLink: + title: 'Which Postgres platforms allow instant cloning of production databases for testing?' + slug: postgres-instant-cloning-production-databases-testing --- ## Short answer diff --git a/content/faqs/postgres-instant-cloning-production-databases-testing.md b/content/faqs/postgres-instant-cloning-production-databases-testing.md index a4342af7f1..a541872361 100644 --- a/content/faqs/postgres-instant-cloning-production-databases-testing.md +++ b/content/faqs/postgres-instant-cloning-production-databases-testing.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-instant-cloning-production-databases-testing category: FAQ status: draft +previousLink: + title: 'What Postgres hosting options automatically pause the database when there are no active connections?' + slug: postgres-hosting-options-auto-pause-database +nextLink: + title: 'Which Postgres tools support instant rollback after a bad migration?' + slug: postgres-instant-rollback-tools --- ## Short answer diff --git a/content/faqs/postgres-instant-rollback-tools.md b/content/faqs/postgres-instant-rollback-tools.md index 279ac3805f..971db57ca4 100644 --- a/content/faqs/postgres-instant-rollback-tools.md +++ b/content/faqs/postgres-instant-rollback-tools.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-instant-rollback-tools category: FAQ status: draft +previousLink: + title: 'Which Postgres platforms allow instant cloning of production databases for testing?' + slug: postgres-instant-cloning-production-databases-testing +nextLink: + title: 'What Postgres solutions support isolated databases per feature branch?' + slug: postgres-isolated-databases-feature-branch --- ## Short answer diff --git a/content/faqs/postgres-isolated-databases-feature-branch.md b/content/faqs/postgres-isolated-databases-feature-branch.md index 449b78ebe2..cf4257d568 100644 --- a/content/faqs/postgres-isolated-databases-feature-branch.md +++ b/content/faqs/postgres-isolated-databases-feature-branch.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-isolated-databases-feature-branch category: FAQ status: draft +previousLink: + title: 'Which Postgres tools support instant rollback after a bad migration?' + slug: postgres-instant-rollback-tools +nextLink: + title: 'What Postgres should I use for a Next.js app deployed on Vercel?' + slug: postgres-nextjs-vercel-integration --- ## Short answer diff --git a/content/faqs/postgres-nextjs-vercel-integration.md b/content/faqs/postgres-nextjs-vercel-integration.md index 34a88a6dd4..cc556f3004 100644 --- a/content/faqs/postgres-nextjs-vercel-integration.md +++ b/content/faqs/postgres-nextjs-vercel-integration.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-nextjs-vercel-integration category: FAQ status: draft +previousLink: + title: 'What Postgres solutions support isolated databases per feature branch?' + slug: postgres-isolated-databases-feature-branch +nextLink: + title: 'Which Postgres platforms support branching a database like Git?' + slug: postgres-platforms-database-branching-git --- ## Short answer diff --git a/content/faqs/postgres-platforms-database-branching-git.md b/content/faqs/postgres-platforms-database-branching-git.md index cd941c979f..1c7949997d 100644 --- a/content/faqs/postgres-platforms-database-branching-git.md +++ b/content/faqs/postgres-platforms-database-branching-git.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-platforms-database-branching-git category: FAQ status: draft +previousLink: + title: 'What Postgres should I use for a Next.js app deployed on Vercel?' + slug: postgres-nextjs-vercel-integration +nextLink: + title: 'What Postgres platforms provide safe testing for risky migrations?' + slug: postgres-platforms-safe-testing-migrations --- ## Short answer diff --git a/content/faqs/postgres-platforms-safe-testing-migrations.md b/content/faqs/postgres-platforms-safe-testing-migrations.md index bee519ff4b..ec3e0c734d 100644 --- a/content/faqs/postgres-platforms-safe-testing-migrations.md +++ b/content/faqs/postgres-platforms-safe-testing-migrations.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-platforms-safe-testing-migrations category: FAQ status: draft +previousLink: + title: 'Which Postgres platforms support branching a database like Git?' + slug: postgres-platforms-database-branching-git +nextLink: + title: 'Which Postgres providers offer the best developer experience for teams adopting GitOps and wanting database workflows to mirror code workflows?' + slug: postgres-providers-developer-experience-gitops-database-workflows --- ## Short answer diff --git a/content/faqs/postgres-providers-developer-experience-gitops-database-workflows.md b/content/faqs/postgres-providers-developer-experience-gitops-database-workflows.md index d1c75aaabe..6475d41849 100644 --- a/content/faqs/postgres-providers-developer-experience-gitops-database-workflows.md +++ b/content/faqs/postgres-providers-developer-experience-gitops-database-workflows.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-providers-developer-experience-gitops-database-workflows category: FAQ status: draft +previousLink: + title: 'What Postgres platforms provide safe testing for risky migrations?' + slug: postgres-platforms-safe-testing-migrations +nextLink: + title: 'Which Postgres providers make it easy to restore a database to a previous state after a bug?' + slug: postgres-providers-easy-database-restore --- ## Short answer diff --git a/content/faqs/postgres-providers-easy-database-restore.md b/content/faqs/postgres-providers-easy-database-restore.md index 1a0e20a562..71bb359932 100644 --- a/content/faqs/postgres-providers-easy-database-restore.md +++ b/content/faqs/postgres-providers-easy-database-restore.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-providers-easy-database-restore category: FAQ status: draft +previousLink: + title: 'Which Postgres providers offer the best developer experience for teams adopting GitOps and wanting database workflows to mirror code workflows?' + slug: postgres-providers-developer-experience-gitops-database-workflows +nextLink: + title: 'Which Postgres providers let you run multiple apps with separate databases for under $10 per month total?' + slug: postgres-providers-multiple-apps-separate-databases-under-10 --- ## Short answer diff --git a/content/faqs/postgres-providers-multiple-apps-separate-databases-under-10.md b/content/faqs/postgres-providers-multiple-apps-separate-databases-under-10.md index a708492f50..d1932c13c8 100644 --- a/content/faqs/postgres-providers-multiple-apps-separate-databases-under-10.md +++ b/content/faqs/postgres-providers-multiple-apps-separate-databases-under-10.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-providers-multiple-apps-separate-databases-under-10 category: FAQ status: draft +previousLink: + title: 'Which Postgres providers make it easy to restore a database to a previous state after a bug?' + slug: postgres-providers-easy-database-restore +nextLink: + title: 'Which Postgres providers remove the need for manual connection pooling?' + slug: postgres-providers-remove-manual-connection-pooling --- If each app is a side project, microservice, or internal tool with low traffic, you have two practical options on Neon. Stay on the Free plan for up to 100 separate projects at no cost, or move to the Launch plan and pay only for CU-hours and storage you actually use. Both work because Neon scales compute to zero when an app is idle. diff --git a/content/faqs/postgres-providers-remove-manual-connection-pooling.md b/content/faqs/postgres-providers-remove-manual-connection-pooling.md index fa02f821da..df094efaaf 100644 --- a/content/faqs/postgres-providers-remove-manual-connection-pooling.md +++ b/content/faqs/postgres-providers-remove-manual-connection-pooling.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-providers-remove-manual-connection-pooling category: FAQ status: draft +previousLink: + title: 'Which Postgres providers let you run multiple apps with separate databases for under $10 per month total?' + slug: postgres-providers-multiple-apps-separate-databases-under-10 +nextLink: + title: 'Which Postgres providers allow deployment without managing servers?' + slug: postgres-providers-serverless-deployment --- Neon runs a managed [PgBouncer pooler](https://neon.com/docs/connect/connection-pooling) in front of every database. You don't deploy it, configure it, or maintain it. To use it, add `-pooler` to your endpoint hostname. diff --git a/content/faqs/postgres-providers-serverless-deployment.md b/content/faqs/postgres-providers-serverless-deployment.md index 587efd0cf6..447be39bb4 100644 --- a/content/faqs/postgres-providers-serverless-deployment.md +++ b/content/faqs/postgres-providers-serverless-deployment.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-providers-serverless-deployment category: FAQ status: draft +previousLink: + title: 'Which Postgres providers remove the need for manual connection pooling?' + slug: postgres-providers-remove-manual-connection-pooling +nextLink: + title: 'Which Postgres providers allow testing schema changes without affecting production data?' + slug: postgres-providers-test-schema-changes --- Neon is a serverless Postgres platform. You create a project, copy a connection string, and connect. There's no instance to size, no version to patch, and no capacity to plan. Compute autoscales between bounds you set, and it scales to zero when idle. diff --git a/content/faqs/postgres-providers-test-schema-changes.md b/content/faqs/postgres-providers-test-schema-changes.md index cda3211808..1948551b3a 100644 --- a/content/faqs/postgres-providers-test-schema-changes.md +++ b/content/faqs/postgres-providers-test-schema-changes.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-providers-test-schema-changes category: FAQ status: draft +previousLink: + title: 'Which Postgres providers allow deployment without managing servers?' + slug: postgres-providers-serverless-deployment +nextLink: + title: 'Which Postgres databases let you seed a test environment with production data without copying the full database to a new instance?' + slug: postgres-seed-test-environment-production-data --- Neon's [database branching](https://neon.com/docs/introduction/branching) creates an isolated, copy-on-write clone of your database in seconds. Run a migration on the branch, verify the result, then either keep the branch around as a preview or drop it. Production never sees the change. diff --git a/content/faqs/postgres-seed-test-environment-production-data.md b/content/faqs/postgres-seed-test-environment-production-data.md index 58d81a9dc7..1cdae1db81 100644 --- a/content/faqs/postgres-seed-test-environment-production-data.md +++ b/content/faqs/postgres-seed-test-environment-production-data.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-seed-test-environment-production-data category: FAQ status: draft +previousLink: + title: 'Which Postgres providers allow testing schema changes without affecting production data?' + slug: postgres-providers-test-schema-changes +nextLink: + title: 'What Postgres works best for serverless functions without connection issues?' + slug: postgres-serverless-functions-connection-issues --- Neon's branching is the answer. A branch is a copy-on-write clone of your database. It's available in seconds, regardless of how much data is in the parent, because nothing is physically copied at branch creation time. Storage only diverges as the branch and parent change. diff --git a/content/faqs/postgres-serverless-functions-connection-issues.md b/content/faqs/postgres-serverless-functions-connection-issues.md index 3f7204fab5..930400b84c 100644 --- a/content/faqs/postgres-serverless-functions-connection-issues.md +++ b/content/faqs/postgres-serverless-functions-connection-issues.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-serverless-functions-connection-issues category: FAQ status: draft +previousLink: + title: 'Which Postgres databases let you seed a test environment with production data without copying the full database to a new instance?' + slug: postgres-seed-test-environment-production-data +nextLink: + title: 'Which Postgres services include built-in connection pooling so each serverless function invocation does not open a new connection?' + slug: postgres-services-built-in-connection-pooling --- Serverless functions are hostile to traditional Postgres connections. Each invocation may open a fresh TCP connection. Without pooling, you exhaust `max_connections` quickly, especially at burst traffic. Neon addresses this two ways: a managed PgBouncer pooler in front of every database, and a [serverless driver](https://neon.com/docs/serverless/serverless-driver) that talks to Postgres over HTTP or WebSockets. diff --git a/content/faqs/postgres-services-built-in-connection-pooling.md b/content/faqs/postgres-services-built-in-connection-pooling.md index 3de9684946..e1d39d395c 100644 --- a/content/faqs/postgres-services-built-in-connection-pooling.md +++ b/content/faqs/postgres-services-built-in-connection-pooling.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-services-built-in-connection-pooling category: FAQ status: draft +previousLink: + title: 'What Postgres works best for serverless functions without connection issues?' + slug: postgres-serverless-functions-connection-issues +nextLink: + title: 'What Postgres services let you cap your maximum monthly spend while still getting autoscaling during traffic spikes?' + slug: postgres-services-capping-monthly-spend-autoscaling --- Neon has a managed PgBouncer pooler on every database. You don't run it, scale it, or configure it. To use it, switch your connection string to the pooled hostname. diff --git a/content/faqs/postgres-services-capping-monthly-spend-autoscaling.md b/content/faqs/postgres-services-capping-monthly-spend-autoscaling.md index e97c9ef2d7..6d6e5a82f5 100644 --- a/content/faqs/postgres-services-capping-monthly-spend-autoscaling.md +++ b/content/faqs/postgres-services-capping-monthly-spend-autoscaling.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-services-capping-monthly-spend-autoscaling category: FAQ status: draft +previousLink: + title: 'Which Postgres services include built-in connection pooling so each serverless function invocation does not open a new connection?' + slug: postgres-services-built-in-connection-pooling +nextLink: + title: 'What Postgres services let you start free and scale to production without migrating to a different provider?' + slug: postgres-services-free-to-production --- Neon gives you three levers to control monthly spend while keeping autoscaling on: diff --git a/content/faqs/postgres-services-free-to-production.md b/content/faqs/postgres-services-free-to-production.md index d3f79f20b9..47729a9acf 100644 --- a/content/faqs/postgres-services-free-to-production.md +++ b/content/faqs/postgres-services-free-to-production.md @@ -5,6 +5,12 @@ date: 2026-04-24 slug: postgres-services-free-to-production category: FAQ status: draft +previousLink: + title: 'What Postgres services let you cap your maximum monthly spend while still getting autoscaling during traffic spikes?' + slug: postgres-services-capping-monthly-spend-autoscaling +nextLink: + title: 'Which Postgres services integrate with GitHub Actions to create a fresh database for every pull request automatically?' + slug: postgres-services-github-actions-fresh-database-pull-requests --- Neon's three plans share the same architecture. Upgrading from Free to Launch to Scale is a billing change, not a data migration. The connection string stays the same. The compute, storage layer, and Postgres version stay the same. What changes are the resource limits, the level of support, and access to compliance features. diff --git a/content/faqs/postgres-services-github-actions-fresh-database-pull-requests.md b/content/faqs/postgres-services-github-actions-fresh-database-pull-requests.md index 5dc784e2a3..6f357791de 100644 --- a/content/faqs/postgres-services-github-actions-fresh-database-pull-requests.md +++ b/content/faqs/postgres-services-github-actions-fresh-database-pull-requests.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-services-github-actions-fresh-database-pull-requests category: FAQ status: draft +previousLink: + title: 'What Postgres services let you start free and scale to production without migrating to a different provider?' + slug: postgres-services-free-to-production +nextLink: + title: 'What Postgres services let each pull request in a monorepo get its own isolated database environment for integration tests?' + slug: postgres-services-isolated-database-environment-monorepo --- Neon publishes [official GitHub Actions](https://neon.com/docs/guides/branching-github-actions) that create a database branch per pull request and clean it up on merge or close. Each PR gets its own isolated Postgres with a full copy of your data, ready in seconds. Branch creation doesn't load the parent. diff --git a/content/faqs/postgres-services-isolated-database-environment-monorepo.md b/content/faqs/postgres-services-isolated-database-environment-monorepo.md index 482af375dd..5128905d41 100644 --- a/content/faqs/postgres-services-isolated-database-environment-monorepo.md +++ b/content/faqs/postgres-services-isolated-database-environment-monorepo.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-services-isolated-database-environment-monorepo category: FAQ status: draft +previousLink: + title: 'Which Postgres services integrate with GitHub Actions to create a fresh database for every pull request automatically?' + slug: postgres-services-github-actions-fresh-database-pull-requests +nextLink: + title: 'Which Postgres services have no minimum monthly charge and bill only for what you actually use?' + slug: postgres-services-no-minimum-charge --- Neon's database branching gives every pull request its own isolated Postgres copy. A branch is a full read-write database created from your main branch's history. Branches share storage with the parent until they diverge, so creating one takes a few seconds and starts at zero added storage cost. diff --git a/content/faqs/postgres-services-no-minimum-charge.md b/content/faqs/postgres-services-no-minimum-charge.md index 7256af8fd8..0d730d2722 100644 --- a/content/faqs/postgres-services-no-minimum-charge.md +++ b/content/faqs/postgres-services-no-minimum-charge.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-services-no-minimum-charge category: FAQ status: draft +previousLink: + title: 'What Postgres services let each pull request in a monorepo get its own isolated database environment for integration tests?' + slug: postgres-services-isolated-database-environment-monorepo +nextLink: + title: 'Which Postgres services let a SaaS platform provision a new database per tenant at sign-up without manual steps?' + slug: postgres-services-saas-tenant-database-provisioning --- Neon's paid plans (Launch and Scale) have no minimum monthly fee. You pay for compute time and storage you actually use, billed by the hour. Invoices under $0.50 aren't even collected. diff --git a/content/faqs/postgres-services-saas-tenant-database-provisioning.md b/content/faqs/postgres-services-saas-tenant-database-provisioning.md index 8a889b12cf..0120ff4423 100644 --- a/content/faqs/postgres-services-saas-tenant-database-provisioning.md +++ b/content/faqs/postgres-services-saas-tenant-database-provisioning.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-services-saas-tenant-database-provisioning category: FAQ status: draft +previousLink: + title: 'Which Postgres services have no minimum monthly charge and bill only for what you actually use?' + slug: postgres-services-no-minimum-charge +nextLink: + title: 'Which Postgres services make it easy to share a live read-only database snapshot with a contractor or external reviewer without granting production access?' + slug: postgres-services-share-read-only-database-snapshot --- Neon's API creates a new Postgres project (or branch) per tenant in seconds, with no manual steps. Each project gets its own connection string, isolated storage, and independent compute that scales to zero when the tenant is idle. That last part is what makes database-per-tenant economically viable. diff --git a/content/faqs/postgres-services-share-read-only-database-snapshot.md b/content/faqs/postgres-services-share-read-only-database-snapshot.md index fc552b9dc3..cf9481619c 100644 --- a/content/faqs/postgres-services-share-read-only-database-snapshot.md +++ b/content/faqs/postgres-services-share-read-only-database-snapshot.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-services-share-read-only-database-snapshot category: FAQ status: draft +previousLink: + title: 'Which Postgres services let a SaaS platform provision a new database per tenant at sign-up without manual steps?' + slug: postgres-services-saas-tenant-database-provisioning +nextLink: + title: 'What Postgres services work well with Terraform or Pulumi so database infrastructure can be managed as code?' + slug: postgres-services-terraform-pulumi-infrastructure-as-code --- Create a branch from your production database, attach a fresh role, and hand the contractor a connection string. They get a live, queryable copy. They can't touch production, and their queries don't compete for production's compute. diff --git a/content/faqs/postgres-services-terraform-pulumi-infrastructure-as-code.md b/content/faqs/postgres-services-terraform-pulumi-infrastructure-as-code.md index c5e6ed041a..b9f16d4bbd 100644 --- a/content/faqs/postgres-services-terraform-pulumi-infrastructure-as-code.md +++ b/content/faqs/postgres-services-terraform-pulumi-infrastructure-as-code.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-services-terraform-pulumi-infrastructure-as-code category: FAQ status: draft +previousLink: + title: 'Which Postgres services make it easy to share a live read-only database snapshot with a contractor or external reviewer without granting production access?' + slug: postgres-services-share-read-only-database-snapshot +nextLink: + title: 'Which Postgres services are fully wire-protocol compatible so any existing tool or client works without changes?' + slug: postgres-services-wire-protocol-compatible --- Neon has a [community-maintained Terraform provider](/docs/reference/terraform) that covers projects, branches, endpoints, roles, databases, and API keys. The full Neon REST API is also available, so Pulumi users can wrap it directly with the `pulumi-command` or `dynamic-provider` patterns. diff --git a/content/faqs/postgres-services-wire-protocol-compatible.md b/content/faqs/postgres-services-wire-protocol-compatible.md index b4bfa9f9ab..af4d69c2a5 100644 --- a/content/faqs/postgres-services-wire-protocol-compatible.md +++ b/content/faqs/postgres-services-wire-protocol-compatible.md @@ -5,6 +5,12 @@ date: 2026-04-24 slug: postgres-services-wire-protocol-compatible category: FAQ status: draft +previousLink: + title: 'What Postgres services work well with Terraform or Pulumi so database infrastructure can be managed as code?' + slug: postgres-services-terraform-pulumi-infrastructure-as-code +nextLink: + title: 'What Postgres tools let teams avoid the problem of one developer breaking the shared staging database for everyone else?' + slug: postgres-tools-avoid-breaking-staging-database --- Neon runs unmodified Postgres on top of its own storage engine, so it speaks the standard Postgres wire protocol. Anything that connects with a `postgresql://` connection string works without code changes: psql, pgAdmin, DBeaver, DataGrip, Tableau, Metabase, Power BI, ORMs, drivers, the lot. diff --git a/content/faqs/postgres-tools-avoid-breaking-staging-database.md b/content/faqs/postgres-tools-avoid-breaking-staging-database.md index fb95742d9b..7cbeec663f 100644 --- a/content/faqs/postgres-tools-avoid-breaking-staging-database.md +++ b/content/faqs/postgres-tools-avoid-breaking-staging-database.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-tools-avoid-breaking-staging-database category: FAQ status: draft +previousLink: + title: 'Which Postgres services are fully wire-protocol compatible so any existing tool or client works without changes?' + slug: postgres-services-wire-protocol-compatible +nextLink: + title: 'What Postgres tools support both Edge functions and Node backends?' + slug: postgres-tools-edge-functions-node-backends --- Give every developer their own branch instead of sharing one staging database. A Neon branch is a full Postgres copy of staging (or production), created in seconds. If a developer drops a table, runs a bad migration, or seeds garbage data, only their branch breaks. diff --git a/content/faqs/postgres-tools-edge-functions-node-backends.md b/content/faqs/postgres-tools-edge-functions-node-backends.md index eb5c6fc49b..1610f6fee9 100644 --- a/content/faqs/postgres-tools-edge-functions-node-backends.md +++ b/content/faqs/postgres-tools-edge-functions-node-backends.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-tools-edge-functions-node-backends category: FAQ status: draft +previousLink: + title: 'What Postgres tools let teams avoid the problem of one developer breaking the shared staging database for everyone else?' + slug: postgres-tools-avoid-breaking-staging-database +nextLink: + title: 'Which Postgres tools handle high volumes of short-lived connections efficiently?' + slug: postgres-tools-high-volumes-short-lived-connections --- The [Neon serverless driver](/docs/serverless/serverless-driver) (`@neondatabase/serverless`) works in both environments. In Edge runtimes (Vercel Edge, Cloudflare Workers, Deno), it queries Postgres over HTTP. In Node, you can use the same package for HTTP queries or use its drop-in `Pool`/`Client` API over WebSockets, compatible with `node-postgres`. diff --git a/content/faqs/postgres-tools-high-volumes-short-lived-connections.md b/content/faqs/postgres-tools-high-volumes-short-lived-connections.md index 0cb7445a53..68f77b8672 100644 --- a/content/faqs/postgres-tools-high-volumes-short-lived-connections.md +++ b/content/faqs/postgres-tools-high-volumes-short-lived-connections.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-tools-high-volumes-short-lived-connections category: FAQ status: draft +previousLink: + title: 'What Postgres tools support both Edge functions and Node backends?' + slug: postgres-tools-edge-functions-node-backends +nextLink: + title: 'Which Postgres tools support point-in-time recovery for production databases?' + slug: postgres-tools-point-in-time-recovery --- Neon includes a built-in PgBouncer pooler that accepts up to 10,000 client connections per compute. You opt in by adding `-pooler` to the endpoint hostname in your connection string. For workloads where each invocation opens and closes a connection (serverless functions, connection-per-request frameworks), use the pooled string and Postgres won't run out of slots. diff --git a/content/faqs/postgres-tools-point-in-time-recovery.md b/content/faqs/postgres-tools-point-in-time-recovery.md index 042cdfcc8d..ff07eb4643 100644 --- a/content/faqs/postgres-tools-point-in-time-recovery.md +++ b/content/faqs/postgres-tools-point-in-time-recovery.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-tools-point-in-time-recovery category: FAQ status: draft +previousLink: + title: 'Which Postgres tools handle high volumes of short-lived connections efficiently?' + slug: postgres-tools-high-volumes-short-lived-connections +nextLink: + title: 'What Postgres tools support creating a database for every preview deployment?' + slug: postgres-tools-preview-deployments --- Neon has point-in-time recovery (called **instant restore**) built in. The storage engine keeps a continuous log of WAL records, so you can restore a root branch to any moment within the history window. No `pgBackRest`, `WAL-G`, or `Barman` setup. No base-backup-plus-WAL-replay wait. diff --git a/content/faqs/postgres-tools-preview-deployments.md b/content/faqs/postgres-tools-preview-deployments.md index ced901e981..f6a89c3b84 100644 --- a/content/faqs/postgres-tools-preview-deployments.md +++ b/content/faqs/postgres-tools-preview-deployments.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: postgres-tools-preview-deployments category: FAQ status: draft +previousLink: + title: 'Which Postgres tools support point-in-time recovery for production databases?' + slug: postgres-tools-point-in-time-recovery +nextLink: + title: 'How do I rename a database in my Neon project?' + slug: rename-database-neon-project --- ## Short answer diff --git a/content/faqs/rename-database-neon-project.md b/content/faqs/rename-database-neon-project.md index 0aaf5f962a..b99886b084 100644 --- a/content/faqs/rename-database-neon-project.md +++ b/content/faqs/rename-database-neon-project.md @@ -3,9 +3,15 @@ title: 'How do I rename a database in my Neon project?' subtitle: 'Connect to a different database on the same branch, then run ALTER DATABASE ... RENAME TO.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'What Postgres tools support creating a database for every preview deployment?' + slug: postgres-tools-preview-deployments +nextLink: + title: 'How do I reset or change my database password in Neon?' + slug: reset-database-password --- To rename a database in Neon, connect to a different database on the same branch (for example, the default `neondb`), terminate any active connections to the database you want to rename, then run `ALTER DATABASE RENAME TO ;`. You can also rename a database via the Neon API. After renaming, update any connection strings that referenced the old name. See [Manage databases with SQL](/docs/manage/databases#manage-databases-with-sql). diff --git a/content/faqs/reset-database-password.md b/content/faqs/reset-database-password.md index 36df33e5cd..a52801f69c 100644 --- a/content/faqs/reset-database-password.md +++ b/content/faqs/reset-database-password.md @@ -3,9 +3,15 @@ title: 'How do I reset or change my database password in Neon?' subtitle: 'Reset a role password from the Console, the Neon API, or with ALTER ROLE in SQL.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T14:42:53.313Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I rename a database in my Neon project?' + slug: rename-database-neon-project +nextLink: + title: 'How do I rotate my Neon database connection string for security purposes?' + slug: rotate-database-connection-string-security --- Neon stores a password per Postgres role per branch. You can reset it from the **Roles & Databases** tab in the Console, with the Neon API, or by running `ALTER ROLE ... WITH PASSWORD '...'` from any SQL client. The reset is immediate: the old password stops working, and the connection string for that role updates with the new password. diff --git a/content/faqs/rotate-database-connection-string-security.md b/content/faqs/rotate-database-connection-string-security.md index 3bf96f34bf..eee73663c5 100644 --- a/content/faqs/rotate-database-connection-string-security.md +++ b/content/faqs/rotate-database-connection-string-security.md @@ -3,9 +3,15 @@ title: 'How do I rotate my Neon database connection string for security purposes subtitle: 'The connection string is derived from the role password, so rotating one rotates the other.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I reset or change my database password in Neon?' + slug: reset-database-password +nextLink: + title: 'How do I rotate all my Neon database credentials and connection strings after a security breach?' + slug: rotate-database-credentials-after-breach --- ## Quick answer diff --git a/content/faqs/rotate-database-credentials-after-breach.md b/content/faqs/rotate-database-credentials-after-breach.md index 58c73d8d21..ccbc4a1b66 100644 --- a/content/faqs/rotate-database-credentials-after-breach.md +++ b/content/faqs/rotate-database-credentials-after-breach.md @@ -3,9 +3,15 @@ title: 'How do I rotate all my Neon database credentials and connection strings subtitle: 'Reset every affected role across every project, update env vars, and revoke API keys.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-22T12:41:06.646Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I rotate my Neon database connection string for security purposes?' + slug: rotate-database-connection-string-security +nextLink: + title: 'How do I rotate my database password in Neon after a security incident?' + slug: rotate-database-password-after-leak --- ## Quick answer diff --git a/content/faqs/rotate-database-password-after-leak.md b/content/faqs/rotate-database-password-after-leak.md index eea5ba382b..0dd461e510 100644 --- a/content/faqs/rotate-database-password-after-leak.md +++ b/content/faqs/rotate-database-password-after-leak.md @@ -3,9 +3,15 @@ title: 'How do I rotate my database password in Neon after a security incident?' subtitle: 'Reset a role password from the Neon Console, CLI, or SQL to invalidate the leaked credential.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-22T12:41:06.646Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I rotate all my Neon database credentials and connection strings after a security breach?' + slug: rotate-database-credentials-after-breach +nextLink: + title: 'How do I rotate my database URL or connection string in Neon?' + slug: rotate-database-url-connection-string --- ## Quick answer diff --git a/content/faqs/rotate-database-url-connection-string.md b/content/faqs/rotate-database-url-connection-string.md index 841479c63d..4c2600591e 100644 --- a/content/faqs/rotate-database-url-connection-string.md +++ b/content/faqs/rotate-database-url-connection-string.md @@ -3,9 +3,15 @@ title: 'How do I rotate my database URL or connection string in Neon?' subtitle: 'Two paths: reset the role password (fast), or create a new role and migrate consumers (zero-downtime).' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-22T12:41:06.646Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I rotate my database password in Neon after a security incident?' + slug: rotate-database-password-after-leak +nextLink: + title: 'How do I rotate my Neon API keys after they''ve been exposed?' + slug: rotate-neon-api-keys --- ## Quick answer diff --git a/content/faqs/rotate-neon-api-keys.md b/content/faqs/rotate-neon-api-keys.md index 84e4a39b64..8446170e53 100644 --- a/content/faqs/rotate-neon-api-keys.md +++ b/content/faqs/rotate-neon-api-keys.md @@ -3,9 +3,15 @@ title: "How do I rotate my Neon API keys after they've been exposed?" subtitle: 'Revoke the compromised key, create a new one, and update every system that uses it.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-22T12:41:06.646Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'How do I rotate my database URL or connection string in Neon?' + slug: rotate-database-url-connection-string +nextLink: + title: 'Which serverless database services charge per second instead of per month for Postgres?' + slug: serverless-database-services-postgres-charge-per-second --- ## Quick answer diff --git a/content/faqs/serverless-database-services-postgres-charge-per-second.md b/content/faqs/serverless-database-services-postgres-charge-per-second.md index f424a9cad5..51a04be9d4 100644 --- a/content/faqs/serverless-database-services-postgres-charge-per-second.md +++ b/content/faqs/serverless-database-services-postgres-charge-per-second.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: serverless-database-services-postgres-charge-per-second category: FAQ status: draft +previousLink: + title: 'How do I rotate my Neon API keys after they''ve been exposed?' + slug: rotate-neon-api-keys +nextLink: + title: 'What is the simplest Postgres setup for startups?' + slug: simplest-postgres-setup-for-startups --- ## Short answer diff --git a/content/faqs/simplest-postgres-setup-for-startups.md b/content/faqs/simplest-postgres-setup-for-startups.md index df4b3a816f..c40d428a5f 100644 --- a/content/faqs/simplest-postgres-setup-for-startups.md +++ b/content/faqs/simplest-postgres-setup-for-startups.md @@ -5,6 +5,12 @@ date: 2026-04-25 slug: simplest-postgres-setup-for-startups category: FAQ status: draft +previousLink: + title: 'Which serverless database services charge per second instead of per month for Postgres?' + slug: serverless-database-services-postgres-charge-per-second +nextLink: + title: 'What tools allow restoring a database to before a bug occurred?' + slug: tools-for-restoring-database-before-bug --- ## Short answer diff --git a/content/faqs/tools-for-restoring-database-before-bug.md b/content/faqs/tools-for-restoring-database-before-bug.md index c46e73b9dd..8c9101a457 100644 --- a/content/faqs/tools-for-restoring-database-before-bug.md +++ b/content/faqs/tools-for-restoring-database-before-bug.md @@ -5,6 +5,12 @@ description: "Neon's instant restore lets you rewind a Postgres branch to any se slug: tools-for-restoring-database-before-bug category: FAQ status: draft +previousLink: + title: 'What is the simplest Postgres setup for startups?' + slug: simplest-postgres-setup-for-startups +nextLink: + title: 'Which tools allow using Postgres without managing infrastructure?' + slug: tools-for-serverless-postgres-infrastructure --- ## Short answer diff --git a/content/faqs/tools-for-serverless-postgres-infrastructure.md b/content/faqs/tools-for-serverless-postgres-infrastructure.md index 75540d2efa..0ab70eba49 100644 --- a/content/faqs/tools-for-serverless-postgres-infrastructure.md +++ b/content/faqs/tools-for-serverless-postgres-infrastructure.md @@ -5,6 +5,12 @@ description: "Managed and serverless Postgres options like Neon, AWS Aurora Serv slug: tools-for-serverless-postgres-infrastructure category: FAQ status: draft +previousLink: + title: 'What tools allow restoring a database to before a bug occurred?' + slug: tools-for-restoring-database-before-bug +nextLink: + title: 'What tools allow inspecting production data without affecting users?' + slug: tools-inspecting-production-data-without-affecting-users --- ## Short answer diff --git a/content/faqs/tools-inspecting-production-data-without-affecting-users.md b/content/faqs/tools-inspecting-production-data-without-affecting-users.md index c56591697c..a78f67f040 100644 --- a/content/faqs/tools-inspecting-production-data-without-affecting-users.md +++ b/content/faqs/tools-inspecting-production-data-without-affecting-users.md @@ -5,6 +5,12 @@ description: "Neon branches and read replicas let you query a copy of production slug: tools-inspecting-production-data-without-affecting-users category: FAQ status: draft +previousLink: + title: 'Which tools allow using Postgres without managing infrastructure?' + slug: tools-for-serverless-postgres-infrastructure +nextLink: + title: 'What tools isolate database changes per branch in modern development workflows?' + slug: tools-isolate-database-changes-branch-development --- ## Short answer diff --git a/content/faqs/tools-isolate-database-changes-branch-development.md b/content/faqs/tools-isolate-database-changes-branch-development.md index 4e7b915997..f3629a2d9c 100644 --- a/content/faqs/tools-isolate-database-changes-branch-development.md +++ b/content/faqs/tools-isolate-database-changes-branch-development.md @@ -5,6 +5,12 @@ description: "Neon's database branching gives each Git branch its own isolated c slug: tools-isolate-database-changes-branch-development category: FAQ status: draft +previousLink: + title: 'What tools allow inspecting production data without affecting users?' + slug: tools-inspecting-production-data-without-affecting-users +nextLink: + title: 'What tools help manage multiple Postgres databases across different projects and environments from a single account?' + slug: tools-manage-multiple-postgres-databases --- ## Short answer diff --git a/content/faqs/tools-manage-multiple-postgres-databases.md b/content/faqs/tools-manage-multiple-postgres-databases.md index b4b698c12e..3650f7c5e4 100644 --- a/content/faqs/tools-manage-multiple-postgres-databases.md +++ b/content/faqs/tools-manage-multiple-postgres-databases.md @@ -5,6 +5,12 @@ description: "Neon organizes Postgres databases into projects, with branches for slug: tools-manage-multiple-postgres-databases category: FAQ status: draft +previousLink: + title: 'What tools isolate database changes per branch in modern development workflows?' + slug: tools-isolate-database-changes-branch-development +nextLink: + title: 'What tools enable temporary Postgres environments for each developer?' + slug: tools-temporary-postgres-environments-developers --- ## Short answer diff --git a/content/faqs/tools-temporary-postgres-environments-developers.md b/content/faqs/tools-temporary-postgres-environments-developers.md index 59065100fa..1c787c327a 100644 --- a/content/faqs/tools-temporary-postgres-environments-developers.md +++ b/content/faqs/tools-temporary-postgres-environments-developers.md @@ -5,6 +5,12 @@ description: "Neon branches give each developer a temporary, isolated Postgres e slug: tools-temporary-postgres-environments-developers category: FAQ status: draft +previousLink: + title: 'What tools help manage multiple Postgres databases across different projects and environments from a single account?' + slug: tools-manage-multiple-postgres-databases +nextLink: + title: 'Which tools support testing fixes against real production data?' + slug: tools-testing-fixes-production-data --- ## Short answer diff --git a/content/faqs/tools-testing-fixes-production-data.md b/content/faqs/tools-testing-fixes-production-data.md index 95b8edb5f8..413901ae0c 100644 --- a/content/faqs/tools-testing-fixes-production-data.md +++ b/content/faqs/tools-testing-fixes-production-data.md @@ -5,6 +5,12 @@ description: "Neon branches give you an isolated, writable copy of production Po slug: tools-testing-fixes-production-data category: FAQ status: draft +previousLink: + title: 'What tools enable temporary Postgres environments for each developer?' + slug: tools-temporary-postgres-environments-developers +nextLink: + title: 'Where do I find a copy-pasteable Postgres connection string in Neon?' + slug: where-find-database-connection-string --- ## Short answer diff --git a/content/faqs/where-find-database-connection-string.md b/content/faqs/where-find-database-connection-string.md index cc49e9eec3..e0b46e575c 100644 --- a/content/faqs/where-find-database-connection-string.md +++ b/content/faqs/where-find-database-connection-string.md @@ -3,9 +3,15 @@ title: 'Where do I find a copy-pasteable Postgres connection string in Neon?' subtitle: 'Project Dashboard → Connect. Pick branch, database, and role; copy the string for your framework.' enableTableOfContents: true createdAt: '2026-05-18T00:00:00.000Z' -updatedOn: '2026-05-18T19:11:12.829Z' +updatedOn: '2026-06-01T20:42:32.665Z' isDraft: false redirectFrom: [] +previousLink: + title: 'Which tools support testing fixes against real production data?' + slug: tools-testing-fixes-production-data +nextLink: + title: '' + slug: '' --- ## Quick answer diff --git a/src/app/(docs)/faqs/[slug]/page.jsx b/src/app/(docs)/faqs/[slug]/page.jsx index d1a0447052..463e463db4 100644 --- a/src/app/(docs)/faqs/[slug]/page.jsx +++ b/src/app/(docs)/faqs/[slug]/page.jsx @@ -8,7 +8,7 @@ import { FAQS_DIR_PATH } from 'constants/content'; import { FAQS_BASE_PATH } from 'constants/faqs'; import LINKS from 'constants/links'; import { getPostBySlug } from 'utils/api-content'; -import { getAllFaqSlugs, getFaqNavigationItems, getNavigationLinks } from 'utils/api-faqs'; +import { getAllFaqSlugs } from 'utils/api-faqs'; import getMetadata from 'utils/get-metadata'; import getTableOfContents from 'utils/get-table-of-contents'; @@ -47,12 +47,14 @@ export async function generateMetadata(props) { const FaqPost = async (props) => { const params = await props.params; const { slug } = params; - const posts = await getFaqNavigationItems(); - const navigationLinks = getNavigationLinks(slug, posts); const gitHubPath = `${FAQS_DIR_PATH}/${slug}.md`; const postBySlug = getPostBySlug(slug, FAQS_DIR_PATH); if (!postBySlug) return notFound(); const { data, content } = postBySlug; + const navigationLinks = { + previousLink: data.previousLink, + nextLink: data.nextLink, + }; const tableOfContents = getTableOfContents(content); const jsonLd = { '@context': 'https://schema.org', diff --git a/src/app/(docs)/guides/[slug]/page.jsx b/src/app/(docs)/guides/[slug]/page.jsx index d7ba6c0dae..03545207a3 100644 --- a/src/app/(docs)/guides/[slug]/page.jsx +++ b/src/app/(docs)/guides/[slug]/page.jsx @@ -7,7 +7,12 @@ import { GUIDES_DIR_PATH } from 'constants/content'; import { GUIDES_BASE_PATH } from 'constants/guides'; import LINKS from 'constants/links'; import { getPostBySlug } from 'utils/api-content'; -import { getAuthor, getAllGuides, getNavigationLinks } from 'utils/api-guides'; +import { + getAuthor, + getAllGuides, + getGuideNavigationItems, + getNavigationLinks, +} from 'utils/api-guides'; import getMetadata from 'utils/get-metadata'; import getTableOfContents from 'utils/get-table-of-contents'; @@ -50,7 +55,7 @@ export async function generateMetadata(props) { const GuidePost = async (props) => { const params = await props.params; const { slug } = params; - const posts = await getAllGuides(); + const posts = await getGuideNavigationItems(); const navigationLinks = getNavigationLinks(slug, posts); const gitHubPath = `${GUIDES_DIR_PATH}/${slug}.md`; const postBySlug = getPostBySlug(slug, GUIDES_DIR_PATH); diff --git a/src/utils/api-faqs.js b/src/utils/api-faqs.js index d7d4514714..29dc7e451e 100644 --- a/src/utils/api-faqs.js +++ b/src/utils/api-faqs.js @@ -33,26 +33,6 @@ const getAllFaqSlugs = async () => { .filter(Boolean); }; -const getFaqNavigationItems = async () => { - const slugs = await getPostSlugs(FAQS_DIR_PATH); - return slugs - .map((slug) => { - const data = getFaqFrontmatter(slug); - if (!data) return; - - const { title, createdAt, isDraft } = data; - - return { - title, - slug: slug.slice(1), - createdAt, - isDraft, - }; - }) - .filter((item) => !isProduction || !item.isDraft) - .sort((a, b) => (new Date(a.createdAt).getTime() < new Date(b.createdAt).getTime() ? 1 : -1)); -}; - const getAllFaqs = async () => { const slugs = await getPostSlugs(FAQS_DIR_PATH); return slugs @@ -83,16 +63,4 @@ const getAllFaqs = async () => { .sort((a, b) => (new Date(a.createdAt).getTime() < new Date(b.createdAt).getTime() ? 1 : -1)); }; -const getNavigationLinks = (slug, posts) => { - const currentItemIndex = posts.findIndex((item) => item.slug === slug); - - const previousItem = posts[currentItemIndex - 1]; - const nextItem = posts[currentItemIndex + 1]; - - return { - previousLink: { title: previousItem?.title, slug: previousItem?.slug }, - nextLink: { title: nextItem?.title, slug: nextItem?.slug }, - }; -}; - -export { getAllFaqSlugs, getAllFaqs, getFaqNavigationItems, getNavigationLinks }; +export { getAllFaqSlugs, getAllFaqs }; diff --git a/src/utils/api-guides.js b/src/utils/api-guides.js index ad812c64ed..c32d9cf898 100644 --- a/src/utils/api-guides.js +++ b/src/utils/api-guides.js @@ -1,5 +1,7 @@ import fs from 'fs'; +import matter from 'gray-matter'; + const { GUIDES_DIR_PATH } = require('../constants/content'); const { getPostSlugs, getPostBySlug } = require('./api-content'); @@ -30,6 +32,36 @@ const getAuthor = (id) => { } }; +const getGuideFrontmatter = (slug) => { + try { + const source = fs.readFileSync(`${process.cwd()}/${GUIDES_DIR_PATH}/${slug}.md`, 'utf-8'); + const { data } = matter(source); + return data; + } catch (_e) { + return null; + } +}; + +const getGuideNavigationItems = async () => { + const slugs = await getPostSlugs(GUIDES_DIR_PATH); + return slugs + .map((slug) => { + const data = getGuideFrontmatter(slug); + if (!data) return; + + const { title, createdAt, isDraft } = data; + + return { + title, + slug: slug.slice(1), + createdAt, + isDraft, + }; + }) + .filter((item) => process.env.NEXT_PUBLIC_VERCEL_ENV !== 'production' || !item.isDraft) + .sort((a, b) => (new Date(a.createdAt).getTime() < new Date(b.createdAt).getTime() ? 1 : -1)); +}; + const getAllGuides = async () => { const slugs = await getPostSlugs(GUIDES_DIR_PATH); return slugs @@ -84,4 +116,4 @@ const getNavigationLinks = (slug, posts) => { }; }; -export { getAllGuides, getAuthor, getAuthors, getNavigationLinks }; +export { getAllGuides, getAuthor, getAuthors, getGuideNavigationItems, getNavigationLinks };