Skip to content

docs: add databases content#3018

Open
abnegate wants to merge 27 commits into
mainfrom
feat-dedicated-db
Open

docs: add databases content#3018
abnegate wants to merge 27 commits into
mainfrom
feat-dedicated-db

Conversation

@abnegate

@abnegate abnegate commented May 21, 2026

Copy link
Copy Markdown
Member

Summary

Content for databases

  • 11 new docs pages under products/databases/dedicated/: overview, specifications, connect, high-availability, backups, branches, extensions, pooler, sql-api, network, monitoring.
  • Announcement blog post with 8 FAQs (author: jake-barnby, category: announcement).
  • Changelog entry dated 2026-05-21 linking to both the blog post and the docs.
  • The new docs are wired into the existing databases sidebar with "New" badges, and a cross-link callout is added from the main databases overview.

Add the docs, blog post, and changelog entry for the dedicated databases
launch. Covers managed PostgreSQL, MySQL, MariaDB, and MongoDB engines on
Appwrite Cloud, with high availability, point-in-time recovery, branching,
extensions, a connection pooler, and a managed SQL API.

* 11 docs pages under products/databases/dedicated (overview, specifications,
  connect, high-availability, backups, branches, extensions, pooler, sql-api,
  network, monitoring) wired into the databases sidebar.
* Cross-link callout from the main databases overview to the new section.
* Hide the "new TablesDB API" banner on the dedicated routes since it's
  scoped to the document store.
* Announcement blog post with 8 FAQs.
* Changelog entry for 2026-05-21.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 21, 2026 03:11
@appwrite

appwrite Bot commented May 21, 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

Sites auto-generate unique domains with the pattern https://randomstring.appwrite.network

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.

Pull request overview

Launches the customer-facing documentation and announcement content for Appwrite Cloud Dedicated databases (managed PostgreSQL/MySQL/MariaDB/MongoDB), and wires the new docs section into the existing Databases documentation navigation.

Changes:

  • Adds a new Dedicated databases docs section (overview + 10 feature pages) under docs/products/databases/dedicated/.
  • Updates Databases docs landing + sidebar layout to surface Dedicated databases and hide the TablesDB “New API” banner on dedicated routes.
  • Adds an announcement blog post and a changelog entry linking to the blog + docs.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/routes/docs/products/databases/dedicated/+page.markdoc Adds Dedicated databases overview (engines, regions, feature cards, limits, billing).
src/routes/docs/products/databases/dedicated/specifications/+page.markdoc Adds specs/pricing, free tier caps, overage/add-ons, resize behavior guidance.
src/routes/docs/products/databases/dedicated/connect/+page.markdoc Documents credential retrieval, connecting via CLIs/drivers, password rotation, extra users.
src/routes/docs/products/databases/dedicated/high-availability/+page.markdoc Documents HA modes, enabling HA, auto/manual failover behavior, limits.
src/routes/docs/products/databases/dedicated/backups/+page.markdoc Documents backups, retention, PITR, restore/verify flows, encryption/storage targets.
src/routes/docs/products/databases/dedicated/branches/+page.markdoc Documents branching from snapshots + CI preview workflow example.
src/routes/docs/products/databases/dedicated/extensions/+page.markdoc Documents PostgreSQL extension management endpoints and limits.
src/routes/docs/products/databases/dedicated/pooler/+page.markdoc Documents per-DB pooler config, modes, read/write splitting, sizing guidance.
src/routes/docs/products/databases/dedicated/sql-api/+page.markdoc Documents SQL API enablement/config, execution, bindings, errors, audit behavior.
src/routes/docs/products/databases/dedicated/network/+page.markdoc Documents hostname/TLS/IP allowlist/connection limits + security guidance.
src/routes/docs/products/databases/dedicated/monitoring/+page.markdoc Documents metrics/usage/slow queries/explain/insights/audit/events endpoints.
src/routes/docs/products/databases/+page.markdoc Adds callout linking users to Dedicated databases from the document-store landing page.
src/routes/docs/products/databases/+layout.svelte Adds Dedicated databases section to the docs sidebar + hides TablesDB subtitle/banner on dedicated routes.
src/routes/blog/post/announcing-dedicated-databases/+page.markdoc Adds announcement post (with FAQs) for Dedicated databases launch.
src/routes/changelog/(entries)/2026-05-21.markdoc Adds changelog entry linking to announcement + docs.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/routes/blog/post/announcing-dedicated-databases/+page.markdoc
Comment thread src/routes/changelog/(entries)/2026-05-21.markdoc
Comment thread src/routes/docs/products/databases/dedicated/+page.markdoc Outdated
Comment thread src/routes/docs/products/databases/dedicated/branches/+page.markdoc
Comment thread src/routes/docs/products/databases/dedicated/pooler/+page.markdoc
@greptile-apps

