Skip to content

feat(databases): dedicated-database ecosystem guides + integration entries#3042

Open
abnegate wants to merge 14 commits into
feat-dedicated-dbfrom
dedicated-db-ecosystem
Open

feat(databases): dedicated-database ecosystem guides + integration entries#3042
abnegate wants to merge 14 commits into
feat-dedicated-dbfrom
dedicated-db-ecosystem

Conversation

@abnegate

@abnegate abnegate commented Jun 9, 2026

Copy link
Copy Markdown
Member

Summary

Adds the ecosystem integration layer on top of the dedicated-database foundation already on feat-dedicated-db. Targets feat-dedicated-db (not main).

19 docs guides under docs/products/databases/dedicated/, grouped in the nav as:

  • Connect your stack — Node.js drivers, Prisma, Drizzle, Auth.js, Better Auth, Laravel, Rails, Django, FastAPI, Spring Boot, EF Core, GORM
  • Deploy — Next.js, Vercel, Cloudflare
  • Analytics & BI — Metabase, Grafana, Retool, dbt

5 /integrations catalog entries — Prisma, Drizzle (databases), Next.js, Vercel, Cloudflare (deployments).

Plus src/lib/utils/code.ts: registers prisma (→ graphql) and toml (→ ini) highlight.js aliases so ORM/infra fences render. The toml alias also fixes a latent unknown-language throw in functions/examples (highlight.js throws on unregistered languages).

Grounding

Every guide uses the real connection model from the product code: connection string postgres://appwrite:…@db-<project>-<db>.<region>.appwrite.center:5432/appwrite?sslmode=require, pooler ports 6432/6033, transaction vs session pool modes and their prepared-statement implications, scoped read-only connection users for BI tools, the HTTP SQL API for edge runtimes, and branches for preview/CI. Each agent-authored guide verified its third-party tool's API against the tool's live docs.

Validation

  • ✅ Markdoc schema validation — 0 errors across all 24 pages
  • ✅ Fence-language audit — only registered languages (highlight.js throws otherwise)
  • ✅ Internal link + anchor integrity — all resolve
  • prettier --check + eslint clean on code.ts and +layout.svelte
  • ⚠️ Full site build not run locally — this worktree has no backend .env, so the dev server 500s on every route (Client.setEndpoint(undefined) in the root layout). CI runs the real build.

Before merge (why this is a draft)

  • Add image assets for the 5 integration entries — each needs static/images/integrations/<slug>/cover.avif + static/images/integrations/avatars/<slug>.avif for prisma, drizzle, nextjs, vercel, cloudflare. Until then the catalog cards show broken images. Brand sources: Prisma/Drizzle/Next.js/Vercel/Cloudflare press kits.
  • Green CI.

Out of scope / follow-ups

  • Terraform (appwrite_dedicated_database resources) and MCP DB tools are blocked on the public SDKs: both terraform-provider-appwrite (pins sdk-for-go/v5) and appwrite/mcp (Python appwrite SDK) consume the generated SDKs, which have no Compute service yet. Unblock path: dedicated-DB API → public spec → regenerate SDKs → then add provider resources / register appwrite.services.compute in the MCP server.
  • Remaining hosting providers (Netlify, Railway, Render, Fly.io, Deno Deploy), more integration-catalog entries, and AI prompt.md surfaces are future passes.

🤖 Generated with Claude Code

abnegate and others added 2 commits June 9, 2026 19:39
…BI guides

Guides for connecting external tooling to dedicated databases, grouped in the
nav as Connect your stack / Deploy / Analytics & BI: Node.js drivers, Prisma,
Drizzle, Auth.js, Better Auth, Laravel, Rails, Django, FastAPI, Spring Boot,
EF Core, GORM, Next.js, Vercel, Cloudflare, Metabase, Grafana, Retool, dbt.

Grounded in the real connection model: pooled vs direct endpoints, transaction-
vs session-mode pooling and its prepared-statement implications, scoped
read-only connection users for BI tools, and the HTTP SQL API for edge runtimes.

Registers prisma and toml highlight.js aliases so ORM/infra code fences render;
the toml alias also fixes a latent unknown-language throw in functions/examples.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds /integrations entries for Prisma, Drizzle (databases) and Next.js, Vercel,
Cloudflare (deployments) that link into the dedicated-database guides. Cover and
avatar image assets still need to be added before these render in the catalog.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@appwrite

appwrite Bot commented Jun 9, 2026

