From 4d865cc9b58a48988389f8def64010d98db9ba97 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Wed, 17 May 2023 12:16:34 -0700 Subject: [PATCH 1/9] Starting some docs on the maturity model --- .../NavigationMenu.constants.ts | 6 ++- .../pages/guides/platform/access-control.mdx | 8 ++- .../pages/guides/platform/going-into-prod.mdx | 13 +---- .../pages/guides/platform/maturity-model.mdx | 50 +++++++++++++++++++ 4 files changed, 62 insertions(+), 15 deletions(-) create mode 100644 apps/docs/pages/guides/platform/maturity-model.mdx diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts index bf1353c87fe..da8dae4bbbc 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts @@ -939,7 +939,11 @@ export const platform = { name: 'Shared Responsibility Model', url: '/guides/platform/shared-responsibility-model', }, - { name: 'Going into Production', url: '/guides/platform/going-into-prod' }, + { + name: 'Maturity Model', + url: '/guides/platform/maturity-model', + }, + { name: 'Production Checklist', url: '/guides/platform/going-into-prod' }, ], }, { diff --git a/apps/docs/pages/guides/platform/access-control.mdx b/apps/docs/pages/guides/platform/access-control.mdx index b12d566cc0c..4c1788c28f9 100644 --- a/apps/docs/pages/guides/platform/access-control.mdx +++ b/apps/docs/pages/guides/platform/access-control.mdx @@ -36,8 +36,8 @@ If you are transferring ownership of your organization to someone else, you will The table below shows the corresponding permissions for each available role you can assign a team member in the Dashboard. -| Permissions | Owner | Administrator | Developer | -| ------------------------ | ----------------------- | ----------------------- | ----------------------- | +| Permissions | Owner | Administrator | Developer | Read only [^2] | +| ------------------------ | ----------------------- | ----------------------- | ----------------------- | ----------------------- | | **Organization** | | Change organization name | | | | | Delete organization | | | | @@ -70,6 +70,8 @@ The table below shows the corresponding permissions for each available role you | Pause a project | | | | | Resume a project | | | | | Restart a project | | | | +| Manage tables | | | | +| View Data | | | | | [^1]: Invites sent from a SSO account can only be accepted by another SSO account @@ -77,6 +79,8 @@ The table below shows the corresponding permissions for each available role you prevents accidental invites to accounts not managed by your company's enterprise systems. +[^2]: Available on the Teams and Enterprise Tiers. + export const Page = ({ children }) => export default Page diff --git a/apps/docs/pages/guides/platform/going-into-prod.mdx b/apps/docs/pages/guides/platform/going-into-prod.mdx index 1c39911aec0..7e5b95a4daa 100644 --- a/apps/docs/pages/guides/platform/going-into-prod.mdx +++ b/apps/docs/pages/guides/platform/going-into-prod.mdx @@ -2,7 +2,7 @@ import Layout from '~/layouts/DefaultGuideLayout' export const meta = { id: 'going-into-prod', - title: 'Going into Production', + title: 'Production Checklist', description: 'Things to do before making your app publicly available', } @@ -85,17 +85,6 @@ After developing your project and deciding it's Production Ready, you should run - When working with enterprise systems, email scanners may scan and make a `GET` request to the reset password link or sign up link in your email. Since links in Supabase Auth are single use, a user who opens an email post-scan to click on a link will receive an error. To get around this problem, consider altering the email template to replace the original magic link with a link to a domain you control. The domain can present the user with a "Sign-in" button which redirect the user to the original magic link URL when clicked. -### Restricted Access Levels for Team Members - -As your team grows, consider the different [access levels](/docs/guides/platform/access-control) that your team requires. - -- Free and Pro: Supabase provides access controls within the Dashboard for Developers and Administrators. -- Teams and Enterprise: these tiers include advanced access controls, such as read-only Dashboard roles. - -For a more secure setup, consider running your workload across several organizations. It's a common pattern to have a Production organization which is restricted to only those team members who are qualified to have direct access to production databases. - -One other small tip: the [PGAudit](/docs/guides/database/extensions/pgaudit) extension tracks changes to your database. You can use it to track schema changes. - ## Next steps This checklist is always growing so be sure to check back frequently, and also feel free to suggest additions and amendments by making a PR on [GitHub](https://github.com/supabase/supabase). diff --git a/apps/docs/pages/guides/platform/maturity-model.mdx b/apps/docs/pages/guides/platform/maturity-model.mdx new file mode 100644 index 00000000000..1b24b99d042 --- /dev/null +++ b/apps/docs/pages/guides/platform/maturity-model.mdx @@ -0,0 +1,50 @@ +import Layout from '~/layouts/DefaultGuideLayout' + +export const meta = { + id: 'maturity-model', + title: 'Maturity Model', + description: 'Growing with your application.', +} + +Supabase is great for building something very fast _and_ for scaling up. Keep in mind however, that as your application and team grows, the practices you use for managing an application in production should not be the same as the practices you used for prototyping. + +## Prototyping + +When you are prototyping, the Dashboard we provide is a great way to build your application. We still strongly recommend using [Migrations](/docs/guides/getting-started/local-development#database-migrations) to manage your database changes. + +## Collaborating + +As soon as you start collaborating with team members, all changes should be in version control. At this point we strongly recommend moving away from using the Dashboard for making database changes. Use Migrations to manage your database, and check them into your codebase to track every change. + +Resources: + +- [Database migrations](/docs/guides/getting-started/local-development#database-migrations) +- [PGAudit for Postgres](/docs/guides/database/extensions/pgaudit) + +## In Production + +Once your application is live, you should never change your database using the Dashboard. Read the [Production Checklist](docs/guides/platform/going-into-prod) and make sure that your organization is aware of the [Shared Responsibilities](/docs/guides/platform/shared-responsibility-model) between your organizaiton and Supabase. Supabase provides various [access levels](https://supabase.com/docs/guides/platform/access-control) for the Dashboard. You should [design a secure workflow](https://supabase.com/docs/guides/platform/shared-responsibility-model#you-decide-your-own-workflow) for managing your database. + +We strongly recommend running [multiple environments](/docs/guides/cli/managing-environments) as part of your development workflow (`local` -> `staging` -> `prod`). + +Resources: + +- [Database migrations](/docs/guides/getting-started/local-development#database-migrations) +- [PGAudit for Postgres](/docs/guides/database/extensions/pgaudit) +- [Managing environments](/docs/guides/cli/managing-environments) +- [Access Control](/docs/guides/platform/access-control) + +Resources: + +- [Database migrations](/docs/guides/getting-started/local-development#database-migrations) +- [PGAudit for Postgres](/docs/guides/getting-started/local-development#database-migrations) + +## Enterprise + +For a more secure setup, consider running your workload across several organizations. It's a common pattern to have a Production organization which is restricted to only those team members who are qualified to have direct access to production databases. + +Reach out to [growth@supabase.com](mailto:growth@supabase.com) if you need help designing a secure development workflow for your organization. + +export const Page = ({ children }) => + +export default Page From b1e20ac594994d7b7e0e787fe5f523f9ba1523f6 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Wed, 17 May 2023 12:18:37 -0700 Subject: [PATCH 2/9] spelling --- apps/docs/pages/guides/platform/maturity-model.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/docs/pages/guides/platform/maturity-model.mdx b/apps/docs/pages/guides/platform/maturity-model.mdx index 1b24b99d042..3b3b95298f6 100644 --- a/apps/docs/pages/guides/platform/maturity-model.mdx +++ b/apps/docs/pages/guides/platform/maturity-model.mdx @@ -23,7 +23,7 @@ Resources: ## In Production -Once your application is live, you should never change your database using the Dashboard. Read the [Production Checklist](docs/guides/platform/going-into-prod) and make sure that your organization is aware of the [Shared Responsibilities](/docs/guides/platform/shared-responsibility-model) between your organizaiton and Supabase. Supabase provides various [access levels](https://supabase.com/docs/guides/platform/access-control) for the Dashboard. You should [design a secure workflow](https://supabase.com/docs/guides/platform/shared-responsibility-model#you-decide-your-own-workflow) for managing your database. +Once your application is live, you should never change your database using the Dashboard. Read the [Production Checklist](docs/guides/platform/going-into-prod) and make sure that your organization is aware of the [Shared Responsibilities](/docs/guides/platform/shared-responsibility-model) between your organization and Supabase. Supabase provides various [access levels](https://supabase.com/docs/guides/platform/access-control) for the Dashboard. You should [design a secure workflow](https://supabase.com/docs/guides/platform/shared-responsibility-model#you-decide-your-own-workflow) for managing your database. We strongly recommend running [multiple environments](/docs/guides/cli/managing-environments) as part of your development workflow (`local` -> `staging` -> `prod`). From b57b4f05dec3cd575f396c77aef4cb18d6d60c29 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Wed, 17 May 2023 12:19:42 -0700 Subject: [PATCH 3/9] dupicates --- apps/docs/pages/guides/platform/maturity-model.mdx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/apps/docs/pages/guides/platform/maturity-model.mdx b/apps/docs/pages/guides/platform/maturity-model.mdx index 3b3b95298f6..3511f39a7b2 100644 --- a/apps/docs/pages/guides/platform/maturity-model.mdx +++ b/apps/docs/pages/guides/platform/maturity-model.mdx @@ -34,11 +34,6 @@ Resources: - [Managing environments](/docs/guides/cli/managing-environments) - [Access Control](/docs/guides/platform/access-control) -Resources: - -- [Database migrations](/docs/guides/getting-started/local-development#database-migrations) -- [PGAudit for Postgres](/docs/guides/getting-started/local-development#database-migrations) - ## Enterprise For a more secure setup, consider running your workload across several organizations. It's a common pattern to have a Production organization which is restricted to only those team members who are qualified to have direct access to production databases. From 3a3fa7bc5b911f81ca9f46be8087563afaeefa34 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Wed, 17 May 2023 12:20:59 -0700 Subject: [PATCH 4/9] managing access in both sections --- apps/docs/pages/guides/platform/maturity-model.mdx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/docs/pages/guides/platform/maturity-model.mdx b/apps/docs/pages/guides/platform/maturity-model.mdx index 3511f39a7b2..c6e6dd9c88c 100644 --- a/apps/docs/pages/guides/platform/maturity-model.mdx +++ b/apps/docs/pages/guides/platform/maturity-model.mdx @@ -19,6 +19,7 @@ As soon as you start collaborating with team members, all changes should be in v Resources: - [Database migrations](/docs/guides/getting-started/local-development#database-migrations) +- [Managing access on the Dashboard](/docs/guides/platform/access-control) - [PGAudit for Postgres](/docs/guides/database/extensions/pgaudit) ## In Production @@ -30,9 +31,9 @@ We strongly recommend running [multiple environments](/docs/guides/cli/managing- Resources: - [Database migrations](/docs/guides/getting-started/local-development#database-migrations) +- [Managing access on the Dashboard](/docs/guides/platform/access-control) - [PGAudit for Postgres](/docs/guides/database/extensions/pgaudit) - [Managing environments](/docs/guides/cli/managing-environments) -- [Access Control](/docs/guides/platform/access-control) ## Enterprise From 36bbf63ad850dbe99b96182f6a2ee669b7335f24 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Wed, 17 May 2023 12:38:25 -0700 Subject: [PATCH 5/9] cleaning up the formating --- apps/docs/pages/guides/platform/maturity-model.mdx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/docs/pages/guides/platform/maturity-model.mdx b/apps/docs/pages/guides/platform/maturity-model.mdx index c6e6dd9c88c..107560ae53b 100644 --- a/apps/docs/pages/guides/platform/maturity-model.mdx +++ b/apps/docs/pages/guides/platform/maturity-model.mdx @@ -24,9 +24,12 @@ Resources: ## In Production -Once your application is live, you should never change your database using the Dashboard. Read the [Production Checklist](docs/guides/platform/going-into-prod) and make sure that your organization is aware of the [Shared Responsibilities](/docs/guides/platform/shared-responsibility-model) between your organization and Supabase. Supabase provides various [access levels](https://supabase.com/docs/guides/platform/access-control) for the Dashboard. You should [design a secure workflow](https://supabase.com/docs/guides/platform/shared-responsibility-model#you-decide-your-own-workflow) for managing your database. +Once your application is live, you should never change your database using the Dashboard. Supabase provides various [access levels](https://supabase.com/docs/guides/platform/access-control) for the Dashboard. -We strongly recommend running [multiple environments](/docs/guides/cli/managing-environments) as part of your development workflow (`local` -> `staging` -> `prod`). +- Read the [Production Checklist](docs/guides/platform/going-into-prod). +- Make your team aware of the [Shared Responsibilities](/docs/guides/platform/shared-responsibility-model) between your organization and Supabase. +- Design a [safe workflow](https://supabase.com/docs/guides/platform/shared-responsibility-model#you-decide-your-own-workflow) for managing your database. We strongly recommend running [multiple environments](/docs/guides/cli/managing-environments) as part of your development workflow (`local` -> `staging` -> `prod`). +- As your database to grows, we strongly recommend moving to [Point-in-Time Recovery](/docs/guides/platform/backups#point-in-time-recovery). This is safer, and has less impact on your database performance during maintainance windows. Resources: From 3305cd23a6e14a54eb229f8a5c924ea89898d311 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Wed, 17 May 2023 12:38:53 -0700 Subject: [PATCH 6/9] grammar --- apps/docs/pages/guides/platform/maturity-model.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/docs/pages/guides/platform/maturity-model.mdx b/apps/docs/pages/guides/platform/maturity-model.mdx index 107560ae53b..ae8b5225f77 100644 --- a/apps/docs/pages/guides/platform/maturity-model.mdx +++ b/apps/docs/pages/guides/platform/maturity-model.mdx @@ -29,7 +29,7 @@ Once your application is live, you should never change your database using the D - Read the [Production Checklist](docs/guides/platform/going-into-prod). - Make your team aware of the [Shared Responsibilities](/docs/guides/platform/shared-responsibility-model) between your organization and Supabase. - Design a [safe workflow](https://supabase.com/docs/guides/platform/shared-responsibility-model#you-decide-your-own-workflow) for managing your database. We strongly recommend running [multiple environments](/docs/guides/cli/managing-environments) as part of your development workflow (`local` -> `staging` -> `prod`). -- As your database to grows, we strongly recommend moving to [Point-in-Time Recovery](/docs/guides/platform/backups#point-in-time-recovery). This is safer, and has less impact on your database performance during maintainance windows. +- As your database to grows, we strongly recommend moving to [Point-in-Time Recovery](/docs/guides/platform/backups#point-in-time-recovery). This is safer and has less impact on your database performance during maintainance windows. Resources: From 8ed56780c6e23798806922bea4530e3d2c36dbfb Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Wed, 17 May 2023 12:44:56 -0700 Subject: [PATCH 7/9] cleans up the formatting --- apps/docs/pages/guides/platform/maturity-model.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/docs/pages/guides/platform/maturity-model.mdx b/apps/docs/pages/guides/platform/maturity-model.mdx index ae8b5225f77..aa3c31f2936 100644 --- a/apps/docs/pages/guides/platform/maturity-model.mdx +++ b/apps/docs/pages/guides/platform/maturity-model.mdx @@ -10,11 +10,11 @@ Supabase is great for building something very fast _and_ for scaling up. Keep in ## Prototyping -When you are prototyping, the Dashboard we provide is a great way to build your application. We still strongly recommend using [Migrations](/docs/guides/getting-started/local-development#database-migrations) to manage your database changes. +The Dashboard is a quick and easy tool for building applications while you are prototyping. That said, we strongly recommend using [Migrations](/docs/guides/getting-started/local-development#database-migrations) to manage your database changes. You can use our CLI to [capture any changes](/docs/reference/cli/supabase-db-diff) you have made on the Dashboard so that you can commit them a version control system, like git. ## Collaborating -As soon as you start collaborating with team members, all changes should be in version control. At this point we strongly recommend moving away from using the Dashboard for making database changes. Use Migrations to manage your database, and check them into your codebase to track every change. +As soon as you start collaborating with team members, all project changes should be in version control. At this point we strongly recommend moving away from using the Dashboard for schema changes. Use migrations to manage your database, and check them into your version control system to track every change. Resources: @@ -24,7 +24,7 @@ Resources: ## In Production -Once your application is live, you should never change your database using the Dashboard. Supabase provides various [access levels](https://supabase.com/docs/guides/platform/access-control) for the Dashboard. +Once your application is live, you should never change your database using the Dashboard. Supabase provides various [access levels](https://supabase.com/docs/guides/platform/access-control) for the Dashboard that can help enforce this. Some other important things to consider at this point include: - Read the [Production Checklist](docs/guides/platform/going-into-prod). - Make your team aware of the [Shared Responsibilities](/docs/guides/platform/shared-responsibility-model) between your organization and Supabase. From 83e05a8947f06a855baa75ab3dc5a2126ed73386 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Wed, 17 May 2023 12:50:44 -0700 Subject: [PATCH 8/9] fix spelling --- apps/docs/pages/guides/platform/maturity-model.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/docs/pages/guides/platform/maturity-model.mdx b/apps/docs/pages/guides/platform/maturity-model.mdx index aa3c31f2936..7c65fbfef7c 100644 --- a/apps/docs/pages/guides/platform/maturity-model.mdx +++ b/apps/docs/pages/guides/platform/maturity-model.mdx @@ -29,7 +29,7 @@ Once your application is live, you should never change your database using the D - Read the [Production Checklist](docs/guides/platform/going-into-prod). - Make your team aware of the [Shared Responsibilities](/docs/guides/platform/shared-responsibility-model) between your organization and Supabase. - Design a [safe workflow](https://supabase.com/docs/guides/platform/shared-responsibility-model#you-decide-your-own-workflow) for managing your database. We strongly recommend running [multiple environments](/docs/guides/cli/managing-environments) as part of your development workflow (`local` -> `staging` -> `prod`). -- As your database to grows, we strongly recommend moving to [Point-in-Time Recovery](/docs/guides/platform/backups#point-in-time-recovery). This is safer and has less impact on your database performance during maintainance windows. +- As your database to grows, we strongly recommend moving to [Point-in-Time Recovery](/docs/guides/platform/backups#point-in-time-recovery). This is safer and has less impact on your database performance during maintenance windows. Resources: From 3683c30aba99196508d13a187cd85061f92bdf84 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Wed, 17 May 2023 22:30:00 +0200 Subject: [PATCH 9/9] Update apps/docs/pages/guides/platform/maturity-model.mdx --- apps/docs/pages/guides/platform/maturity-model.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/docs/pages/guides/platform/maturity-model.mdx b/apps/docs/pages/guides/platform/maturity-model.mdx index 7c65fbfef7c..8bd38da5cf7 100644 --- a/apps/docs/pages/guides/platform/maturity-model.mdx +++ b/apps/docs/pages/guides/platform/maturity-model.mdx @@ -6,7 +6,7 @@ export const meta = { description: 'Growing with your application.', } -Supabase is great for building something very fast _and_ for scaling up. Keep in mind however, that as your application and team grows, the practices you use for managing an application in production should not be the same as the practices you used for prototyping. +Supabase is great for building something very fast _and_ for scaling up. However, it's important to note that as your application matures and your team expands, the practices you use for managing an application in production should not be the same as the practices you used for prototyping. ## Prototyping