greptile-apps Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds the Dedicated databases documentation surface to the Appwrite website — 11 new docs pages, an announcement blog post, and a changelog entry — along with the plumbing to register Compute as a new API service in the references navigation. The code changes (two references.ts lines, a sidebar entry in each layout) are minimal and correct.

  • 11 dedicated-databases docs pages covering overview, specifications, connect, high availability, backups/PITR, branches, extensions, pooler, SQL API, network, and monitoring, all wired into the existing databases sidebar with "New" badges.
  • Announcement blog post (announcing-dedicated-databases) and a changelog entry (2026-05-21) linking to the new docs; several internal contradictions flagged in the previous review round have been resolved (CPU range, idle timeout, TLS table, SQL API engine scope, region selector wording).
  • Several issues from the earlier review round remain open: the Go pgx.Connect nil-dereference in the connect page, the Frankfurt endpoint hardcoded in the branches CI YAML, the DATABASE_INTERNAL_ID placeholder in monitoring, the lifecycle-event subscription-path ambiguity, the $1/$2 positional-binding caveat for MySQL/MariaDB in the SQL API page, the sidecar_unavailable error code leaking an internal term, and the missing blog cover image.

Confidence Score: 5/5

The code changes in this PR are a handful of lines registering a new service — safe to merge. The content additions are documentation-only and do not touch any runtime logic.

No new defects were found in this review pass. Previously flagged open items are tracked in the earlier review threads; several of those have already been fixed in follow-up commits. The remaining open items are all scoped to documentation copy and do not affect the application at runtime.

The docs pages with the most outstanding open items from earlier threads are connect/+page.markdoc, sql-api/+page.markdoc, monitoring/+page.markdoc, and branches/+page.markdoc.

Important Files Changed