Copy link
Copy Markdown

Appwrite Website

Project ID: 69d7efb00023389e8d27

Sites (1)
Site Status Logs Preview QR
 website
69d7f2670014e24571ca
Ready Ready View Logs Preview URL QR Code

Website (appwrite/website)

Project ID: 684969cb000a2f6c0a02

Sites (1)
Site Status Logs Preview QR
 website
68496a17000f03d62013
Queued Queued View Logs Preview URL QR Code


Tip

Silent mode disables those chatty PR comments if you prefer peace and quiet

abnegate and others added 2 commits June 9, 2026 21:35
Adds WebP avatar (448x448) and cover (1200x675) tiles for the Prisma, Drizzle,
Next.js, Vercel, and Cloudflare integration entries — official marks (via Simple
Icons) on brand-color backgrounds — and points their frontmatter at the .webp
assets. Resolves the missing-image pre-merge item on the integration cards.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The website asset pipeline (`bun run optimize`) converts all raster images to
AVIF and rewrites references; the assets CI check enforces it. Ran it on the
integration logos/covers, so WebP was converted to AVIF, the five entries' image
references updated, and the optimize cache refreshed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@abnegate
abnegate marked this pull request as ready for review June 10, 2026 05:16
Copilot AI review requested due to automatic review settings June 10, 2026 05:16

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@greptile-apps

greptile-apps Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds the ecosystem integration layer on top of the dedicated-database foundation: 19 documentation guides under docs/products/databases/dedicated/ and 5 integration catalog entries, plus highlight.js aliases for toml and prisma fence languages.

  • 19 guides covering drivers (Node.js, EF Core, GORM), ORMs (Prisma, Drizzle), auth libraries (Auth.js, Better Auth), full-stack frameworks (Laravel, Rails, Django, FastAPI, Spring Boot), deployment targets (Next.js, Vercel, Cloudflare), and BI tools (Metabase, Grafana, Retool, dbt) — each with correct pooler ports, DIRECT_URL for migrations, prepared-statement caveats, and branch workflows.
  • 5 integration catalog entries (Prisma, Drizzle, Next.js, Vercel, Cloudflare) with committed AVIF cover and avatar images and matching .optimize-cache.json entries.

Confidence Score: 5/5

This is a documentation-only PR (Markdoc guides, integration catalog pages, nav layout, image assets) with one small TypeScript change registering two highlight.js language aliases — no application logic, no data migrations, no auth changes.

All 19 guides consistently use the correct pooler ports (6432/6033), include DIRECT_URL for migrations, document the prepare: false / pgbouncer=true / PreferSimpleProtocol caveats for transaction-mode pooling, and reference the branch workflow for preview environments. The code.ts alias registration follows the existing HCL/Terraform pattern exactly. The optimize-cache entries follow the established .webp-key convention, and all ten image files are present.

No files require special attention.

Important Files Changed

Filename Overview
src/lib/utils/code.ts Adds toml to the HCL alias group (→ ini) and registers prisma as an alias for graphql; straightforward extension of an existing pattern.
src/routes/docs/products/databases/+layout.svelte Adds three new nav sections ("Connect your stack", "Deploy", "Analytics & BI") with 19 entries, all gated with isNewUntil('31 Aug 2026').
src/routes/docs/products/databases/dedicated/prisma/+page.markdoc Complete Prisma guide covering datasource config, pooled/direct URL split (pgbouncer=true for PostgreSQL transaction mode), migrations, and branches.
src/routes/docs/products/databases/dedicated/drizzle/+page.markdoc Drizzle guide covering PostgreSQL/MySQL/MariaDB drivers, prepare: false for transaction-mode pooling, and DIRECT_URL for migrations.
src/routes/docs/products/databases/dedicated/auth-js/+page.markdoc Auth.js adapter guide using Prisma and Drizzle adapters; includes the type String field on the Account model (previously fixed).
src/routes/docs/products/databases/dedicated/cloudflare/+page.markdoc Cloudflare Workers/Pages guide covering Hyperdrive (TCP) and SQL API (HTTPS) paths, with correct wrangler.toml fence language now set to toml.
src/routes/docs/products/databases/dedicated/vercel/+page.markdoc Vercel deployment guide covering environment variable setup, migration in the build step, no-static-IP notes, Edge Function SQL API fallback, and preview branches.
src/routes/docs/products/databases/dedicated/nextjs/+page.markdoc Next.js guide covering App Router singleton patterns, pooled/direct URL split, prepare: false for postgres.js in serverless, and Edge runtime SQL API fallback.
.optimize-cache.json Adds ten new cache entries (five avatars, five covers) keyed by .webp source paths; all ten corresponding .avif files are present — no missing entries.
.github/workflows/tests.yml Pins bun to 1.3.6 from 1.3 — minor version pinning for reproducibility.

