diff --git a/app/views/docs/index.phtml b/app/views/docs/index.phtml
index 3554cba88..b57eb9a43 100644
--- a/app/views/docs/index.phtml
+++ b/app/views/docs/index.phtml
@@ -93,6 +93,16 @@ $cols = [
diff --git a/app/views/docs/migrations-cloud-to-local.phtml b/app/views/docs/migrations-cloud-to-local.phtml
new file mode 100644
index 000000000..6c012e1ef
--- /dev/null
+++ b/app/views/docs/migrations-cloud-to-local.phtml
@@ -0,0 +1,34 @@
+
+ If you're moving your projects from Appwrite Cloud to self-hosted, we've got you covered.
+ Migrations makes it as easy as a couple clicks to move all of your Appwrite Cloud project data to a self-hosted instance.
+
+
+
+
+
+ - Data transferred by migrations will reset `$createdAt` and `$updatedAt` timestamps to the date of the migration.
+ - Your self-hosted Appwrite project must be accessible from the internet for the migration to work.
+ - Migrations are non-destructive. No data will be deleted or lost in the source project.
+
+
+
+
+
+ To begin migrating to Appwrite Self-hosted, make sure to read the migrations overview
+ and things to keep in mind sections above.
+
+
+
Steps in Cloud Console
+
+ - Navigate to your Appwrite Cloud Console and click on the Migrations tab in Project Settings.
+ - Click Export to Self-hosted, you will be prompted to input the URL of your self-hosted Appwrite project.
+ - Optionally, tell us about why you're moving to self-hosted.
+ - After clicking Continue, you'll be redirected to your self-hosted project to complete the process.
+
+
+
Steps in Self-hosted Console
+
+ - Once redirected to your self-hosted server, you'll be prompted to select a project. If you have multiple organizations, you will also be asked to pick one. You can migrate to an existing project or create a new one.
+ - Select the data you wish to migrate. You can choose among accounts, databases, documents, files, and functions.
+ - Click Start migration to begin the migration process. You do not need to keep the Appwrite Console open through the process.
+
\ No newline at end of file
diff --git a/app/views/docs/migrations-cloud-to-self-hosted.phtml b/app/views/docs/migrations-cloud-to-self-hosted.phtml
new file mode 100644
index 000000000..801d93c0e
--- /dev/null
+++ b/app/views/docs/migrations-cloud-to-self-hosted.phtml
@@ -0,0 +1,34 @@
+
+ Moving to a self-hosted instance? We've got you covered.
+ Migrations makes it as easy as a couple clicks to move all of your Appwrite Cloud project data to a self-hosted instance.
+
+
+
+
+
+ - Data transferred by migrations will reset `$createdAt` and `$updatedAt` timestamps to the date of the migration.
+ - Your self-hosted Appwrite project must be accessible from the internet for the migration to work.
+ - Migrations are non-destructive. No data will be deleted or lost in the source project.
+
+
+
+
+
+ To begin migrating to Appwrite Self-hosted, make sure to read the migrations overview
+ and things to keep in mind sections above.
+
+
+
Steps on Your Cloud Project
+
+ - Navigate to your Appwrite Cloud Console and click on the Migrations tab.
+ - Click Export to Self-hosted, you will be prompted to input the URL of your self-hosted Appwrite project.
+ - Optionally, tell us about why you're moving to self-hosted.
+ - After clicking Continue, you'll be directed back to your self-hosted project to complete the process.
+
+
+
Steps on Your Self-hosted Project
+
+ - Once redirected to your self-hosted project, you'll be prompted to select an organization and a project. You can migrate to an existing project or create a new one.
+ - Select the data you wish to migrate. You can choose among accounts, databases, documents, files, and functions.
+ - Click Start migration to start the migration process. You do not need to keep the Appwrite Console open through the process.
+
\ No newline at end of file
diff --git a/app/views/docs/migrations-firebase.phtml b/app/views/docs/migrations-firebase.phtml
new file mode 100644
index 000000000..2c351d599
--- /dev/null
+++ b/app/views/docs/migrations-firebase.phtml
@@ -0,0 +1,154 @@
+
+ Moving your project from Firebase to Appwrite?
+ Appwrite Migrations can help you streamline the process.
+
+ Here's what you need to know to get started.
+
+
+
+
+
+ - Appwrite will not incur usage charges during migrations, but Firebase may still incur service charges.
+ - Appwrite Migrations only supports Firestore as a database source. Realtime Database is currently not supported.
+ - At the moment only top level document migration is supported. Nested documents will not be migrated automatically.
+ - OAuth users will not be migrated because the sessions are managed by the third-party OAuth provider. Users will need to re-authenticate with your OAuth provider after the migration is complete.
+ - Functions are not automatically migrated because of syntax and runtime differences.
+
+
+
+
+ To begin migrating to Appwrite make sure to read the migration overview
+ and things to keep in mind sections above.
+
+
+
+ -
+ Create a new project and click on the Migrations tab in Project Settings.
+
+ -
+ Click on the Create Migration button and select Firebase as your source.
+
+ -
+ Navigate to your Firebase console.
+
+ -
+ Click the gear icon to access your Project Settings.
+
+ -
+ Click on Service Accounts, then click on the Manage service account permissions link redirecting you to the Google Cloud Console.
+
+ -
+ Click on Create Service Account, give it a name, id and description you want, then click Continue.
+
+ -
+ Next you'll be prompted to grant the service account roles. You need to grant the following roles.
+
+
+
+
+ | Role |
+ Reason
|
+
+
+
+
+ | Firebase Viewer |
+ Read access to your entire Firebase project including Database and Storage.
|
+
+
+ | Identity Toolkit Viewer |
+ Read access to your users including their hash config.
|
+
+
+
+ - If you prefer to create a custom role, you can use the following permissions.
+
+
+
+ | Permission |
+ Reason |
+
+
+
+
+ | datastore.databases.get |
+ Read access to your Firestore database. |
+
+
+ | datastore.databases.list |
+ Read access to your Firestore database. |
+
+
+ | datastore.entities.get |
+ Read access to your Firestore database's documents. |
+
+
+ | datastore.entities.list |
+ Read access to your Firestore database's documents. |
+
+
+ | datastore.indexes.get |
+ Read access to your Firestore database's indexes. |
+
+
+ | datastore.indexes.list |
+ Read access to your Firestore database's indexes. |
+
+
+ | firebaseauth.configs.get |
+ Read access to your Firebase project's authentication configs. |
+
+
+ | firebaseauth.configs.getHashConfig |
+ Read access to your Firebase project's authentication configs including hash salt. |
+
+
+ | firebaseauth.configs.getSecret |
+ Read access to your Firebase project's authentication configs including secret. |
+
+
+ | firebaseauth.users.get |
+ Read access to your Firebase project's users. |
+
+
+ | identitytoolkit.tenants.get |
+ Read access to your Firebase project's users. |
+
+
+ | identitytoolkit.tenants.list |
+ Read access to your Firebase project's users. |
+
+
+ | storage.buckets.get |
+ Read access to your Firebase project's storage buckets. |
+
+
+ | storage.buckets.list |
+ Read access to your Firebase project's storage buckets. |
+
+
+ | storage.objects.get |
+ Read access to your Firebase project's storage objects. |
+
+
+ | storage.objects.list |
+ Read access to your Firebase project's storage objects. |
+
+
+
+ -
+ Click Done to create the service account. After that you'll be redirected back to the service accounts page. Select the service account you just created and click Keys.
+
+ -
+ Click Add Key and select Create new key. Select JSON as the key type and click Create. This will download a JSON file to your computer.
+
+ -
+ Upload the JSON file to Appwrite and follow the migration wizard.
+
+ -
+ After completing the migration wizard, migration will begin. Return to step 4 of the migration steps.
+
+ -
+ Finally, add the platforms for your Web, Flutter, Android, and iOS apps.
+
+
\ No newline at end of file
diff --git a/app/views/docs/migrations-local-to-cloud.phtml b/app/views/docs/migrations-local-to-cloud.phtml
new file mode 100644
index 000000000..9040dafa1
--- /dev/null
+++ b/app/views/docs/migrations-local-to-cloud.phtml
@@ -0,0 +1,38 @@
+
+ If you're moving your self-hosted projects to Appwrite Cloud, we've got your back.
+ Migrations makes it as easy as a couple clicks to move all of your self-hosted project data to a Cloud instance.
+
+
+
+
+
+ - Data transferred by migrations will reset
$createdAt and $updatedAt timestamps to the date of the migration.
+ - Your self-hosted Appwrite project must be accessible from the internet for the migration to work.
+ - Migrations are non-destructive. No data will be deleted or lost in the source project.
+
+
+
+
+ To begin migrating to self-hosted, make sure to read the migration overview
+ and things to keep in mind sections above.
+
+
+
Steps in Self-hosted Console
+
+
+ - Navigate to your self-hosted project's console and click on the Migrations tab in Project Settings.
+ - Click Deploy to cloud, and you will be redirected to Appwrite Cloud.
+ - You will complete the migration on Appwrite Cloud.
+
+
+
Steps in Cloud Console
+
+ - Once redirected to Appwrite Cloud, you'll be prompted to select a project. If you have multiple organizations, you will also be asked to pick one. You can migrate to an existing project or create a new one.
+ - Select the data you wish to migrate. You can choose among accounts, databases, documents, files, and functions.
+ - Click Start migration to start the migration process. You do not need to keep the Appwrite Console open through the process.
+
+
+
+
Keep in mind
+
Your Self-hosted instance will generate a API Key in the background to pass to Cloud. You can revoke this key after the migration process is complete.
+
\ No newline at end of file
diff --git a/app/views/docs/migrations-nhost.phtml b/app/views/docs/migrations-nhost.phtml
new file mode 100644
index 000000000..7558fe9b5
--- /dev/null
+++ b/app/views/docs/migrations-nhost.phtml
@@ -0,0 +1,64 @@
+
+ Moving your project from NHost to Appwrite?
+ Appwrite Migrations can help you streamline the process.
+
+ Here's what you need to know to get started.
+
+
+
+
+
+ - Appwrite will not incur usage charges during migrations, but NHost may still incur service charges.
+ - Appwrite's Database doesn't support all the features of the postgreSQL database so more advanced postgres centric things things like advanced indexes, postgres functions and scheduling will not be migrated.
+ - OAuth users will not be migrated because the sessions are managed by the third-party OAuth provider. Users will need to re-authenticate with your OAuth provider after the migration is complete.
+ - Functions are not automatically migrated because of syntax and runtime differences.
+
+
+
+
+ To begin migrating to Appwrite make sure to read the migration overview
+ and things to keep in mind sections above.
+
+
+
+ -
+ Create a new project and click on the Migrations tab in Project Settings.
+
+ -
+ Click on the Create Migration button and select NHost as your source.
+
+ -
+ Enter the credentials following the instructions below and click Next.
+
+ -
+ Select the resources you want to migrate and finally click Start migration to begin the migration process.
+
+ -
+ Finally, add the platforms for your Web, Flutter, Android, and iOS apps.
+
+
+
+
+
+Enter all the following credentials from your NHost project.
+
+
+ -
+ Region - The region your NHost project is hosted in. This can be found in your NHost project environment variables as NHOST_REGION.
+
+ -
+ Subdomain - The subdomain of your NHost project. This can be found in your NHost project environment variables as NHOST_SUBDOMAIN.
+
+ -
+ Database - The name of your NHost database. This can be found in your NHost project Database settings.
+
+ -
+ Username - The username of your NHost database. This can be found in your NHost project Database settings.
+
+ -
+ Password - The password of your NHost database. You set this when you created your NHost project, if you don't remember it you can reset it from your NHost project Database settings.
+
+ -
+ Admin Secret - The admin secret of your NHost project. This can be found in your NHost project environment variables as NHOST_ADMIN_SECRET. We use this to transfer your NHost files to Appwrite.
+
+
\ No newline at end of file
diff --git a/app/views/docs/migrations-self-hosted-to-cloud.phtml b/app/views/docs/migrations-self-hosted-to-cloud.phtml
new file mode 100644
index 000000000..5cfee4cb8
--- /dev/null
+++ b/app/views/docs/migrations-self-hosted-to-cloud.phtml
@@ -0,0 +1,38 @@
+
+ Making the move to Appwrite Cloud? We've got your back.
+ Migrations makes it as easy as a couple clicks to move all of your self-hosted project data to a Cloud instance.
+
+
+
+
+
+ - Data transferred by migrations will reset
$createdAt and $updatedAt timestamps to the date of the migration.
+ - Your self-hosted Appwrite project must be accessible from the internet for the migration to work.
+ - Migrations are non-destructive. No data will be deleted or lost in the source project.
+
+
+
+
+ To begin migrating to self-hosted, make sure to read the migration overview
+ and things to keep in mind sections above.
+
+
+
Steps on Your Self-hosted Project
+
+
+ - Navigate to your self-hosted project's console and click on the Migrations tab.
+ - Click Deploy to cloud, you will be redirected to Appwrite Cloud.
+ - You will complete the migration on Appwrite Cloud.
+
+
+
Steps on Your Cloud Project
+
+ - Once redirected to Appwrite Cloud, you'll be prompted to select an organization and a project. You can migrate to an existing project or create a new one.
+ - Select the data you wish to migrate. You can choose among accounts, databases, documents, files, and functions.
+ - Click Start migration to start the migration process. You do not need to keep the Appwrite Console open through the process.
+
+
+
+
Keep in mind
+
Your Self-hosted instance will generate a API Key in the background to pass to Cloud. You can revoke this key after the migration process is complete.
+
\ No newline at end of file
diff --git a/app/views/docs/migrations-supabase.phtml b/app/views/docs/migrations-supabase.phtml
new file mode 100644
index 000000000..8ff4a7bca
--- /dev/null
+++ b/app/views/docs/migrations-supabase.phtml
@@ -0,0 +1,65 @@
+
+ Moving your project from Supabase to Appwrite?
+ Appwrite Migrations can help you streamline the process.
+
+ Here's what you need to know to get started.
+
+
+
+
+
+ - Appwrite will not incur usage charges during migrations, but Supabase may still incur service charges.
+ - Appwrite's Databases services supports a different set of features as PostgreSQL. Some features like advanced indexes, Postgres functions and scheduling will not be migrated.
+ - OAuth users will not be migrated because the sessions are managed by the third-party OAuth provider. Users will need to re-authenticate with your OAuth provider after the migration is complete.
+ - Functions are not automatically migrated because of syntax and runtime differences.
+
+
+
+
+ To begin migrating to Appwrite make sure to read the migration overview
+ and things to keep in mind sections above.
+
+
+
+ -
+ Create a new project and click on the Migrations tab in Project Settings.
+
+ -
+ Click on the Create Migration button and select Supabase as your source.
+
+ -
+ Enter the credentials following the instructions below and click Next.
+
+ -
+ Select the resources you want to migrate and finally click Start migration to begin the migration process.
+
+ -
+ Finally, add the platforms for your Web, Flutter, Android, and iOS apps.
+
+
+
+
+
+
Enter all the following credentials from your Supabase project.
+
+
+
+ -
+ Host - The host of your Supabase Database, this can be found in your Supabase project settings under Database Settings and Host.
+
+ -
+ Port - The port of your Supabase Database, this can be found in your Supabase project settings under Database Settings and Port. By default this is 5432.
+
+ -
+ Username - The username of your Supabase Database, this can be found in your Supabase project settings under Database Settings and Username.
+
+ -
+ Password - The password of your Supabase Database, this was set when you created your Supabase project. If you forgot your password, you can reset it within Database Settings.
+
+ -
+ Endpoint - This is the endpoint of your Supabase instance under Project Settings > API. This is used to migrate your files.
+
+ -
+ API Key - This is the key of your Supabase instance under Project Settings > API. This is used to migrate your files. Make sure to use the hidden service_role key.
+
+
diff --git a/app/views/docs/migrations.phtml b/app/views/docs/migrations.phtml
new file mode 100644
index 000000000..e130ae472
--- /dev/null
+++ b/app/views/docs/migrations.phtml
@@ -0,0 +1,90 @@
+
+ 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 project on the same instance.
+ Migrations will automatically move accounts, database documents, and storage files from one source to another.
+
+
+
+
+ You can transfer from these sources to an Appwrite project.
+ Resources marked supported are migrated automatically.
+ Resources marked partial can be migrated, but with limitations or caveats, check the guide for each source to learn more.
+ Resources marked manual require manual migration.
+
+
+
+
+
+ | Source |
+ Users |
+ Databases |
+ Documents |
+ Files |
+ Functions |
+
+
+
+
+ |
+ Firebase
+ |
+ supported |
+ supported |
+ partial |
+ supported |
+ manual |
+
+
+ |
+ Supabase
+ |
+ supported |
+ supported |
+ partial |
+ supported |
+ manual |
+
+
+ |
+ NHost
+ |
+ supported |
+ supported |
+ partial |
+ supported |
+ manual |
+
+
+ |
+ Cloud to Self-hosted
+ |
+ supported |
+ supported |
+ supported |
+ supported |
+ supported |
+
+
+ |
+ Self-hosted to Cloud
+ |
+ supported |
+ supported |
+ supported |
+ supported |
+ supported |
+
+
+
+
+
+
+ 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.
+
\ No newline at end of file