Filename Overview
src/lib/utils/references.ts Adds Compute to the Service enum and serviceMap. Clean, consistent with the existing pattern for other services.
src/routes/docs/references/+layout.svelte Adds a Compute navigation item to the references sidebar with the correct icon and href. Consistent with adjacent entries for Sites and Messaging.
src/routes/docs/products/databases/+layout.svelte Wires eleven dedicated database pages into the sidebar under a Dedicated databases group with New badges valid until 31 Aug 2026, and suppresses the subtitle on all /dedicated/ routes. Logic is correct.
src/routes/docs/products/databases/+page.markdoc Rewrites the databases overview to introduce the product comparison table and adds a callout linking to Dedicated databases. Content is accurate and consistent with the new docs.
src/routes/docs/references/+page.markdoc Adds a Compute card linking to the server-nodejs reference, consistent with how other server-only APIs are linked.
src/routes/docs/products/databases/dedicated/+page.markdoc Overview for Dedicated databases: engine table, database types, regions, feature cards, limits, and billing. Previously flagged issues have been fixed.
src/routes/docs/products/databases/dedicated/connect/+page.markdoc Covers credential retrieval, password rotation, additional users, TLS, and driver examples. The Go driver snippet discards the pgx.Connect error and defers conn.Close unconditionally, which panics if conn is nil — previously flagged, still open.
src/routes/docs/products/databases/dedicated/sql-api/+page.markdoc Documents the opt-in SQL API for PostgreSQL, MySQL, and MariaDB. Positional $1/$2 binding syntax is PostgreSQL-specific and will fail on MySQL/MariaDB — previously flagged, still open.
src/routes/docs/products/databases/dedicated/monitoring/+page.markdoc Covers usage time series, live metrics, slow-query logs, index insights, audit logs, webhooks, and events. DATABASE_INTERNAL_ID placeholder and lifecycle event subscription format issues previously flagged remain open.
src/routes/docs/products/databases/dedicated/branches/+page.markdoc Documents branch creation, listing, use in CI, and lifecycle. The CI YAML example hardcodes the Frankfurt endpoint rather than using a placeholder — previously flagged, still open.
src/routes/docs/products/databases/dedicated/backups/+page.markdoc Large page covering backup policies, schedules, PITR, manual backups, and restores with SDK examples in 11 languages. Content is internally consistent and well-structured.
src/routes/docs/products/databases/dedicated/high-availability/+page.markdoc Covers HA setup, sync modes, failover behavior, and cross-region standbys. Content is accurate and internally consistent.
src/routes/docs/products/databases/dedicated/pooler/+page.markdoc Documents the connection pooler, pool modes, read/write splitting, and sizing guidance. Previously flagged Content-Type and MongoDB comma issues appear resolved in the current diff.
src/routes/docs/products/databases/dedicated/network/+page.markdoc Documents hostname format, TLS parameters, IP allowlists, and connection limits. TLS table now correctly shows all four engines as TLS-terminated.
src/routes/docs/products/databases/dedicated/extensions/+page.markdoc Covers PostgreSQL extension install/uninstall API and curated catalog. Correctly scoped to PostgreSQL only.
src/routes/docs/products/databases/dedicated/specifications/+page.markdoc Lists eight paid specifications with prices, storage, bandwidth, and connection limits. Previously flagged autoscaling guidance issue has been fixed.
src/routes/blog/post/announcing-dedicated-databases/+page.markdoc Announcement blog post with FAQ section. Cover image references /images/blog/announcing-dedicated-databases/cover.avif which is not included in this PR — previously flagged, still open.
src/routes/changelog/(entries)/2026-05-21.markdoc Changelog entry for Dedicated databases. Region language was corrected in a follow-up commit, resolving the previously flagged contradiction with the blog post FAQ.
src/routes/docs/references/[version]/[platform]/[service]/descriptions/compute.md Service description for the Compute API reference page. Accurate and concise.

Reviews (20): Last reviewed commit: "docs(databases): drop private-network cl..." | Re-trigger Greptile

Comment thread src/routes/blog/post/announcing-dedicated-databases/+page.markdoc
Comment thread src/routes/docs/products/databases/dedicated/branches/+page.markdoc
Comment thread src/routes/docs/products/databases/dedicated/sql-api/+page.markdoc
…onnect page

`nodejs` is not a registered highlight.js language alias — only `server-nodejs`
(which maps to `js`) works. The SSR pass blew up with "Unknown language: nodejs"
on every request, so the page 500'd and the sidebar link looked like it did
nothing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Comment thread src/routes/docs/products/databases/dedicated/connect/+page.markdoc
Switch '125m CPU' / '125 mCPU' / '125m – 16000m' to '0.125 vCPU' /
'0.125 – 16 vCPU'. mCPU is a Kubernetes/internal unit; users think in
fractional vCPUs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Comment thread src/routes/docs/products/databases/dedicated/branches/+page.markdoc
50% per replica is not sustainable at the higher specifications — at $860/mo
the underlying infrastructure cost per replica is close to the full spec
price. Raising to 75% matches the cross-region replica rate and preserves
margin on Business+ tiers.