Reviews (11): Last reviewed commit: "docs(databases): use tracked Drizzle mig..." | Re-trigger Greptile

Comment thread src/routes/docs/products/databases/dedicated/auth-js/+page.markdoc
Comment thread src/routes/docs/products/databases/dedicated/drizzle/+page.markdoc
Comment thread .optimize-cache.json
Comment thread src/routes/docs/products/databases/dedicated/cloudflare/+page.markdoc Outdated
abnegate and others added 4 commits June 11, 2026 12:43
The ecosystem guides told readers to download a CA certificate from the
Network page for verify-full, a flow that doesn't exist: the wildcard
proxy front presents a certificate signed by a well-known public CA, so
full verification works against the trust store the runtime already
has. Correct each stack: Node verifies via its built-in store (a custom
ca bundle is only for images without a trust store), Go drivers fall
back to the system pool, libpq stacks point sslrootcert at system
(libpq 16+) or the OS bundle, pgJDBC uses DefaultJavaSSLFactory for the
JVM store, and Npgsql and Grafana validate against OS roots with no
extra parameter.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The connect-your-stack guides opened with "This guide uses PostgreSQL,
to use MySQL or MariaDB swap X" and buried the actual swap in a trailing
appendix, leaving non-PostgreSQL readers to translate every snippet
themselves. Engine-specific content (connection strings, drivers,
dialects, TLS parameters) now lives in tabs so readers pick their
engine once per block, like the SDK multicode examples.

Also corrects guidance the tab restructuring surfaced: retool, metabase,
and fastapi still told readers to download a CA bundle that does not
exist (missed by the verify-full fix), the cloudflare Hyperdrive MySQL
example carried a ?ssl=true parameter Hyperdrive's connection strings
do not accept, and django claimed its ORM does not fully support
MySQL/MariaDB when both are officially supported backends.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@abnegate

Copy link
Copy Markdown
Member Author

Addressed the current-head Greptile 4/5 finding in 9498b262a5a8ee891b08d51cfbd7aec0df0acb49: the Auth.js Prisma Account model now includes refresh_token, token_type, scope, id_token, and session_state as nullable strings in the official schema order, while preserving the required type field. Validation passed: formatting, asset optimization with zero conversions and a clean tree, Svelte diagnostics with 0 errors/warnings, and the full Playwright suite (229/229). No cache, optimizer, or asset files changed. Please review the new head.

@abnegate

Copy link
Copy Markdown
Member Author

Follow-up hardening in 6fa576b9: the Auth.js Account model now maps refresh_token, access_token, and id_token to @db.Text, preventing OAuth/OIDC token truncation on MySQL and MariaDB while remaining compatible with the documented Prisma providers.

Validation on the final patch:

  • exact one-file +3/-3 diff
  • bun run format:check
  • CI=true bun run optimize (0 conversions; no cache or asset changes)
  • bun run check with workflow environment (0 errors, 0 warnings)
  • full Playwright suite (229/229)
  • git diff --check

The branch was updated by a normal non-force push.

@abnegate

Copy link
Copy Markdown
Member Author

Addressed the remaining Greptile summary note in 7aa05a3: the Next.js guide now lists only PostgreSQL, MySQL, and MariaDB, matching its SQL-only examples. Local formatting and Svelte diagnostics pass; new exact-head CI and Greptile review are now required before merge readiness.

@abnegate

Copy link
Copy Markdown
Member Author

Addressed the exact-head Greptile finding in 930e941: the Grafana connection-user REST request now targets https://<region>.cloud.appwrite.io/v1, while appwrite.center remains only on database TCP endpoints. Formatting passes; final-head CI and Greptile are restarted.

@abnegate

Copy link
Copy Markdown
Member Author

Addressed the remaining exact-head Greptile summary note in 9615d14. The Auth.js guide now uses the production migration workflow from the official Drizzle docs: drizzle-kit generate to create and commit SQL, then drizzle-kit migrate against the direct URL (including preview branches), instead of push. Formatting passes; final-head CI and Greptile restarted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants