From bec080cbb8815cfb45872514c129644b922ad435 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 19 Sep 2023 20:19:17 +0200 Subject: [PATCH 1/3] fix: some routes --- src/lib/layouts/Sidebar.svelte | 21 ++-- .../docs/advanced/integration/+layout.svelte | 15 ++- .../docs/advanced/integration/+page.markdoc | 29 +---- .../docs/advanced/migrations/+layout.svelte | 15 ++- .../docs/advanced/platform/+layout.svelte | 46 ++++++- .../docs/advanced/platform/+page.markdoc | 31 ++++- .../platform/api-keys/+page.markdoc | 0 .../platform/custom-domains/+page.markdoc | 0 .../platform/events/+page.markdoc | 0 .../platform/permissions/+page.markdoc | 0 .../platform/rate-limits/+page.markdoc | 0 .../platform/response-codes/+page.markdoc | 0 .../platform/webhooks/+page.markdoc | 0 .../docs/advanced/self-hosting/+layout.svelte | 54 ++++++++- .../docs/advanced/self-hosting/+page.markdoc | 111 ++++++++++++++++- .../self-hosting/debug/+page.markdoc | 0 .../self-hosting/email/+page.markdoc | 0 .../self-hosting/functions/+page.markdoc | 0 .../self-hosting/installation/+page.markdoc | 0 .../self-hosting/production/+page.markdoc | 0 .../self-hosting/sms/+page.markdoc | 0 .../self-hosting/storage/+page.markdoc | 0 .../tls-certificates/+page.markdoc | 0 .../self-hosting/update/+page.markdoc | 0 src/routes/docs/platform/+page.markdoc | 32 ----- src/routes/docs/products/auth/+layout.svelte | 15 ++- .../docs/products/databases/+layout.svelte | 15 ++- .../docs/products/functions/+layout.svelte | 15 ++- .../docs/products/storage/+layout.svelte | 15 ++- src/routes/docs/references/+layout.svelte | 16 ++- src/routes/docs/self-hosting/+page.markdoc | 112 ------------------ .../docs/tooling/command-line/+layout.svelte | 15 ++- 32 files changed, 324 insertions(+), 233 deletions(-) rename src/routes/docs/{ => advanced}/platform/api-keys/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/platform/custom-domains/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/platform/events/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/platform/permissions/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/platform/rate-limits/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/platform/response-codes/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/platform/webhooks/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/self-hosting/debug/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/self-hosting/email/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/self-hosting/functions/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/self-hosting/installation/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/self-hosting/production/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/self-hosting/sms/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/self-hosting/storage/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/self-hosting/tls-certificates/+page.markdoc (100%) rename src/routes/docs/{ => advanced}/self-hosting/update/+page.markdoc (100%) delete mode 100644 src/routes/docs/platform/+page.markdoc delete mode 100644 src/routes/docs/self-hosting/+page.markdoc diff --git a/src/lib/layouts/Sidebar.svelte b/src/lib/layouts/Sidebar.svelte index bc14168cbe..bb47e85892 100644 --- a/src/lib/layouts/Sidebar.svelte +++ b/src/lib/layouts/Sidebar.svelte @@ -11,9 +11,7 @@ }; export type NavParent = { - backlink: string; label: string; - icon: string; href: string; }; @@ -48,19 +46,18 @@
{#if parent} -
- +
+ - {parent.label} -
{/if} {#each navigation as navGroup} diff --git a/src/routes/docs/advanced/integration/+layout.svelte b/src/routes/docs/advanced/integration/+layout.svelte index ee8e976f04..d2f2b8e269 100644 --- a/src/routes/docs/advanced/integration/+layout.svelte +++ b/src/routes/docs/advanced/integration/+layout.svelte @@ -3,13 +3,20 @@ import Sidebar, { type NavParent, type NavTree } from '$lib/layouts/Sidebar.svelte'; const parent: NavParent = { - backlink: '/docs', - href: '/docs/advanced/integration', - label: 'Integration', - icon: 'icon-puzzle' + href: '/docs', + label: 'Integration' }; const navigation: NavTree = [ + { + label: 'Getting started', + items: [ + { + label: 'Overview', + href: '/docs/advanced/integration' + } + ] + }, { label: 'Guides', items: [] diff --git a/src/routes/docs/advanced/integration/+page.markdoc b/src/routes/docs/advanced/integration/+page.markdoc index 59231af6e3..60319d3fd8 100644 --- a/src/routes/docs/advanced/integration/+page.markdoc +++ b/src/routes/docs/advanced/integration/+page.markdoc @@ -1,33 +1,8 @@ --- layout: article -title: Migrations +title: Integration description: Learn how to migrate your projects from other vendors to Appwrite Cloud or how to move from self-hosting to Cloud and the other way around using Appwrite Migrations service. difficulty: beginner readtime: 5 --- - -If you're looking to migrate existing projects to Appwrite, Migrations can help you make the move more quickly. You can move your app from Firebase, Supabase, Nhost, and even move between self-hosted and Cloud projects using Migrations. You can also use Migrations to move between two self-hosted instances or even to duplicate projects on the same instance. Migrations will automatically move accounts, database documents, and storage files from one source to another. - -## Sources {% #sources %} - -Appwrite supports multiple source destinations for migrating your data. You can transfer data from these sources to a new or existing Appwrite project. Resources marked as 'enabled' are migrated automatically. Resources marked as 'partial' can be migrated but with limitations or caveats; please refer to the guide for each source to learn more. Resources marked as 'manual' require manual migration. - -| Source | Users | Databases | Documents | Files | Functions | -|--------|-------|-----------|-----------|-------|-----------| -| [Firebase](/docs/advanced/migrations/firebase) | enabled | enabled | partial | enabled | manual | -| [Supabase](/docs/advanced/migrations/supabase) | enabled | enabled | partial | enabled | manual | -| [Nhost](/docs/advanced/migrations/nhost) | enabled | enabled | partial | enabled | manual | -| [Cloud](/docs/advanced/migrations/cloud) | enabled | enabled | enabled | enabled | enabled | -| [Self hosted](/docs/advanced/migrations/self-hosted) | enabled | enabled | enabled | enabled | enabled | - -## Limitations {% #limitations %} - -Migrations cannot transfer all data perfectly, so certain fields, such as `$createdAt` and `$updatedAt`, may not be transferred. -More information can be found on the migration page for each source. - -Migrations help you jump-start your move, but because each product is unique, complex databases and product unique features like functions might need to be migrated manually. -We also recommend you carefully **validate permissions and data integrity** when moving between platforms. - -## Charges {% #charges %} - -When you migrate data from another source to Appwrite Cloud, the resource usage during the migration will not count towards your Appwrite Cloud usage charges. However, your source vendor may have data transfer charges. The same is true for moving data between self-hosted Appwrite instances hosted on different cloud providers. +Integration \ No newline at end of file diff --git a/src/routes/docs/advanced/migrations/+layout.svelte b/src/routes/docs/advanced/migrations/+layout.svelte index 0f9968544a..c3bbdc5436 100644 --- a/src/routes/docs/advanced/migrations/+layout.svelte +++ b/src/routes/docs/advanced/migrations/+layout.svelte @@ -3,13 +3,20 @@ import Sidebar, { type NavParent, type NavTree } from '$lib/layouts/Sidebar.svelte'; const parent: NavParent = { - backlink: '/docs', - href: '/docs/advanced/migrations', - label: 'Migrations', - icon: 'icon-refresh' + href: '/docs', + label: 'Migrations' }; const navigation: NavTree = [ + { + label: 'Getting started', + items: [ + { + label: 'Overview', + href: '/docs/advanced/migrations' + } + ] + }, { label: 'Guides', items: [ diff --git a/src/routes/docs/advanced/platform/+layout.svelte b/src/routes/docs/advanced/platform/+layout.svelte index 04c5228a15..0194015f17 100644 --- a/src/routes/docs/advanced/platform/+layout.svelte +++ b/src/routes/docs/advanced/platform/+layout.svelte @@ -3,16 +3,52 @@ import Sidebar, { type NavParent, type NavTree } from '$lib/layouts/Sidebar.svelte'; const parent: NavParent = { - backlink: '/docs', - href: '/docs/advanced/platform', - label: 'Platform', - icon: 'icon-play' + href: '/docs', + label: 'Platform' }; const navigation: NavTree = [ + { + label: 'Getting started', + items: [ + { + label: 'Overview', + href: '/docs/advanced/platform' + } + ] + }, { label: 'Guides', - items: [] + items: [ + { + label: 'API keys', + href: '/docs/advanced/platform/api-keys' + }, + { + label: 'Custom domains', + href: '/docs/advanced/platform/custom-domains' + }, + { + label: 'Events', + href: '/docs/advanced/platform/events' + }, + { + label: 'Response codes', + href: '/docs/advanced/platform/response-codes' + }, + { + label: 'Permissions', + href: '/docs/advanced/platform/permissions' + }, + { + label: 'Rate limits', + href: '/docs/advanced/platform/rate-limits' + }, + { + label: 'Webhooks', + href: '/docs/advanced/platform/webhooks' + } + ] } ]; diff --git a/src/routes/docs/advanced/platform/+page.markdoc b/src/routes/docs/advanced/platform/+page.markdoc index 76b31198d5..43b4a95a1f 100644 --- a/src/routes/docs/advanced/platform/+page.markdoc +++ b/src/routes/docs/advanced/platform/+page.markdoc @@ -1,9 +1,32 @@ --- layout: article title: Platform -description: Learn how to migrate your projects from other vendors to Appwrite Cloud or how to move from self-hosting to Cloud and the other way around using Appwrite Migrations service. -difficulty: beginner -readtime: 5 +description: Description for SEO. --- -If you're looking to migrate existing projects to Appwrite, Migrations can help you make the move more quickly. You can move your app from Firebase, Supabase, Nhost, and even move between self-hosted and Cloud projects using Migrations. You can also use Migrations to move between two self-hosted instances or even to duplicate projects on the same instance. Migrations will automatically move accounts, database documents, and storage files from one source to another. +Appwrite is a development platform designed to adapt you unique use cases. +Appwrite provides features that help you maintain, scale, and integrate Appwrite with other platforms. + +## API keys {% #api-keys %} + +[Learn more about API keys {% icon icon="cheveron-right" /%}](#) + +## Custom domains {% #custom-domains %} + +[Learn more about custom domains {% icon icon="cheveron-right" /%}](#) + +## Events {% #events %} + +[Learn more about events {% icon icon="cheveron-right" /%}](#) + +## Response codes {% #response-codes %} + +[Learn more about response codes {% icon icon="cheveron-right" /%}](#) + +## Permissions {% #permissions %} + +[Learn more about permissions {% icon icon="cheveron-right" /%}](#) + +## Rate limits {% #rate-limits %} + +[Learn more about permissions {% icon icon="cheveron-right" /%}](#) diff --git a/src/routes/docs/platform/api-keys/+page.markdoc b/src/routes/docs/advanced/platform/api-keys/+page.markdoc similarity index 100% rename from src/routes/docs/platform/api-keys/+page.markdoc rename to src/routes/docs/advanced/platform/api-keys/+page.markdoc diff --git a/src/routes/docs/platform/custom-domains/+page.markdoc b/src/routes/docs/advanced/platform/custom-domains/+page.markdoc similarity index 100% rename from src/routes/docs/platform/custom-domains/+page.markdoc rename to src/routes/docs/advanced/platform/custom-domains/+page.markdoc diff --git a/src/routes/docs/platform/events/+page.markdoc b/src/routes/docs/advanced/platform/events/+page.markdoc similarity index 100% rename from src/routes/docs/platform/events/+page.markdoc rename to src/routes/docs/advanced/platform/events/+page.markdoc diff --git a/src/routes/docs/platform/permissions/+page.markdoc b/src/routes/docs/advanced/platform/permissions/+page.markdoc similarity index 100% rename from src/routes/docs/platform/permissions/+page.markdoc rename to src/routes/docs/advanced/platform/permissions/+page.markdoc diff --git a/src/routes/docs/platform/rate-limits/+page.markdoc b/src/routes/docs/advanced/platform/rate-limits/+page.markdoc similarity index 100% rename from src/routes/docs/platform/rate-limits/+page.markdoc rename to src/routes/docs/advanced/platform/rate-limits/+page.markdoc diff --git a/src/routes/docs/platform/response-codes/+page.markdoc b/src/routes/docs/advanced/platform/response-codes/+page.markdoc similarity index 100% rename from src/routes/docs/platform/response-codes/+page.markdoc rename to src/routes/docs/advanced/platform/response-codes/+page.markdoc diff --git a/src/routes/docs/platform/webhooks/+page.markdoc b/src/routes/docs/advanced/platform/webhooks/+page.markdoc similarity index 100% rename from src/routes/docs/platform/webhooks/+page.markdoc rename to src/routes/docs/advanced/platform/webhooks/+page.markdoc diff --git a/src/routes/docs/advanced/self-hosting/+layout.svelte b/src/routes/docs/advanced/self-hosting/+layout.svelte index d6db9c9f43..790d0a3c5b 100644 --- a/src/routes/docs/advanced/self-hosting/+layout.svelte +++ b/src/routes/docs/advanced/self-hosting/+layout.svelte @@ -3,16 +3,60 @@ import Sidebar, { type NavParent, type NavTree } from '$lib/layouts/Sidebar.svelte'; const parent: NavParent = { - backlink: '/docs', - href: '/docs/advanced/self-hosting', - label: 'Self-hosting', - icon: 'icon-server' + href: '/docs', + label: 'Self-hosting' }; const navigation: NavTree = [ + { + label: 'Getting started', + items: [ + { + label: 'Overview', + href: '/docs/advanced/self-hosting' + }, + { + label: 'Installation', + href: '/docs/advanced/self-hosting/installation' + } + ] + }, { label: 'Guides', - items: [] + items: [ + { + label: 'Update', + href: '/docs/advanced/self-hosting/update' + }, + { + label: 'Debug', + href: '/docs/advanced/self-hosting/debug' + }, + { + label: 'E-Mail', + href: '/docs/advanced/self-hosting/email' + }, + { + label: 'Functions', + href: '/docs/advanced/self-hosting/functions' + }, + { + label: 'Production', + href: '/docs/advanced/self-hosting/production' + }, + { + label: 'SMS', + href: '/docs/advanced/self-hosting/sms' + }, + { + label: 'Storage', + href: '/docs/advanced/self-hosting/storage' + }, + { + label: 'TLS Certificates', + href: '/docs/advanced/self-hosting/tls-certificates' + } + ] } ]; diff --git a/src/routes/docs/advanced/self-hosting/+page.markdoc b/src/routes/docs/advanced/self-hosting/+page.markdoc index b7ce4a5945..bb97a21355 100644 --- a/src/routes/docs/advanced/self-hosting/+page.markdoc +++ b/src/routes/docs/advanced/self-hosting/+page.markdoc @@ -1,9 +1,112 @@ --- layout: article title: Self-hosting -description: Learn how to migrate your projects from other vendors to Appwrite Cloud or how to move from self-hosting to Cloud and the other way around using Appwrite Migrations service. -difficulty: beginner -readtime: 5 +description: Learn how to self host Appwrite on your own server using your favorite cloud provider. --- -If you're looking to migrate existing projects to Appwrite, Migrations can help you make the move more quickly. You can move your app from Firebase, Supabase, Nhost, and even move between self-hosted and Cloud projects using Migrations. You can also use Migrations to move between two self-hosted instances or even to duplicate projects on the same instance. Migrations will automatically move accounts, database documents, and storage files from one source to another. +Appwrite was designed from the ground up with self-hosting in mind. +You can install and run Appwrite on any operating system that can run a [Docker CLI](https://www.docker.com/products/docker-desktop). +Self-hosted Appwrite instances can be configured flexibly with access to the same features found on Appwrite Cloud. + +{% info title="Want to start building faster?" %} +Spend less time worrying about infrastructure and scaling, and spend more time building with [Appwrite Cloud](https://cloud.appwrite.io/). +{% /info %} + +## System Requirements {% #system-requirements %} + +Appwrite is designed to run well on both small and large deployments. The minimum requirements to run Appwrite are as little as **1 CPU core** and **2GB of RAM**, and an operating system that supports Docker. + +Appwrite requires [Docker Compose Version 2](https://docs.docker.com/compose/install/). To install Appwrite, make sure your Docker installation is updated to support Composer V2. + +## Get started {% #get-started %} +Set up your first Appwrite instance with a single Docker command. + +{% tabs %} +{% tabsitem #unix title="macOS and Linux" %} +### Bash +```sh +docker run -it --rm \ + --volume /var/run/docker.sock:/var/run/docker.sock \ + --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \ + --entrypoint="install" \ + appwrite/appwrite:1.4.3 +``` +After running the command, you can access the Appwrite Console and start building on `localhost`. +Read more about other ways to install and uninstall. + +[Learn about install and uninstall {% icon icon="cheveron-right" /%}](#) +{% /tabsitem %} + +{% tabsitem #windows title="Windows" %} +### CMD +```cmd +docker run -it --rm ^ + --volume //var/run/docker.sock:/var/run/docker.sock ^ + --volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^ + --entrypoint="install" ^ + appwrite/appwrite:1.4.3 +``` +### Powershell +```powershell +docker run -it --rm ` + --volume /var/run/docker.sock:/var/run/docker.sock ` + --volume ${pwd}/appwrite:/usr/src/code/appwrite:rw ` + --entrypoint="install" ` + appwrite/appwrite:1.4.3 +``` +After running the command, you can access the Appwrite Console and start building on `localhost`. +Read more about other ways to install and uninstall. + +[Learn about install and uninstall {% icon icon="cheveron-right" /%}](#) +{% /tabsitem %} +{% /tabs %} + +To unlock the full capabilities of Appwrite, read about the following configurations. + +## Email delivery +Appwrite requires an SMTP service to deliver emails. +Email delivery is required for features like password recovery, account verification, MagicURL authentication, and team invites. +You can use a third-party SMTP service or host your own SMTP server. + +[Configure email delivery {% icon icon="cheveron-right" /%}](#) + +## SMS delivery +Appwrite supports multiple third-party SMS delivery providers. +SMS delivery is required for phone authentication. + +[Configure SMS delivery {% icon icon="cheveron-right" /%}](#) + +## Functions +Appwrite supports 10+ function runtimes and automatic deployments through Git integration. +Before using Appwrite Functions, configure Git integration and enable runtimes. + +[Configure Appwrite Functions {% icon icon="cheveron-right" /%}](#) + +## Storage +Appwrite's Storage Service can be configured to store files locally, or with self-hosted and cloud storage services. +By default, Appwrite's Storage Service stores files on your server's local storage. +If you expect large volumes of data or the need to have scalable data storage, you may choose to use a separate storage service. + +[Configure Appwrite Storage {% icon icon="cheveron-right" /%}](#) + +## TLS Certificates +Appwrite uses Let's Encrypt to auto-generate TLS certificates for your Appwrite instance to ensure your API traffic is appropriately encrypted. +Configuration is required for Appwrite to properly generate certificates. + +[Configure TLS certificates {% icon icon="cheveron-right" /%}](#) + +## Debug +Appwrite provides tools to monitor server health, handle error logging. + +[Learn about upgrade {% icon icon="cheveron-right" /%}](#) + +## Update +Each Appwrite version contains a migration script to help you migrate your apps during updates. + +[Learn about updates {% icon icon="cheveron-right" /%}](#) + +## Production +Self-hosting Appwrite can be used in production settings. +To succeed with Appwrite in a production environment, you should follow a few basic concepts and best practices. + +[Learn about production {% icon icon="cheveron-right" /%}](#) \ No newline at end of file diff --git a/src/routes/docs/self-hosting/debug/+page.markdoc b/src/routes/docs/advanced/self-hosting/debug/+page.markdoc similarity index 100% rename from src/routes/docs/self-hosting/debug/+page.markdoc rename to src/routes/docs/advanced/self-hosting/debug/+page.markdoc diff --git a/src/routes/docs/self-hosting/email/+page.markdoc b/src/routes/docs/advanced/self-hosting/email/+page.markdoc similarity index 100% rename from src/routes/docs/self-hosting/email/+page.markdoc rename to src/routes/docs/advanced/self-hosting/email/+page.markdoc diff --git a/src/routes/docs/self-hosting/functions/+page.markdoc b/src/routes/docs/advanced/self-hosting/functions/+page.markdoc similarity index 100% rename from src/routes/docs/self-hosting/functions/+page.markdoc rename to src/routes/docs/advanced/self-hosting/functions/+page.markdoc diff --git a/src/routes/docs/self-hosting/installation/+page.markdoc b/src/routes/docs/advanced/self-hosting/installation/+page.markdoc similarity index 100% rename from src/routes/docs/self-hosting/installation/+page.markdoc rename to src/routes/docs/advanced/self-hosting/installation/+page.markdoc diff --git a/src/routes/docs/self-hosting/production/+page.markdoc b/src/routes/docs/advanced/self-hosting/production/+page.markdoc similarity index 100% rename from src/routes/docs/self-hosting/production/+page.markdoc rename to src/routes/docs/advanced/self-hosting/production/+page.markdoc diff --git a/src/routes/docs/self-hosting/sms/+page.markdoc b/src/routes/docs/advanced/self-hosting/sms/+page.markdoc similarity index 100% rename from src/routes/docs/self-hosting/sms/+page.markdoc rename to src/routes/docs/advanced/self-hosting/sms/+page.markdoc diff --git a/src/routes/docs/self-hosting/storage/+page.markdoc b/src/routes/docs/advanced/self-hosting/storage/+page.markdoc similarity index 100% rename from src/routes/docs/self-hosting/storage/+page.markdoc rename to src/routes/docs/advanced/self-hosting/storage/+page.markdoc diff --git a/src/routes/docs/self-hosting/tls-certificates/+page.markdoc b/src/routes/docs/advanced/self-hosting/tls-certificates/+page.markdoc similarity index 100% rename from src/routes/docs/self-hosting/tls-certificates/+page.markdoc rename to src/routes/docs/advanced/self-hosting/tls-certificates/+page.markdoc diff --git a/src/routes/docs/self-hosting/update/+page.markdoc b/src/routes/docs/advanced/self-hosting/update/+page.markdoc similarity index 100% rename from src/routes/docs/self-hosting/update/+page.markdoc rename to src/routes/docs/advanced/self-hosting/update/+page.markdoc diff --git a/src/routes/docs/platform/+page.markdoc b/src/routes/docs/platform/+page.markdoc deleted file mode 100644 index 43b4a95a1f..0000000000 --- a/src/routes/docs/platform/+page.markdoc +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: article -title: Platform -description: Description for SEO. ---- - -Appwrite is a development platform designed to adapt you unique use cases. -Appwrite provides features that help you maintain, scale, and integrate Appwrite with other platforms. - -## API keys {% #api-keys %} - -[Learn more about API keys {% icon icon="cheveron-right" /%}](#) - -## Custom domains {% #custom-domains %} - -[Learn more about custom domains {% icon icon="cheveron-right" /%}](#) - -## Events {% #events %} - -[Learn more about events {% icon icon="cheveron-right" /%}](#) - -## Response codes {% #response-codes %} - -[Learn more about response codes {% icon icon="cheveron-right" /%}](#) - -## Permissions {% #permissions %} - -[Learn more about permissions {% icon icon="cheveron-right" /%}](#) - -## Rate limits {% #rate-limits %} - -[Learn more about permissions {% icon icon="cheveron-right" /%}](#) diff --git a/src/routes/docs/products/auth/+layout.svelte b/src/routes/docs/products/auth/+layout.svelte index f69e6b1045..09863d6421 100644 --- a/src/routes/docs/products/auth/+layout.svelte +++ b/src/routes/docs/products/auth/+layout.svelte @@ -3,13 +3,20 @@ import Sidebar, { type NavParent, type NavTree } from '$lib/layouts/Sidebar.svelte'; const parent: NavParent = { - backlink: '/docs', - href: '/docs/products/auth', - label: 'Auth', - icon: 'icon-user-group' + href: '/docs', + label: 'Auth' }; const navigation: NavTree = [ + { + label: 'Getting started', + items: [ + { + label: 'Overview', + href: '/docs/products/auth' + } + ] + }, { label: 'Guides', items: [ diff --git a/src/routes/docs/products/databases/+layout.svelte b/src/routes/docs/products/databases/+layout.svelte index b4b2ae35c5..688324f4d8 100644 --- a/src/routes/docs/products/databases/+layout.svelte +++ b/src/routes/docs/products/databases/+layout.svelte @@ -3,13 +3,20 @@ import Sidebar, { type NavParent, type NavTree } from '$lib/layouts/Sidebar.svelte'; const parent: NavParent = { - backlink: '/docs', - href: '/docs/products/databases', - label: 'Databases', - icon: 'icon-database' + href: '/docs', + label: 'Databases' }; const navigation: NavTree = [ + { + label: 'Getting started', + items: [ + { + label: 'Overview', + href: '/docs/products/databases' + } + ] + }, { label: 'Guides', items: [ diff --git a/src/routes/docs/products/functions/+layout.svelte b/src/routes/docs/products/functions/+layout.svelte index e77c9dd6ac..c7066ac158 100644 --- a/src/routes/docs/products/functions/+layout.svelte +++ b/src/routes/docs/products/functions/+layout.svelte @@ -3,13 +3,20 @@ import Sidebar, { type NavParent, type NavTree } from '$lib/layouts/Sidebar.svelte'; const parent: NavParent = { - backlink: '/docs', - href: '/docs/products/functions', - label: 'Functions', - icon: 'icon-lightning-bolt' + href: '/docs', + label: 'Functions' }; const navigation: NavTree = [ + { + label: 'Getting started', + items: [ + { + label: 'Overview', + href: '/docs/products/functions' + } + ] + }, { label: 'Guides', items: [ diff --git a/src/routes/docs/products/storage/+layout.svelte b/src/routes/docs/products/storage/+layout.svelte index 8de0bfa2d8..bbb56836ea 100644 --- a/src/routes/docs/products/storage/+layout.svelte +++ b/src/routes/docs/products/storage/+layout.svelte @@ -3,13 +3,20 @@ import Sidebar, { type NavParent, type NavTree } from '$lib/layouts/Sidebar.svelte'; const parent: NavParent = { - backlink: '/docs', - href: '/docs/products/storage', - label: 'Storage', - icon: 'icon-folder' + href: '/docs', + label: 'Storage' }; const navigation: NavTree = [ + { + label: 'Getting started', + items: [ + { + label: 'Overview', + href: '/docs/products/storage' + } + ] + }, { label: 'Guides', items: [ diff --git a/src/routes/docs/references/+layout.svelte b/src/routes/docs/references/+layout.svelte index fafab6e424..3b20545a99 100644 --- a/src/routes/docs/references/+layout.svelte +++ b/src/routes/docs/references/+layout.svelte @@ -6,12 +6,20 @@ $: expandable = $page.url.pathname.startsWith('/docs/references/'); const parent: NavParent = { - backlink: '/docs', - href: '/docs/references', - label: 'References', - icon: 'icon-document' + href: '/docs', + label: 'References' }; const navigation: NavTree = [ + { + label: 'Getting started', + items: [ + { + label: 'Overview', + href: '/docs/references', + icon: 'icon-book' + } + ] + }, { label: 'Services', items: [ diff --git a/src/routes/docs/self-hosting/+page.markdoc b/src/routes/docs/self-hosting/+page.markdoc deleted file mode 100644 index bb97a21355..0000000000 --- a/src/routes/docs/self-hosting/+page.markdoc +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: article -title: Self-hosting -description: Learn how to self host Appwrite on your own server using your favorite cloud provider. ---- - -Appwrite was designed from the ground up with self-hosting in mind. -You can install and run Appwrite on any operating system that can run a [Docker CLI](https://www.docker.com/products/docker-desktop). -Self-hosted Appwrite instances can be configured flexibly with access to the same features found on Appwrite Cloud. - -{% info title="Want to start building faster?" %} -Spend less time worrying about infrastructure and scaling, and spend more time building with [Appwrite Cloud](https://cloud.appwrite.io/). -{% /info %} - -## System Requirements {% #system-requirements %} - -Appwrite is designed to run well on both small and large deployments. The minimum requirements to run Appwrite are as little as **1 CPU core** and **2GB of RAM**, and an operating system that supports Docker. - -Appwrite requires [Docker Compose Version 2](https://docs.docker.com/compose/install/). To install Appwrite, make sure your Docker installation is updated to support Composer V2. - -## Get started {% #get-started %} -Set up your first Appwrite instance with a single Docker command. - -{% tabs %} -{% tabsitem #unix title="macOS and Linux" %} -### Bash -```sh -docker run -it --rm \ - --volume /var/run/docker.sock:/var/run/docker.sock \ - --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \ - --entrypoint="install" \ - appwrite/appwrite:1.4.3 -``` -After running the command, you can access the Appwrite Console and start building on `localhost`. -Read more about other ways to install and uninstall. - -[Learn about install and uninstall {% icon icon="cheveron-right" /%}](#) -{% /tabsitem %} - -{% tabsitem #windows title="Windows" %} -### CMD -```cmd -docker run -it --rm ^ - --volume //var/run/docker.sock:/var/run/docker.sock ^ - --volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^ - --entrypoint="install" ^ - appwrite/appwrite:1.4.3 -``` -### Powershell -```powershell -docker run -it --rm ` - --volume /var/run/docker.sock:/var/run/docker.sock ` - --volume ${pwd}/appwrite:/usr/src/code/appwrite:rw ` - --entrypoint="install" ` - appwrite/appwrite:1.4.3 -``` -After running the command, you can access the Appwrite Console and start building on `localhost`. -Read more about other ways to install and uninstall. - -[Learn about install and uninstall {% icon icon="cheveron-right" /%}](#) -{% /tabsitem %} -{% /tabs %} - -To unlock the full capabilities of Appwrite, read about the following configurations. - -## Email delivery -Appwrite requires an SMTP service to deliver emails. -Email delivery is required for features like password recovery, account verification, MagicURL authentication, and team invites. -You can use a third-party SMTP service or host your own SMTP server. - -[Configure email delivery {% icon icon="cheveron-right" /%}](#) - -## SMS delivery -Appwrite supports multiple third-party SMS delivery providers. -SMS delivery is required for phone authentication. - -[Configure SMS delivery {% icon icon="cheveron-right" /%}](#) - -## Functions -Appwrite supports 10+ function runtimes and automatic deployments through Git integration. -Before using Appwrite Functions, configure Git integration and enable runtimes. - -[Configure Appwrite Functions {% icon icon="cheveron-right" /%}](#) - -## Storage -Appwrite's Storage Service can be configured to store files locally, or with self-hosted and cloud storage services. -By default, Appwrite's Storage Service stores files on your server's local storage. -If you expect large volumes of data or the need to have scalable data storage, you may choose to use a separate storage service. - -[Configure Appwrite Storage {% icon icon="cheveron-right" /%}](#) - -## TLS Certificates -Appwrite uses Let's Encrypt to auto-generate TLS certificates for your Appwrite instance to ensure your API traffic is appropriately encrypted. -Configuration is required for Appwrite to properly generate certificates. - -[Configure TLS certificates {% icon icon="cheveron-right" /%}](#) - -## Debug -Appwrite provides tools to monitor server health, handle error logging. - -[Learn about upgrade {% icon icon="cheveron-right" /%}](#) - -## Update -Each Appwrite version contains a migration script to help you migrate your apps during updates. - -[Learn about updates {% icon icon="cheveron-right" /%}](#) - -## Production -Self-hosting Appwrite can be used in production settings. -To succeed with Appwrite in a production environment, you should follow a few basic concepts and best practices. - -[Learn about production {% icon icon="cheveron-right" /%}](#) \ No newline at end of file diff --git a/src/routes/docs/tooling/command-line/+layout.svelte b/src/routes/docs/tooling/command-line/+layout.svelte index fafb696c16..f0ac92a234 100644 --- a/src/routes/docs/tooling/command-line/+layout.svelte +++ b/src/routes/docs/tooling/command-line/+layout.svelte @@ -3,13 +3,20 @@ import Sidebar, { type NavParent, type NavTree } from '$lib/layouts/Sidebar.svelte'; const parent: NavParent = { - backlink: '/docs', - href: '/docs/tooling/command-line', - label: 'Command Line', - icon: 'icon-terminal' + href: '/docs', + label: 'Command Line' }; const navigation: NavTree = [ + { + label: 'Getting started', + items: [ + { + label: 'Overview', + href: '/docs/tooling/command-line' + } + ] + }, { label: 'Guides', items: [ From 477b9bf326369b71d97311ed25d59d9bdcc0c40d Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 19 Sep 2023 20:22:50 +0200 Subject: [PATCH 2/3] fix: allow missing id --- svelte.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/svelte.config.js b/svelte.config.js index 423f6ecbb3..b07180b94e 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -39,7 +39,8 @@ const config = { $markdoc: './src/markdoc' }, prerender: { - handleHttpError: 'warn' + handleHttpError: 'warn', + handleMissingId: 'warn' }, } }; From 653eb0df00fca9bfdb958663a7bce7300b3b1972 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 19 Sep 2023 20:33:29 +0200 Subject: [PATCH 3/3] fix links --- src/routes/docs/advanced/migrations/firebase/+page.markdoc | 2 +- src/routes/docs/advanced/migrations/nhost/+page.markdoc | 2 +- src/routes/docs/advanced/migrations/supabase/+page.markdoc | 2 +- src/routes/docs/advanced/platform/events/+page.markdoc | 2 +- src/routes/docs/advanced/platform/permissions/+page.markdoc | 2 +- src/routes/docs/advanced/self-hosting/debug/+page.markdoc | 2 +- src/routes/docs/advanced/self-hosting/email/+page.markdoc | 2 +- .../docs/advanced/self-hosting/installation/+page.markdoc | 2 +- .../docs/advanced/self-hosting/production/+page.markdoc | 2 +- src/routes/docs/apis/realtime/+page.markdoc | 2 +- src/routes/docs/apis/rest/+page.markdoc | 4 ++-- src/routes/docs/products/auth/security/+page.markdoc | 4 ++-- .../docs/products/auth/server-integrations/+page.markdoc | 4 ++-- src/routes/docs/products/auth/user-management/+page.markdoc | 2 +- src/routes/docs/products/functions/execution/+page.markdoc | 2 +- 15 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/routes/docs/advanced/migrations/firebase/+page.markdoc b/src/routes/docs/advanced/migrations/firebase/+page.markdoc index 7da3415161..831fad73c4 100644 --- a/src/routes/docs/advanced/migrations/firebase/+page.markdoc +++ b/src/routes/docs/advanced/migrations/firebase/+page.markdoc @@ -53,7 +53,7 @@ To begin migrating to Appwrite, follow these steps. 1. Add the platforms for your [Web](#), [Flutter](#), [Android](#), and [iOS](#) apps. Appwrite will reject requests from unknown web, Flutter, and mobile apps to protect from malicious attacks. You app **must be added as a platform** for Appwrite to accept requests. -1. Remember to [add appropriate permissions](/docs/platform/permissions) to the migrated resources to protect user data and privacy. +1. Remember to [add appropriate permissions](/docs/advanced/platform/permissions) to the migrated resources to protect user data and privacy. 1. Migrate functions manually, by [pick a runtime](#) and [learn to develop Appwrite Functions](#). diff --git a/src/routes/docs/advanced/migrations/nhost/+page.markdoc b/src/routes/docs/advanced/migrations/nhost/+page.markdoc index d57120d0c3..cae8090557 100644 --- a/src/routes/docs/advanced/migrations/nhost/+page.markdoc +++ b/src/routes/docs/advanced/migrations/nhost/+page.markdoc @@ -43,7 +43,7 @@ Before migrating to Appwrite make sure you've read the [migration overview](/doc 1. Add the platforms for your [Web](#), [Flutter](#), [Android](#), and [iOS](#) apps. Appwrite will reject requests from unknown web, Flutter, and mobile apps to protect from malicious attacks. You app **must be added as a platform** for Appwrite to accept requests. -1. Remember to [add appropriate permissions](/docs/platform/permissions) to the migrated resources to protect user data and privacy. +1. Remember to [add appropriate permissions](/docs/advanced/platform/permissions) to the migrated resources to protect user data and privacy. 1. Migrate functions manually, by [pick a runtime](#) and [learn to develop Appwrite Functions](#). diff --git a/src/routes/docs/advanced/migrations/supabase/+page.markdoc b/src/routes/docs/advanced/migrations/supabase/+page.markdoc index 120c0adb29..81c3fb2191 100644 --- a/src/routes/docs/advanced/migrations/supabase/+page.markdoc +++ b/src/routes/docs/advanced/migrations/supabase/+page.markdoc @@ -45,7 +45,7 @@ Before migrating to Appwrite make sure you've read the [migration overview](/doc 1. Add the platforms for your [Web](#), [Flutter](#), [Android](#), and [iOS](#) apps. Appwrite will reject requests from unknown web, Flutter, and mobile apps to protect from malicious attacks. You app **must be added as a platform** for Appwrite to accept requests. -1. Remember to [add appropriate permissions](/docs/platform/permissions) to the migrated resources to protect user data and privacy. +1. Remember to [add appropriate permissions](/docs/advanced/platform/permissions) to the migrated resources to protect user data and privacy. 1. Migrate functions manually, by [pick a runtime](#) and [learn to develop Appwrite Functions](#). diff --git a/src/routes/docs/advanced/platform/events/+page.markdoc b/src/routes/docs/advanced/platform/events/+page.markdoc index 573d960dab..91acaa412a 100644 --- a/src/routes/docs/advanced/platform/events/+page.markdoc +++ b/src/routes/docs/advanced/platform/events/+page.markdoc @@ -6,7 +6,7 @@ description: Placeholder SEO. Appwrite provides a variety of events that allows your application to react to changes as they happen. A event will fire when a change occurs in your Appwrite project, like when a new user registers or a new file is uploaded to Appwrite. -You can subscribe to these events to with Appwrite [Functions](/docs/products/functions), [Realtime](/docs/products/apis), or [Webhooks](/docs/platform/webhooks). +You can subscribe to these events to with Appwrite [Functions](/docs/products/functions), [Realtime](/docs/products/apis), or [Webhooks](/docs/advanced/platform/webhooks). You can subscribe to events for specific resources using their ID or subscribe to changes of all resources of the same type by using a wildcard character * instead of an ID. You can also filter for events of specific actions like create, update, or delete. diff --git a/src/routes/docs/advanced/platform/permissions/+page.markdoc b/src/routes/docs/advanced/platform/permissions/+page.markdoc index 44525b1628..37d3ba83a9 100644 --- a/src/routes/docs/advanced/platform/permissions/+page.markdoc +++ b/src/routes/docs/advanced/platform/permissions/+page.markdoc @@ -26,7 +26,7 @@ If you create a resource using a Server SDK or the Appwrite Console without expl ## Server Integration -Server integrations can be used for increased flexibility. When using a Server SDK in combination with the proper [API key scopes](/docs/platform/api-keys#scopes), you can have any type of access to any of your project resources regardless of their permissions. +Server integrations can be used for increased flexibility. When using a Server SDK in combination with the proper [API key scopes](/docs/advanced/platform/api-keys#scopes), you can have any type of access to any of your project resources regardless of their permissions. Using the server integration flexibility, you can change resource permissions, share resources between different users and teams, or edit and delete them without any limitations. diff --git a/src/routes/docs/advanced/self-hosting/debug/+page.markdoc b/src/routes/docs/advanced/self-hosting/debug/+page.markdoc index 789acc6419..7c8bf4402c 100644 --- a/src/routes/docs/advanced/self-hosting/debug/+page.markdoc +++ b/src/routes/docs/advanced/self-hosting/debug/+page.markdoc @@ -34,7 +34,7 @@ docker logs [CONTAINER-ID] Appwrite uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, invalid input, etc.). Codes in the 5xx range indicate an error with the Appwrite server, but these are rare. -[Learn more about Appwrite status codes {% icon icon="cheveron-right" /%}](/docs/platform/response-codes) +[Learn more about Appwrite status codes {% icon icon="cheveron-right" /%}](/docs/advanced/platform/response-codes) ## Development mode {% #development-mode%} diff --git a/src/routes/docs/advanced/self-hosting/email/+page.markdoc b/src/routes/docs/advanced/self-hosting/email/+page.markdoc index e91daa302a..0e6b2f5f8a 100644 --- a/src/routes/docs/advanced/self-hosting/email/+page.markdoc +++ b/src/routes/docs/advanced/self-hosting/email/+page.markdoc @@ -12,7 +12,7 @@ In this document, you will learn how to connect a 3rd party SMTP provider like M ## Environment variables {% #environment-variables %} -At this stage, we assume that you have already installed Appwrite. If not, you can follow our [Self Hosting Guide](/docs/self-hosting) for the installation. Appwrite offers multiple environment variables to customize your server setup to your needs. To configure Appwrite to use your own SMTP server, you need to set the following environment variables in the hidden .env file that comes with your Appwrite installation. +At this stage, we assume that you have already installed Appwrite. If not, you can follow our [Self Hosting Guide](/docs/advanced/self-hosting) for the installation. Appwrite offers multiple environment variables to customize your server setup to your needs. To configure Appwrite to use your own SMTP server, you need to set the following environment variables in the hidden .env file that comes with your Appwrite installation. | Environment cariable | Description | Default Value | | ----------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------ | diff --git a/src/routes/docs/advanced/self-hosting/installation/+page.markdoc b/src/routes/docs/advanced/self-hosting/installation/+page.markdoc index 3bc6286284..25cd10105f 100644 --- a/src/routes/docs/advanced/self-hosting/installation/+page.markdoc +++ b/src/routes/docs/advanced/self-hosting/installation/+page.markdoc @@ -13,7 +13,7 @@ Appwrite is designed to run well on both small and large deployments. The minimu Appwrite requires [Docker Compose Version 2](https://docs.docker.com/compose/install/). To install Appwrite, make sure your Docker installation is updated to support Composer V2. {% info title="Upgrading From Older Versions" %} -If you are migrating from an older version of Appwrite, you need to follow the [migration instructions](/docs/self-hosting/update) +If you are migrating from an older version of Appwrite, you need to follow the [migration instructions](/docs/advanced/self-hosting/update) {% /info %} ## Install with Docker {% #install-with-docker %} diff --git a/src/routes/docs/advanced/self-hosting/production/+page.markdoc b/src/routes/docs/advanced/self-hosting/production/+page.markdoc index 16db95f8a3..529f89262c 100644 --- a/src/routes/docs/advanced/self-hosting/production/+page.markdoc +++ b/src/routes/docs/advanced/self-hosting/production/+page.markdoc @@ -53,7 +53,7 @@ Rate limits are an important mechanism to protect your app. Without rate limits, Sending emails is hard. There are a lot of spam rules and configurations to master in order to set up a functional SMTP server. While it is okay to use a self-hosted SMTP server during development, you should use a third-party SMTP provider for production so your email doesn't get labeled as spam. -You can [change Appwrite's SMTP settings](/docs/self-hosting/email) and credentials to any 3rd party provider you like that supports SMTP integration using our Docker environment variables. Most SMTP providers offer a decent free tier to get started with. +You can [change Appwrite's SMTP settings](/docs/advanced/self-hosting/email) and credentials to any 3rd party provider you like that supports SMTP integration using our Docker environment variables. Most SMTP providers offer a decent free tier to get started with. ## Backups {% #backups %} diff --git a/src/routes/docs/apis/realtime/+page.markdoc b/src/routes/docs/apis/realtime/+page.markdoc index 3e8d7cca8a..7fe8dc8c03 100644 --- a/src/routes/docs/apis/realtime/+page.markdoc +++ b/src/routes/docs/apis/realtime/+page.markdoc @@ -97,7 +97,7 @@ If you subscribe to a channel, you will receive callbacks for a variety of event {% info title="Permissions" %} -All subscriptions are secured by the [permissions system](/docs/platform/permissions) offered by Appwrite, meaning a user will only receive updates to resources they have permission to access. +All subscriptions are secured by the [permissions system](/docs/advanced/platform/permissions) offered by Appwrite, meaning a user will only receive updates to resources they have permission to access. Using `Role.any()` on read permissions will allow any client to receive updates. {% /info %} diff --git a/src/routes/docs/apis/rest/+page.markdoc b/src/routes/docs/apis/rest/+page.markdoc index b789e2b82b..a466d4c94d 100644 --- a/src/routes/docs/apis/rest/+page.markdoc +++ b/src/routes/docs/apis/rest/+page.markdoc @@ -84,7 +84,7 @@ X-Appwrite-Project: [PROJECT_ID] Server integrations use API keys to authenticate and are typically used for backend applications. -Server APIs are authenticated with API keys instead of account sessions. Simply pass an [API key](/docs/platform/api-keys) in the `X-Appwrite-key: [API-KEY]` header with the appropriate scopes. +Server APIs are authenticated with API keys instead of account sessions. Simply pass an [API key](/docs/advanced/platform/api-keys) in the `X-Appwrite-key: [API-KEY]` header with the appropriate scopes. ```json GET /v1/databases/{databaseId}/collections/{collectionId}/documents HTTP/1.1 @@ -345,7 +345,7 @@ When using greater than, greater than or equal to, less than, or less than or eq Appwrite's REST APIs are protected by the same rate limit policies, just like when using an SDK. Each API has a different rate limit, which is documented in the References section of each service in the Appwrite documentation. -[Learn more about Rate Limits](/docs/platform/rate-limits). +[Learn more about Rate Limits](/docs/advanced/platform/rate-limits). ## Specifications {% #specifications %} diff --git a/src/routes/docs/products/auth/security/+page.markdoc b/src/routes/docs/products/auth/security/+page.markdoc index f6c862b863..80544b5574 100644 --- a/src/routes/docs/products/auth/security/+page.markdoc +++ b/src/routes/docs/products/auth/security/+page.markdoc @@ -28,7 +28,7 @@ You can change the session limit in the **Security** tab of the Auth Service in ## Permissions Security is very important to protect users' data and privacy. -Appwrite uses a [permissions model](/docs/platform/permissions) coupled with user sessions to ensure users need correct permissions to access resources. +Appwrite uses a [permissions model](/docs/advanced/platform/permissions) coupled with user sessions to ensure users need correct permissions to access resources. With all Appwrite services, including databases and storage, access is granted at the collection, bucket, document, or file level. These permissions are enforced for client SDKs and server SDKs when using JWT, but are ignored when using a server SDK with an API key. @@ -40,7 +40,7 @@ Password history can be enabled in the Auth service's **Security** tab on the Ap ## Password dictionary -Password dictionary protects users from using bad passwords. It compares the user's password to the [10,000 most common passwords](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/10k-most-common.txt) and throws an error if there's a match. Together with [rate limits](/docs/platform/rate-limits), password dictionary will significantly reduce the chance of a malicious actor from guessing user passwords. +Password dictionary protects users from using bad passwords. It compares the user's password to the [10,000 most common passwords](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/10k-most-common.txt) and throws an error if there's a match. Together with [rate limits](/docs/advanced/platform/rate-limits), password dictionary will significantly reduce the chance of a malicious actor from guessing user passwords. Password dictionary can be enabled in the Auth service's **Security** tab on the Appwrite Console. diff --git a/src/routes/docs/products/auth/server-integrations/+page.markdoc b/src/routes/docs/products/auth/server-integrations/+page.markdoc index 88992006af..2b91eeaa3f 100644 --- a/src/routes/docs/products/auth/server-integrations/+page.markdoc +++ b/src/routes/docs/products/auth/server-integrations/+page.markdoc @@ -10,7 +10,7 @@ If you are already authenticated on your client-side app and need your backend a ## Proof of Identity {% #proof-of-identity %} -Before making requests to your backend APIs, your client application needs to first create a session **directly with Appwrite** using the account service. This session will act like an ID card for the user and can be used to access resources in Appwrite. The client will **only receive information accessible to the user** based on the resources' [permissions](/docs/platform/permissions). +Before making requests to your backend APIs, your client application needs to first create a session **directly with Appwrite** using the account service. This session will act like an ID card for the user and can be used to access resources in Appwrite. The client will **only receive information accessible to the user** based on the resources' [permissions](/docs/advanced/platform/permissions). When you build backend APIs to extend Appwrite's functionality, these APIs should still **respect access permissions** to keep user data secure. Appwrite's backend SDKs allow you to securely act on behalf of a user with the same permissions by using JWT authentication. @@ -172,7 +172,7 @@ var client = new Client() JWT auth is useful when you need your backend app's Server SDK to be restricted by the same set of permissions. -If your backend app's Server SDK is using an [API key](/docs/platform/api-keys), it will fetch **all resources** regardless of permissions. This means the Server SDK might fetch files and documents your user should not be able to see, which is not helpful when you need to act on behalf of a user. +If your backend app's Server SDK is using an [API key](/docs/advanced/platform/api-keys), it will fetch **all resources** regardless of permissions. This means the Server SDK might fetch files and documents your user should not be able to see, which is not helpful when you need to act on behalf of a user. If your backend app's Server SDK is using a **JWT**, it will only fetch resources your user has permissions to access. diff --git a/src/routes/docs/products/auth/user-management/+page.markdoc b/src/routes/docs/products/auth/user-management/+page.markdoc index 57e9a18767..fdd25fde4f 100644 --- a/src/routes/docs/products/auth/user-management/+page.markdoc +++ b/src/routes/docs/products/auth/user-management/+page.markdoc @@ -348,7 +348,7 @@ This would correspond with the permissions below. | Delete | `Permissions.delete(Role.label('subscriber'))` | | Create | `Permissions.create(Role.label('subscriber'))` | -[Learn more about permissions](/docs/platform/permissions) +[Learn more about permissions](/docs/advanced/platform/permissions) ## Teams {% #teams %} diff --git a/src/routes/docs/products/functions/execution/+page.markdoc b/src/routes/docs/products/functions/execution/+page.markdoc index 3e08639ecc..0e90e525a9 100644 --- a/src/routes/docs/products/functions/execution/+page.markdoc +++ b/src/routes/docs/products/functions/execution/+page.markdoc @@ -485,7 +485,7 @@ Here are some cron expressions for common intervals: ## Permissions {% #permission %} -Appwrite Functions can be executed using Client or Server SDKs. Client SDKs must be authenticated with an account that has been granted execution [permissions](/docs/platform/permissions) on the function's settings page. Server SDKs require an API key with the correct scopes. +Appwrite Functions can be executed using Client or Server SDKs. Client SDKs must be authenticated with an account that has been granted execution [permissions](/docs/advanced/platform/permissions) on the function's settings page. Server SDKs require an API key with the correct scopes. If your function has a generated or custom domain, executions are not authenticated. Anyone visiting the configured domains will be considered a guest, so make sure to give `Any` execute permission in order for domain executions to work. If you need to enforce permissions for functions with a domain, use authentication methods like JWT.