Applied to cloud config and tests in a separate change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Comment thread src/routes/docs/products/databases/dedicated/pooler/+page.markdoc
abnegate and others added 4 commits May 21, 2026 15:54
All replica-style add-ons (HA replicas, cross-region replicas, and the
cross-region standby) now bill at 75% of the underlying specification.
The standby is just a cross-region replica configured for automatic
failover, so they price identically.

Removes the separate "Cross-region standby" row from the add-on table
and adds a one-liner explaining that the standby is a special-case
cross-region replica.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The endpoint mutates an existing resource (the primary user's password),
which is what PATCH is for. POST was the wrong verb. Updated the docs
example to use PATCH.

The same change ships in cloud (endpoint, e2e tests, internal docs).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replace the bare CURL examples in the Connect page with multicode blocks
covering all server SDKs (Node.js, Deno, PHP, Python, Ruby, .NET, Dart,
Kotlin, Swift, Go, Rust) plus CURL as the last entry, matching the
pattern used elsewhere in the docs and blog posts. SDK calls go through
the Compute service since the endpoint lives at /v1/compute/...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…lover steps

- Replace every em-dash with a comma in the new docs and blog post (12 files).
- 'Appwrite's internal regional network' becomes 'the Appwrite network'.
- Reduce the automatic-failover numbered list to a two-sentence summary.
  The engine-specific promote commands and per-step accounting belonged
  in the internal docs, not the user-facing page.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Comment thread src/routes/docs/products/databases/dedicated/pooler/+page.markdoc Outdated
abnegate and others added 2 commits May 21, 2026 16:17
Convert every API curl example in the dedicated databases docs to a
{% multicode %} block. Server SDKs (Node.js, Deno, PHP, Python, Ruby,
.NET, Dart, Kotlin, Swift, Go, Rust) come first, with curl as the last
tab. ~32 endpoints converted across high-availability, backups,
branches, extensions, pooler, sql-api, network, and monitoring pages.

Mark cross-region failover and cross-region replicas as 'coming soon'
in the HA and specifications pages. Replace 'quiesce' on the branches
page with 'pause writes', since the term reads as jargon to anyone who
isn't a DB engineer.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The branches page had two adjacent identical {% multicode %} blocks
calling listDatabaseBranches. Drop the one in the 'Create a branch'
section in favour of a sentence that links to the canonical 'List
branches' section below.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@abnegate abnegate changed the title docs: add dedicated databases launch content docs: add databases content May 21, 2026
abnegate and others added 3 commits May 21, 2026 16:56
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Comment thread src/routes/changelog/(entries)/2026-05-21.markdoc Outdated
Comment thread src/routes/docs/products/databases/dedicated/sql-api/+page.markdoc
Comment thread src/routes/docs/products/databases/dedicated/sql-api/+page.markdoc
abnegate and others added 4 commits June 8, 2026 13:41
Registers the Compute service in the API reference sidebar, landing grid,
and service description, and bumps @appwrite.io/specs to a console spec
carrying the current compute database API (PATCH credential rotation,
database specifications, and backup policy endpoints). Per-endpoint
rendering of the console-only spec is left as follow-up for the UI work.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Updates connect and network pages to the connection-string parameters the
credentials endpoint actually returns (ssl=true for MySQL/MariaDB,
sslmode=require for PostgreSQL), notes MySQL 8.x caching_sha2_password
requires TLS, flags that MongoDB is not yet TLS-terminated at the proxy,
and documents the longer provisioning window.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Comment thread src/routes/docs/products/databases/dedicated/network/+page.markdoc Outdated
The dedicated database endpoints live on the appwrite.center domain, not
appwrite.network. Update the region table, connection strings, CLI and
driver examples, branch/pooler hostnames, and the launch blog post.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The TLS parameter table listed MongoDB as ssl=true, contradicting the
sentence directly below it (and the connect page) which state MongoDB is
not yet TLS-terminated at the proxy and returns ssl=false. Align the
table row with the documented behaviour.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Comment thread src/routes/docs/products/databases/dedicated/+page.markdoc
abnegate and others added 2 commits June 9, 2026 11:24
MongoDB connections are now TLS-terminated at the edge proxy like the
other engines, so present all four engines as encrypted. Set the TLS
parameter to tls=true in the network table, connection-string prose, and
the mongosh example, and drop the "not yet TLS-terminated" caveat. This
also brings the docs in line with the launch blog, which already lists
tls=true for MongoDB.

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

The credentials endpoint emits the MongoDB connection string with `ssl=`
(MongoDB's ssl/tls aliases) and a `serverSelectionTryOnce=false` flag:
mongodb://…?authSource=admin&ssl=true&directConnection=true&retryWrites=true&serverSelectionTryOnce=false

Align the docs to the exact string the API returns: use `ssl=true` instead
of the `tls=true` alias and add the missing serverSelectionTryOnce flag, in
the network TLS table, the connect prose, and the mongosh example.

Source of truth: cloud Connections.php getCredentials().

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Comment thread src/routes/docs/products/databases/dedicated/+page.markdoc Outdated
abnegate and others added 2 commits June 9, 2026 14:38
Branches are now externally connectable. Rewrite the branches page to the
implemented contract: branch hostname db-<projectId>-<databaseId>-<branchId>
.<region>.appwrite.center (dash-free 8-hex branchId), branches reuse the
parent's credentials (snapshot copy), and list-branches returns per-branch
connection details (host, port, database, username, password, ssl, engine,
connectionString). Fix create params to branchId + ttl only (drop the
non-existent cpu/memory/name), note fixed lightweight branch resources, and
correct the async create + list flow.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- CPU range upper bound is 8 vCPU (largest spec s-8vcpu-64gb), not 16.
- Reconcile the shared idle timeout: 15 minutes is the default within the
  configurable 5–60 minute range; note this on the overview and spec pages.
- Scope the SQL API to the SQL engines (PostgreSQL/MySQL/MariaDB); MongoDB
  uses MQL, not SQL, so the SQL API doesn't apply to it.
- Clarify result_too_large is a soft-truncation (200 + truncated:true), not
  an outright rejection.
- Document how to enable storage autoscaling (storageAutoscaling field +
  threshold).
- Changelog: a dedicated database runs in its project's region rather than
  implying a per-database region selector, matching the product docs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Comment on lines +520 to +530
Bindings are always sent through a separate field, Appwrite never interpolates them into the SQL string. Two styles are accepted:

**Positional**, list of values, referenced as `$1`, `$2`, … in the SQL.

```json
{
"sql": "SELECT * FROM events WHERE user_id = $1 AND created_at > $2",
"bindings": ["usr_abc", "2026-05-01"]
}
```

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.

P1 Positional binding notation is PostgreSQL-specific, will fail on MySQL/MariaDB

The page documents $1/$2 as the universal positional binding syntax for all three supported SQL engines, but MySQL and MariaDB use ? for positional parameters — $1 is a PostgreSQL extension and will be rejected as a syntax error by those engines. The named-binding section already acknowledges engine differences (:name vs @name), suggesting the API passes SQL through as-is rather than normalizing it.

A MySQL or MariaDB developer who copies the SELECT id, email FROM users WHERE created_at > $1 example verbatim will receive a SQL parse error on every call. The section needs either a note that Appwrite normalizes $1 to ? internally for MySQL/MariaDB, or engine-specific examples matching each engine's native placeholder convention.

…data path

The per-database external LoadBalancer was removed from the platform
(edge DAT-1559); the TLS-terminating wildcard edge proxy is the only
data path a dedicated database has. The overview claimed exposure "over
the public internet or your own private network" and the network page
offered "private endpoint options" via support — neither exists. State
the real exposure: a per-database public hostname secured with TLS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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