@@ -450,7 +448,3 @@ More examples can be seen in the [Extension's GitHub page](https://github.com/su
- Source code: [github.com/supabase/pg_net](https://github.com/supabase/pg_net/)
- Official Docs: [github.com/supabase/pg_net](https://github.com/supabase/pg_net/)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/pg_plan_filter.mdx b/apps/docs/content/guides/database/extensions/pg_plan_filter.mdx
similarity index 89%
rename from apps/docs/pages/guides/database/extensions/pg_plan_filter.mdx
rename to apps/docs/content/guides/database/extensions/pg_plan_filter.mdx
index 2d0a4c8354c..9bc6095b4d2 100644
--- a/apps/docs/pages/guides/database/extensions/pg_plan_filter.mdx
+++ b/apps/docs/content/guides/database/extensions/pg_plan_filter.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'pg_plan_filter',
- title: 'pg_plan_filter: Restrict Total Cost',
- description: 'Block queries over a total cost limit',
-}
+---
+id: 'pg_plan_filter'
+title: 'pg_plan_filter: Restrict Total Cost'
+description: 'Block queries over a total cost limit'
+---
[pg_plan_filter](https://github.com/pgexperts/pg_plan_filter) is PostgreSQL extension to block execution of statements where query planner's estimate of the total cost exceeds a threshold. This is intended to give database administrators a way to restrict the contribution an individual query has on database load.
@@ -91,7 +89,3 @@ HINT: The plan for your query shows that it would probably have an excessive ru
## Resources
- Official [pg_plan_filter documentation](https://github.com/pgexperts/pg_plan_filter)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/pg_stat_monitor.mdx b/apps/docs/content/guides/database/extensions/pg_stat_monitor.mdx
similarity index 93%
rename from apps/docs/pages/guides/database/extensions/pg_stat_monitor.mdx
rename to apps/docs/content/guides/database/extensions/pg_stat_monitor.mdx
index 49c36649b73..843a7332e8e 100644
--- a/apps/docs/pages/guides/database/extensions/pg_stat_monitor.mdx
+++ b/apps/docs/content/guides/database/extensions/pg_stat_monitor.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'pg_stat_monitor',
- title: 'pg_stat_monitor: Query Performance Monitoring',
- description: 'Query performance monitoring for PostgreSQL',
-}
+---
+id: 'pg_stat_monitor'
+title: 'pg_stat_monitor: Query Performance Monitoring'
+description: 'Query performance monitoring for PostgreSQL'
+---
[pg_stat_monitor](https://github.com/percona/pg_stat_monitor) is query performance monitoring tool that provides query execution statistics in a SQL view named `pg_stat_monitor`. It tracks a superset of statistics available in [`pg_stat_statements`](https://www.postgresql.org/docs/current/pgstatstatements.html). Some of the most useful features are:
@@ -84,7 +82,3 @@ A full list of statistics is available in the [pg_stat_monitor docs](https://doc
## Resources
- Official [`pg_stat_monitor` documentation](https://github.com/percona/pg_stat_monitor)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/pg_stat_statements.mdx b/apps/docs/content/guides/database/extensions/pg_stat_statements.mdx
similarity index 91%
rename from apps/docs/pages/guides/database/extensions/pg_stat_statements.mdx
rename to apps/docs/content/guides/database/extensions/pg_stat_statements.mdx
index 4220dec05bd..7c724c3199d 100644
--- a/apps/docs/pages/guides/database/extensions/pg_stat_statements.mdx
+++ b/apps/docs/content/guides/database/extensions/pg_stat_statements.mdx
@@ -1,11 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'pg_stat_statements',
- title: 'pg_stat_statements: Query Performance Monitoring',
- description:
- 'Track planning and execution statistics of all SQL statements executed on the database.',
-}
+---
+id: 'pg_stat_statements'
+title: 'pg_stat_statements: Query Performance Monitoring'
+description: 'Track planning and execution statistics of all SQL statements executed on the database.'
+---
`pg_stat_statements` is a database extension that exposes a view, of the same name, to track statistics about SQL statements executed on the database. The following table shows some of the available statistics and metadata:
@@ -88,7 +85,3 @@ From the results, we can make an informed decision about which queries to optimi
## Resources
- Official [pg_stat_statements documentation](https://www.postgresql.org/docs/current/pgstatstatements.html)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/pgaudit.mdx b/apps/docs/content/guides/database/extensions/pgaudit.mdx
similarity index 90%
rename from apps/docs/pages/guides/database/extensions/pgaudit.mdx
rename to apps/docs/content/guides/database/extensions/pgaudit.mdx
index ef686cc3020..5229ffb0ee9 100644
--- a/apps/docs/pages/guides/database/extensions/pgaudit.mdx
+++ b/apps/docs/content/guides/database/extensions/pgaudit.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'pgaudit',
- title: 'PGAudit: Postgres Auditing',
- description: 'Session and object auditing via PostgreSQL standard logging',
-}
+---
+id: 'pgaudit'
+title: 'PGAudit: Postgres Auditing'
+description: 'Session and object auditing via PostgreSQL standard logging'
+---
[PGAudit](https://www.pgaudit.org) is a PostgreSQL extension for logging session and object auditing over the standard PostgreSQL logging utility.
@@ -108,7 +106,3 @@ Note that the insert statement is not logged because we did not include the `wri
## Resources
- Official [`PGAudit` documentation](https://www.pgaudit.org)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/pgjwt.mdx b/apps/docs/content/guides/database/extensions/pgjwt.mdx
similarity index 92%
rename from apps/docs/pages/guides/database/extensions/pgjwt.mdx
rename to apps/docs/content/guides/database/extensions/pgjwt.mdx
index e4d5b7b3f88..3b4fcc23aca 100644
--- a/apps/docs/pages/guides/database/extensions/pgjwt.mdx
+++ b/apps/docs/content/guides/database/extensions/pgjwt.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'pgjwt',
- title: 'pgjwt: JSON Web Tokens',
- description: 'Encode and decode JWTs in PostgreSQL',
-}
+---
+id: 'pgjwt'
+title: 'pgjwt: JSON Web Tokens'
+description: 'Encode and decode JWTs in PostgreSQL'
+---
The [pgjwt](https://github.com/michelp/pgjwt) (PostgreSQL JSON Web Token) extension allows you to create and parse [JSON Web Tokens (JWTs)](https://en.wikipedia.org/wiki/JSON_Web_Token) within a PostgreSQL database. JWTs are commonly used for authentication and authorization in web applications and services.
@@ -108,7 +106,3 @@ Which returns the decoded contents and some associated metadata.
## Resources
- Official [`pgjwt` documentation](https://github.com/michelp/pgjwt)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/pgroonga.mdx b/apps/docs/content/guides/database/extensions/pgroonga.mdx
similarity index 93%
rename from apps/docs/pages/guides/database/extensions/pgroonga.mdx
rename to apps/docs/content/guides/database/extensions/pgroonga.mdx
index 502e94ab7d9..dbdbbe423b5 100644
--- a/apps/docs/pages/guides/database/extensions/pgroonga.mdx
+++ b/apps/docs/content/guides/database/extensions/pgroonga.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'pgroonga',
- title: 'PGroonga: Multilingual Full Text Search',
- description: 'Full Text Search for multiple languages in PostgreSQL',
- tocVideo: 'Mmmv9g_MiBA',
-}
+---
+id: 'pgroonga'
+title: 'PGroonga: Multilingual Full Text Search'
+description: 'Full Text Search for multiple languages in PostgreSQL'
+tocVideo: 'Mmmv9g_MiBA'
+---
`PGroonga` is a PostgreSQL extension adding a full text search indexing method based on [Groonga](https://groonga.org). While native PostgreSQL supports full text indexing, it is limited to alphabet and digit based languages. `PGroonga` offers a wider range of character support making it viable for a superset of languages supported by PostgreSQL including Japanese, Chinese, etc.
@@ -182,7 +180,3 @@ id | content
## Resources
- Official [PGroonga documentation](https://pgroonga.github.io/tutorial/)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/pgrouting.mdx b/apps/docs/content/guides/database/extensions/pgrouting.mdx
similarity index 94%
rename from apps/docs/pages/guides/database/extensions/pgrouting.mdx
rename to apps/docs/content/guides/database/extensions/pgrouting.mdx
index 04f191c43f9..c257613decc 100644
--- a/apps/docs/pages/guides/database/extensions/pgrouting.mdx
+++ b/apps/docs/content/guides/database/extensions/pgrouting.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'pgrouting',
- title: 'pgrouting: Geospatial Routing',
- description: 'Extends PostGIS with Geospatial Routing',
-}
+---
+id: 'pgrouting'
+title: 'pgrouting: Geospatial Routing'
+description: 'Extends PostGIS with Geospatial Routing'
+---
[pgRouting](http://pgrouting.org) is PostgreSQL and [PostGIS](http://postgis.net) extension adding geospatial routing functionality.
@@ -154,7 +152,3 @@ from
## Resources
- Official [`pgRouting` documentation](https://docs.pgrouting.org/latest/en/index.html)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/pgsodium.mdx b/apps/docs/content/guides/database/extensions/pgsodium.mdx
similarity index 94%
rename from apps/docs/pages/guides/database/extensions/pgsodium.mdx
rename to apps/docs/content/guides/database/extensions/pgsodium.mdx
index 8515e886ef5..4c68884799d 100644
--- a/apps/docs/pages/guides/database/extensions/pgsodium.mdx
+++ b/apps/docs/content/guides/database/extensions/pgsodium.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'pgsodium',
- title: 'pgsodium: Encryption Features',
- description: 'Encryption library for PostgreSQL',
-}
+---
+id: 'pgsodium'
+title: 'pgsodium: Encryption Features'
+description: 'Encryption library for PostgreSQL'
+---
[pgsodium](https://github.com/michelp/pgsodium) is a PostgreSQL extension which provides SQL access to [libsodium's](https://doc.libsodium.org/) high-level cryptographic algorithms.
@@ -96,7 +94,3 @@ drop extension if exists pgsodium;
## Resources
- Official [`pgsodium` documentation](https://github.com/michelp/pgsodium)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/pgtap.mdx b/apps/docs/content/guides/database/extensions/pgtap.mdx
similarity index 94%
rename from apps/docs/pages/guides/database/extensions/pgtap.mdx
rename to apps/docs/content/guides/database/extensions/pgtap.mdx
index c8cc7e75249..8b00e4c1bbb 100644
--- a/apps/docs/pages/guides/database/extensions/pgtap.mdx
+++ b/apps/docs/content/guides/database/extensions/pgtap.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'pgtap',
- title: 'pgTAP: Unit Testing',
- description: 'Unit testing in PostgreSQL.',
-}
+---
+id: 'pgtap'
+title: 'pgTAP: Unit Testing'
+description: 'Unit testing in PostgreSQL.'
+---
`pgTAP` is a unit testing extension for PostgreSQL.
@@ -156,7 +154,3 @@ API:
## Resources
- Official [`pgTAP` documentation](https://pgtap.org/)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/pgvector.mdx b/apps/docs/content/guides/database/extensions/pgvector.mdx
similarity index 89%
rename from apps/docs/pages/guides/database/extensions/pgvector.mdx
rename to apps/docs/content/guides/database/extensions/pgvector.mdx
index d3fd133956e..5495f587a07 100644
--- a/apps/docs/pages/guides/database/extensions/pgvector.mdx
+++ b/apps/docs/content/guides/database/extensions/pgvector.mdx
@@ -1,11 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'pgvector',
- title: 'pgvector: Embeddings and vector similarity',
- description:
- 'pgvector: a PostgreSQL extension for storing embeddings and performing vector similarity search.',
-}
+---
+id: 'pgvector'
+title: 'pgvector: Embeddings and vector similarity'
+description: 'pgvector: a PostgreSQL extension for storing embeddings and performing vector similarity search.'
+---
[pgvector](https://github.com/pgvector/pgvector/) is a PostgreSQL extension for vector similarity search. It can also be used for storing [embeddings](https://supabase.com/blog/openai-embeddings-postgres-vector).
@@ -105,7 +102,3 @@ const { data, error } = await supabase.from('posts').insert({
- [Storing OpenAI embeddings in Postgres with pgvector](https://supabase.com/blog/openai-embeddings-postgres-vector)
- [A ChatGPT Plugins Template built with Supabase Edge Runtime](https://supabase.com/blog/building-chatgpt-plugins-template)
- [Template for building your own custom ChatGPT style doc search](https://github.com/supabase-community/nextjs-openai-doc-search)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/plpgsql_check.mdx b/apps/docs/content/guides/database/extensions/plpgsql_check.mdx
similarity index 90%
rename from apps/docs/pages/guides/database/extensions/plpgsql_check.mdx
rename to apps/docs/content/guides/database/extensions/plpgsql_check.mdx
index e0f87e3f6fa..9f8517ded91 100644
--- a/apps/docs/pages/guides/database/extensions/plpgsql_check.mdx
+++ b/apps/docs/content/guides/database/extensions/plpgsql_check.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'plpgsql_check',
- title: 'plpgsql_check: PL/pgSQL Linter',
- description: 'Lint PL/pgSQL code',
-}
+---
+id: 'plpgsql_check'
+title: 'plpgsql_check: PL/pgSQL Linter'
+description: 'Lint PL/pgSQL code'
+---
[plpgsql_check](https://github.com/okbob/plpgsql_check) is a PostgreSQL extension that lints plpgsql for syntax, semantic and other related issues. The tool helps developers to identify and correct errors before executing the code. plpgsql_check is most useful for developers who are working with large or complex SQL codebases, as it can help identify and resolve issues early in the development cycle.
@@ -100,7 +98,3 @@ select plpgsql_check_function('public.some_func()');
## Resources
- Official [`plpgsql_check` documentation](https://github.com/okbob/plpgsql_check)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/plv8.mdx b/apps/docs/content/guides/database/extensions/plv8.mdx
similarity index 92%
rename from apps/docs/pages/guides/database/extensions/plv8.mdx
rename to apps/docs/content/guides/database/extensions/plv8.mdx
index 3ade38a3688..30ac72e01da 100644
--- a/apps/docs/pages/guides/database/extensions/plv8.mdx
+++ b/apps/docs/content/guides/database/extensions/plv8.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'plv8',
- title: 'plv8: JavaScript Language',
- description: 'JavaScript language for PostgreSQL.',
-}
+---
+id: 'plv8'
+title: 'plv8: JavaScript Language'
+description: 'JavaScript language for PostgreSQL.'
+---
The `plv8` extension allows you use JavaScript within Postgres.
@@ -150,7 +148,3 @@ select * from get_messages();
- Official [`plv8` documentation](https://plv8.github.io/)
- [plv8 GitHub Repository](https://github.com/plv8/plv8)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/postgis.mdx b/apps/docs/content/guides/database/extensions/postgis.mdx
similarity index 97%
rename from apps/docs/pages/guides/database/extensions/postgis.mdx
rename to apps/docs/content/guides/database/extensions/postgis.mdx
index c85e0c8f4dd..06c51beb308 100644
--- a/apps/docs/pages/guides/database/extensions/postgis.mdx
+++ b/apps/docs/content/guides/database/extensions/postgis.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'postgis',
- title: 'PostGIS: Geo queries',
- description: 'Working with geo-spatial data in Postgres',
- tocVideo: 'agFsGDJxjwA',
-}
+---
+id: 'postgis'
+title: 'PostGIS: Geo queries'
+description: 'Working with geo-spatial data in Postgres'
+tocVideo: 'agFsGDJxjwA'
+---
[PostGIS](https://postgis.net/) is a Postgres extension that allows you to interact with Geo data within Postgres. You can sort your data by geographic location, get data within certain geographic boundaries, and do much more with it.
@@ -351,7 +349,3 @@ val data = supabase.postgrest.rpc(
## Resources
- [Official PostGIS documentation](https://postgis.net/documentation/)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/rum.mdx b/apps/docs/content/guides/database/extensions/rum.mdx
similarity index 92%
rename from apps/docs/pages/guides/database/extensions/rum.mdx
rename to apps/docs/content/guides/database/extensions/rum.mdx
index e1ebfeff549..e6fbe850a61 100644
--- a/apps/docs/pages/guides/database/extensions/rum.mdx
+++ b/apps/docs/content/guides/database/extensions/rum.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'rum',
- title: 'RUM: improved inverted index for full-text search based on GIN index',
- description: 'A GIN-like index with additional tree-organized data for each index entry',
-}
+---
+id: 'rum'
+title: 'RUM: improved inverted index for full-text search based on GIN index'
+description: 'A GIN-like index with additional tree-organized data for each index entry'
+---
[RUM](https://github.com/postgrespro/rum) is an extension which adds a RUM index to Postgresql.
@@ -158,7 +156,3 @@ operator by attached column.
## Resources
- [Official RUM documentation](https://github.com/postgrespro/rum)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/timescaledb.mdx b/apps/docs/content/guides/database/extensions/timescaledb.mdx
similarity index 91%
rename from apps/docs/pages/guides/database/extensions/timescaledb.mdx
rename to apps/docs/content/guides/database/extensions/timescaledb.mdx
index cc117e86469..d3d22ab3270 100644
--- a/apps/docs/pages/guides/database/extensions/timescaledb.mdx
+++ b/apps/docs/content/guides/database/extensions/timescaledb.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'timescaledb',
- title: 'timescaledb: Time-Series data',
- description: 'Scalable time-series data storage and analysis',
-}
+---
+id: 'timescaledb'
+title: 'timescaledb: Time-Series data'
+description: 'Scalable time-series data storage and analysis'
+---
[timescaledb](https://docs.timescale.com/timescaledb/latest/) is a PostgreSQL extension designed for improved handling of time-series data. It provides a scalable, high-performance solution for storing and querying time-series data on top of a standard PostgreSQL database.
@@ -94,7 +92,3 @@ group by
## Resources
- Official [`timescaledb` documentation](https://docs.timescale.com/timescaledb/latest/)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/uuid-ossp.mdx b/apps/docs/content/guides/database/extensions/uuid-ossp.mdx
similarity index 89%
rename from apps/docs/pages/guides/database/extensions/uuid-ossp.mdx
rename to apps/docs/content/guides/database/extensions/uuid-ossp.mdx
index 30e18a67355..d6085dfde65 100644
--- a/apps/docs/pages/guides/database/extensions/uuid-ossp.mdx
+++ b/apps/docs/content/guides/database/extensions/uuid-ossp.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'uuid-ossp',
- title: 'uuid-ossp: Unique Identifiers',
- description: 'A UUID generator for PostgreSQL.',
-}
+---
+id: 'uuid-ossp'
+title: 'uuid-ossp: Unique Identifiers'
+description: 'A UUID generator for PostgreSQL.'
+---
The `uuid-ossp` extension can be used to generate a `UUID`.
@@ -96,7 +94,3 @@ create table contacts (
- [Choosing a Postgres Primary Key](https://supabase.com/blog/choosing-a-postgres-primary-key)
- [The Basics Of PostgreSQL `UUID` Data Type](https://www.postgresqltutorial.com/postgresql-uuid/)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/extensions/wrappers/overview.mdx b/apps/docs/content/guides/database/extensions/wrappers/overview.mdx
similarity index 93%
rename from apps/docs/pages/guides/database/extensions/wrappers/overview.mdx
rename to apps/docs/content/guides/database/extensions/wrappers/overview.mdx
index 37476d0ac0c..cf78407db38 100644
--- a/apps/docs/pages/guides/database/extensions/wrappers/overview.mdx
+++ b/apps/docs/content/guides/database/extensions/wrappers/overview.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'foreign-data-wrappers',
- title: 'Foreign Data Wrappers',
- description: 'Connecting to external systems using Postgres Foreign Data Wrappers.',
- subtitle: 'Connecting to external systems using Postgres Foreign Data Wrappers.',
-}
+---
+id: 'foreign-data-wrappers'
+title: 'Foreign Data Wrappers'
+description: 'Connecting to external systems using Postgres Foreign Data Wrappers.'
+subtitle: 'Connecting to external systems using Postgres Foreign Data Wrappers.'
+---
Foreign Data Wrappers (FDW) are a core feature of Postgres that allow you to access and query data stored in external data sources as if they were native Postgres tables.
@@ -120,7 +118,3 @@ If you want to expose any of the columns to your public API, create a [View](htt
## Resources
- Official [`supabase/wrappers` documentation](https://supabase.github.io/wrappers/)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/full-text-search.mdx b/apps/docs/content/guides/database/full-text-search.mdx
similarity index 97%
rename from apps/docs/pages/guides/database/full-text-search.mdx
rename to apps/docs/content/guides/database/full-text-search.mdx
index a4aebb2c62b..c8511c962ab 100644
--- a/apps/docs/pages/guides/database/full-text-search.mdx
+++ b/apps/docs/content/guides/database/full-text-search.mdx
@@ -1,12 +1,10 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'full-text-search',
- title: 'Full Text Search',
- description: 'How to use full text search in PostgreSQL.',
- subtitle: 'How to use full text search in PostgreSQL.',
- tocVideo: 'b-mgca_2Oe4',
-}
+---
+id: 'full-text-search'
+title: 'Full Text Search'
+description: 'How to use full text search in PostgreSQL.'
+subtitle: 'How to use full text search in PostgreSQL.'
+tocVideo: 'b-mgca_2Oe4'
+---
Postgres has built-in functions to handle `Full Text Search` queries. This is like a "search engine" within Postgres.
@@ -763,7 +761,3 @@ val data = supabase.from("books").select {
## Resources
- [PostgreSQL: Text Search Functions and Operators](https://www.postgresql.org/docs/12/functions-textsearch.html)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/functions.mdx b/apps/docs/content/guides/database/functions.mdx
similarity index 96%
rename from apps/docs/pages/guides/database/functions.mdx
rename to apps/docs/content/guides/database/functions.mdx
index c6fcf35e80f..13a902b532e 100644
--- a/apps/docs/pages/guides/database/functions.mdx
+++ b/apps/docs/content/guides/database/functions.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'functions',
- title: 'Database Functions',
- description: 'Creating and using Postgres functions.',
- video: 'https://www.youtube.com/v/MJZCCpCYEqk',
-}
+---
+id: 'functions'
+title: 'Database Functions'
+description: 'Creating and using Postgres functions.'
+video: 'https://www.youtube.com/v/MJZCCpCYEqk'
+---
Postgres has built-in support for [SQL functions](https://www.postgresql.org/docs/current/sql-createfunction.html).
These functions live inside your database, and they can be [used with the API](../../reference/javascript/rpc).
@@ -379,7 +377,3 @@ GRANT EXECUTE ON FUNCTION hello_world TO service_role;
allowFullScreen
>
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/import-data.mdx b/apps/docs/content/guides/database/import-data.mdx
similarity index 96%
rename from apps/docs/pages/guides/database/import-data.mdx
rename to apps/docs/content/guides/database/import-data.mdx
index cbfcad64d4a..b0e42c710d7 100644
--- a/apps/docs/pages/guides/database/import-data.mdx
+++ b/apps/docs/content/guides/database/import-data.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'database',
- title: 'Import data into Supabase',
-}
+---
+id: 'database'
+title: 'Import data into Supabase'
+---
You can import data into Supabase in multiple ways. The best method depends on your data size and app requirements.
@@ -129,7 +127,3 @@ create index index_name on table_name (column_name);
```
Read more about [Managing Indexes in PostgreSQL](/docs/guides/database/postgres/indexes).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/inspect.mdx b/apps/docs/content/guides/database/inspect.mdx
similarity index 93%
rename from apps/docs/pages/guides/database/inspect.mdx
rename to apps/docs/content/guides/database/inspect.mdx
index 296e5a0de5d..4552a1697e5 100644
--- a/apps/docs/pages/guides/database/inspect.mdx
+++ b/apps/docs/content/guides/database/inspect.mdx
@@ -1,11 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'json',
- title: 'Debugging and monitoring',
- description:
- 'Inspecting your Postgres database for common issues around disk, query performance, index, locks, and more using the terminal.',
-}
+---
+id: 'json'
+title: 'Debugging and monitoring'
+description: 'Inspecting your Postgres database for common issues around disk, query performance, index, locks, and more using the terminal.'
+---
The Supabase CLI comes with a range of tools to help inspect your Postgres instances for potential issues. The CLI gets the information from Postgres internals. Therefore, most tools provided are compatible with any Postgres databases regardless if they are a Supabase project or not.
@@ -103,7 +100,3 @@ Learn more about pg_stats [here](https://supabase.com/docs/guides/database/exten
## Acknowledgements
Supabase CLI's inspect commands are heavily inspired by the pg-extras tools.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/joins-and-nesting.mdx b/apps/docs/content/guides/database/joins-and-nesting.mdx
similarity index 93%
rename from apps/docs/pages/guides/database/joins-and-nesting.mdx
rename to apps/docs/content/guides/database/joins-and-nesting.mdx
index 9848d66b6e9..f19646bcd9a 100644
--- a/apps/docs/pages/guides/database/joins-and-nesting.mdx
+++ b/apps/docs/content/guides/database/joins-and-nesting.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'joins-and-nested-tables',
- title: 'Querying Joins and Nested tables',
- description: 'The Data APIs automatically detect relationships between Postgres tables.',
-}
+---
+id: 'joins-and-nested-tables'
+title: 'Querying Joins and Nested tables'
+description: 'The Data APIs automatically detect relationships between Postgres tables.'
+---
The data APIs automatically detect relationships between Postgres tables. Since Postgres is a relational database, this is a very common scenario.
@@ -262,7 +260,3 @@ GET https://[REF].supabase.co/rest/v1/teams?select=id,team_name,users(id,name)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/json.mdx b/apps/docs/content/guides/database/json.mdx
similarity index 96%
rename from apps/docs/pages/guides/database/json.mdx
rename to apps/docs/content/guides/database/json.mdx
index 5b9aba8d385..6f2cd0c1771 100644
--- a/apps/docs/pages/guides/database/json.mdx
+++ b/apps/docs/content/guides/database/json.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'json',
- title: 'Managing JSON and unstructured data',
- description: 'Using the JSON data type in Postgres.',
- subtitle: 'Using the JSON data type in Postgres.',
-}
+---
+id: 'json'
+title: 'Managing JSON and unstructured data'
+description: 'Using the JSON data type in Postgres.'
+subtitle: 'Using the JSON data type in Postgres.'
+---
Postgres supports storing and querying unstructured data.
@@ -312,7 +310,3 @@ add constraint check_metadata check (
- [Postgres: JSON Functions and Operators](https://www.postgresql.org/docs/current/functions-json.html)
- [Postgres JSON types](https://www.postgresql.org/docs/current/datatype-json.html)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/managing-passwords.mdx b/apps/docs/content/guides/database/managing-passwords.mdx
similarity index 80%
rename from apps/docs/pages/guides/database/managing-passwords.mdx
rename to apps/docs/content/guides/database/managing-passwords.mdx
index 52bda4776ae..c754bdd1a81 100644
--- a/apps/docs/pages/guides/database/managing-passwords.mdx
+++ b/apps/docs/content/guides/database/managing-passwords.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'managing-passwords',
- title: 'Passwords',
- description: 'How to change your PostgreSQL database password.',
-}
+---
+id: 'managing-passwords'
+title: 'Passwords'
+description: 'How to change your PostgreSQL database password.'
+---
Your Postgres database is the core of your Supabase project, so it's important that it has a strong, secure password at all times.
@@ -27,7 +25,3 @@ It's absolutely critical that you store your customers' data safely. Here are so
## Resources
- [PostgreSQL `ALTER USER` Documentation](https://www.postgresql.org/docs/12/sql-alteruser.html)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/managing-timezones.mdx b/apps/docs/content/guides/database/managing-timezones.mdx
similarity index 82%
rename from apps/docs/pages/guides/database/managing-timezones.mdx
rename to apps/docs/content/guides/database/managing-timezones.mdx
index f9aee650b8d..2b3ab247ae6 100644
--- a/apps/docs/pages/guides/database/managing-timezones.mdx
+++ b/apps/docs/content/guides/database/managing-timezones.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'managing-timezones',
- title: 'Timezones',
- slug: 'managing-timezones',
- description: 'How to change your database timezone.',
-}
+---
+id: 'managing-timezones'
+title: 'Timezones'
+slug: 'managing-timezones'
+description: 'How to change your database timezone.'
+---
Every Supabase database is set to UTC timezone by default. We strongly recommend keeping it this way, even if your users are in a different location.
This is because it makes it much easier to calculate differences between timezones if you adopt the mental model that "everything in my database is in UTC time".
@@ -77,7 +75,3 @@ where name ilike '%york%';
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/overview.mdx b/apps/docs/content/guides/database/overview.mdx
similarity index 91%
rename from apps/docs/pages/guides/database/overview.mdx
rename to apps/docs/content/guides/database/overview.mdx
index cdeaead9c6f..27a077c8577 100644
--- a/apps/docs/pages/guides/database/overview.mdx
+++ b/apps/docs/content/guides/database/overview.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'database',
- title: 'Database',
- description: 'Use Supabase to manage your data.',
- sidebar_label: 'Overview',
-}
+---
+id: 'database'
+title: 'Database'
+description: 'Use Supabase to manage your data.'
+sidebar_label: 'Overview'
+---
Every Supabase project comes with a full [Postgres](https://www.postgresql.org/) database, a free and open source database which is considered one of the world's most stable and advanced databases.
@@ -97,7 +95,3 @@ Read about resetting your database password [here](/docs/guides/database/managin
- Read more about [Postgres](https://www.postgresql.org/about/)
- Sign in: [supabase.com/dashboard](https://supabase.com/dashboard)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/partitions.mdx b/apps/docs/content/guides/database/partitions.mdx
similarity index 96%
rename from apps/docs/pages/guides/database/partitions.mdx
rename to apps/docs/content/guides/database/partitions.mdx
index f109f8a6b97..72467ca0bd5 100644
--- a/apps/docs/pages/guides/database/partitions.mdx
+++ b/apps/docs/content/guides/database/partitions.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'partitions',
- title: 'Partitioning tables',
- description: 'Organizing tables into partitions in Postgres.',
-}
+---
+id: 'partitions'
+title: 'Partitioning tables'
+description: 'Organizing tables into partitions in Postgres.'
+---
Table partitioning is a technique that allows you to divide a large table into smaller, more manageable parts called “partitions”.
@@ -191,7 +189,3 @@ create table products_two
## Other tools
There are several other tools available for Postgres partitioning, most notably [pg_partman](https://github.com/pgpartman/pg_partman). Native partitioning was introduced in Postgres 10 and is generally thought to have better performance.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/postgres/cascade-deletes.mdx b/apps/docs/content/guides/database/postgres/cascade-deletes.mdx
similarity index 95%
rename from apps/docs/pages/guides/database/postgres/cascade-deletes.mdx
rename to apps/docs/content/guides/database/postgres/cascade-deletes.mdx
index 8093a2083f1..8f3b223a120 100644
--- a/apps/docs/pages/guides/database/postgres/cascade-deletes.mdx
+++ b/apps/docs/content/guides/database/postgres/cascade-deletes.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Cascade Deletes',
- description: 'Understand the types of foreign key constraint deletes',
- footerHelpType: 'postgres',
-}
+---
+title: 'Cascade Deletes'
+description: 'Understand the types of foreign key constraint deletes'
+footerHelpType: 'postgres'
+---
There are 5 options for foreign key constraint deletes:
@@ -189,7 +187,3 @@ postgres=# select * from child;
```
The `mother` deletion took precedence over the `father`, and so William was deleted. After William was deleted, there was no reference to “Charles” and so he was free to be deleted, even though previously he wasn't (without `INITIALLY DEFERRED`).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/postgres/configuration.mdx b/apps/docs/content/guides/database/postgres/configuration.mdx
similarity index 87%
rename from apps/docs/pages/guides/database/postgres/configuration.mdx
rename to apps/docs/content/guides/database/postgres/configuration.mdx
index 18866df3eec..f9177a0a251 100644
--- a/apps/docs/pages/guides/database/postgres/configuration.mdx
+++ b/apps/docs/content/guides/database/postgres/configuration.mdx
@@ -1,12 +1,10 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'postgres-configuration',
- title: 'Database configuration',
- slug: 'postgres-configuration',
- description: 'Updating the default configuration for your Postgres database.',
- subtitle: 'Updating the default configuration for your Postgres database.',
-}
+---
+id: 'postgres-configuration'
+title: 'Database configuration'
+slug: 'postgres-configuration'
+description: 'Updating the default configuration for your Postgres database.'
+subtitle: 'Updating the default configuration for your Postgres database.'
+---
Postgres provides a set of sensible defaults for you database size. In some cases, these defaults can be updated. We do not recommend changing these defaults unless you know what you're doing.
@@ -107,7 +105,3 @@ where name ilike '%york%';
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/postgres/dropping-all-tables-in-schema.mdx b/apps/docs/content/guides/database/postgres/dropping-all-tables-in-schema.mdx
similarity index 74%
rename from apps/docs/pages/guides/database/postgres/dropping-all-tables-in-schema.mdx
rename to apps/docs/content/guides/database/postgres/dropping-all-tables-in-schema.mdx
index 734c7b132e0..85fc606a870 100644
--- a/apps/docs/pages/guides/database/postgres/dropping-all-tables-in-schema.mdx
+++ b/apps/docs/content/guides/database/postgres/dropping-all-tables-in-schema.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Drop all tables in a PostgreSQL schema',
- description: 'Useful snippet for deleting all tables in a given schema',
- footerHelpType: 'postgres',
-}
+---
+title: 'Drop all tables in a PostgreSQL schema'
+description: 'Useful snippet for deleting all tables in a given schema'
+footerHelpType: 'postgres'
+---
Execute the following query to drop all tables in a given schema.
Replace `my-schema-name` with the name of your schema. In Supabase, the default schema is `public`.
@@ -28,7 +26,3 @@ end $$;
This query works by listing out all the tables in the given schema and then executing a `drop table` for each (hence the `for... loop`).
You can run this query using the [SQL Editor](https://supabase.com/dashboard/project/_/sql) in the Supabase Dashboard, or via `psql` if you're [connecting directly to the database](/docs/guides/database/connecting-to-postgres#direct-connections).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/postgres/enums.mdx b/apps/docs/content/guides/database/postgres/enums.mdx
similarity index 91%
rename from apps/docs/pages/guides/database/postgres/enums.mdx
rename to apps/docs/content/guides/database/postgres/enums.mdx
index f1165aa2bd9..6fbb8d4b602 100644
--- a/apps/docs/pages/guides/database/postgres/enums.mdx
+++ b/apps/docs/content/guides/database/postgres/enums.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'enums',
- title: 'Managing Enums in Postgres',
- description: 'Define a strict set of values that can be used in table and function definitions.',
-}
+---
+id: 'enums'
+title: 'Managing Enums in Postgres'
+description: 'Define a strict set of values that can be used in table and function definitions.'
+---
Enums in Postgres are a custom data type. They allow you to define a set of values (or labels) that a column can hold. They are useful when you have a fixed set of possible values for a column.
@@ -126,7 +124,3 @@ select enum_range(null::mood);
## Resources
- Official Postgres Docs: [Enumerated Types](https://www.postgresql.org/docs/current/datatype-enum.html)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/postgres/first-row-in-group.mdx b/apps/docs/content/guides/database/postgres/first-row-in-group.mdx
similarity index 74%
rename from apps/docs/pages/guides/database/postgres/first-row-in-group.mdx
rename to apps/docs/content/guides/database/postgres/first-row-in-group.mdx
index 362f987d34c..7610c1944bd 100644
--- a/apps/docs/pages/guides/database/postgres/first-row-in-group.mdx
+++ b/apps/docs/content/guides/database/postgres/first-row-in-group.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Select first row for each group in PostgreSQL',
- description: 'PostgreSQL snippet for grabbing the first row in each distinct group by group',
- footerHelpType: 'postgres',
-}
+---
+title: 'Select first row for each group in PostgreSQL'
+description: 'PostgreSQL snippet for grabbing the first row in each distinct group by group'
+footerHelpType: 'postgres'
+---
Given a table `seasons`:
@@ -46,7 +44,3 @@ The important bits here are:
- The `distinct` keyword that tells Postgres to only return a single row per team.
This query can also be executed via `psql` or any other query editor if you prefer to [connect directly to the database](/docs/guides/database/connecting-to-postgres#direct-connections).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/postgres/indexes.mdx b/apps/docs/content/guides/database/postgres/indexes.mdx
similarity index 92%
rename from apps/docs/pages/guides/database/postgres/indexes.mdx
rename to apps/docs/content/guides/database/postgres/indexes.mdx
index 33087ac1a8a..12071e0c64c 100644
--- a/apps/docs/pages/guides/database/postgres/indexes.mdx
+++ b/apps/docs/content/guides/database/postgres/indexes.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Managing Indexes in PostgreSQL',
- description: 'Improve query performance using various index types in Postgres',
- footerHelpType: 'postgres',
-}
+---
+title: 'Managing Indexes in PostgreSQL'
+description: 'Improve query performance using various index types in Postgres'
+footerHelpType: 'postgres'
+---
An index makes your Postgres queries faster. The index is like a "table of contents" for your data - a reference list which allows queries to quickly locate a row in a given table without needing to scan the entire table (which in large tables can take a long time).
@@ -106,7 +104,3 @@ reindex table concurrently persons;
```
Take note that `reindex` can be used inside a transaction, but `reindex [index/table] concurrently` cannot.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/postgres/roles-superuser.mdx b/apps/docs/content/guides/database/postgres/roles-superuser.mdx
similarity index 71%
rename from apps/docs/pages/guides/database/postgres/roles-superuser.mdx
rename to apps/docs/content/guides/database/postgres/roles-superuser.mdx
index 1ec3f5064b7..d66772c4237 100644
--- a/apps/docs/pages/guides/database/postgres/roles-superuser.mdx
+++ b/apps/docs/content/guides/database/postgres/roles-superuser.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'roles',
- title: 'Roles, superuser access and unsupported operations',
- slug: 'roles',
-}
+---
+id: 'roles'
+title: 'Roles, superuser access and unsupported operations'
+slug: 'roles'
+---
Supabase provides the default `postgres` role to all instances deployed. Superuser access is not given as it allows destructive operations to be performed on the database.
@@ -19,7 +17,3 @@ However, this does mean that some operations, that typically require `superuser`
- `CREATE EVENT TRIGGER`
- `COPY ... FROM PROGRAM`
- `ALTER USER ... WITH SUPERUSER`
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/postgres/roles.mdx b/apps/docs/content/guides/database/postgres/roles.mdx
similarity index 92%
rename from apps/docs/pages/guides/database/postgres/roles.mdx
rename to apps/docs/content/guides/database/postgres/roles.mdx
index a04ce85a9cc..257d777cd2d 100644
--- a/apps/docs/pages/guides/database/postgres/roles.mdx
+++ b/apps/docs/content/guides/database/postgres/roles.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'postgres-roles',
- title: 'Postgres Roles',
- description: 'Managing access to your Postgres database and configuring permissions.',
- subtitle: 'Managing access to your Postgres database and configuring permissions.',
-}
+---
+id: 'postgres-roles'
+title: 'Postgres Roles'
+description: 'Managing access to your Postgres database and configuring permissions.'
+subtitle: 'Managing access to your Postgres database and configuring permissions.'
+---
Postgres manages database access permissions using the concept of roles. Generally you wouldn't use these roles for your own application - they are mostly for configuring _system access_ to your database. If you want to configure _application access_, then you should use [Row Level Security](/docs/guides/database/postgres/row-level-security).
@@ -124,7 +122,3 @@ Supabase Administrative role for maintaining your database.
- Official Postgres docs: [Database Roles](https://www.postgresql.org/docs/current/database-roles.html)
- Official Postgres docs: [Role Membership](https://www.postgresql.org/docs/current/role-membership.html)
- Official Postgres docs: [Function Permissions](https://www.postgresql.org/docs/current/perm-functions.html)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/postgres/row-level-security.mdx b/apps/docs/content/guides/database/postgres/row-level-security.mdx
similarity index 97%
rename from apps/docs/pages/guides/database/postgres/row-level-security.mdx
rename to apps/docs/content/guides/database/postgres/row-level-security.mdx
index f0f4b265359..286391079de 100644
--- a/apps/docs/pages/guides/database/postgres/row-level-security.mdx
+++ b/apps/docs/content/guides/database/postgres/row-level-security.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'row-level-security',
- title: 'Row Level Security',
- description: 'Secure your data using Postgres Row Level Security.',
- subtitle: 'Secure your data using Postgres Row Level Security.',
-}
+---
+id: 'row-level-security'
+title: 'Row Level Security'
+description: 'Secure your data using Postgres Row Level Security.'
+subtitle: 'Secure your data using Postgres Row Level Security.'
+---
When you need granular authorization rules, nothing beats Postgres's [Row Level Security (RLS)](https://www.postgresql.org/docs/current/ddl-rowsecurity.html).
@@ -382,7 +380,3 @@ This prevents the policy `( auth.uid() = user_id )` from running for any `anon`
| Test | Before (ms) | After (ms) | % Improvement | Change |
| --------------------------------------------------------------------------------------------- | ----------- | ---------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| [test6-To-role](https://github.com/GaryAustin1/RLS-Performance/tree/main/tests/test6-To-role) | 170 | < 0.1 | 99.78% | Before:
No `TO` policy
After:
`TO authenticated` (anon accessing) |
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/postgres/setup-replication-external.mdx b/apps/docs/content/guides/database/postgres/setup-replication-external.mdx
similarity index 77%
rename from apps/docs/pages/guides/database/postgres/setup-replication-external.mdx
rename to apps/docs/content/guides/database/postgres/setup-replication-external.mdx
index 1633f40900b..6847ad4c037 100644
--- a/apps/docs/pages/guides/database/postgres/setup-replication-external.mdx
+++ b/apps/docs/content/guides/database/postgres/setup-replication-external.mdx
@@ -1,12 +1,8 @@
-import { createDecipheriv } from 'crypto'
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Replicate to another Postgres database using Logical Replication',
- description:
- 'Example to setup logical replication using publish-subscribe to a Postgres database outside of Supabase',
- footerHelpType: 'postgres',
-}
+---
+title: 'Replicate to another Postgres database using Logical Replication'
+description: 'Example to setup logical replication using publish-subscribe to a Postgres database outside of Supabase'
+footerHelpType: 'postgres'
+---
For this example, you will need:
@@ -62,7 +58,3 @@ ALTER PUBLICATION example_pub ADD TABLE example_table;
```sql
select * from pg_stat_replication;
```
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/postgres/triggers.mdx b/apps/docs/content/guides/database/postgres/triggers.mdx
similarity index 91%
rename from apps/docs/pages/guides/database/postgres/triggers.mdx
rename to apps/docs/content/guides/database/postgres/triggers.mdx
index 81b2e67d74c..21db2217f59 100644
--- a/apps/docs/pages/guides/database/postgres/triggers.mdx
+++ b/apps/docs/content/guides/database/postgres/triggers.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'postgres-triggers',
- title: 'Postgres Triggers',
- description: 'Automatically execute SQL on table events.',
- subtitle: 'Automatically execute SQL on table events.',
-}
+---
+id: 'postgres-triggers'
+title: 'Postgres Triggers'
+description: 'Automatically execute SQL on table events.'
+subtitle: 'Automatically execute SQL on table events.'
+---
In Postgres, a trigger executes a set of actions automatically on table events such as INSERTs, UPDATEs, DELETEs, or TRUNCATE operations.
@@ -116,7 +114,3 @@ drop trigger "trigger_name" on "table_name";
- Official Postgres Docs: [Triggers](https://www.postgresql.org/docs/current/triggers.html)
- Official Postgres Docs: [Overview of Trigger Behavior](https://www.postgresql.org/docs/current/trigger-definition.html)
- Official Postgres Docs: [CREATE TRIGGER](https://www.postgresql.org/docs/current/sql-createtrigger.html)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/postgres/which-version-of-postgres.mdx b/apps/docs/content/guides/database/postgres/which-version-of-postgres.mdx
similarity index 70%
rename from apps/docs/pages/guides/database/postgres/which-version-of-postgres.mdx
rename to apps/docs/content/guides/database/postgres/which-version-of-postgres.mdx
index 28273954fbe..a4fdee527ee 100644
--- a/apps/docs/pages/guides/database/postgres/which-version-of-postgres.mdx
+++ b/apps/docs/content/guides/database/postgres/which-version-of-postgres.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Print PostgreSQL version',
- description: 'Useful snippet for finding out which version of postgres you are running',
- footerHelpType: 'postgres',
-}
+---
+title: 'Print PostgreSQL version'
+description: 'Useful snippet for finding out which version of postgres you are running'
+footerHelpType: 'postgres'
+---
It's important to know which version of PostgreSQL you are running as each major version has different features and may cause breaking changes. You may also need to update your schema when [upgrading](https://www.postgresql.org/docs/current/pgupgrade.html) or downgrading to a major Postgres version.
@@ -22,7 +20,3 @@ PostgreSQL 15.1 on aarch64-unknown-linux-gnu, compiled by gcc (Ubuntu 10.3.0-1ub
```
This query can also be executed via `psql` or any other query editor if you prefer to [connect directly to the database](/docs/guides/database/connecting-to-postgres#direct-connections).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/query-optimization.mdx b/apps/docs/content/guides/database/query-optimization.mdx
similarity index 93%
rename from apps/docs/pages/guides/database/query-optimization.mdx
rename to apps/docs/content/guides/database/query-optimization.mdx
index f5327e0f1f3..7602ae4603e 100644
--- a/apps/docs/pages/guides/database/query-optimization.mdx
+++ b/apps/docs/content/guides/database/query-optimization.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Query Optimization',
- description: 'Choosing indexes to improve your query performance.',
- subtitle: 'Choosing indexes to improve your query performance.',
- footerHelpType: 'postgres',
-}
+---
+title: 'Query Optimization'
+description: 'Choosing indexes to improve your query performance.'
+subtitle: 'Choosing indexes to improve your query performance.'
+footerHelpType: 'postgres'
+---
When working with Postgres, or any relational database, indexing is key to improving query performance. Aligning indexes with common query patterns can speed up data retrieval by an order of magnitude.
@@ -128,7 +126,3 @@ analyze customers;
---
By following this guide, you'll be able to discern where indexes can optimize queries and enhance your Postgres performance. Remember that each database is unique, so always consider the specific context and use case of your queries.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/replication.mdx b/apps/docs/content/guides/database/replication.mdx
similarity index 90%
rename from apps/docs/pages/guides/database/replication.mdx
rename to apps/docs/content/guides/database/replication.mdx
index 1ef112030e7..7721b2e4eac 100644
--- a/apps/docs/pages/guides/database/replication.mdx
+++ b/apps/docs/content/guides/database/replication.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'replication',
- title: 'Replication',
- slug: 'replication',
-}
+---
+id: 'replication'
+title: 'Replication'
+slug: 'replication'
+---
Replication is a technique for copying the data from one database to another. Supabase uses replication functionality to provide a real-time API. Replication is useful for:
@@ -93,7 +91,3 @@ begin;
create publication publication_name;
commit;
```
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/secure-data.mdx b/apps/docs/content/guides/database/secure-data.mdx
similarity index 88%
rename from apps/docs/pages/guides/database/secure-data.mdx
rename to apps/docs/content/guides/database/secure-data.mdx
index 088e5b51422..61f636ea2fd 100644
--- a/apps/docs/pages/guides/database/secure-data.mdx
+++ b/apps/docs/content/guides/database/secure-data.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'securing-your-data',
- title: 'Securing your data',
-}
+---
+id: 'securing-your-data'
+title: 'Securing your data'
+---
Supabase helps you control access to your data. With access policies, you can protect sensitive data and make sure users only access what they're allowed to see.
@@ -31,7 +29,3 @@ Supabase and Postgres provide you with multiple ways to manage security, includi
- [Row Level Security](/docs/guides/database/postgres/row-level-security)
- [Managing Postgres roles](/docs/guides/database/postgres/roles)
- [Managing secrets with Vault](/docs/guides/database/vault)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/sql-to-api.mdx b/apps/docs/content/guides/database/sql-to-api.mdx
similarity index 87%
rename from apps/docs/pages/guides/database/sql-to-api.mdx
rename to apps/docs/content/guides/database/sql-to-api.mdx
index 9e8a486d0ae..65550a1c67e 100644
--- a/apps/docs/pages/guides/database/sql-to-api.mdx
+++ b/apps/docs/content/guides/database/sql-to-api.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'sql-to-api',
- title: 'Converting SQL to JavaScript API',
- description: 'Implementing common SQL patterns in the JavaScript API',
-}
+---
+id: 'sql-to-api'
+title: 'Converting SQL to JavaScript API'
+description: 'Implementing common SQL patterns in the JavaScript API'
+---
{/* @TODO: this one is a very daunting read on first attempt. Need to check what is the purpose of it */}
@@ -84,7 +82,3 @@ const { count, error } = await supabase
- [Supabase API: JavaScript select](/docs/reference/javascript/select)
- [Supabase API: JavaScript modifiers](/docs/reference/javascript/using-modifiers)
- [Supabase API: JavaScript filters](/docs/reference/javascript/using-filters)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/tables.mdx b/apps/docs/content/guides/database/tables.mdx
similarity index 98%
rename from apps/docs/pages/guides/database/tables.mdx
rename to apps/docs/content/guides/database/tables.mdx
index 4fa2dc22b68..328740a09fa 100644
--- a/apps/docs/pages/guides/database/tables.mdx
+++ b/apps/docs/content/guides/database/tables.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'tables',
- title: 'Tables and Data',
- description: 'Creating and using Postgres tables.',
- video: 'https://www.youtube.com/v/TKwF3IGij5c',
-}
+---
+id: 'tables'
+title: 'Tables and Data'
+description: 'Creating and using Postgres tables.'
+video: 'https://www.youtube.com/v/TKwF3IGij5c'
+---
Tables are where you store your data.
@@ -551,7 +549,3 @@ Creating a materialized view is not a solution to inefficient queries. You shoul
- [PostgreSQL Tutorial: Create tables](https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-create-table/)
- [PostgreSQL Tutorial: Add column](https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-add-column/)
- [PostgreSQL Tutorial: Views](https://www.postgresqltutorial.com/postgresql-views/)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/testing.mdx b/apps/docs/content/guides/database/testing.mdx
similarity index 82%
rename from apps/docs/pages/guides/database/testing.mdx
rename to apps/docs/content/guides/database/testing.mdx
index 7db3ed93dd6..e7d95cca60f 100644
--- a/apps/docs/pages/guides/database/testing.mdx
+++ b/apps/docs/content/guides/database/testing.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'testing',
- title: 'Testing Your Database',
- description: 'Test your database schema, tables, functions, and policies.',
-}
+---
+id: 'testing'
+title: 'Testing Your Database'
+description: 'Test your database schema, tables, functions, and policies.'
+---
You can use the Supabase CLI to test your database. The minimum required version of the CLI is [v1.11.4](https://github.com/supabase/cli/releases). To get started:
@@ -68,7 +66,3 @@ Result: PASS
- [Testing RLS policies](/docs/guides/auth/row-level-security#testing-policies)
- [pgTAP extension](/docs/guides/database/extensions/pgtap)
- Official [pgTAP documentation](https://pgtap.org/)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/vault.mdx b/apps/docs/content/guides/database/vault.mdx
similarity index 96%
rename from apps/docs/pages/guides/database/vault.mdx
rename to apps/docs/content/guides/database/vault.mdx
index f8a1df1ba8d..a16f814633d 100644
--- a/apps/docs/pages/guides/database/vault.mdx
+++ b/apps/docs/content/guides/database/vault.mdx
@@ -1,14 +1,11 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'vault',
- title: 'Vault',
- description:
- 'Vault is a Postgres extension and accompanying Supabase UI that makes it safe and easy to store encrypted secrets.',
- subtitle: 'Managing secrets in Postgres.',
- sidebar_label: 'Overview',
- video: 'https://www.youtube.com/v/J9mTPY8rIXE',
-}
+---
+id: 'vault'
+title: 'Vault'
+description: 'Vault is a Postgres extension and accompanying Supabase UI that makes it safe and easy to store encrypted secrets.'
+subtitle: 'Managing secrets in Postgres.'
+sidebar_label: 'Overview'
+video: 'https://www.youtube.com/v/J9mTPY8rIXE'
+---
Vault is a Postgres extension and accompanying Supabase UI that makes it safe and easy to store encrypted secrets and other data in your database. This opens up a lot of possibilities to use Postgres in ways that go beyond what is available in a stock distribution.
@@ -257,7 +254,3 @@ Which roles should have access to the `vault.secrets` table should be carefully
- Read more about Supabase Vault in the [blog post](https://supabase.com/blog/vault-now-in-beta)
- [Supabase Vault on GitHub](https://github.com/supabase/vault)
- [Column Encryption](/docs/guides/database/column-encryption)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/database/webhooks.mdx b/apps/docs/content/guides/database/webhooks.mdx
similarity index 86%
rename from apps/docs/pages/guides/database/webhooks.mdx
rename to apps/docs/content/guides/database/webhooks.mdx
index 1f78f2b398f..de57ffd6ed3 100644
--- a/apps/docs/pages/guides/database/webhooks.mdx
+++ b/apps/docs/content/guides/database/webhooks.mdx
@@ -1,12 +1,10 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'webhooks',
- title: 'Database Webhooks',
- description: 'Trigger external payloads on database events.',
- subtitle: 'Trigger external payloads on database events.',
- tocVideo: 'codAs9-NeHM',
-}
+---
+id: 'webhooks'
+title: 'Database Webhooks'
+description: 'Trigger external payloads on database events.'
+subtitle: 'Trigger external payloads on database events.'
+tocVideo: 'codAs9-NeHM'
+---
Database Webhooks allow you to send real-time data from your database to another system whenever a table event occurs.
@@ -85,7 +83,3 @@ Logging history of webhook calls is available under the `net` schema of your dat
## Resources
- [pg_net](/docs/guides/database/extensions/pgnet): an async networking extension for PostgreSQL
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/content/guides/getting-started.mdx b/apps/docs/content/guides/getting-started.mdx
new file mode 100644
index 00000000000..5265ed88ec6
--- /dev/null
+++ b/apps/docs/content/guides/getting-started.mdx
@@ -0,0 +1,346 @@
+---
+id: 'getting-started'
+title: 'Getting Started'
+description: 'Resources for getting started with Supabase.'
+hideToc: true
+---
+
+
+
+
+
+
+ {[
+ {
+ title: 'Features',
+ hasLightIcon: true,
+ href: '/guides/getting-started/features',
+ description: 'A non-exhaustive list of features that Supabase provides for every project.'
+ },
+ {
+ title: 'Architecture',
+ hasLightIcon: true,
+ href: '/guides/getting-started/architecture',
+ description: "An overview of Supabase's architecture and product principles.",
+ },
+ {
+ title: 'Local Development',
+ hasLightIcon: true,
+ href: '/guides/cli/getting-started',
+ description: 'Use the Supabase CLI to develop locally and collaborate between teams.',
+ }
+ ].map((resource) => {
+ return (
+
+
+ {resource.description}
+
+
+ )
+
+})}
+
+
+
+
+
+
+
+### Use cases
+
+
+ {[
+ {
+ title: 'AI, Vectors, and embeddings',
+ href: '/guides/ai#examples',
+ description: `Build AI-enabled applications using our Vector toolkit.`,
+ icon: '/docs/img/icons/openai_logo',
+ hasLightIcon: true,
+ },
+ {
+ title: 'Subscription Payments (SaaS)',
+ href: 'https://github.com/vercel/nextjs-subscription-payments#nextjs-subscription-payments-starter',
+ description: `Clone, deploy, and fully customize a SaaS subscription application with Next.js.`,
+ icon: '/docs/img/icons/nextjs-icon',
+ },
+ {
+ title: 'Partner Gallery',
+ href: 'https://github.com/supabase-community/partner-gallery-example#supabase-partner-gallery-example',
+ description: `Postgres full-text search, image storage, and more.`,
+ icon: '/docs/img/icons/nextjs-icon',
+ },
+ ].map((item) => {
+ return (
+
+
+ {item.description}
+
+
+ )
+ })}
+
+
+### Framework quickstarts
+
+
+ {[
+ {
+ title: 'React',
+ href: '/guides/getting-started/quickstarts/reactjs',
+ description:
+ 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a React app.',
+ icon: '/docs/img/icons/react-icon',
+ },
+ {
+ title: 'Next.js',
+ href: '/guides/getting-started/quickstarts/nextjs',
+ description:
+ 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Next.js app.',
+ icon: '/docs/img/icons/nextjs-icon',
+ hasLightIcon: true,
+ },
+ {
+ title: 'NuxtJS',
+ href: '/guides/getting-started/quickstarts/nuxtjs',
+ description:
+ 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a NuxtJS app.',
+ icon: '/docs/img/icons/nuxt-icon',
+ },
+ {
+ title: 'RedwoodJS',
+ href: '/guides/getting-started/quickstarts/redwoodjs',
+ description:
+ 'Learn how to create a Supabase project, add some sample data to your database using Prisma migration and seeds, and query the data from a RedwoodJS app.',
+ icon: '/docs/img/icons/redwood-icon',
+ },
+ {
+ title: 'Flutter',
+ href: '/guides/getting-started/quickstarts/flutter',
+ description:
+ 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Flutter app.',
+ icon: '/docs/img/icons/flutter-icon',
+ },
+ {
+ title: 'Android Kotlin',
+ href: '/guides/getting-started/quickstarts/kotlin',
+ description:
+ 'Learn how to create a Supabase project, add some sample data to your database, and query the data from an Android Kotlin app.',
+ icon: '/docs/img/icons/kotlin-icon',
+ },
+ {
+ title: 'SvelteKit',
+ href: '/guides/getting-started/quickstarts/sveltekit',
+ description:
+ 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a SvelteKit app.',
+ icon: '/docs/img/icons/svelte-icon',
+ },
+ {
+ title: 'SolidJS',
+ href: '/guides/getting-started/quickstarts/solidjs',
+ description:
+ 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a SolidJS app.',
+ icon: '/docs/img/icons/solidjs-icon',
+ },
+ {
+ title: 'Vue',
+ href: '/guides/getting-started/quickstarts/vue',
+ description:
+ 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Vue app.',
+ icon: '/docs/img/icons/vuejs-icon',
+ },
+ {
+ title: 'refine',
+ href: '/guides/getting-started/quickstarts/refine',
+ description:
+ 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a refine app.',
+ icon: '/docs/img/icons/refine-icon',
+ },
+ ].map((item) => {
+ return (
+
+
+ {item.description}
+
+
+ )
+ })}
+
+
+### Web app tutorials
+
+
+ {
+ [
+ {
+ title: 'Next.js',
+ href: '/guides/getting-started/tutorials/with-nextjs',
+ description:
+ 'Learn how to build a user management app with Next.js and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/nextjs-icon',
+ hasLightIcon: true
+ },
+ {
+ title: 'React',
+ href: '/guides/getting-started/tutorials/with-react',
+ description:
+ 'Learn how to build a user management app with React and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/react-icon'
+ },
+ {
+ title: 'Vue 3',
+ href: '/guides/getting-started/tutorials/with-vue-3',
+ description:
+ 'Learn how to build a user management app with Vue 3 and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/vuejs-icon'
+ },
+ {
+ title: 'Nuxt 3',
+ href: '/guides/getting-started/tutorials/with-nuxt-3',
+ description:
+ 'Learn how to build a user management app with Nuxt 3 and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/nuxt-icon'
+ },
+ {
+ title: 'Angular',
+ href: '/guides/getting-started/tutorials/with-angular',
+ description:
+ 'Learn how to build a user management app with Angular and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/angular-icon'
+ },
+ {
+ title: 'RedwoodJS',
+ href: '/guides/getting-started/tutorials/with-redwoodjs',
+ description:
+ 'Learn how to build a user management app with RedwoodJS and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/redwood-icon'
+ },
+ {
+ title: 'Svelte',
+ href: '/guides/getting-started/tutorials/with-svelte',
+ description:
+ 'Learn how to build a user management app with Svelte and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/svelte-icon'
+ },
+ {
+ title: 'SvelteKit',
+ href: '/guides/getting-started/tutorials/with-sveltekit',
+ description:
+ 'Learn how to build a user management app with SvelteKit and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/svelte-icon'
+ },
+ {
+ title: 'refine',
+ href: '/guides/getting-started/tutorials/with-refine',
+ description:
+ 'Learn how to build a user management app with refine and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/refine-icon'
+ }
+ ]
+.map((item) => {
+ return (
+
+
+ {item.description}
+
+
+ )
+
+})}
+
+
+
+### Mobile tutorials
+
+
+ {[
+ {
+ title: 'Flutter',
+ href: '/guides/getting-started/tutorials/with-flutter',
+ description:
+ 'Learn how to build a user management app with Flutter and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/flutter-icon'
+ },
+ {
+ title: 'Expo React Native',
+ href: '/guides/getting-started/tutorials/with-expo-react-native',
+ description:
+ 'Learn how to build a user management app with Expo React Native and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/expo-icon',
+ hasLightIcon: true
+ },
+ {
+ title: 'Android Kotlin',
+ href: '/guides/getting-started/tutorials/with-kotlin',
+ description:
+ 'Learn how to build a product management app with Android and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/kotlin-icon'
+ },
+ {
+ title: 'iOS Swift',
+ href: '/guides/getting-started/tutorials/with-swift',
+ description:
+ 'Learn how to build a user management app with iOS and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/swift-icon'
+ },
+ {
+ title: 'Ionic React',
+ href: '/guides/getting-started/tutorials/with-ionic-react',
+ description:
+ 'Learn how to build a user management app with Ionic React and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/ionic-icon'
+ },
+ {
+ title: 'Ionic Vue',
+ href: '/guides/getting-started/tutorials/with-ionic-vue',
+ description:
+ 'Learn how to build a user management app with Ionic Vue and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/ionic-icon'
+ },
+ {
+ title: 'Ionic Angular',
+ href: '/guides/getting-started/tutorials/with-ionic-angular',
+ description:
+ 'Learn how to build a user management app with Ionic Angular and Supabase Database, Auth, and Storage functionality.',
+ icon: '/docs/img/icons/ionic-icon'
+ }
+ ].map((item) => {
+ return (
+
+
+ {item.description}
+
+
+ )
+
+})}
+
+
diff --git a/apps/docs/pages/guides/getting-started/architecture.mdx b/apps/docs/content/guides/getting-started/architecture.mdx
similarity index 96%
rename from apps/docs/pages/guides/getting-started/architecture.mdx
rename to apps/docs/content/guides/getting-started/architecture.mdx
index 50c2e80fde4..9e3bd8f92f0 100644
--- a/apps/docs/pages/guides/getting-started/architecture.mdx
+++ b/apps/docs/content/guides/getting-started/architecture.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'architecture',
- title: 'Architecture',
- description: 'Supabase design and architecture',
-}
+---
+id: 'architecture'
+title: 'Architecture'
+description: 'Supabase design and architecture'
+---
Supabase is open source. We choose open source tools which are scalable and make them simple to use.
@@ -164,7 +162,3 @@ As the profile of a developer changes over time, Supabase will continue to evolv
Supabase supports existing tools and communities wherever possible. Supabase is more like a "community of communities" - each tool typically has its own community which we work with.
Open source is something we approach [collaboratively](https://supabase.com/blog/supabase-series-b#giving-back): we employ maintainers, sponsor projects, invest in businesses, and develop our own open source tools.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/features.mdx b/apps/docs/content/guides/getting-started/features.mdx
old mode 100755
new mode 100644
similarity index 96%
rename from apps/docs/pages/guides/getting-started/features.mdx
rename to apps/docs/content/guides/getting-started/features.mdx
index 12c3e0ae36e..d9956b15c21
--- a/apps/docs/pages/guides/getting-started/features.mdx
+++ b/apps/docs/content/guides/getting-started/features.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'features',
- title: 'Features',
- description: 'Supabase features',
-}
+---
+id: 'features'
+title: 'Features'
+description: 'Supabase features'
+---
This is a non-exhaustive list of features that Supabase provides for every project.
@@ -186,7 +184,3 @@ Both Postgres and the Supabase Platform are production-ready. Some tools we offe
- âś… = Fully Available
- đźš§ = Available, but requires external tools or configuration
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/quickstarts/flutter.mdx b/apps/docs/content/guides/getting-started/quickstarts/flutter.mdx
similarity index 92%
rename from apps/docs/pages/guides/getting-started/quickstarts/flutter.mdx
rename to apps/docs/content/guides/getting-started/quickstarts/flutter.mdx
index 44080c6aad1..3affe423ce2 100644
--- a/apps/docs/pages/guides/getting-started/quickstarts/flutter.mdx
+++ b/apps/docs/content/guides/getting-started/quickstarts/flutter.mdx
@@ -1,12 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import StepHikeCompact from '~/components/StepHikeCompact'
-
-export const meta = {
- title: 'Use Supabase with Flutter',
- subtitle:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Flutter app.',
- breadcrumb: 'Framework Quickstarts',
-}
+---
+title: 'Use Supabase with Flutter'
+subtitle: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Flutter app.'
+breadcrumb: 'Framework Quickstarts'
+hideToc: true
+---
@@ -209,7 +206,3 @@ To do this, add the following line to the `android/app/src/main/AndroidManifest.
```
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/quickstarts/kotlin.mdx b/apps/docs/content/guides/getting-started/quickstarts/kotlin.mdx
similarity index 92%
rename from apps/docs/pages/guides/getting-started/quickstarts/kotlin.mdx
rename to apps/docs/content/guides/getting-started/quickstarts/kotlin.mdx
index 2799217468c..d0d1066fb22 100644
--- a/apps/docs/pages/guides/getting-started/quickstarts/kotlin.mdx
+++ b/apps/docs/content/guides/getting-started/quickstarts/kotlin.mdx
@@ -1,12 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import StepHikeCompact from '~/components/StepHikeCompact'
-
-export const meta = {
- title: 'Use Supabase with Android Kotlin',
- subtitle:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from an Android Kotlin app.',
- breadcrumb: 'Framework Quickstarts',
-}
+---
+title: 'Use Supabase with Android Kotlin'
+subtitle: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from an Android Kotlin app.'
+breadcrumb: 'Framework Quickstarts'
+hideToc: true
+---
@@ -209,7 +206,3 @@ export const meta = {
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/quickstarts/laravel.mdx b/apps/docs/content/guides/getting-started/quickstarts/laravel.mdx
similarity index 89%
rename from apps/docs/pages/guides/getting-started/quickstarts/laravel.mdx
rename to apps/docs/content/guides/getting-started/quickstarts/laravel.mdx
index e711fbd6fde..3e0f3fd6875 100644
--- a/apps/docs/pages/guides/getting-started/quickstarts/laravel.mdx
+++ b/apps/docs/content/guides/getting-started/quickstarts/laravel.mdx
@@ -1,12 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import StepHikeCompact from '~/components/StepHikeCompact'
-
-export const meta = {
- title: 'Use Supabase with Laravel',
- subtitle:
- 'Learn how to create a PHP Laravel project, connect it to your Supabase Postgres database, and configure user authentication.',
- breadcrumb: 'Framework Quickstarts',
-}
+---
+title: 'Use Supabase with Laravel'
+subtitle: 'Learn how to create a PHP Laravel project, connect it to your Supabase Postgres database, and configure user authentication.'
+breadcrumb: 'Framework Quickstarts'
+hideToc: true
+---
@@ -142,6 +139,3 @@ export const meta = {
-
-export const Page = ({ children }) =>
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/quickstarts/nextjs.mdx b/apps/docs/content/guides/getting-started/quickstarts/nextjs.mdx
similarity index 88%
rename from apps/docs/pages/guides/getting-started/quickstarts/nextjs.mdx
rename to apps/docs/content/guides/getting-started/quickstarts/nextjs.mdx
index c9c9d408b22..1d08aea5b95 100644
--- a/apps/docs/pages/guides/getting-started/quickstarts/nextjs.mdx
+++ b/apps/docs/content/guides/getting-started/quickstarts/nextjs.mdx
@@ -1,12 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import StepHikeCompact from '~/components/StepHikeCompact'
-
-export const meta = {
- title: 'Use Supabase with Next.js',
- subtitle:
- 'Learn how to create a Supabase project, add some sample data, and query from a Next.js app.',
- breadcrumb: 'Framework Quickstarts',
-}
+---
+title: 'Use Supabase with Next.js'
+subtitle: 'Learn how to create a Supabase project, add some sample data, and query from a Next.js app.'
+breadcrumb: 'Framework Quickstarts'
+hideToc: true
+---
@@ -128,6 +125,3 @@ export const meta = {
-
-export const Page = ({ children }) =>
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/quickstarts/nuxtjs.mdx b/apps/docs/content/guides/getting-started/quickstarts/nuxtjs.mdx
similarity index 87%
rename from apps/docs/pages/guides/getting-started/quickstarts/nuxtjs.mdx
rename to apps/docs/content/guides/getting-started/quickstarts/nuxtjs.mdx
index d7312c00172..152d9ab5846 100644
--- a/apps/docs/pages/guides/getting-started/quickstarts/nuxtjs.mdx
+++ b/apps/docs/content/guides/getting-started/quickstarts/nuxtjs.mdx
@@ -1,12 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import StepHikeCompact from '~/components/StepHikeCompact'
-
-export const meta = {
- title: 'Use Supabase with NuxtJS',
- subtitle:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a NuxtJS app.',
- breadcrumb: 'Framework Quickstarts',
-}
+---
+title: 'Use Supabase with NuxtJS'
+subtitle: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a NuxtJS app.'
+breadcrumb: 'Framework Quickstarts'
+hideToc: true
+---
@@ -133,6 +130,3 @@ export const meta = {
-
-export const Page = ({ children }) =>
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/quickstarts/reactjs.mdx b/apps/docs/content/guides/getting-started/quickstarts/reactjs.mdx
similarity index 88%
rename from apps/docs/pages/guides/getting-started/quickstarts/reactjs.mdx
rename to apps/docs/content/guides/getting-started/quickstarts/reactjs.mdx
index 145c01d58d0..edf4a1d227f 100644
--- a/apps/docs/pages/guides/getting-started/quickstarts/reactjs.mdx
+++ b/apps/docs/content/guides/getting-started/quickstarts/reactjs.mdx
@@ -1,12 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import StepHikeCompact from '~/components/StepHikeCompact'
-
-export const meta = {
- title: 'Use Supabase with React',
- subtitle:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a React app.',
- breadcrumb: 'Framework Quickstarts',
-}
+---
+title: 'Use Supabase with React'
+subtitle: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a React app.'
+breadcrumb: 'Framework Quickstarts'
+hideToc: true
+---
@@ -139,7 +136,3 @@ export const meta = {
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/quickstarts/redwoodjs.mdx b/apps/docs/content/guides/getting-started/quickstarts/redwoodjs.mdx
similarity index 94%
rename from apps/docs/pages/guides/getting-started/quickstarts/redwoodjs.mdx
rename to apps/docs/content/guides/getting-started/quickstarts/redwoodjs.mdx
index a7035770b70..7b73c5fdec7 100644
--- a/apps/docs/pages/guides/getting-started/quickstarts/redwoodjs.mdx
+++ b/apps/docs/content/guides/getting-started/quickstarts/redwoodjs.mdx
@@ -1,12 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import StepHikeCompact from '~/components/StepHikeCompact'
-
-export const meta = {
- title: 'Use Supabase with RedwoodJS',
- subtitle:
- 'Learn how to create a Supabase project, add some sample data to your database using Prisma migration and seeds, and query the data from a RedwoodJS app.',
- breadcrumb: 'Framework Quickstarts',
-}
+---
+title: 'Use Supabase with RedwoodJS'
+subtitle: 'Learn how to create a Supabase project, add some sample data to your database using Prisma migration and seeds, and query the data from a RedwoodJS app.'
+breadcrumb: 'Framework Quickstarts'
+hideToc: true
+---
@@ -238,7 +235,3 @@ export const meta = {
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/quickstarts/refine.mdx b/apps/docs/content/guides/getting-started/quickstarts/refine.mdx
similarity index 94%
rename from apps/docs/pages/guides/getting-started/quickstarts/refine.mdx
rename to apps/docs/content/guides/getting-started/quickstarts/refine.mdx
index ddd7b38ba8b..2938726359c 100644
--- a/apps/docs/pages/guides/getting-started/quickstarts/refine.mdx
+++ b/apps/docs/content/guides/getting-started/quickstarts/refine.mdx
@@ -1,12 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import StepHikeCompact from '~/components/StepHikeCompact'
-
-export const meta = {
- title: 'Use Supabase with refine',
- subtitle:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a refine app.',
- breadcrumb: 'Framework Quickstarts',
-}
+---
+title: 'Use Supabase with refine'
+subtitle: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a refine app.'
+breadcrumb: 'Framework Quickstarts'
+hideToc: true
+---
@@ -127,7 +124,7 @@ export const meta = {
-
+
@@ -249,7 +246,3 @@ export const meta = {
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/quickstarts/ruby-on-rails.mdx b/apps/docs/content/guides/getting-started/quickstarts/ruby-on-rails.mdx
similarity index 87%
rename from apps/docs/pages/guides/getting-started/quickstarts/ruby-on-rails.mdx
rename to apps/docs/content/guides/getting-started/quickstarts/ruby-on-rails.mdx
index 5779a84cfc0..29da0803dad 100644
--- a/apps/docs/pages/guides/getting-started/quickstarts/ruby-on-rails.mdx
+++ b/apps/docs/content/guides/getting-started/quickstarts/ruby-on-rails.mdx
@@ -1,12 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import StepHikeCompact from '~/components/StepHikeCompact'
-
-export const meta = {
- title: 'Use Supabase with Ruby on Rails',
- subtitle:
- 'Learn how to create a Rails project and connect it to your Supabase Postgres database.',
- breadcrumb: 'Framework Quickstarts',
-}
+---
+title: 'Use Supabase with Ruby on Rails'
+subtitle: 'Learn how to create a Rails project and connect it to your Supabase Postgres database.'
+breadcrumb: 'Framework Quickstarts'
+hideToc: true
+---
@@ -116,6 +113,3 @@ export const meta = {
-
-export const Page = ({ children }) =>
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/quickstarts/solidjs.mdx b/apps/docs/content/guides/getting-started/quickstarts/solidjs.mdx
similarity index 87%
rename from apps/docs/pages/guides/getting-started/quickstarts/solidjs.mdx
rename to apps/docs/content/guides/getting-started/quickstarts/solidjs.mdx
index c8a759ce4c5..7299f094012 100644
--- a/apps/docs/pages/guides/getting-started/quickstarts/solidjs.mdx
+++ b/apps/docs/content/guides/getting-started/quickstarts/solidjs.mdx
@@ -1,12 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import StepHikeCompact from '~/components/StepHikeCompact'
-
-export const meta = {
- title: 'Use Supabase with SolidJS',
- subtitle:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a SolidJS app.',
- breadcrumb: 'Framework Quickstarts',
-}
+---
+title: 'Use Supabase with SolidJS'
+subtitle: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a SolidJS app.'
+breadcrumb: 'Framework Quickstarts'
+hideToc: true
+---
@@ -133,7 +130,3 @@ export const meta = {
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/quickstarts/sveltekit.mdx b/apps/docs/content/guides/getting-started/quickstarts/sveltekit.mdx
similarity index 89%
rename from apps/docs/pages/guides/getting-started/quickstarts/sveltekit.mdx
rename to apps/docs/content/guides/getting-started/quickstarts/sveltekit.mdx
index 3d97b387849..5b0cb6b935d 100644
--- a/apps/docs/pages/guides/getting-started/quickstarts/sveltekit.mdx
+++ b/apps/docs/content/guides/getting-started/quickstarts/sveltekit.mdx
@@ -1,12 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import StepHikeCompact from '~/components/StepHikeCompact'
-
-export const meta = {
- title: 'Use Supabase with SvelteKit',
- subtitle:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a SvelteKit app.',
- breadcrumb: 'Framework Quickstarts',
-}
+---
+title: 'Use Supabase with SvelteKit'
+subtitle: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a SvelteKit app.'
+breadcrumb: 'Framework Quickstarts'
+hideToc: true
+---
@@ -161,7 +158,3 @@ export const meta = {
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/quickstarts/vue.mdx b/apps/docs/content/guides/getting-started/quickstarts/vue.mdx
similarity index 89%
rename from apps/docs/pages/guides/getting-started/quickstarts/vue.mdx
rename to apps/docs/content/guides/getting-started/quickstarts/vue.mdx
index a2455965e23..d9e5e9a2381 100644
--- a/apps/docs/pages/guides/getting-started/quickstarts/vue.mdx
+++ b/apps/docs/content/guides/getting-started/quickstarts/vue.mdx
@@ -1,12 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import StepHikeCompact from '~/components/StepHikeCompact'
-
-export const meta = {
- title: 'Use Supabase with Vue',
- subtitle:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Vue app.',
- breadcrumb: 'Framework Quickstarts',
-}
+---
+title: 'Use Supabase with Vue'
+subtitle: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Vue app.'
+breadcrumb: 'Framework Quickstarts'
+hideToc: true
+---
@@ -150,7 +147,3 @@ export const meta = {
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-angular.mdx b/apps/docs/content/guides/getting-started/tutorials/with-angular.mdx
similarity index 97%
rename from apps/docs/pages/guides/getting-started/tutorials/with-angular.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-angular.mdx
index cae2ef8bba7..62d9f2c0644 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-angular.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-angular.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with Angular',
- description: 'Learn how to use Supabase in your Angular App.',
-}
+---
+title: 'Build a User Management App with Angular'
+description: 'Learn how to use Supabase in your Angular App.'
+---
@@ -532,7 +530,3 @@ export class AccountComponent implements OnInit {
At this stage you have a fully functional application!
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-expo-react-native.mdx b/apps/docs/content/guides/getting-started/tutorials/with-expo-react-native.mdx
similarity index 98%
rename from apps/docs/pages/guides/getting-started/tutorials/with-expo-react-native.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-expo-react-native.mdx
index c5b9b7279a7..0bacd902411 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-expo-react-native.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-expo-react-native.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with Expo React Native',
- description: 'Learn how to use Supabase in your React Native App.',
- tocVideo: 'AE7dKIKMJy4',
-}
+---
+title: 'Build a User Management App with Expo React Native'
+description: 'Learn how to use Supabase in your React Native App.'
+tocVideo: 'AE7dKIKMJy4'
+---
@@ -634,7 +632,3 @@ expo prebuild
At this stage you have a fully functional application!
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-flutter.mdx b/apps/docs/content/guides/getting-started/tutorials/with-flutter.mdx
similarity index 98%
rename from apps/docs/pages/guides/getting-started/tutorials/with-flutter.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-flutter.mdx
index e0d3f53b4fd..524329892f2 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-flutter.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-flutter.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with Flutter',
- description: 'Learn how to use Supabase in your Flutter App.',
- tocVideo: 'r7ysVtZ5Row',
-}
+---
+title: 'Build a User Management App with Flutter'
+description: 'Learn how to use Supabase in your Flutter App.'
+tocVideo: 'r7ysVtZ5Row'
+---
@@ -868,7 +866,3 @@ Congratulations, you've built a fully functional user management app using Flutt
- [Flutter Tutorial: building a Flutter chat app](https://supabase.com/blog/flutter-tutorial-building-a-chat-app)
- [Flutter Tutorial - Part 2: Authentication and Authorization with RLS](https://supabase.com/blog/flutter-authentication-and-authorization-with-rls)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-ionic-angular.mdx b/apps/docs/content/guides/getting-started/tutorials/with-ionic-angular.mdx
similarity index 97%
rename from apps/docs/pages/guides/getting-started/tutorials/with-ionic-angular.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-ionic-angular.mdx
index 19f4343bcda..c210354e793 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-ionic-angular.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-ionic-angular.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with Ionic Angular',
- description: 'Learn how to use Supabase in your Ionic Angular App.',
-}
+---
+title: 'Build a User Management App with Ionic Angular'
+description: 'Learn how to use Supabase in your Ionic Angular App.'
+---
@@ -563,7 +561,3 @@ At this stage, you have a fully functional application!
## See also
- [Authentication in Ionic Angular with Supabase](https://supabase.com/blog/authentication-in-ionic-angular)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-ionic-react.mdx b/apps/docs/content/guides/getting-started/tutorials/with-ionic-react.mdx
similarity index 97%
rename from apps/docs/pages/guides/getting-started/tutorials/with-ionic-react.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-ionic-react.mdx
index fda5709a31f..69d08c1d957 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-ionic-react.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-ionic-react.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with Ionic React',
- description: 'Learn how to use Supabase in your Ionic React App.',
-}
+---
+title: 'Build a User Management App with Ionic React'
+description: 'Learn how to use Supabase in your Ionic React App.'
+---
@@ -500,7 +498,3 @@ return (
At this stage you have a fully functional application!
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-ionic-vue.mdx b/apps/docs/content/guides/getting-started/tutorials/with-ionic-vue.mdx
similarity index 97%
rename from apps/docs/pages/guides/getting-started/tutorials/with-ionic-vue.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-ionic-vue.mdx
index 388c1bea13b..3eee57f4d2a 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-ionic-vue.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-ionic-vue.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with Ionic Vue',
- description: 'Learn how to use Supabase in your Ionic Vue App.',
-}
+---
+title: 'Build a User Management App with Ionic Vue'
+description: 'Learn how to use Supabase in your Ionic Vue App.'
+---
@@ -560,7 +558,3 @@ export default defineComponent({
At this stage you have a fully functional application!
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-kotlin.mdx b/apps/docs/content/guides/getting-started/tutorials/with-kotlin.mdx
similarity index 99%
rename from apps/docs/pages/guides/getting-started/tutorials/with-kotlin.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-kotlin.mdx
index 399fc1deaec..167a5b595b5 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-kotlin.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-kotlin.mdx
@@ -1,10 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import KotlinProjectSetup from '~/components/MDX/kotlin_project_setup.mdx'
-
-export const meta = {
- title: 'Build a Product Management Android App with Jetpack Compose',
- description: 'Learn how to use Supabase in your Android Kotlin App.',
-}
+---
+title: 'Build a Product Management Android App with Jetpack Compose'
+description: 'Learn how to use Supabase in your Android Kotlin App.'
+---
This tutorial demonstrates how to build a basic product management app. The app demonstrates management operations, photo upload, account creation and authentication using:
@@ -1381,7 +1378,3 @@ class DeepLinkHandlerActivity : ComponentActivity() {
}
}
```
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-nextjs.mdx b/apps/docs/content/guides/getting-started/tutorials/with-nextjs.mdx
similarity index 98%
rename from apps/docs/pages/guides/getting-started/tutorials/with-nextjs.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-nextjs.mdx
index f07fe9ebaa4..9c409a64564 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-nextjs.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-nextjs.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with Next.js',
- description: 'Learn how to use Supabase in your Next.js App.',
-}
+---
+title: 'Build a User Management App with Next.js'
+description: 'Learn how to use Supabase in your Next.js App.'
+---
@@ -998,7 +996,3 @@ At this stage you have a fully functional application!
- Explore the [Auth Helpers for Next.js](/docs/guides/auth/auth-helpers/nextjs)
- Explore the [Supabase Cache Helpers](https://github.com/psteinroe/supabase-cache-helpers)
- See the [Next.js Subscription Payments Starter](https://github.com/vercel/nextjs-subscription-payments) template on GitHub
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-nuxt-3.mdx b/apps/docs/content/guides/getting-started/tutorials/with-nuxt-3.mdx
similarity index 97%
rename from apps/docs/pages/guides/getting-started/tutorials/with-nuxt-3.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-nuxt-3.mdx
index 53cf590e5c0..70f9d7e5485 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-nuxt-3.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-nuxt-3.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with Nuxt 3',
- description: 'Learn how to use Supabase in your Nuxt 3 App.',
-}
+---
+title: 'Build a User Management App with Nuxt 3'
+description: 'Learn how to use Supabase in your Nuxt 3 App.'
+---
@@ -441,7 +439,3 @@ async function signOut() {
That is it! You should now be able to upload a profile photo to Supabase Storage and you have a fully functional application.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-react.mdx b/apps/docs/content/guides/getting-started/tutorials/with-react.mdx
similarity index 97%
rename from apps/docs/pages/guides/getting-started/tutorials/with-react.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-react.mdx
index a80d199f614..4931c5f450c 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-react.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-react.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with React',
- description: 'Learn how to use Supabase in your React App.',
-}
+---
+title: 'Build a User Management App with React'
+description: 'Learn how to use Supabase in your React App.'
+---
@@ -403,7 +401,3 @@ return (
At this stage you have a fully functional application!
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-redwoodjs.mdx b/apps/docs/content/guides/getting-started/tutorials/with-redwoodjs.mdx
similarity index 98%
rename from apps/docs/pages/guides/getting-started/tutorials/with-redwoodjs.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-redwoodjs.mdx
index d2cccbb7e73..f98fe348e90 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-redwoodjs.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-redwoodjs.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with RedwoodJS',
- description: 'Learn how to use Supabase in your RedwoodJS App.',
-}
+---
+title: 'Build a User Management App with RedwoodJS'
+description: 'Learn how to use Supabase in your RedwoodJS App.'
+---
@@ -615,7 +613,3 @@ At this stage you have a fully functional application!
- Learn more about [RedwoodJS](https://redwoodjs.com)
- Visit the [RedwoodJS Discourse Community](https://community.redwoodjs.com)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-refine.mdx b/apps/docs/content/guides/getting-started/tutorials/with-refine.mdx
similarity index 98%
rename from apps/docs/pages/guides/getting-started/tutorials/with-refine.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-refine.mdx
index 0ec2f8b2c75..e3f09494ada 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-refine.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-refine.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with refine',
- description: 'Learn how to use Supabase in your refine App.',
-}
+---
+title: 'Build a User Management App with refine'
+description: 'Learn how to use Supabase in your refine App.'
+---
@@ -633,7 +631,3 @@ return (
At this stage, you have a fully functional application!
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-solidjs.mdx b/apps/docs/content/guides/getting-started/tutorials/with-solidjs.mdx
similarity index 97%
rename from apps/docs/pages/guides/getting-started/tutorials/with-solidjs.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-solidjs.mdx
index cb300f5cc65..80d4dba6167 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-solidjs.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-solidjs.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with SolidJS',
- description: 'Learn how to use Supabase in your SolidJS App.',
-}
+---
+title: 'Build a User Management App with SolidJS'
+description: 'Learn how to use Supabase in your SolidJS App.'
+---
@@ -422,7 +420,3 @@ return (
At this stage you have a fully functional application!
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-svelte.mdx b/apps/docs/content/guides/getting-started/tutorials/with-svelte.mdx
similarity index 97%
rename from apps/docs/pages/guides/getting-started/tutorials/with-svelte.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-svelte.mdx
index f250a8f7631..e95078cce5f 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-svelte.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-svelte.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with Svelte',
- description: 'Learn how to use Supabase in your Svelte App.',
-}
+---
+title: 'Build a User Management App with Svelte'
+description: 'Learn how to use Supabase in your Svelte App.'
+---
@@ -375,7 +373,3 @@ And then we can add the widget to the Account page:
At this stage you have a fully functional application!
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-sveltekit.mdx b/apps/docs/content/guides/getting-started/tutorials/with-sveltekit.mdx
similarity index 98%
rename from apps/docs/pages/guides/getting-started/tutorials/with-sveltekit.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-sveltekit.mdx
index 3841390110e..10a8982af85 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-sveltekit.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-sveltekit.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with SvelteKit',
- description: 'Learn how to use Supabase in your SvelteKit App.',
-}
+---
+title: 'Build a User Management App with SvelteKit'
+description: 'Learn how to use Supabase in your SvelteKit App.'
+---
@@ -613,7 +611,3 @@ And then we can add the widget to the Account page:
At this stage you have a fully functional application!
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-swift.mdx b/apps/docs/content/guides/getting-started/tutorials/with-swift.mdx
similarity index 97%
rename from apps/docs/pages/guides/getting-started/tutorials/with-swift.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-swift.mdx
index f16baa2d46a..369748f09e5 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-swift.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-swift.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with Swift and SwiftUI',
- description: 'Learn how to use Supabase in your SwiftUI App.',
-}
+---
+title: 'Build a User Management App with Swift and SwiftUI'
+description: 'Learn how to use Supabase in your SwiftUI App.'
+---
@@ -521,7 +519,3 @@ You no longer need the `UpdateProfileParams` struct, as you can now reuse the `P
At this stage you have a fully functional application!
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-vue-3.mdx b/apps/docs/content/guides/getting-started/tutorials/with-vue-3.mdx
similarity index 97%
rename from apps/docs/pages/guides/getting-started/tutorials/with-vue-3.mdx
rename to apps/docs/content/guides/getting-started/tutorials/with-vue-3.mdx
index 16cb193dba1..10bf93c4c6e 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-vue-3.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-vue-3.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Build a User Management App with Vue 3',
- description: 'Learn how to use Supabase in your Vue 3 App.',
-}
+---
+title: 'Build a User Management App with Vue 3'
+description: 'Learn how to use Supabase in your Vue 3 App.'
+---
@@ -384,7 +382,3 @@ import Avatar from './Avatar.vue'
At this stage you have a fully functional application!
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform.mdx b/apps/docs/content/guides/platform.mdx
similarity index 83%
rename from apps/docs/pages/guides/platform.mdx
rename to apps/docs/content/guides/platform.mdx
index 9740bc439b6..6816244e44e 100644
--- a/apps/docs/pages/guides/platform.mdx
+++ b/apps/docs/content/guides/platform.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'platform',
- title: 'Supabase Platform',
- description: 'Getting started with the Supabase Platform.',
- sidebar_label: 'Overview',
-}
+---
+id: 'platform'
+title: 'Supabase Platform'
+description: 'Getting started with the Supabase Platform.'
+sidebar_label: 'Overview'
+---
Supabase is a hosted platform which makes it very simple to get started without needing to manage any infrastructure.
@@ -37,7 +35,3 @@ If Supabase experiences outages, we keep you as informed as possible, as early a
- Slack Alerts: You can receive updates via the RSS feed, using Slack's [built-in RSS functionality](https://slack.com/help/articles/218688467-Add-RSS-feeds-to-Slack)
`/feed subscribe https://status.supabase.com/history.atom`
Make sure to review our [SLA](/docs/company/sla) for details on our commitment to Platform Stability.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/access-control.mdx b/apps/docs/content/guides/platform/access-control.mdx
similarity index 95%
rename from apps/docs/pages/guides/platform/access-control.mdx
rename to apps/docs/content/guides/platform/access-control.mdx
index a0e359c4f69..75e054819dd 100644
--- a/apps/docs/pages/guides/platform/access-control.mdx
+++ b/apps/docs/content/guides/platform/access-control.mdx
@@ -1,10 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import { IconCheck } from 'ui'
-
-export const meta = {
- title: 'Access Control',
- description: 'Roles and permissions at the organization level',
-}
+---
+title: 'Access Control'
+description: 'Roles and permissions at the organization level'
+---
Supabase provides granular access controls to manage permissions across your organizations.
For each organization, a member can have one of the following roles:
@@ -83,7 +80,3 @@ The table below shows the corresponding permissions for each available role you
enterprise systems.
[^2]: Available on the Teams and Enterprise Plans.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/backups.mdx b/apps/docs/content/guides/platform/backups.mdx
similarity index 94%
rename from apps/docs/pages/guides/platform/backups.mdx
rename to apps/docs/content/guides/platform/backups.mdx
index a0515b0d6fc..bb872a56371 100644
--- a/apps/docs/pages/guides/platform/backups.mdx
+++ b/apps/docs/content/guides/platform/backups.mdx
@@ -1,18 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import { Admonition } from 'ui'
-
-export const meta = {
- title: 'Database Backups',
- description: 'Learn about the available backup methods for your Supabase project.',
-}
-
-export const mutuallyExclusiveNote = (
-
-
- If you enable PITR, Daily Backups will no longer be taken. PITR provides a finer granularity than Daily Backups, so it's unnecessary to run both.
-
-
-)
+---
+title: 'Database Backups'
+description: 'Learn about the available backup methods for your Supabase project.'
+---
Database backups are an integral part of any disaster recovery plan. Disasters come in many shapes and sizes. It could be as simple as accidentally deleting a table column, the database crashing, or even a natural calamity wiping out the underlying hardware a database is running on. The risks and impact brought by these scenarios can never be fully eliminated, but only minimized or even mitigated. Having database backups is a form of insurance policy. They are essentially snapshots of the database at various points in time. When disaster strikes, database backups allow the project to be brought back to any of these points in time, therefore averting the crisis.
@@ -26,7 +15,11 @@ The Supabase team regularly monitors the status of backups. In case of any issue
When deciding how often a database should be backed up, the key business metric Recovery Point Objective (RPO) should be considered. RPO is the threshold for how much data, measured in time, a business could lose when disaster strikes. This amount is fully dependent on a business and its underlying requirements. A low RPO would mean that database backups would have to be taken at an increased cadence throughout the day. Each Supabase project has access to two forms of backups, Daily Backups and Point-in-Time Recovery (PITR). The agreed upon RPO would be a deciding factor in choosing which solution best fits a project.
-{mutuallyExclusiveNote}
+
+
+If you enable PITR, Daily Backups will no longer be taken. PITR provides a finer granularity than Daily Backups, so it's unnecessary to run both.
+
+
@@ -84,7 +77,11 @@ Projects interested in PITR will also need to use at least a Small compute add-o
-{mutuallyExclusiveNote}
+
+
+If you enable PITR, Daily Backups will no longer be taken. PITR provides a finer granularity than Daily Backups, so it's unnecessary to run both.
+
+
### Backup process [#pitr-backup-process]
@@ -109,7 +106,3 @@ A date and time picker will be provided upon pressing the `Start a restore` butt

After locking in the desired point in time to recover to, The Dashboard will then prompt for a review and confirmation before proceeding with the restoration. The project will be inaccessible following this. As such, do ensure to allot for downtime beforehand. This is dependent on the size of the database. The larger it is, the longer the downtime will be. Once the confirmation has been given, the latest physical backup available is downloaded to the project and the database is partially restored. WAL files generated after this physical backup up to the specified point-in-time are then downloaded. The underlying records of transactions in these files are replayed against the database to complete the restoration. The Dashboard will display a notification once the restoration completes.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/billing-faq.mdx b/apps/docs/content/guides/platform/billing-faq.mdx
similarity index 95%
rename from apps/docs/pages/guides/platform/billing-faq.mdx
rename to apps/docs/content/guides/platform/billing-faq.mdx
index 018ab1bd227..6616ce86ccc 100644
--- a/apps/docs/pages/guides/platform/billing-faq.mdx
+++ b/apps/docs/content/guides/platform/billing-faq.mdx
@@ -1,13 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'billing-faq',
- title: 'Billing FAQ',
- description:
- 'This documentation covers frequently asked questions around subscription plans, payments, invoices and billing in general',
- subtitle:
- 'This documentation covers frequently asked questions around subscription plans, payments, invoices and billing in general',
-}
+---
+id: 'billing-faq'
+title: 'Billing FAQ'
+description: 'This documentation covers frequently asked questions around subscription plans, payments, invoices and billing in general'
+subtitle: 'This documentation covers frequently asked questions around subscription plans, payments, invoices and billing in general'
+---
## Organizations and projects
@@ -172,7 +168,3 @@ No, we do not provide refunds. Please refer to our [Terms of Service](https://su
#### What do I do if my bill looks wrong?
Please submit a [support ticket](https://supabase.help) through the dashboard. Select the affected organization and provide the invoice number for us to look at your case.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/branching.mdx b/apps/docs/content/guides/platform/branching.mdx
similarity index 98%
rename from apps/docs/pages/guides/platform/branching.mdx
rename to apps/docs/content/guides/platform/branching.mdx
index 7421a6f9b14..57d949e501c 100644
--- a/apps/docs/pages/guides/platform/branching.mdx
+++ b/apps/docs/content/guides/platform/branching.mdx
@@ -1,11 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import { Admonition } from 'ui'
-
-export const meta = {
- title: 'Branching',
- description: 'Use Supabase Branches to test and preview changes.',
- subtitle: 'Use Supabase Branches to test and preview changes',
-}
+---
+title: 'Branching'
+description: 'Use Supabase Branches to test and preview changes.'
+subtitle: 'Use Supabase Branches to test and preview changes'
+---
@@ -654,7 +651,3 @@ Prices listed are for Early Access and are subject to change.
Supabase branching is a new and exciting new part of the Supabase development ecosystem. We're monitoring its success and open to any feedback.
You can join the [conversation over in GitHub discussions](https://github.com/orgs/supabase/discussions/18937).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/compute-add-ons.mdx b/apps/docs/content/guides/platform/compute-add-ons.mdx
similarity index 96%
rename from apps/docs/pages/guides/platform/compute-add-ons.mdx
rename to apps/docs/content/guides/platform/compute-add-ons.mdx
index 490822dcb2c..73a09b9e5c3 100644
--- a/apps/docs/pages/guides/platform/compute-add-ons.mdx
+++ b/apps/docs/content/guides/platform/compute-add-ons.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'compute-add-ons',
- title: 'Compute Add-ons',
- description: "Learn about your project's instance and additional add-ons.",
-}
+---
+id: 'compute-add-ons'
+title: 'Compute Add-ons'
+description: "Learn about your project's instance and additional add-ons."
+---
Every project on the Supabase Platform comes with its own dedicated Postgres instance running inside a virtual machine (VM). The following table describes the base instance with additional compute add-ons available if you need extra performance when scaling up Supabase.
@@ -86,7 +84,3 @@ The maximum number of replication slots and WAL senders depends on your compute
As mentioned in the Postgres [documentation](https://postgresqlco.nf/doc/en/param/max_replication_slots/), setting `max_replication_slots` to a lower value than the current number of replication slots will prevent the server from starting. If you are downgrading your compute add-on, please ensure that you are using fewer slots than the maximum number of replication slots available for the new compute add-on.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/custom-domains.mdx b/apps/docs/content/guides/platform/custom-domains.mdx
similarity index 97%
rename from apps/docs/pages/guides/platform/custom-domains.mdx
rename to apps/docs/content/guides/platform/custom-domains.mdx
index a0a251d89da..a1933986517 100644
--- a/apps/docs/pages/guides/platform/custom-domains.mdx
+++ b/apps/docs/content/guides/platform/custom-domains.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'custom-domains',
- title: 'Custom Domains',
- description: 'Use a custom domain instead of the default Supabase domain for your project.',
- video: 'https://www.youtube.com/v/6rcGnW_Mh-0',
-}
+---
+id: 'custom-domains'
+title: 'Custom Domains'
+description: 'Use a custom domain instead of the default Supabase domain for your project.'
+video: 'https://www.youtube.com/v/6rcGnW_Mh-0'
+---
Custom domains allow you to present a branded experience to your users. These are available as an [add-on for projects on a paid plan](/dashboard/project/_/settings/addons?panel=customDomain).
@@ -225,7 +223,3 @@ Use the [`vanity-subdomains delete`](/docs/reference/cli/supabase-vanity-subdoma
```bash
supabase vanity-subdomains delete --project-ref abcdefghijklmnopqrst --experimental
```
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/custom-postgres-config.mdx b/apps/docs/content/guides/platform/custom-postgres-config.mdx
similarity index 93%
rename from apps/docs/pages/guides/platform/custom-postgres-config.mdx
rename to apps/docs/content/guides/platform/custom-postgres-config.mdx
index 62bce373873..c45a65c45e5 100644
--- a/apps/docs/pages/guides/platform/custom-postgres-config.mdx
+++ b/apps/docs/content/guides/platform/custom-postgres-config.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'custom-postgres-config',
- title: 'Custom Postgres Config',
- description: 'Configuring Postgres for your Supabase project.',
-}
+---
+id: 'custom-postgres-config'
+title: 'Custom Postgres Config'
+description: 'Configuring Postgres for your Supabase project.'
+---
Supabase projects come with a Postgres cluster that is pre-configured for optimal performance. The configuration is based on a diverse range of workloads as well as the compute add-ons being used in the project. You can override this configuration to better optimize the Postgres cluster for specific workloads.
@@ -71,10 +69,6 @@ max_parallel_workers |3 |
1. The Postgres cluster will be restarted in order to change the configuration being used. This will cause momentary disruption to existing database connections; in most cases this should not take more than a few seconds.
1. Custom Postgres Config will always override the default optimizations generated by Supabase. When changing compute add-ons, this may require manual updates to any relevant overrides that have been applied.
-export const Page = ({ children }) =>
-
-export default Page
-
## Pooler config
You can also [customize some parameters](https://supabase.com/dashboard/project/_/settings/database) for the Connection Pooler:
diff --git a/apps/docs/pages/guides/platform/database-size.mdx b/apps/docs/content/guides/platform/database-size.mdx
similarity index 95%
rename from apps/docs/pages/guides/platform/database-size.mdx
rename to apps/docs/content/guides/platform/database-size.mdx
index 86f83bff4e2..b3ed9a3bd4d 100644
--- a/apps/docs/pages/guides/platform/database-size.mdx
+++ b/apps/docs/content/guides/platform/database-size.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'database-size',
- title: 'Database size',
- description: 'Understanding how database size applies to your subscription.',
-}
+---
+id: 'database-size'
+title: 'Database size'
+description: 'Understanding how database size applies to your subscription.'
+---
Database size refers to the _monthly average storage usage_, as reported by Postgres. This metric is reported in your organization's [billing usage](https://supabase.com/dashboard/org/_/usage) and is updated daily. As you read this document we will refer to "database size" and "disk size":
@@ -113,7 +111,3 @@ Once you have reclaimed space, you can run the following to disable [read-only](
```sql
set default_transaction_read_only = 'off';
```
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/enterprise-billing.mdx b/apps/docs/content/guides/platform/enterprise-billing.mdx
similarity index 72%
rename from apps/docs/pages/guides/platform/enterprise-billing.mdx
rename to apps/docs/content/guides/platform/enterprise-billing.mdx
index 7033890c093..4229af1d756 100644
--- a/apps/docs/pages/guides/platform/enterprise-billing.mdx
+++ b/apps/docs/content/guides/platform/enterprise-billing.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'enterprise-billing',
- title: 'Enterprise Billing',
- description: 'Multiple organizations using a single subscription for Enterprise customers',
- subtitle: 'Multiple organizations using a single subscription for Enterprise customers',
-}
+---
+id: 'enterprise-billing'
+title: 'Enterprise Billing'
+description: 'Multiple organizations using a single subscription for Enterprise customers'
+subtitle: 'Multiple organizations using a single subscription for Enterprise customers'
+---
Enterprise customers can use Account-based Billing to simplify billing for multiple organizations.
@@ -26,7 +24,3 @@ For the usage-billing, we’ll sum up the usage from all organizations and proje
## Upgrading to the Enterprise plan
Account-based Billing is not self-serve. Please reach out to your customer success contact person to set this up.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/exhaust-cpu.mdx b/apps/docs/content/guides/platform/exhaust-cpu.mdx
similarity index 89%
rename from apps/docs/pages/guides/platform/exhaust-cpu.mdx
rename to apps/docs/content/guides/platform/exhaust-cpu.mdx
index 96d25fef3a0..b17673d7cdd 100644
--- a/apps/docs/pages/guides/platform/exhaust-cpu.mdx
+++ b/apps/docs/content/guides/platform/exhaust-cpu.mdx
@@ -1,11 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'exhaust-cpu',
- title: 'High CPU Usage',
- description:
- 'Learn what high CPU usage could mean for your Supabase instance and what could have caused it.',
-}
+---
+id: 'exhaust-cpu'
+title: 'High CPU Usage'
+description: 'Learn what high CPU usage could mean for your Supabase instance and what could have caused it.'
+---
Learn what high CPU usage could mean for your Supabase instance and what could have caused it.
@@ -43,7 +40,3 @@ There are two ways to solve high CPU:
1. **Optimize performance:** Get more out of your instance's resources by optimizing your usage. Have a look at our [performance tuning guide](https://supabase.com/docs/guides/platform/performance#examining-query-performance) and our [production readiness guide](https://supabase.com/docs/guides/platform/going-into-prod#performance).
2. **Upgrade your compute:** You can get a Compute Add-on for your project. Follow [this link](https://supabase.com/dashboard/project/_/settings/addons?panel=computeInstance) and select your project to see your upgrade options.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/exhaust-disk-io.mdx b/apps/docs/content/guides/platform/exhaust-disk-io.mdx
similarity index 91%
rename from apps/docs/pages/guides/platform/exhaust-disk-io.mdx
rename to apps/docs/content/guides/platform/exhaust-disk-io.mdx
index 53998339c04..4e89ad093f9 100644
--- a/apps/docs/pages/guides/platform/exhaust-disk-io.mdx
+++ b/apps/docs/content/guides/platform/exhaust-disk-io.mdx
@@ -1,11 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'exhaust-disk-io',
- title: 'High Disk IO Consumption',
- description:
- 'Understand Disk IO, what can deplete your Disk Budget and what you can do about it.',
-}
+---
+id: 'exhaust-disk-io'
+title: 'High Disk IO Consumption'
+description: 'Understand Disk IO, what can deplete your Disk Budget and what you can do about it.'
+---
## Understanding disk IO and disk budget
@@ -42,7 +39,3 @@ Most operations on your Supabase project require the disk in some form. Hence, t
1. **Upgrade your compute:** You can get a Compute Add-on for your project. See your [upgrade options](https://supabase.com/dashboard/project/_/settings/addons?panel=computeInstance) by selecting your project. Do reference the [different baseline performances](https://supabase.com/docs/guides/platform/compute-add-ons#disk-io) that come with larger Compute Add-ons.
2. **Optimize performance:** Get more out of your instance's resources by optimizing your usage. Have a look at our [performance tuning guide](https://supabase.com/docs/guides/platform/performance#examining-query-performance) and our [production readiness guide](https://supabase.com/docs/guides/platform/going-into-prod#performance).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/exhaust-ram.mdx b/apps/docs/content/guides/platform/exhaust-ram.mdx
similarity index 92%
rename from apps/docs/pages/guides/platform/exhaust-ram.mdx
rename to apps/docs/content/guides/platform/exhaust-ram.mdx
index 40989737c0f..12381f9d492 100644
--- a/apps/docs/pages/guides/platform/exhaust-ram.mdx
+++ b/apps/docs/content/guides/platform/exhaust-ram.mdx
@@ -1,11 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'exhaust-ram',
- title: 'High Memory Usage',
- description:
- 'Learn what high RAM usage could mean for your Supabase instance and what could have caused it.',
-}
+---
+id: 'exhaust-ram'
+title: 'High Memory Usage'
+description: 'Learn what high RAM usage could mean for your Supabase instance and what could have caused it.'
+---
Learn what high RAM usage could mean for your Supabase instance and what could have caused it.
@@ -49,7 +46,3 @@ Everything you do with your Supabase project requires memory in some form. Hence
1. **Upgrade your compute:**Â You can get a Compute Add-on for your project. See your [upgrade options](https://supabase.com/dashboard/project/_/settings/addons?panel=computeInstance) by selecting your project.
2. **Optimize performance:** Get more out of your instance's resources by optimizing your usage. Have a look at our [performance tuning guide](https://supabase.com/docs/guides/platform/performance#examining-query-performance) and our [production readiness guide](https://supabase.com/docs/guides/platform/going-into-prod#performance).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/fly-postgres.mdx b/apps/docs/content/guides/platform/fly-postgres.mdx
similarity index 94%
rename from apps/docs/pages/guides/platform/fly-postgres.mdx
rename to apps/docs/content/guides/platform/fly-postgres.mdx
index 0837bbba6c5..2a9fe377edd 100644
--- a/apps/docs/pages/guides/platform/fly-postgres.mdx
+++ b/apps/docs/content/guides/platform/fly-postgres.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'fly-postgres',
- title: 'Fly Postgres',
- description: 'Deploy Supabase projects on the Fly.io platform',
-}
+---
+id: 'fly-postgres'
+title: 'Fly Postgres'
+description: 'Deploy Supabase projects on the Fly.io platform'
+---
Fly Postgres databases are deployed on the Fly.io edge network. Fly Postgres is supported in [every region](https://fly.io/docs/reference/regions/) where Fly.io operates.
@@ -69,7 +67,3 @@ When using Fly Postgres, be aware of the current restrictions:
- Currently, only the database, Supavisor, and Postgrest are supported. Support for additional Supabase products such as Realtime, Storage, and Auth is planned.
- New projects can only be launched using the Fly CLI and not via the Supabase dashboard.
- The [pg_cron](/docs/guides/database/extensions/pg_cron) extension is not fully supported for Fly projects. Fly projects shut down after 15 minutes of inactivity, but transparently start up when an external request is received. However, this does not apply to pg_cron jobs, which aren’t triggered by external requests. ` pg_cron` jobs don’t run when the database is shut down due to inactivity. We are working on removing this behavior for paid projects.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/going-into-prod.mdx b/apps/docs/content/guides/platform/going-into-prod.mdx
similarity index 96%
rename from apps/docs/pages/guides/platform/going-into-prod.mdx
rename to apps/docs/content/guides/platform/going-into-prod.mdx
index b651e6b6658..6fab64d5ac1 100644
--- a/apps/docs/pages/guides/platform/going-into-prod.mdx
+++ b/apps/docs/content/guides/platform/going-into-prod.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'going-into-prod',
- title: 'Production Checklist',
- description: 'Things to do before making your app publicly available',
-}
+---
+id: 'going-into-prod'
+title: 'Production Checklist'
+description: 'Things to do before making your app publicly available'
+---
After developing your project and deciding it's Production Ready, you should run through this checklist to ensure that your project:
@@ -94,7 +92,3 @@ After developing your project and deciding it's Production Ready, you should run
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).
[^1]: The rate limit is only applied on `/auth/v1/user` if this endpoint is called to update the user's email address.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/http-status-codes.mdx b/apps/docs/content/guides/platform/http-status-codes.mdx
similarity index 86%
rename from apps/docs/pages/guides/platform/http-status-codes.mdx
rename to apps/docs/content/guides/platform/http-status-codes.mdx
index 102e59af7d5..db0d650e33f 100644
--- a/apps/docs/pages/guides/platform/http-status-codes.mdx
+++ b/apps/docs/content/guides/platform/http-status-codes.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'http-status-codes',
- title: 'HTTP Status Codes',
- description: 'HTTP Status Codes used by the Supabase platform',
-}
+---
+id: 'http-status-codes'
+title: 'HTTP Status Codes'
+description: 'HTTP Status Codes used by the Supabase platform'
+---
The Supabase platform offers several HTTP APIs for each project. These APIs can use the status codes to indicate the state of the project, and the request being processed. The status codes returned for requests can be access via the [logs explorer](../platform/logs#logs-explorer).
@@ -41,7 +39,3 @@ Free-plan projects may be paused due to inactivity, on request by the owner, or
The request is not completed within the configured time limit.
The timeout limit is set to prevent long-running queries which can cause performance issues, increase latency, and potentially even crash the project.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/ipv4-address.mdx b/apps/docs/content/guides/platform/ipv4-address.mdx
similarity index 85%
rename from apps/docs/pages/guides/platform/ipv4-address.mdx
rename to apps/docs/content/guides/platform/ipv4-address.mdx
index 7d6efb8cc8d..2a15dc1332e 100644
--- a/apps/docs/pages/guides/platform/ipv4-address.mdx
+++ b/apps/docs/content/guides/platform/ipv4-address.mdx
@@ -1,11 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import { Admonition } from 'ui'
-
-export const meta = {
- title: 'IPv4 Address',
- description: 'Attach an IPv4 address to your database',
- subtitle: 'Attach an IPv4 address to your database',
-}
+---
+title: 'IPv4 Address'
+description: 'Attach an IPv4 address to your database'
+subtitle: 'Attach an IPv4 address to your database'
+---
From 26th January 2024, we will begin migrating projects to IPv6. To read more about why we are doing this migration, read [this blog post](https://supabase.com/blog/ipv6) and [this discussion](https://github.com/orgs/supabase/discussions/17817) for how to prepare for the migration. As a summary, AWS will [start charging for IPv4 addresses](https://aws.amazon.com/blogs/aws/new-aws-public-ipv4-address-charge-public-ip-insights/).
@@ -39,7 +36,3 @@ You can now enable the IPv4 add-on in your project [add-on settings](https://sup
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/logs.mdx b/apps/docs/content/guides/platform/logs.mdx
similarity index 92%
rename from apps/docs/pages/guides/platform/logs.mdx
rename to apps/docs/content/guides/platform/logs.mdx
index d449fe3b2ab..e8a0b323016 100644
--- a/apps/docs/pages/guides/platform/logs.mdx
+++ b/apps/docs/content/guides/platform/logs.mdx
@@ -1,11 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import { logConstants } from 'shared-data'
-
-export const meta = {
- id: 'logs',
- title: 'Logging',
- description: 'Getting started with Supabase Log Browser',
-}
+---
+id: 'logs'
+title: 'Logging'
+description: 'Getting started with Supabase Log Browser'
+---
The Supabase Platform includes a Logs Explorer that allows log tracing and debugging. Log retention is based on your [project's pricing plan](https://supabase.com/pricing).
@@ -298,29 +295,29 @@ where h.x_real_ip is not null and r.method = "GET";
Refer to the full field reference for each available source below. Do note that in order to access each nested key, you would need to perform the [necessary unnesting joins](#unnesting-arrays)
-
- {logConstants.schemas.map((schema) => (
-
-
-
- | Path |
- Type |
-
-
- {schema.fields
- .sort((a, b) => a.path - b.path)
- .map((field) => (
-
- | {field.path} |
- {field.type} |
-
- ))}
-
-
-
- ))}
-
-
-export const Page = ({ children }) =>
-
-export default Page
+
+ {(logConstants) => (
+
+ {logConstants.schemas.map((schema) => (
+
+
+
+ | Path |
+ Type |
+
+
+ {schema.fields
+ .sort((a, b) => a.path - b.path)
+ .map((field) => (
+
+ | {field.path} |
+ {field.type} |
+
+ ))}
+
+
+
+ ))}
+
+ )}
+
diff --git a/apps/docs/pages/guides/platform/marketplace.mdx b/apps/docs/content/guides/platform/marketplace.mdx
similarity index 87%
rename from apps/docs/pages/guides/platform/marketplace.mdx
rename to apps/docs/content/guides/platform/marketplace.mdx
index 755b5ebd5dd..c439fb646d8 100644
--- a/apps/docs/pages/guides/platform/marketplace.mdx
+++ b/apps/docs/content/guides/platform/marketplace.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'integrations',
- title: 'Supabase Marketplace',
- description: 'Integrations and Partners',
-}
+---
+id: 'integrations'
+title: 'Supabase Marketplace'
+description: 'Integrations and Partners'
+---
The Supabase Marketplace brings together all the tools you need to extend your Supabase project. This includes:
@@ -34,7 +32,3 @@ Integrations are assessed on the following criteria:
All listings are required to have their own Terms and Conditions, Privacy Policy, and Acceptable Use Policy, and the company must have resources to meet their SLAs.
- **Maintainability**
All integrations are required to be maintained and functional with Supabase, and the company may be assessed on your ability to remain functional over a long time horizon.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/maturity-model.mdx b/apps/docs/content/guides/platform/maturity-model.mdx
similarity index 91%
rename from apps/docs/pages/guides/platform/maturity-model.mdx
rename to apps/docs/content/guides/platform/maturity-model.mdx
index 525a19619be..1a4f414063e 100644
--- a/apps/docs/pages/guides/platform/maturity-model.mdx
+++ b/apps/docs/content/guides/platform/maturity-model.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'maturity-model',
- title: 'Maturity Model',
- description: 'Growing with your application.',
-}
+---
+id: 'maturity-model'
+title: 'Maturity Model'
+description: 'Growing with your application.'
+---
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.
@@ -43,7 +41,3 @@ Resources:
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
diff --git a/apps/docs/pages/guides/platform/metrics.mdx b/apps/docs/content/guides/platform/metrics.mdx
similarity index 83%
rename from apps/docs/pages/guides/platform/metrics.mdx
rename to apps/docs/content/guides/platform/metrics.mdx
index 629bf626965..dece498959f 100644
--- a/apps/docs/pages/guides/platform/metrics.mdx
+++ b/apps/docs/content/guides/platform/metrics.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'metrics',
- title: 'Metrics',
- description: 'Observability for your Supabase project',
-}
+---
+id: 'metrics'
+title: 'Metrics'
+description: 'Observability for your Supabase project'
+---
In addition to the reports and charts built in to the Supabase dashboard, each project hosted on the Supabase platform comes with a [Prometheus](https://prometheus.io/)-compatible metrics endpoint, which can be used to gather insight into the health and status of your project.
@@ -31,7 +29,3 @@ Your project's metrics endpoint is accessible at `https://.supabase
```
Additionally, we [maintain a guide](https://github.com/supabase/supabase-grafana) on quickly setting up a scraping agent to work with Grafana Cloud.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/migrating-and-upgrading-projects.mdx b/apps/docs/content/guides/platform/migrating-and-upgrading-projects.mdx
similarity index 97%
rename from apps/docs/pages/guides/platform/migrating-and-upgrading-projects.mdx
rename to apps/docs/content/guides/platform/migrating-and-upgrading-projects.mdx
index a80f36d0853..592559d202b 100644
--- a/apps/docs/pages/guides/platform/migrating-and-upgrading-projects.mdx
+++ b/apps/docs/content/guides/platform/migrating-and-upgrading-projects.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'migrating-and-upgrading-projects',
- title: 'Migrating and Upgrading Projects',
- description: 'Upgrade your project to the latest version of Supabase.',
- sidebar_label: 'Migrating and upgrading',
-}
+---
+id: 'migrating-and-upgrading-projects'
+title: 'Migrating and Upgrading Projects'
+description: 'Upgrade your project to the latest version of Supabase.'
+sidebar_label: 'Migrating and upgrading'
+---
Supabase ships fast and we endeavor to add all new features to existing projects wherever possible.
In some cases, access to new features require upgrading or migrating your Supabase project.
@@ -266,7 +264,3 @@ const NEW_PROJECT_SERVICE_KEY = 'new-project-service-key-yyy'
### Transfer to a different organization
Note that project migration is for transferring your projects to different regions. If you need to move your project to a different organization without touching the infrastructure, see [project transfers](/docs/guides/platform/project-transfer).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/multi-factor-authentication.mdx b/apps/docs/content/guides/platform/multi-factor-authentication.mdx
similarity index 83%
rename from apps/docs/pages/guides/platform/multi-factor-authentication.mdx
rename to apps/docs/content/guides/platform/multi-factor-authentication.mdx
index 68eca8f210c..cd49f64d560 100644
--- a/apps/docs/pages/guides/platform/multi-factor-authentication.mdx
+++ b/apps/docs/content/guides/platform/multi-factor-authentication.mdx
@@ -1,11 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import { IconCheck } from 'ui'
-
-export const meta = {
- title: 'Multi-factor Authentication',
- description: 'Enable multi-factor authentication (MFA) to keep your account secure.',
- subtitle: 'Enable multi-factor authentication (MFA) to keep your account secure.',
-}
+---
+title: 'Multi-factor Authentication'
+description: 'Enable multi-factor authentication (MFA) to keep your account secure.'
+subtitle: 'Enable multi-factor authentication (MFA) to keep your account secure.'
+---
@@ -48,7 +45,3 @@ You can disable MFA for your user account under your [Supabase account settings]
We strongly recommend that you do not disable MFA to avoid unauthorized access to your user account.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/network-restrictions.mdx b/apps/docs/content/guides/platform/network-restrictions.mdx
similarity index 93%
rename from apps/docs/pages/guides/platform/network-restrictions.mdx
rename to apps/docs/content/guides/platform/network-restrictions.mdx
index 9ffbb95e96d..258faa18d8f 100644
--- a/apps/docs/pages/guides/platform/network-restrictions.mdx
+++ b/apps/docs/content/guides/platform/network-restrictions.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'network-restrictions',
- title: 'Network Restrictions',
- description: "Apply network restrictions for your project's database.",
-}
+---
+id: 'network-restrictions'
+title: 'Network Restrictions'
+description: "Apply network restrictions for your project's database."
+---
@@ -78,7 +76,3 @@ Restrictions applied successfully: true
- The current iteration of Network Restrictions applies to connections to Postgres and the database pooler; it doesn't currently apply to APIs offered over HTTPS (e.g., PostgREST, Storage, and Auth). This includes using Supabase client libraries like [supabase-js](https://supabase.com/docs/reference/javascript).
- If network restrictions are enabled, direct access to your database from Edge Functions will always be blocked. Using the Supabase client library [supabase-js](https://supabase.com/docs/reference/javascript) is recommended to connect to a database with network restrictions from Edge Functions.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/oauth-apps/build-a-supabase-integration.mdx b/apps/docs/content/guides/platform/oauth-apps/build-a-supabase-integration.mdx
similarity index 94%
rename from apps/docs/pages/guides/platform/oauth-apps/build-a-supabase-integration.mdx
rename to apps/docs/content/guides/platform/oauth-apps/build-a-supabase-integration.mdx
index 6cbd24a94b5..99ed57356c7 100644
--- a/apps/docs/pages/guides/platform/oauth-apps/build-a-supabase-integration.mdx
+++ b/apps/docs/content/guides/platform/oauth-apps/build-a-supabase-integration.mdx
@@ -1,12 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'build-a-supabase-integration',
- title: 'Build a Supabase Integration (Beta)',
- subtitle:
- "This guide steps through building a Supabase Integration using OAuth2 and the management API, allowing you to manage users' organizations and projects on their behalf.",
- description: 'Build a Supabase Integration using OAuth2 and the Management API.',
-}
+---
+id: 'build-a-supabase-integration'
+title: 'Build a Supabase Integration (Beta)'
+subtitle: "This guide steps through building a Supabase Integration using OAuth2 and the management API, allowing you to manage users' organizations and projects on their behalf."
+description: 'Build a Supabase Integration using OAuth2 and the Management API.'
+---
Using OAuth2.0 you can retrieve an access and refresh token that grant your application full access to the [Management API](https://supabase.com/docs/reference/api/introduction) on behalf of the user.
@@ -157,7 +154,3 @@ You can configure the user's [custom SMTP settings](https://supabase.com/docs/gu
## Current limitations
Only some features are available until we roll out fine-grained access control. If you need full database access, you will need to prompt the user for their database password.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/oauth-apps/oauth-scopes.mdx b/apps/docs/content/guides/platform/oauth-apps/oauth-scopes.mdx
similarity index 94%
rename from apps/docs/pages/guides/platform/oauth-apps/oauth-scopes.mdx
rename to apps/docs/content/guides/platform/oauth-apps/oauth-scopes.mdx
index c65e06312e3..7075b0a1e84 100644
--- a/apps/docs/pages/guides/platform/oauth-apps/oauth-scopes.mdx
+++ b/apps/docs/content/guides/platform/oauth-apps/oauth-scopes.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'oauth-scopes',
- title: 'Scopes for your OAuth App',
- description: 'Scopes let you specify the level of access your integration needs',
- subtitle: 'Scopes let you specify the level of access your integration needs',
-}
+---
+id: 'oauth-scopes'
+title: 'Scopes for your OAuth App'
+description: 'Scopes let you specify the level of access your integration needs'
+subtitle: 'Scopes let you specify the level of access your integration needs'
+---
@@ -39,7 +37,3 @@ Scopes are set when you [create an OAuth app](/docs/guides/platform/oauth-apps/b
| `Rest` | `Write` | Update a project's PostgREST configuration |
| `Secrets` | `Read` | Retrieve a project's API keys
Retrieve a project's secrets
Retrieve a project's pgsodium config |
| `Secrets` | `Write` | Create or update a project's secrets
Update a project's pgsodium configuration |
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/org-based-billing.mdx b/apps/docs/content/guides/platform/org-based-billing.mdx
similarity index 96%
rename from apps/docs/pages/guides/platform/org-based-billing.mdx
rename to apps/docs/content/guides/platform/org-based-billing.mdx
index 8a9c8d58d7b..b6caf671fa3 100644
--- a/apps/docs/pages/guides/platform/org-based-billing.mdx
+++ b/apps/docs/content/guides/platform/org-based-billing.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'organization-based-billing',
- title: 'How billing works',
- description: 'Learn how billing works in Supabase.',
- subtitle: 'Learn how billing works in Supabase.',
-}
+---
+id: 'organization-based-billing'
+title: 'How billing works'
+description: 'Learn how billing works in Supabase.'
+subtitle: 'Learn how billing works in Supabase.'
+---
Our goal at Supabase is to provide a _predictable_ billing system that grows with your project.
@@ -173,7 +171,3 @@ Here's the quota for your entire organization:
If you wish to keep the same quota for each project, you can separate your projects into three organizations on the Pro plan each. You'd end up paying $25 for each project, so $75 instead of $45 in total, while getting more quota.
See [Project Transfers](/docs/guides/platform/project-transfer) to move projects across organizations.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/performance.mdx b/apps/docs/content/guides/platform/performance.mdx
similarity index 97%
rename from apps/docs/pages/guides/platform/performance.mdx
rename to apps/docs/content/guides/platform/performance.mdx
index f9e1066c02b..47562326a5c 100644
--- a/apps/docs/pages/guides/platform/performance.mdx
+++ b/apps/docs/content/guides/platform/performance.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'performance',
- title: 'Performance Tuning',
- description: 'Getting the best results out of your Supabase project',
-}
+---
+id: 'performance'
+title: 'Performance Tuning'
+description: 'Getting the best results out of your Supabase project'
+---
The Supabase platform automatically optimizes your Postgres database to take advantage of the compute resources of the plan your project is on. However, these optimizations are based on assumptions about the type of workflow the project is being utilized for, and it is likely that better results can be obtained by tuning the database for your particular workflow.
@@ -214,7 +212,3 @@ Depending on the clients involved, you might be able to configure them to work w
### Allowing higher number of connections
You can configure Postgres connection limit among other parameters by using [Custom Postgres Config](/docs/guides/platform/custom-postgres-config#custom-postgres-config).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/permissions.mdx b/apps/docs/content/guides/platform/permissions.mdx
similarity index 72%
rename from apps/docs/pages/guides/platform/permissions.mdx
rename to apps/docs/content/guides/platform/permissions.mdx
index 726786d033a..3fdb8fcc752 100644
--- a/apps/docs/pages/guides/platform/permissions.mdx
+++ b/apps/docs/content/guides/platform/permissions.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'permissions',
- title: 'Permissions',
- description: 'Permissions requirements for the Supabase Cloud hosting environment',
-}
+---
+id: 'permissions'
+title: 'Permissions'
+description: 'Permissions requirements for the Supabase Cloud hosting environment'
+---
The Supabase platform offers additional services (e.g. Storage) on top of the Postgres database that comes with each project. These services default to storing their operational data within your database, to ensure that you retain complete control over it.
@@ -14,7 +12,3 @@ However, these services assume a base level of access to their data, in order to
- all entities under the `auth` schema are owned by `supabase_auth_admin`
It is possible for violations of these assumptions to not cause an immediate outage, but take effect at a later time when a newer migration becomes available.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/project-transfer.mdx b/apps/docs/content/guides/platform/project-transfer.mdx
similarity index 93%
rename from apps/docs/pages/guides/platform/project-transfer.mdx
rename to apps/docs/content/guides/platform/project-transfer.mdx
index d1f5849458d..a711808c9ee 100644
--- a/apps/docs/pages/guides/platform/project-transfer.mdx
+++ b/apps/docs/content/guides/platform/project-transfer.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'project-transfer',
- title: 'Project Transfers',
- description: 'Transfer a project to another organization.',
-}
+---
+id: 'project-transfer'
+title: 'Project Transfers'
+description: 'Transfer a project to another organization.'
+---
With the introduction of [Organization-based Billing](/docs/guides/platform/org-based-billing), we’re adding the ability to freely transfer projects between different organizations. Head to your [projects' general settings](https://supabase.com/dashboard/project/_/settings/general) to initiate a project transfer.
@@ -62,7 +60,3 @@ Transferring a project comes with no downtime at all, we’re just moving things
## Transfer to a different region
Note that project transfers are only transferring your projects across an organization and cannot be used to transfer between different regions. To move your project to a different region, see [migrating your project](/docs/guides/platform/migrating-and-upgrading-projects#migrate-your-project).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/read-replicas.mdx b/apps/docs/content/guides/platform/read-replicas.mdx
similarity index 95%
rename from apps/docs/pages/guides/platform/read-replicas.mdx
rename to apps/docs/content/guides/platform/read-replicas.mdx
index b43a62f5928..d8ef2b741a5 100644
--- a/apps/docs/pages/guides/platform/read-replicas.mdx
+++ b/apps/docs/content/guides/platform/read-replicas.mdx
@@ -1,11 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import { Admonition } from 'ui'
-
-export const meta = {
- title: 'Read Replicas',
- description: 'Spin up additional read-only databases for your project.',
- subtitle: 'Spin up additional read-only databases for your project',
-}
+---
+title: 'Read Replicas'
+description: 'Spin up additional read-only databases for your project.'
+subtitle: 'Spin up additional read-only databases for your project'
+---
@@ -151,7 +148,3 @@ The following procedures require all read replicas for a project to be brought d
2. Performing data restoration.
Changes made to the primary database during these operations heavily disrupt replication and potentially leave active read replicas in unstable states. Once these operations complete, read replicas can be spun back up.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/shared-responsibility-model.mdx b/apps/docs/content/guides/platform/shared-responsibility-model.mdx
similarity index 93%
rename from apps/docs/pages/guides/platform/shared-responsibility-model.mdx
rename to apps/docs/content/guides/platform/shared-responsibility-model.mdx
index 5d70524f4ef..9af3a07d0e7 100644
--- a/apps/docs/pages/guides/platform/shared-responsibility-model.mdx
+++ b/apps/docs/content/guides/platform/shared-responsibility-model.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'shared-responsibility-model',
- title: 'Shared Responsibility Model',
- description: 'Running databases is a shared responsibility between you and Supabase.',
-}
+---
+id: 'shared-responsibility-model'
+title: 'Shared Responsibility Model'
+description: 'Running databases is a shared responsibility between you and Supabase.'
+---
Running databases is a shared responsibility between you and Supabase. There are some things that we can take care of for you, and some things that you are responsible for. This is by design: we to give you the freedom to use your database however you want. While we _could_ put many more restrictions in place to ensure that you can’t do anything wrong, you will eventually find those restrictions prohibitive.
@@ -58,7 +56,3 @@ You can use Supabase to store and process Protected Health Information (PHI). Yo
- Complying with encryption requirements in the HIPAA Security Rule. Data is encrypted at rest and in transit by Supabase. You can consider encrypting the data at your application layer.
- Not using [Edge functions](/docs/guides/functions) to process PHI.
- Not storing PHI in [public Storage buckets](/docs/guides/storage/buckets/fundamentals#public-buckets).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/spend-cap.mdx b/apps/docs/content/guides/platform/spend-cap.mdx
similarity index 88%
rename from apps/docs/pages/guides/platform/spend-cap.mdx
rename to apps/docs/content/guides/platform/spend-cap.mdx
index 6b7e34dbe6c..1bbab063b07 100644
--- a/apps/docs/pages/guides/platform/spend-cap.mdx
+++ b/apps/docs/content/guides/platform/spend-cap.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Spend cap',
- description: 'Learn about the cost control of Supabase.',
- subtitle: 'Learn about the cost control of Supabase.',
-}
+---
+title: 'Spend cap'
+description: 'Learn about the cost control of Supabase.'
+subtitle: 'Learn about the cost control of Supabase.'
+---
Supabase offers a "Spend Cap" on each organization to manage your usage and costs.
@@ -50,7 +48,3 @@ This additional usage will be charged based on the line item's cost per unit out
When your Spend Cap is **off**, we recommend monitoring your consumption and costs using the [Usage section of your organization](https://supabase.com/dashboard/org/_/usage) in the dashboard.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/ssl-enforcement.mdx b/apps/docs/content/guides/platform/ssl-enforcement.mdx
similarity index 89%
rename from apps/docs/pages/guides/platform/ssl-enforcement.mdx
rename to apps/docs/content/guides/platform/ssl-enforcement.mdx
index cf070864fdb..f104c6dfe7a 100644
--- a/apps/docs/pages/guides/platform/ssl-enforcement.mdx
+++ b/apps/docs/content/guides/platform/ssl-enforcement.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Postgres SSL Enforcement',
- description: 'Enforce SSL usage for all Postgres connections',
-}
+---
+title: 'Postgres SSL Enforcement'
+description: 'Enforce SSL usage for all Postgres connections'
+---
@@ -59,7 +57,3 @@ Similarly, to disable SSL enforcement:
> supabase ssl-enforcement --project-ref {ref} update --disable-db-ssl-enforcement --experimental
SSL is *NOT* being enforced.
```
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/sso.mdx b/apps/docs/content/guides/platform/sso.mdx
similarity index 89%
rename from apps/docs/pages/guides/platform/sso.mdx
rename to apps/docs/content/guides/platform/sso.mdx
index f08081d5e6b..dffb85fca2e 100644
--- a/apps/docs/pages/guides/platform/sso.mdx
+++ b/apps/docs/content/guides/platform/sso.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Enable SSO for Your Organization',
- description: 'General information about enabling single sign-on (SSO) for your organization',
-}
+---
+title: 'Enable SSO for Your Organization'
+description: 'General information about enabling single sign-on (SSO) for your organization'
+---
@@ -42,7 +40,3 @@ The following sections outline the limitations when SSO is enabled or disabled f
- You can prevent a user's account from further access to Supabase by removing or disabling their account in your identity provider.
- You should also remove or downgrade their permissions from any organizations inside Supabase.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/sso/azure.mdx b/apps/docs/content/guides/platform/sso/azure.mdx
similarity index 93%
rename from apps/docs/pages/guides/platform/sso/azure.mdx
rename to apps/docs/content/guides/platform/sso/azure.mdx
index e1f2c2b2a7b..9e48e47b4fe 100644
--- a/apps/docs/pages/guides/platform/sso/azure.mdx
+++ b/apps/docs/content/guides/platform/sso/azure.mdx
@@ -1,10 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import { Button, IconArrowDown } from 'ui'
-
-export const meta = {
- title: 'Set Up SSO with Azure AD',
- description: 'Configure single sign-on with Azure AD (Microsoft Entra).',
-}
+---
+title: 'Set Up SSO with Azure AD'
+description: 'Configure single sign-on with Azure AD (Microsoft Entra).'
+---
@@ -99,7 +96,3 @@ Once you’ve received confirmation from your support contact at Supabase that S
You ask them to enter their email address on the [Sign in with SSO](https://supabase.com/dashboard/sign-in-sso) page.
If sign in is not working correctly, reach out to your support contact at Supabase for further guidance.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/sso/gsuite.mdx b/apps/docs/content/guides/platform/sso/gsuite.mdx
similarity index 94%
rename from apps/docs/pages/guides/platform/sso/gsuite.mdx
rename to apps/docs/content/guides/platform/sso/gsuite.mdx
index ea485cbb8db..a7a7fa432b1 100644
--- a/apps/docs/pages/guides/platform/sso/gsuite.mdx
+++ b/apps/docs/content/guides/platform/sso/gsuite.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Set Up SSO with Google Workspace',
- description: 'Configure single sign-on with Google Workspace (GSuite).',
-}
+---
+title: 'Set Up SSO with Google Workspace'
+description: 'Configure single sign-on with Google Workspace (GSuite).'
+---
@@ -90,7 +88,3 @@ It often helps to ask them to log out of their Google account and log back in.
Ask them to enter their email address in the [Sign in with SSO](https://supabase.com/dashboard/sign-in-sso) page.
If sign in is not working correctly, reach out to your support contact at Supabase.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/sso/okta.mdx b/apps/docs/content/guides/platform/sso/okta.mdx
similarity index 94%
rename from apps/docs/pages/guides/platform/sso/okta.mdx
rename to apps/docs/content/guides/platform/sso/okta.mdx
index 7381eefa64f..6134401cd67 100644
--- a/apps/docs/pages/guides/platform/sso/okta.mdx
+++ b/apps/docs/content/guides/platform/sso/okta.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Set Up SSO with Okta',
- description: 'Configure single sign-on with Okta.',
-}
+---
+title: 'Set Up SSO with Okta'
+description: 'Configure single sign-on with Okta.'
+---
@@ -82,7 +80,3 @@ Once you’ve received confirmation from your support contact at Supabase that S
You ask them to enter their email address on the [Sign in with SSO](https://supabase.com/dashboard/sign-in-sso) page.
If sign in is not working correctly, please reach out to your support contact at Supabase for further guidance.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/platform/troubleshooting.mdx b/apps/docs/content/guides/platform/troubleshooting.mdx
similarity index 92%
rename from apps/docs/pages/guides/platform/troubleshooting.mdx
rename to apps/docs/content/guides/platform/troubleshooting.mdx
index 4e6523932ae..0b4c96254cc 100644
--- a/apps/docs/pages/guides/platform/troubleshooting.mdx
+++ b/apps/docs/content/guides/platform/troubleshooting.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'troubleshooting',
- title: 'Troubleshooting',
- description: 'Diagnosing and fixing issues with your hosted Supabase project.',
-}
+---
+id: 'troubleshooting'
+title: 'Troubleshooting'
+description: 'Diagnosing and fixing issues with your hosted Supabase project.'
+---
Learn how to diagnose and fix common issues with your Supabase project.
@@ -51,7 +49,3 @@ Errors about too many open connections can be _temporarily_ resolved by [restart
If you receive a `connection refused` error after a few initial failed connection attempts, your client has likely been temporarily blocked in order to protect the database from brute-force attacks. You can wait 30 minutes before trying again with the correct password, or you can [contact support](https://supabase.com/dashboard/support/new) with your client's IP address to manually unblock you.
If you're also unable to open the project using the [Supabase Dashboard](https://supabase.com/dashboard/project/_/), review the solutions for [under-provisioned projects](#under-provisioned-resources).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/content/guides/resources.mdx b/apps/docs/content/guides/resources.mdx
new file mode 100644
index 00000000000..d455bae4919
--- /dev/null
+++ b/apps/docs/content/guides/resources.mdx
@@ -0,0 +1,195 @@
+---
+title: 'Resources'
+description: 'Resources for getting started building with Supabase.'
+hideToc: true
+---
+
+
+
+
+
+
+ {
+ [
+ {
+ title: 'Examples',
+ hasLightIcon: true,
+ href: '/guides/resources/examples',
+ description: 'Official GitHub examples, curated content from the community, and more.',
+ },
+ {
+ title: 'Glossary',
+ hasLightIcon: true,
+ href: '/guides/resources/glossary',
+ description: 'Definitions for terminology and acronyms used in the Supabase documentation.',
+ }
+ ]
+.map((resource) => {
+ return (
+
+
+ {resource.description}
+
+
+ )
+
+})}
+
+
+
+
+
+
+
+
+### Migrate to Supabase
+
+
+
+
+ {
+ [
+ {
+ title: 'Firebase Auth',
+ icon: '/docs/img/icons/firebase-icon',
+ href: '/guides/resources/migrating-to-supabase/firebase-auth',
+ description: 'Move your auth users from a Firebase project to a Supabase project.',
+ },
+ {
+ title: 'Firestore Data',
+ icon: '/docs/img/icons/firebase-icon',
+ href: '/guides/resources/migrating-to-supabase/firestore-data',
+ description: 'Migrate the contents of a Firestore collection to a single PostgreSQL table.',
+ },
+ {
+ title: 'Firebase Storage',
+ icon: '/docs/img/icons/firebase-icon',
+ href: '/guides/resources/migrating-to-supabase/firebase-storage',
+ description: 'Convert your Firebase Storage files to Supabase Storage.'
+ },
+ {
+ title: 'Heroku',
+ icon: '/docs/img/icons/heroku-icon',
+ href: '/guides/resources/migrating-to-supabase/heroku',
+ description: 'Migrate your Heroku Postgres database to Supabase.'
+ },
+ {
+ title: 'Render',
+ icon: '/docs/img/icons/render-icon',
+ href: '/guides/resources/migrating-to-supabase/render',
+ description: 'Migrate your Render Postgres database to Supabase.'
+ },
+ {
+ title: 'Amazon RDS',
+ icon: '/docs/img/icons/aws-rds-icon',
+ href: '/guides/resources/migrating-to-supabase/amazon-rds',
+ description: 'Migrate your Amazon RDS database to Supabase.'
+ },
+ {
+ title: 'Postgres',
+ icon: '/docs/img/icons/postgres-icon',
+ href: '/guides/resources/migrating-to-supabase/postgres',
+ description: 'Migrate your Postgres database to Supabase.'
+ },
+ {
+ title: 'MySQL',
+ icon: '/docs/img/icons/mysql-icon',
+ href: '/guides/resources/migrating-to-supabase/mysql',
+ description: 'Migrate your MySQL database to Supabase.'
+ },
+ {
+ title: 'Microsoft SQL Server',
+ icon: '/docs/img/icons/mssql-icon',
+ href: '/guides/resources/migrating-to-supabase/mssql',
+ description: 'Migrate your Microsoft SQL Server database to Supabase.'
+ }
+ ]
+.map((product) => {
+ return (
+
+
+ {product.description}
+
+
+ )
+
+})}
+
+
+
+
+
+
+
+
+### Postgres resources
+
+
+
+
+ {
+ [
+ {
+ title: 'Managing Indexes',
+ hasLightIcon: true,
+ href: '/guides/database/postgres/indexes',
+ description: 'Improve query performance using various index types in Postgres.'
+ },
+ {
+ title: 'Cascade Deletes',
+ hasLightIcon: true,
+ href: '/guides/database/postgres/cascade-deletes',
+ description: 'Understand the types of foreign key constraint deletes.'
+ },
+ {
+ title: 'Drop all tables in schema',
+ hasLightIcon: true,
+ href: '/guides/database/postgres/dropping-all-tables-in-schema',
+ description: 'Delete all tables in a given schema.'
+ },
+ {
+ title: 'Select first row per group',
+ hasLightIcon: true,
+ href: '/guides/database/postgres/first-row-in-group',
+ description: 'Retrieve the first row in each distinct group.'
+ },
+ {
+ title: 'Print PostgreSQL version',
+ hasLightIcon: true,
+ href: '/guides/database/postgres/which-version-of-postgres',
+ description: 'Find out which version of Postgres you are running.'
+ }
+ ]
+.map((resource) => {
+ return (
+
+
+ {resource.description}
+
+
+ )
+
+})}
+
+
+
+
+
+{/* end of container */}
+
+
diff --git a/apps/docs/pages/guides/resources/examples.mdx b/apps/docs/content/guides/resources/examples.mdx
similarity index 96%
rename from apps/docs/pages/guides/resources/examples.mdx
rename to apps/docs/content/guides/resources/examples.mdx
index f72414c1358..0e3e2c4ea45 100644
--- a/apps/docs/pages/guides/resources/examples.mdx
+++ b/apps/docs/content/guides/resources/examples.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'examples',
- title: 'Examples and Resources',
- description: 'Examples you can use to get started with Supabase',
- video: 'https://www.youtube.com/v/7uKQBl9uZ00',
-}
+---
+id: 'examples'
+title: 'Examples and Resources'
+description: 'Examples you can use to get started with Supabase'
+video: 'https://www.youtube.com/v/7uKQBl9uZ00'
+---
{/* */}
@@ -172,7 +170,3 @@ Build a basic Todo List with Supabase and your favorite frontend framework:
- [Heavy Bit](https://www.heavybit.com/library/podcasts/jamstack-radio/ep-71-open-source-firebase-alternative-with-paul-copplestone-of-supabase/)
- [Log Rocket](https://podrocket.logrocket.com/9)
- [FS Jam](https://fsjam.org/episodes/episode-33-supabase-with-paul-copplestone)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/resources/glossary.mdx b/apps/docs/content/guides/resources/glossary.mdx
old mode 100755
new mode 100644
similarity index 96%
rename from apps/docs/pages/guides/resources/glossary.mdx
rename to apps/docs/content/guides/resources/glossary.mdx
index 44f9c6a266f..e36ad5ef02d
--- a/apps/docs/pages/guides/resources/glossary.mdx
+++ b/apps/docs/content/guides/resources/glossary.mdx
@@ -1,10 +1,8 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'glossary',
- title: 'Glossary',
- description: 'Definitions for terminology and acronyms used in the Supabase documentation.',
-}
+---
+id: 'glossary'
+title: 'Glossary'
+description: 'Definitions for terminology and acronyms used in the Supabase documentation.'
+---
Definitions for terminology and acronyms used in the Supabase documentation.
@@ -117,7 +115,3 @@ Single-sign on allows enterprises to centrally manage accounts and access to app
## Time-based one-time password (TOTP)
A time-based one-time password is a one-time password generated at regular time intervals from a secret, usually from an application in a mobile device (e.g., Google Authenticator, 1Password).
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/resources/migrating-to-supabase/amazon-rds.mdx b/apps/docs/content/guides/resources/migrating-to-supabase/amazon-rds.mdx
similarity index 93%
rename from apps/docs/pages/guides/resources/migrating-to-supabase/amazon-rds.mdx
rename to apps/docs/content/guides/resources/migrating-to-supabase/amazon-rds.mdx
index 32ad2fa7240..b222ecf810d 100644
--- a/apps/docs/pages/guides/resources/migrating-to-supabase/amazon-rds.mdx
+++ b/apps/docs/content/guides/resources/migrating-to-supabase/amazon-rds.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Migrate from Amazon RDS to Supabase',
- description: 'Migrate your Amazon RDS MySQL or MS SQL database to Supabase Postgres database.',
-}
+---
+title: 'Migrate from Amazon RDS to Supabase'
+description: 'Migrate your Amazon RDS MySQL or MS SQL database to Supabase Postgres database.'
+---
This guide aims to exhibit the process of transferring your Amazon RDS database from any of these engines Postgres, MySQL or MS SQL to Supabase's Postgres database. Although Amazon RDS is a favored managed database service provided by AWS, it may not suffice for all use cases. Supabase, on the other hand, provides an excellent free and open source option that encompasses all the necessary backend features to develop a product: a Postgres database, authentication, instant APIs, edge functions, real-time subscriptions, and storage.
@@ -98,6 +96,3 @@ pgloader config.load
-
-export const Page = ({ children }) =>
-export default Page
diff --git a/apps/docs/pages/guides/resources/migrating-to-supabase/firebase-auth.mdx b/apps/docs/content/guides/resources/migrating-to-supabase/firebase-auth.mdx
similarity index 92%
rename from apps/docs/pages/guides/resources/migrating-to-supabase/firebase-auth.mdx
rename to apps/docs/content/guides/resources/migrating-to-supabase/firebase-auth.mdx
index 958a84a9c4e..b025a5cc015 100644
--- a/apps/docs/pages/guides/resources/migrating-to-supabase/firebase-auth.mdx
+++ b/apps/docs/content/guides/resources/migrating-to-supabase/firebase-auth.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'firebase-auth',
- title: 'Firebase Auth Migration',
- description: 'Migrate Firebase auth users to a Supabase project.',
- sidebar_label: 'Firebase Auth',
-}
+---
+id: 'firebase-auth'
+title: 'Firebase Auth Migration'
+description: 'Migrate Firebase auth users to a Supabase project.'
+sidebar_label: 'Firebase Auth'
+---
Supabase provides several [tools](https://github.com/supabase-community/firebase-to-supabase/tree/main/auth) to help migrate auth users from a Firebase project to a Supabase project. There are two parts to the migration process:
@@ -87,7 +85,3 @@ For more advanced migrations, including the use of a middleware server component
- [Supabase vs Firebase](https://supabase.com/alternatives/supabase-vs-firebase)
- [Firestore Data Migration](/docs/guides/migrations/firestore-data)
- [Firestore Storage Migration](/docs/guides/migrations/firebase-storage)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/resources/migrating-to-supabase/firebase-storage.mdx b/apps/docs/content/guides/resources/migrating-to-supabase/firebase-storage.mdx
similarity index 90%
rename from apps/docs/pages/guides/resources/migrating-to-supabase/firebase-storage.mdx
rename to apps/docs/content/guides/resources/migrating-to-supabase/firebase-storage.mdx
index 6159663db96..e3413d93201 100644
--- a/apps/docs/pages/guides/resources/migrating-to-supabase/firebase-storage.mdx
+++ b/apps/docs/content/guides/resources/migrating-to-supabase/firebase-storage.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'firebase-storage',
- title: 'Firebase Storage Migration',
- description: 'Migrate Firebase Storage files to Supabase Storage.',
- sidebar_label: 'Firebase Storage',
-}
+---
+id: 'firebase-storage'
+title: 'Firebase Storage Migration'
+description: 'Migrate Firebase Storage files to Supabase Storage.'
+sidebar_label: 'Firebase Storage'
+---
Supabase provides several [tools](https://github.com/supabase-community/firebase-to-supabase/tree/main/storage) to convert storage files from Firebase Storage to Supabase Storage. Conversion is a two-step process:
@@ -66,7 +64,3 @@ If the bucket doesn't exist, it's created as a `non-public` bucket. You must set
- [Supabase vs Firebase](https://supabase.com/alternatives/supabase-vs-firebase)
- [Firestore Data Migration](/docs/guides/migrations/firestore-data)
- [Firebase Auth Migration](/docs/guides/migrations/firebase-auth)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/resources/migrating-to-supabase/firestore-data.mdx b/apps/docs/content/guides/resources/migrating-to-supabase/firestore-data.mdx
similarity index 95%
rename from apps/docs/pages/guides/resources/migrating-to-supabase/firestore-data.mdx
rename to apps/docs/content/guides/resources/migrating-to-supabase/firestore-data.mdx
index 40e89473890..58a7eb1d177 100644
--- a/apps/docs/pages/guides/resources/migrating-to-supabase/firestore-data.mdx
+++ b/apps/docs/content/guides/resources/migrating-to-supabase/firestore-data.mdx
@@ -1,11 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'firestore-data',
- title: 'Firestore Data Migration',
- description: 'Migrate your Firebase Firestore database to a Supabase Postgres database.',
- sidebar_label: 'Firestore Data',
-}
+---
+id: 'firestore-data'
+title: 'Firestore Data Migration'
+description: 'Migrate your Firebase Firestore database to a Supabase Postgres database.'
+sidebar_label: 'Firestore Data'
+---
Supabase provides several [tools](https://github.com/supabase-community/firebase-to-supabase/tree/main/firestore) to convert data from a Firebase Firestore database to a Supabase PostgreSQL database. The process copies the entire contents of a single Firestore `collection` to a single PostgreSQL `table`.
@@ -210,7 +208,3 @@ The result is two separate JSON files:
- [Supabase vs Firebase](https://supabase.com/alternatives/supabase-vs-firebase)
- [Firestore Storage Migration](/docs/guides/migrations/firebase-storage)
- [Firebase Auth Migration](/docs/guides/migrations/firebase-auth)
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/resources/migrating-to-supabase/heroku.mdx b/apps/docs/content/guides/resources/migrating-to-supabase/heroku.mdx
similarity index 87%
rename from apps/docs/pages/guides/resources/migrating-to-supabase/heroku.mdx
rename to apps/docs/content/guides/resources/migrating-to-supabase/heroku.mdx
index 9e222e55203..6f5402ebdca 100644
--- a/apps/docs/pages/guides/resources/migrating-to-supabase/heroku.mdx
+++ b/apps/docs/content/guides/resources/migrating-to-supabase/heroku.mdx
@@ -1,12 +1,10 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'heroku',
- title: 'Migrate from Heroku to Supabase',
- description: 'Migrate your Heroku Postgres database to Supabase.',
- sidebar_label: 'Heroku',
- video: 'https://www.youtube.com/v/xsRhPMphtZ4',
-}
+---
+id: 'heroku'
+title: 'Migrate from Heroku to Supabase'
+description: 'Migrate your Heroku Postgres database to Supabase.'
+sidebar_label: 'Heroku'
+video: 'https://www.youtube.com/v/xsRhPMphtZ4'
+---
Supabase is one of the best [free alternatives to Heroku Postgres](https://supabase.com/alternatives/supabase-vs-heroku-postgres). This guide shows how to migrate your Heroku Postgres database to Supabase. This migration requires the [pg_dump](https://www.postgresql.org/docs/current/app-pgdump.html) and [psql](https://www.postgresql.org/docs/current/app-psql.html) CLI tools, which are installed automatically as part of the complete PostgreSQL installation package.
@@ -68,7 +66,3 @@ psql -d "$YOUR_CONNECTION_STRING" -f heroku_dump.sql
Run `pg_dump --help` for a full list of options.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/resources/migrating-to-supabase/mssql.mdx b/apps/docs/content/guides/resources/migrating-to-supabase/mssql.mdx
similarity index 91%
rename from apps/docs/pages/guides/resources/migrating-to-supabase/mssql.mdx
rename to apps/docs/content/guides/resources/migrating-to-supabase/mssql.mdx
index f4c70cdafd8..3b187acbbab 100644
--- a/apps/docs/pages/guides/resources/migrating-to-supabase/mssql.mdx
+++ b/apps/docs/content/guides/resources/migrating-to-supabase/mssql.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Migrate Your MSSQL Database to Supabase',
- description: 'Migrate your Microsoft SQL Server database to Supabase Postgres database.',
-}
+---
+title: 'Migrate Your MSSQL Database to Supabase'
+description: 'Migrate your Microsoft SQL Server database to Supabase Postgres database.'
+---
This guide aims to demonstrate the process of transferring your Microsoft SQL Server database to Supabase's PostgreSQL database. Supabase is a powerful and open-source platform offering a wide range of backend features, including a PostgreSQL database, authentication, instant APIs, edge functions, real-time subscriptions, and storage. Migrating your MSSQL database to Supabase's Postgres enables you to leverage Postgres's capabilities and access all the features you need for your project.
@@ -75,6 +73,3 @@ pgloader config.load
-
-export const Page = ({ children }) =>
-export default Page
diff --git a/apps/docs/pages/guides/resources/migrating-to-supabase/mysql.mdx b/apps/docs/content/guides/resources/migrating-to-supabase/mysql.mdx
similarity index 92%
rename from apps/docs/pages/guides/resources/migrating-to-supabase/mysql.mdx
rename to apps/docs/content/guides/resources/migrating-to-supabase/mysql.mdx
index 0699182b9c9..9c81c9813ba 100644
--- a/apps/docs/pages/guides/resources/migrating-to-supabase/mysql.mdx
+++ b/apps/docs/content/guides/resources/migrating-to-supabase/mysql.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Migrate Your MySQL Database to Supabase',
- description: 'Migrate your MySQL database to Supabase Postgres database.',
-}
+---
+title: 'Migrate Your MySQL Database to Supabase'
+description: 'Migrate your MySQL database to Supabase Postgres database.'
+---
This guide aims to exhibit the process of transferring your MySQL database to Supabase's Postgres database. Supabase is a robust and open-source platform offering a wide range of backend features, including a PostgreSQL database, authentication, instant APIs, edge functions, real-time subscriptions, and storage. Migrating your MySQL database to Supabase's PostgreSQL enables you to leverage PostgreSQL's capabilities and access all the features you need for your project.
@@ -76,6 +74,3 @@ pgloader config.load
-
-export const Page = ({ children }) =>
-export default Page
diff --git a/apps/docs/pages/guides/resources/migrating-to-supabase/postgres.mdx b/apps/docs/content/guides/resources/migrating-to-supabase/postgres.mdx
similarity index 93%
rename from apps/docs/pages/guides/resources/migrating-to-supabase/postgres.mdx
rename to apps/docs/content/guides/resources/migrating-to-supabase/postgres.mdx
index e4df0bb4a78..83ec586b341 100644
--- a/apps/docs/pages/guides/resources/migrating-to-supabase/postgres.mdx
+++ b/apps/docs/content/guides/resources/migrating-to-supabase/postgres.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Migrate from Postgres to Supabase',
- description: 'Migrate your Postgres database to Supabase.',
-}
+---
+title: 'Migrate from Postgres to Supabase'
+description: 'Migrate your Postgres database to Supabase.'
+---
This is a guide for migrating your Postgres database to [Supabase](https://supabase.com).
Supabase is a robust and open-source platform. Supabase provide all the backend features developers need to build a product: a Postgres database, authentication, instant APIs, edge functions, realtime subscriptions, and storage. Postgres is the core of Supabase—for example, you can use row-level security and there are more than 40 Postgres extensions available.
@@ -82,7 +80,3 @@ Run `pg_dump --help` for a full list of options.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/resources/migrating-to-supabase/render.mdx b/apps/docs/content/guides/resources/migrating-to-supabase/render.mdx
similarity index 93%
rename from apps/docs/pages/guides/resources/migrating-to-supabase/render.mdx
rename to apps/docs/content/guides/resources/migrating-to-supabase/render.mdx
index b64d1e250b6..1dbdbef8419 100644
--- a/apps/docs/pages/guides/resources/migrating-to-supabase/render.mdx
+++ b/apps/docs/content/guides/resources/migrating-to-supabase/render.mdx
@@ -1,9 +1,7 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Migrate from Render to Supabase',
- description: 'Migrate your Render Postgres database to Supabase.',
-}
+---
+title: 'Migrate from Render to Supabase'
+description: 'Migrate your Render Postgres database to Supabase.'
+---
Render is a popular Web Hosting service in the online services category that also has a managed Postgres service. Render has a great developer experience, allowing users to deploy straight from GitHub or GitLab. This is the core of their product and they do it really well. However, when it comes to Postgres databases, it may not be the best option.
@@ -84,7 +82,3 @@ Run `pg_dump --help` for a full list of options.
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/self-hosting.mdx b/apps/docs/content/guides/self-hosting.mdx
similarity index 77%
rename from apps/docs/pages/guides/self-hosting.mdx
rename to apps/docs/content/guides/self-hosting.mdx
index 45175875098..a6232eb2b20 100644
--- a/apps/docs/pages/guides/self-hosting.mdx
+++ b/apps/docs/content/guides/self-hosting.mdx
@@ -1,10 +1,9 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- title: 'Self-Hosting',
- description: 'Host Supabase on your own infrastructure.',
- subtitle: 'Host Supabase on your own infrastructure.',
-}
+---
+title: 'Self-Hosting'
+description: 'Host Supabase on your own infrastructure.'
+subtitle: 'Host Supabase on your own infrastructure.'
+hideToc: true
+---
There are several ways to host Supabase on your own computer, server, or cloud.
@@ -78,7 +77,18 @@ export const community = [
The following third-party providers have shown consistent support for the self-hosted version of Supabase:.
- {external.map((x) => (
+ {[
+ {
+ name: 'Digital Ocean',
+ description: 'Deploys using Terraform.',
+ href: 'https://docs.digitalocean.com/developer-center/hosting-supabase-on-digitalocean/',
+ },
+ {
+ name: 'StackGres',
+ description: 'Deploys using Kubernetes.',
+ href: 'https://stackgres.io/blog/running-supabase-on-top-of-stackgres/',
+ },
+ ].map((x) => (
{x.description}
@@ -86,20 +96,3 @@ The following third-party providers have shown consistent support for the self-h
))}
-
-export const external = [
- {
- name: 'Digital Ocean',
- description: 'Deploys using Terraform.',
- href: 'https://docs.digitalocean.com/developer-center/hosting-supabase-on-digitalocean/',
- },
- {
- name: 'StackGres',
- description: 'Deploys using Kubernetes.',
- href: 'https://stackgres.io/blog/running-supabase-on-top-of-stackgres/',
- },
-]
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/self-hosting/docker.mdx b/apps/docs/content/guides/self-hosting/docker.mdx
similarity index 96%
rename from apps/docs/pages/guides/self-hosting/docker.mdx
rename to apps/docs/content/guides/self-hosting/docker.mdx
index adc6dd1deaa..24d5793860d 100644
--- a/apps/docs/pages/guides/self-hosting/docker.mdx
+++ b/apps/docs/content/guides/self-hosting/docker.mdx
@@ -1,12 +1,11 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import JwtGenerator from '~/components/JwtGenerator'
+---
+title: "Self-Hosting with Docker"
+description: "Learn how to configure and deploy Supabase with Docker."
+subtitle: "Learn how to configure and deploy Supabase with Docker."
+tocVideo: "FqiQKRKsfZE"
+---
+
-export const meta = {
- title: 'Self-Hosting with Docker',
- description: 'Learn how to configure and deploy Supabase with Docker.',
- subtitle: 'Learn how to configure and deploy Supabase with Docker.',
- tocVideo: 'FqiQKRKsfZE',
-}
Docker is the easiest way to get started with self-hosted Supabase. This guide assumes you are running the command from the machine you intend to host from.
@@ -335,7 +334,5 @@ A minimal setup working on Ubuntu, hosted on Digital Ocean.
>
-export const Page = ({ children }) =>
-export default Page
diff --git a/apps/docs/layouts/guides/index.tsx b/apps/docs/layouts/guides/index.tsx
index 274d0748d3f..105e250dd5b 100644
--- a/apps/docs/layouts/guides/index.tsx
+++ b/apps/docs/layouts/guides/index.tsx
@@ -67,7 +67,7 @@ const Layout: FC = (props) => {
}, [pathname]) // Needed to recalculate the ToC when the page changes
const hasTableOfContents = tocList.length > 0
- const tocVideoPreview = `http://img.youtube.com/vi/${props.meta.tocVideo}/0.jpg`
+ const tocVideoPreview = `http://img.youtube.com/vi/${props.meta?.tocVideo}/0.jpg`
// page type, ie, Auth, Database, Storage etc
const ogPageType = asPath.split('/')[2]
@@ -118,7 +118,7 @@ const Layout: FC = (props) => {
'duration-100',
].join(' ')}
>
- {props.meta.breadcrumb && (
+ {props.meta?.breadcrumb && (
{props.meta.breadcrumb}
)}
= (props) => {
} prose max-w-none`}
>
{props.meta.title}
- {props.meta.subtitle && (
+ {props.meta?.subtitle && (
{props.meta.subtitle}
)}
diff --git a/apps/docs/lib/docs.ts b/apps/docs/lib/docs.ts
index b9ac429c1aa..ce49d032ac7 100644
--- a/apps/docs/lib/docs.ts
+++ b/apps/docs/lib/docs.ts
@@ -11,7 +11,7 @@ import remarkGfm from 'remark-gfm'
import codeHikeTheme from 'config/code-hike.theme.json' assert { type: 'json' }
const DOCS_DIRECTORY = join(dirname(fileURLToPath(import.meta.url)), '..')
-const GUIDES_DIRECTORY = join(DOCS_DIRECTORY, 'content/guides')
+export const GUIDES_DIRECTORY = join(DOCS_DIRECTORY, 'content/guides')
type GuideFrontmatter = {
title: string
@@ -27,6 +27,7 @@ export function isValidGuideFrontmatter(obj: object): obj is GuideFrontmatter {
export async function getGuidesStaticPaths(section: string) {
const directory = join(GUIDES_DIRECTORY, section)
+
const files = (await readdir(directory, { recursive: true }))
.filter((file) => extname(file) === '.mdx')
.map((file) => ({
@@ -64,6 +65,14 @@ export async function getGuidesStaticProps(
}
const fullPath = join(GUIDES_DIRECTORY, relPath + '.mdx')
+ /**
+ * SAFETY CHECK:
+ * Prevent accessing anything outside of GUIDES_DIRECTORY
+ */
+ if (!fullPath.startsWith(GUIDES_DIRECTORY)) {
+ throw Error('Accessing forbidden route. Content must be within the GUIDES_DIRECTORY.')
+ }
+
const mdx = await readFile(fullPath, 'utf-8')
const editLink = `supabase/supabase/blob/master/apps/docs/content/guides/${relPath}.mdx`
diff --git a/apps/docs/package.json b/apps/docs/package.json
index 8f6eadb9088..b9132607c5d 100644
--- a/apps/docs/package.json
+++ b/apps/docs/package.json
@@ -78,6 +78,7 @@
"devDependencies": {
"@aws-sdk/client-secrets-manager": "^3.410.0",
"@types/hast": "^2.3.4",
+ "@types/jsrsasign": "^10.5.12",
"@types/node": "^18.11.9",
"@types/react": "^18.2.24",
"@types/unist": "^2.0.6",
diff --git a/apps/docs/pages/guides/api/[[...slug]].tsx b/apps/docs/pages/guides/api/[[...slug]].tsx
new file mode 100644
index 00000000000..94951837d6d
--- /dev/null
+++ b/apps/docs/pages/guides/api/[[...slug]].tsx
@@ -0,0 +1,28 @@
+import { type GetStaticPaths, type GetStaticProps, type InferGetStaticPropsType } from 'next'
+import { MDXRemote } from 'next-mdx-remote'
+
+import components from '~/components'
+import Layout from '~/layouts/DefaultGuideLayout'
+import { getGuidesStaticPaths, getGuidesStaticProps } from '~/lib/docs'
+
+export const getStaticPaths = (async () => {
+ return getGuidesStaticPaths('api')
+}) satisfies GetStaticPaths
+
+export const getStaticProps = (async (args) => {
+ return getGuidesStaticProps('api', args)
+}) satisfies GetStaticProps
+
+export default function ApiGuide({
+ frontmatter,
+ mdxSource,
+ editLink,
+}: InferGetStaticPropsType) {
+ const { hideToc, ...meta } = frontmatter
+
+ return (
+
+
+
+ )
+}
diff --git a/apps/docs/pages/guides/cli.mdx b/apps/docs/pages/guides/cli.mdx
deleted file mode 100644
index 6ed94faeb49..00000000000
--- a/apps/docs/pages/guides/cli.mdx
+++ /dev/null
@@ -1,45 +0,0 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-
-export const meta = {
- id: 'cli',
- title: 'Local Dev with CLI',
- description: 'Developing locally using the Supabase CLI.',
- subtitle: 'Developing locally using the Supabase CLI.',
- sidebar_label: 'Overview',
-}
-
-You can use the Supabase CLI to run the entire Supabase stack locally on your machine, simply by running `supabase init` and then `supabase start`.
-
-The Supabase CLI provides tools to develop your project locally, deploy to the Supabase Platform, handle database migrations, and generate types directly from your database schema.
-
-## Resources
-
-
- {integrations.map((x) => (
-
-
-
- {x.description}
-
-
-
- ))}
-
-
-export const integrations = [
- {
- name: 'Supabase CLI',
- description:
- 'The Supabase CLI provides tools to develop manage your Supabase projects from your local machine.',
- href: 'https://github.com/supabase/cli',
- },
- {
- name: 'GitHub Action',
- description: ' A GitHub action for interacting with your Supabase projects using the CLI.',
- href: 'https://github.com/supabase/setup-cli',
- },
-]
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/cli/[[...slug]].tsx b/apps/docs/pages/guides/cli/[[...slug]].tsx
new file mode 100644
index 00000000000..3e690745906
--- /dev/null
+++ b/apps/docs/pages/guides/cli/[[...slug]].tsx
@@ -0,0 +1,28 @@
+import { type GetStaticPaths, type GetStaticProps, type InferGetStaticPropsType } from 'next'
+import { MDXRemote } from 'next-mdx-remote'
+
+import components from '~/components'
+import Layout from '~/layouts/DefaultGuideLayout'
+import { getGuidesStaticPaths, getGuidesStaticProps } from '~/lib/docs'
+
+export const getStaticPaths = (async () => {
+ return getGuidesStaticPaths('cli')
+}) satisfies GetStaticPaths
+
+export const getStaticProps = (async (args) => {
+ return getGuidesStaticProps('cli', args)
+}) satisfies GetStaticProps
+
+export default function CliGuide({
+ frontmatter,
+ mdxSource,
+ editLink,
+}: InferGetStaticPropsType) {
+ const { hideToc, ...meta } = frontmatter
+
+ return (
+
+
+
+ )
+}
diff --git a/apps/docs/pages/guides/database/[[...slug]].tsx b/apps/docs/pages/guides/database/[[...slug]].tsx
new file mode 100644
index 00000000000..fc7519ad2ba
--- /dev/null
+++ b/apps/docs/pages/guides/database/[[...slug]].tsx
@@ -0,0 +1,38 @@
+import { type GetStaticPaths, type GetStaticProps, type InferGetStaticPropsType } from 'next'
+import { MDXRemote } from 'next-mdx-remote'
+
+import components from '~/components'
+import Layout from '~/layouts/DefaultGuideLayout'
+import { getGuidesStaticPaths, getGuidesStaticProps } from '~/lib/docs'
+
+export const getStaticPaths = (async () => {
+ const paths = await getGuidesStaticPaths('database')
+
+ /**
+ * Wrappers is special, so remove it
+ * Needs to be handled within its own subdirectory or won't build on dev
+ */
+ paths.paths = paths.paths.filter(
+ ({ params }) => !(params.slug.at(0) === 'extensions' && params.slug.at(1) === 'wrappers')
+ )
+
+ return paths
+}) satisfies GetStaticPaths
+
+export const getStaticProps = (async (args) => {
+ return getGuidesStaticProps('database', args)
+}) satisfies GetStaticProps
+
+export default function DatabaseGuide({
+ frontmatter,
+ mdxSource,
+ editLink,
+}: InferGetStaticPropsType) {
+ const { hideToc, ...meta } = frontmatter
+
+ return (
+
+
+
+ )
+}
diff --git a/apps/docs/pages/guides/database/extensions/wrappers/[slug].tsx b/apps/docs/pages/guides/database/extensions/wrappers/[[...slug]].tsx
similarity index 80%
rename from apps/docs/pages/guides/database/extensions/wrappers/[slug].tsx
rename to apps/docs/pages/guides/database/extensions/wrappers/[[...slug]].tsx
index 64e70309bb7..564d96d51d2 100644
--- a/apps/docs/pages/guides/database/extensions/wrappers/[slug].tsx
+++ b/apps/docs/pages/guides/database/extensions/wrappers/[[...slug]].tsx
@@ -1,14 +1,17 @@
import { CodeHikeConfig, remarkCodeHike } from '@code-hike/mdx'
-import { GetStaticPaths, GetStaticProps } from 'next'
-import { MDXRemote, MDXRemoteSerializeResult } from 'next-mdx-remote'
+import { GetStaticPaths, GetStaticProps, InferGetStaticPropsType } from 'next'
+import { MDXRemote } from 'next-mdx-remote'
import { serialize } from 'next-mdx-remote/serialize'
-import { relative } from 'path'
+import { relative } from 'node:path'
import rehypeSlug from 'rehype-slug'
-import remarkGfm from 'remark-gfm'
import emoji from 'remark-emoji'
+import remarkGfm from 'remark-gfm'
+
import codeHikeTheme from 'config/code-hike.theme.json' assert { type: 'json' }
+
import components from '~/components'
import Layout from '~/layouts/DefaultGuideLayout'
+import { getGuidesStaticPaths, getGuidesStaticProps } from '~/lib/docs'
import { UrlTransformFunction, linkTransform } from '~/lib/mdx/plugins/rehypeLinkTransform'
import remarkMkDocsAdmonition from '~/lib/mdx/plugins/remarkAdmonition'
import { removeTitle } from '~/lib/mdx/plugins/remarkRemoveTitle'
@@ -74,16 +77,11 @@ const pageMap = [
},
]
-interface WrappersDocsProps {
- source: MDXRemoteSerializeResult
- meta: {
- title: string
- description?: string
- }
- editLink?: string
-}
-
-export default function WrappersDocs({ source, meta, editLink }: WrappersDocsProps) {
+export default function WrappersDocs({
+ source,
+ meta,
+ editLink,
+}: InferGetStaticPropsType) {
return (
@@ -94,14 +92,21 @@ export default function WrappersDocs({ source, meta, editLink }: WrappersDocsPro
/**
* Fetch markdown from external repo and transform links
*/
-export const getStaticProps: GetStaticProps = async ({ params }) => {
- const page = pageMap.find(({ slug }) => slug === params.slug)
+export const getStaticProps: GetStaticProps = async (args) => {
+ const { params } = args
+ const federatedPage = pageMap.find(({ slug }) => slug === params.slug.at(0))
- if (!page) {
- throw new Error(`No page mapping found for slug '${params.slug}'`)
+ if (!federatedPage) {
+ const { props } = await getGuidesStaticProps('database/extensions/wrappers', args)
+ return {
+ props: {
+ source: props.mdxSource,
+ meta: props.frontmatter,
+ },
+ }
}
- const { remoteFile, meta } = page
+ const { remoteFile, meta } = federatedPage
const repoPath = `${org}/${repo}/${branch}/${docsDir}/${remoteFile}`
const repoEditPath = `${org}/${repo}/blob/${branch}/${docsDir}/${remoteFile}`
const response = await fetch(`https://raw.githubusercontent.com/${repoPath}`)
@@ -169,12 +174,10 @@ export const getStaticProps: GetStaticProps = async ({ params
}
export const getStaticPaths: GetStaticPaths = async () => {
+ const mdxPaths = (await getGuidesStaticPaths('database/extensions/wrappers')).paths
+ const federatedPaths = pageMap.map(({ slug }) => ({ params: { slug: [slug] } }))
return {
- paths: pageMap.map(({ slug }) => ({
- params: {
- slug,
- },
- })),
+ paths: [...federatedPaths, ...mdxPaths],
fallback: false,
}
}
diff --git a/apps/docs/pages/guides/getting-started.mdx b/apps/docs/pages/guides/getting-started.mdx
deleted file mode 100644
index af87b8fe2bd..00000000000
--- a/apps/docs/pages/guides/getting-started.mdx
+++ /dev/null
@@ -1,363 +0,0 @@
-import Layout from '~/layouts/DefaultLayout'
-import Link from 'next/link'
-import { Button, IconChevronRight } from 'ui'
-import { GlassPanel } from 'ui-patterns/GlassPanel'
-import { IconPanel } from 'ui-patterns/IconPanel'
-
-export const meta = {
- id: 'getting-started',
- title: 'Getting Started',
- description: 'Resources for getting started with Supabase.',
-}
-
-
-
-
-
-
- {resources.map((resource) => {
- return (
-
-
- {resource.description}
-
-
- )
-
-})}
-
-
-
-
-
-
-
-### Use cases
-
-
- {useCases.map((item) => {
- return (
-
-
- {item.description}
-
-
- )
- })}
-
-
-### Framework quickstarts
-
-
- {quickstarts.map((item) => {
- return (
-
-
- {item.description}
-
-
- )
- })}
-
-
-### Web app tutorials
-
-
- {webapps.map((item) => {
- return (
-
-
- {item.description}
-
-
- )
-
-})}
-
-
-
-### Mobile tutorials
-
-
- {mobile.map((item) => {
- return (
-
-
- {item.description}
-
-
- )
-
-})}
-
-
-
-export const useCases = [
- {
- title: 'AI, Vectors, and embeddings',
- href: '/guides/ai#examples',
- description: `Build AI-enabled applications using our Vector toolkit.`,
- icon: '/docs/img/icons/openai_logo',
- hasLightIcon: true,
- },
- {
- title: 'Subscription Payments (SaaS)',
- href: 'https://github.com/vercel/nextjs-subscription-payments#nextjs-subscription-payments-starter',
- description: `Clone, deploy, and fully customize a SaaS subscription application with Next.js.`,
- icon: '/docs/img/icons/nextjs-icon',
- },
- {
- title: 'Partner Gallery',
- href: 'https://github.com/supabase-community/partner-gallery-example#supabase-partner-gallery-example',
- description: `Postgres full-text search, image storage, and more.`,
- icon: '/docs/img/icons/nextjs-icon',
- },
-]
-
-export const quickstarts = [
- {
- title: 'React',
- href: '/guides/getting-started/quickstarts/reactjs',
- description:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a React app.',
- icon: '/docs/img/icons/react-icon',
- },
- {
- title: 'Next.js',
- href: '/guides/getting-started/quickstarts/nextjs',
- description:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Next.js app.',
- icon: '/docs/img/icons/nextjs-icon',
- hasLightIcon: true,
- },
- {
- title: 'NuxtJS',
- href: '/guides/getting-started/quickstarts/nuxtjs',
- description:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a NuxtJS app.',
- icon: '/docs/img/icons/nuxt-icon',
- },
- {
- title: 'RedwoodJS',
- href: '/guides/getting-started/quickstarts/redwoodjs',
- description:
- 'Learn how to create a Supabase project, add some sample data to your database using Prisma migration and seeds, and query the data from a RedwoodJS app.',
- icon: '/docs/img/icons/redwood-icon',
- },
- {
- title: 'Flutter',
- href: '/guides/getting-started/quickstarts/flutter',
- description:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Flutter app.',
- icon: '/docs/img/icons/flutter-icon',
- },
- {
- title: 'Android Kotlin',
- href: '/guides/getting-started/quickstarts/kotlin',
- description:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from an Android Kotlin app.',
- icon: '/docs/img/icons/kotlin-icon',
- },
- {
- title: 'SvelteKit',
- href: '/guides/getting-started/quickstarts/sveltekit',
- description:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a SvelteKit app.',
- icon: '/docs/img/icons/svelte-icon',
- },
- {
- title: 'SolidJS',
- href: '/guides/getting-started/quickstarts/solidjs',
- description:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a SolidJS app.',
- icon: '/docs/img/icons/solidjs-icon',
- },
- {
- title: 'Vue',
- href: '/guides/getting-started/quickstarts/vue',
- description:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Vue app.',
- icon: '/docs/img/icons/vuejs-icon',
- },
- {
- title: 'refine',
- href: '/guides/getting-started/quickstarts/refine',
- description:
- 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a refine app.',
- icon: '/docs/img/icons/refine-icon',
- },
-]
-
-export const webapps = [
- {
- title: 'Next.js',
- href: '/guides/getting-started/tutorials/with-nextjs',
- description:
- 'Learn how to build a user management app with Next.js and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/nextjs-icon',
- hasLightIcon: true,
- },
- {
- title: 'React',
- href: '/guides/getting-started/tutorials/with-react',
- description:
- 'Learn how to build a user management app with React and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/react-icon',
- },
- {
- title: 'Vue 3',
- href: '/guides/getting-started/tutorials/with-vue-3',
- description:
- 'Learn how to build a user management app with Vue 3 and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/vuejs-icon',
- },
- {
- title: 'Nuxt 3',
- href: '/guides/getting-started/tutorials/with-nuxt-3',
- description:
- 'Learn how to build a user management app with Nuxt 3 and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/nuxt-icon',
- },
- {
- title: 'Angular',
- href: '/guides/getting-started/tutorials/with-angular',
- description:
- 'Learn how to build a user management app with Angular and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/angular-icon',
- },
- {
- title: 'RedwoodJS',
- href: '/guides/getting-started/tutorials/with-redwoodjs',
- description:
- 'Learn how to build a user management app with RedwoodJS and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/redwood-icon',
- },
- {
- title: 'Svelte',
- href: '/guides/getting-started/tutorials/with-svelte',
- description:
- 'Learn how to build a user management app with Svelte and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/svelte-icon',
- },
- {
- title: 'SvelteKit',
- href: '/guides/getting-started/tutorials/with-sveltekit',
- description:
- 'Learn how to build a user management app with SvelteKit and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/svelte-icon',
- },
- {
- title: 'refine',
- href: '/guides/getting-started/tutorials/with-refine',
- description:
- 'Learn how to build a user management app with refine and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/refine-icon',
- },
-]
-
-export const mobile = [
- {
- title: 'Flutter',
- href: '/guides/getting-started/tutorials/with-flutter',
- description:
- 'Learn how to build a user management app with Flutter and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/flutter-icon',
- },
- {
- title: 'Expo React Native',
- href: '/guides/getting-started/tutorials/with-expo-react-native',
- description:
- 'Learn how to build a user management app with Expo React Native and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/expo-icon',
- hasLightIcon: true,
- },
- {
- title: 'Android Kotlin',
- href: '/guides/getting-started/tutorials/with-kotlin',
- description:
- 'Learn how to build a product management app with Android and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/kotlin-icon',
- },
- {
- title: 'iOS Swift',
- href: '/guides/getting-started/tutorials/with-swift',
- description:
- 'Learn how to build a user management app with iOS and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/swift-icon',
- },
- {
- title: 'Ionic React',
- href: '/guides/getting-started/tutorials/with-ionic-react',
- description:
- 'Learn how to build a user management app with Ionic React and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/ionic-icon',
- },
- {
- title: 'Ionic Vue',
- href: '/guides/getting-started/tutorials/with-ionic-vue',
- description:
- 'Learn how to build a user management app with Ionic Vue and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/ionic-icon',
- },
- {
- title: 'Ionic Angular',
- href: '/guides/getting-started/tutorials/with-ionic-angular',
- description:
- 'Learn how to build a user management app with Ionic Angular and Supabase Database, Auth, and Storage functionality.',
- icon: '/docs/img/icons/ionic-icon',
- },
-]
-
-export const resources = [
- {
- title: 'Features',
- hasLightIcon: true,
- href: '/guides/getting-started/features',
- description: 'A non-exhaustive list of features that Supabase provides for every project.',
- },
- {
- title: 'Architecture',
- hasLightIcon: true,
- href: '/guides/getting-started/architecture',
- description: "An overview of Supabase's architecture and product principles.",
- },
- {
- title: 'Local Development',
- hasLightIcon: true,
- href: '/guides/cli/getting-started',
- description: 'Use the Supabase CLI to develop locally and collaborate between teams.',
- },
-]
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/getting-started/[[...slug]].tsx b/apps/docs/pages/guides/getting-started/[[...slug]].tsx
new file mode 100644
index 00000000000..8791fae3a10
--- /dev/null
+++ b/apps/docs/pages/guides/getting-started/[[...slug]].tsx
@@ -0,0 +1,28 @@
+import { type GetStaticPaths, type GetStaticProps, type InferGetStaticPropsType } from 'next'
+import { MDXRemote } from 'next-mdx-remote'
+
+import components from '~/components'
+import Layout from '~/layouts/DefaultGuideLayout'
+import { getGuidesStaticPaths, getGuidesStaticProps } from '~/lib/docs'
+
+export const getStaticPaths = (async () => {
+ return getGuidesStaticPaths('getting-started')
+}) satisfies GetStaticPaths
+
+export const getStaticProps = (async (args) => {
+ return getGuidesStaticProps('getting-started', args)
+}) satisfies GetStaticProps
+
+export default function GettingStartedGuide({
+ frontmatter,
+ mdxSource,
+ editLink,
+}: InferGetStaticPropsType) {
+ const { hideToc, ...meta } = frontmatter
+
+ return (
+
+
+
+ )
+}
diff --git a/apps/docs/pages/guides/platform/[[...slug]].tsx b/apps/docs/pages/guides/platform/[[...slug]].tsx
new file mode 100644
index 00000000000..06340742556
--- /dev/null
+++ b/apps/docs/pages/guides/platform/[[...slug]].tsx
@@ -0,0 +1,28 @@
+import { type GetStaticPaths, type GetStaticProps, type InferGetStaticPropsType } from 'next'
+import { MDXRemote } from 'next-mdx-remote'
+
+import components from '~/components'
+import Layout from '~/layouts/DefaultGuideLayout'
+import { getGuidesStaticPaths, getGuidesStaticProps } from '~/lib/docs'
+
+export const getStaticPaths = (async () => {
+ return getGuidesStaticPaths('platform')
+}) satisfies GetStaticPaths
+
+export const getStaticProps = (async (args) => {
+ return getGuidesStaticProps('platform', args)
+}) satisfies GetStaticProps
+
+export default function PlatformGuide({
+ frontmatter,
+ mdxSource,
+ editLink,
+}: InferGetStaticPropsType) {
+ const { hideToc, ...meta } = frontmatter
+
+ return (
+
+
+
+ )
+}
diff --git a/apps/docs/pages/guides/resources.mdx b/apps/docs/pages/guides/resources.mdx
deleted file mode 100644
index a125d86be09..00000000000
--- a/apps/docs/pages/guides/resources.mdx
+++ /dev/null
@@ -1,204 +0,0 @@
-import Layout from '~/layouts/DefaultLayout'
-import Link from 'next/link'
-import { Button, IconChevronRight } from 'ui'
-import { GlassPanel } from 'ui-patterns/GlassPanel'
-import { IconPanel } from 'ui-patterns/IconPanel'
-
-export const meta = {
- title: 'Resources',
- description: 'Resources for getting started building with Supabase.',
-}
-
-
-
-
-
-
- {resources.map((resource) => {
- return (
-
-
- {resource.description}
-
-
- )
-
-})}
-
-
-
-
-
-
-
-
-### Migrate to Supabase
-
-
-
-
- {migrationGuides.map((product) => {
- return (
-
-
- {product.description}
-
-
- )
-
-})}
-
-
-
-
-
-
-
-
-### Postgres resources
-
-
-
-
- {postgres.map((resource) => {
- return (
-
-
- {resource.description}
-
-
- )
-
-})}
-
-
-
-
-
-{/* end of container */}
-
-
-
-export const resources = [
- {
- title: 'Examples',
- hasLightIcon: true,
- href: '/guides/resources/examples',
- description: 'Official GitHub examples, curated content from the community, and more.',
- },
- {
- title: 'Glossary',
- hasLightIcon: true,
- href: '/guides/resources/glossary',
- description: 'Definitions for terminology and acronyms used in the Supabase documentation.',
- },
-]
-
-export const migrationGuides = [
- {
- title: 'Firebase Auth',
- icon: '/docs/img/icons/firebase-icon',
- href: '/guides/resources/migrating-to-supabase/firebase-auth',
- description: 'Move your auth users from a Firebase project to a Supabase project.',
- },
- {
- title: 'Firestore Data',
- icon: '/docs/img/icons/firebase-icon',
- href: '/guides/resources/migrating-to-supabase/firestore-data',
- description: 'Migrate the contents of a Firestore collection to a single PostgreSQL table.',
- },
- {
- title: 'Firebase Storage',
- icon: '/docs/img/icons/firebase-icon',
- href: '/guides/resources/migrating-to-supabase/firebase-storage',
- description: 'Convert your Firebase Storage files to Supabase Storage.',
- },
- {
- title: 'Heroku',
- icon: '/docs/img/icons/heroku-icon',
- href: '/guides/resources/migrating-to-supabase/heroku',
- description: 'Migrate your Heroku Postgres database to Supabase.',
- },
- {
- title: 'Render',
- icon: '/docs/img/icons/render-icon',
- href: '/guides/resources/migrating-to-supabase/render',
- description: 'Migrate your Render Postgres database to Supabase.',
- },
- {
- title: 'Amazon RDS',
- icon: '/docs/img/icons/aws-rds-icon',
- href: '/guides/resources/migrating-to-supabase/amazon-rds',
- description: 'Migrate your Amazon RDS database to Supabase.',
- },
- {
- title: 'Postgres',
- icon: '/docs/img/icons/postgres-icon',
- href: '/guides/resources/migrating-to-supabase/postgres',
- description: 'Migrate your Postgres database to Supabase.',
- },
- {
- title: 'MySQL',
- icon: '/docs/img/icons/mysql-icon',
- href: '/guides/resources/migrating-to-supabase/mysql',
- description: 'Migrate your MySQL database to Supabase.',
- },
- {
- title: 'Microsoft SQL Server',
- icon: '/docs/img/icons/mssql-icon',
- href: '/guides/resources/migrating-to-supabase/mssql',
- description: 'Migrate your Microsoft SQL Server database to Supabase.',
- },
-]
-
-export const postgres = [
- {
- title: 'Managing Indexes',
- hasLightIcon: true,
- href: '/guides/database/postgres/indexes',
- description: 'Improve query performance using various index types in Postgres.',
- },
- {
- title: 'Cascade Deletes',
- hasLightIcon: true,
- href: '/guides/database/postgres/cascade-deletes',
- description: 'Understand the types of foreign key constraint deletes.',
- },
- {
- title: 'Drop all tables in schema',
- hasLightIcon: true,
- href: '/guides/database/postgres/dropping-all-tables-in-schema',
- description: 'Delete all tables in a given schema.',
- },
- {
- title: 'Select first row per group',
- hasLightIcon: true,
- href: '/guides/database/postgres/first-row-in-group',
- description: 'Retrieve the first row in each distinct group.',
- },
- {
- title: 'Print PostgreSQL version',
- hasLightIcon: true,
- href: '/guides/database/postgres/which-version-of-postgres',
- description: 'Find out which version of Postgres you are running.',
- },
-]
-
-export const Page = ({ children }) =>
-
-export default Page
diff --git a/apps/docs/pages/guides/resources/[[...slug]].tsx b/apps/docs/pages/guides/resources/[[...slug]].tsx
new file mode 100644
index 00000000000..1fb37bfe708
--- /dev/null
+++ b/apps/docs/pages/guides/resources/[[...slug]].tsx
@@ -0,0 +1,28 @@
+import { type GetStaticPaths, type GetStaticProps, type InferGetStaticPropsType } from 'next'
+import { MDXRemote } from 'next-mdx-remote'
+
+import components from '~/components'
+import Layout from '~/layouts/DefaultGuideLayout'
+import { getGuidesStaticPaths, getGuidesStaticProps } from '~/lib/docs'
+
+export const getStaticPaths = (async () => {
+ return getGuidesStaticPaths('resources')
+}) satisfies GetStaticPaths
+
+export const getStaticProps = (async (args) => {
+ return getGuidesStaticProps('resources', args)
+}) satisfies GetStaticProps
+
+export default function ResourcesGuide({
+ frontmatter,
+ mdxSource,
+ editLink,
+}: InferGetStaticPropsType) {
+ const { hideToc, ...meta } = frontmatter
+
+ return (
+
+
+
+ )
+}
diff --git a/apps/docs/pages/guides/self-hosting/[[...slug]].tsx b/apps/docs/pages/guides/self-hosting/[[...slug]].tsx
new file mode 100644
index 00000000000..fee43e2be5b
--- /dev/null
+++ b/apps/docs/pages/guides/self-hosting/[[...slug]].tsx
@@ -0,0 +1,28 @@
+import { type GetStaticPaths, type GetStaticProps, type InferGetStaticPropsType } from 'next'
+import { MDXRemote } from 'next-mdx-remote'
+
+import components from '~/components'
+import Layout from '~/layouts/DefaultGuideLayout'
+import { getGuidesStaticPaths, getGuidesStaticProps } from '~/lib/docs'
+
+export const getStaticPaths = (async () => {
+ return getGuidesStaticPaths('self-hosting')
+}) satisfies GetStaticPaths
+
+export const getStaticProps = (async (args) => {
+ return getGuidesStaticProps('self-hosting', args)
+}) satisfies GetStaticProps
+
+export default function SelfHostingGuide({
+ frontmatter,
+ mdxSource,
+ editLink,
+}: InferGetStaticPropsType) {
+ const { hideToc, ...meta } = frontmatter
+
+ return (
+
+
+
+ )
+}
diff --git a/apps/docs/pages/guides/self-hosting/analytics/config.mdx b/apps/docs/pages/guides/self-hosting/analytics/config.mdx
deleted file mode 100644
index 9f67a39181e..00000000000
--- a/apps/docs/pages/guides/self-hosting/analytics/config.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import { getAnalyticsConfigV0 } from '~/lib/mdx/getConfig'
-import Param from '~/components/Params'
-import { serialize } from 'next-mdx-remote/serialize'
-import components from '~/components'
-import { MDXRemote } from 'next-mdx-remote'
-
-export const meta = {
- title: 'Analytics Self-hosting Config',
- description: 'How to configure and deploy Supabase Analytics.',
-}
-
-
-
-
-{props.spec.info.tags.map(tag => {
- return (
- <>
-
{tag.title}
-
{tag.description}
-
-
Parameters
-
- {props.spec.parameters.filter(param => param.tags.includes(tag.id)).map((param) => {
- return
- })}
-
-
-
- >
- )
-
-})}
-
-
-
-export const Page = ({ children }) =>
-
-export default Page
-
-export const getStaticProps = async () => {
- const spec = getAnalyticsConfigV0()
- const descriptionSource = await serialize(spec.info.description)
- return {
- props: {
- descriptionSource,
- spec,
- },
- }
-}
diff --git a/apps/docs/pages/guides/self-hosting/analytics/config.tsx b/apps/docs/pages/guides/self-hosting/analytics/config.tsx
new file mode 100644
index 00000000000..073411ca703
--- /dev/null
+++ b/apps/docs/pages/guides/self-hosting/analytics/config.tsx
@@ -0,0 +1,65 @@
+import { type InferGetStaticPropsType, type GetStaticProps } from 'next'
+import { MDXRemote } from 'next-mdx-remote'
+import { serialize } from 'next-mdx-remote/serialize'
+
+import components from '~/components'
+import Param from '~/components/Params'
+import Layout from '~/layouts/DefaultGuideLayout'
+import { getAnalyticsConfigV0 } from '~/lib/mdx/getConfig'
+
+const meta = {
+ title: 'Analytics Self-hosting Config',
+ description: 'How to configure and deploy Supabase Analytics.',
+}
+
+export const getStaticProps = (async () => {
+ const spec = getAnalyticsConfigV0()
+ const descriptionSource = await serialize(spec.info.description)
+ return {
+ props: {
+ descriptionSource,
+ spec,
+ },
+ }
+}) satisfies GetStaticProps
+
+export const Page = (props: InferGetStaticPropsType) => (
+
+
+
+
+ {props.spec.info.tags.map((tag: ReturnType
['info']['tags']) => {
+ return (
+ <>
+ {tag.title}
+ {tag.description}
+
+
Parameters
+
+ {props.spec.parameters
+ .filter((param: ReturnType['parameters']) =>
+ param.tags.includes(tag.id)
+ )
+ .map((param: ReturnType['parameters']) => {
+ return (
+
+ )
+ })}
+
+
+ >
+ )
+ })}
+
+
+)
+
+export default Page
diff --git a/apps/docs/pages/guides/self-hosting/auth/config.mdx b/apps/docs/pages/guides/self-hosting/auth/config.mdx
deleted file mode 100644
index f7f3062dec4..00000000000
--- a/apps/docs/pages/guides/self-hosting/auth/config.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import { getAuthConfigV1 } from '~/lib/mdx/getConfig'
-import Param from '~/components/Params'
-import { serialize } from 'next-mdx-remote/serialize'
-import components from '~/components'
-import { MDXRemote } from 'next-mdx-remote'
-
-export const meta = {
- title: 'Auth Self-hosting Config',
- description: 'How to configure and deploy Supabase.',
-}
-
-
-
-
-{props.spec.info.tags.map(tag => {
- return (
- <>
-
{tag.title}
-
{tag.description}
-
-
Parameters
-
- {props.spec.parameters.filter(param => param.tags.includes(tag.id)).map((param) => {
- return
- })}
-
-
-
- >
- )
-
-})}
-
-
-
-export const Page = ({ children }) =>
-
-export default Page
-
-export const getStaticProps = async () => {
- const spec = getAuthConfigV1()
- const descriptionSource = await serialize(spec.info.description)
- return {
- props: {
- descriptionSource,
- spec,
- },
- }
-}
diff --git a/apps/docs/pages/guides/self-hosting/auth/config.tsx b/apps/docs/pages/guides/self-hosting/auth/config.tsx
new file mode 100644
index 00000000000..50734320dfe
--- /dev/null
+++ b/apps/docs/pages/guides/self-hosting/auth/config.tsx
@@ -0,0 +1,65 @@
+import { type InferGetStaticPropsType, type GetStaticProps } from 'next'
+import { MDXRemote } from 'next-mdx-remote'
+import { serialize } from 'next-mdx-remote/serialize'
+
+import components from '~/components'
+import Param from '~/components/Params'
+import Layout from '~/layouts/DefaultGuideLayout'
+import { getAuthConfigV1 } from '~/lib/mdx/getConfig'
+
+const meta = {
+ title: 'Auth Self-hosting Config',
+ description: 'How to configure and deploy Supabase Auth.',
+}
+
+export const getStaticProps = (async () => {
+ const spec = getAuthConfigV1()
+ const descriptionSource = await serialize(spec.info.description)
+ return {
+ props: {
+ descriptionSource,
+ spec,
+ },
+ }
+}) satisfies GetStaticProps
+
+export const Page = (props: InferGetStaticPropsType) => (
+
+
+
+
+ {props.spec.info.tags.map((tag: ReturnType
['info']['tags']) => {
+ return (
+ <>
+ {tag.title}
+ {tag.description}
+
+
Parameters
+
+ {props.spec.parameters
+ .filter((param: ReturnType['parameters']) =>
+ param.tags.includes(tag.id)
+ )
+ .map((param: ReturnType['parameters']) => {
+ return (
+
+ )
+ })}
+
+
+ >
+ )
+ })}
+
+
+)
+
+export default Page
diff --git a/apps/docs/pages/guides/self-hosting/realtime/config.mdx b/apps/docs/pages/guides/self-hosting/realtime/config.mdx
deleted file mode 100644
index 5708ca1cbfa..00000000000
--- a/apps/docs/pages/guides/self-hosting/realtime/config.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import { getRealtimeConfigV0 } from '~/lib/mdx/getConfig'
-import Param from '~/components/Params'
-import { serialize } from 'next-mdx-remote/serialize'
-import components from '~/components'
-import { MDXRemote } from 'next-mdx-remote'
-
-export const meta = {
- title: 'Realtime Self-hosting Config',
- description: 'How to configure and deploy Supabase.',
-}
-
-
-
-See [this guide](/docs/guides/realtime/bring-your-own-database) if you want to configure your database to work with Realtime.
-
-
-{props.spec.info.tags.map(tag => {
- return (
- <>
-
{tag.title}
-
{tag.description}
-
-
Parameters
-
- {props.spec.parameters.filter(param => param.tags.includes(tag.id)).map((param) => {
- return
- })}
-
-
-
- >
- )
-
-})}
-
-
-
-export const Page = ({ children }) =>
-
-export default Page
-
-export const getStaticProps = async () => {
- const spec = getRealtimeConfigV0()
- const descriptionSource = await serialize(spec.info.description)
- return {
- props: {
- descriptionSource,
- spec,
- },
- }
-}
diff --git a/apps/docs/pages/guides/self-hosting/realtime/config.tsx b/apps/docs/pages/guides/self-hosting/realtime/config.tsx
new file mode 100644
index 00000000000..1dd5086b214
--- /dev/null
+++ b/apps/docs/pages/guides/self-hosting/realtime/config.tsx
@@ -0,0 +1,65 @@
+import { type InferGetStaticPropsType, type GetStaticProps } from 'next'
+import { MDXRemote } from 'next-mdx-remote'
+import { serialize } from 'next-mdx-remote/serialize'
+
+import components from '~/components'
+import Param from '~/components/Params'
+import Layout from '~/layouts/DefaultGuideLayout'
+import { getRealtimeConfigV0 } from '~/lib/mdx/getConfig'
+
+const meta = {
+ title: 'Realtime Self-hosting Config',
+ description: 'How to configure and deploy Supabase Realtime.',
+}
+
+export const getStaticProps = (async () => {
+ const spec = getRealtimeConfigV0()
+ const descriptionSource = await serialize(spec.info.description)
+ return {
+ props: {
+ descriptionSource,
+ spec,
+ },
+ }
+}) satisfies GetStaticProps
+
+export const Page = (props: InferGetStaticPropsType) => (
+
+
+
+
+ {props.spec.info.tags.map((tag: ReturnType
['info']['tags']) => {
+ return (
+ <>
+ {tag.title}
+ {tag.description}
+
+
Parameters
+
+ {props.spec.parameters
+ .filter((param: ReturnType['parameters']) =>
+ param.tags.includes(tag.id)
+ )
+ .map((param: ReturnType['parameters']) => {
+ return (
+
+ )
+ })}
+
+
+ >
+ )
+ })}
+
+
+)
+
+export default Page
diff --git a/apps/docs/pages/guides/self-hosting/storage/config.mdx b/apps/docs/pages/guides/self-hosting/storage/config.mdx
deleted file mode 100644
index 80d9cdbf920..00000000000
--- a/apps/docs/pages/guides/self-hosting/storage/config.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
-import Layout from '~/layouts/DefaultGuideLayout'
-import { getStorageConfigV0 } from '~/lib/mdx/getConfig'
-import Param from '~/components/Params'
-import { serialize } from 'next-mdx-remote/serialize'
-import components from '~/components'
-import { MDXRemote } from 'next-mdx-remote'
-
-export const meta = {
- title: 'Storage Self-hosting Config',
- description: 'How to configure and deploy Supabase.',
-}
-
-
-
-
-{props.spec.info.tags.map(tag => {
- return (
- <>
-
{tag.title}
-
{tag.description}
-
-
Parameters
-
- {props.spec.parameters.filter(param => param.tags.includes(tag.id)).map((param) => {
- return
- })}
-
-
-
- >
- )
-
-})}
-
-
-
-export const Page = ({ children }) =>
-
-export default Page
-
-export const getStaticProps = async () => {
- const spec = getStorageConfigV0()
- const descriptionSource = await serialize(spec.info.description)
- return {
- props: {
- descriptionSource,
- spec,
- },
- }
-}
diff --git a/apps/docs/pages/guides/self-hosting/storage/config.tsx b/apps/docs/pages/guides/self-hosting/storage/config.tsx
new file mode 100644
index 00000000000..57a32f7cb96
--- /dev/null
+++ b/apps/docs/pages/guides/self-hosting/storage/config.tsx
@@ -0,0 +1,65 @@
+import { type InferGetStaticPropsType, type GetStaticProps } from 'next'
+import { MDXRemote } from 'next-mdx-remote'
+import { serialize } from 'next-mdx-remote/serialize'
+
+import components from '~/components'
+import Param from '~/components/Params'
+import Layout from '~/layouts/DefaultGuideLayout'
+import { getStorageConfigV0 } from '~/lib/mdx/getConfig'
+
+const meta = {
+ title: 'Storage Self-hosting Config',
+ description: 'How to configure and deploy Supabase Storage.',
+}
+
+export const getStaticProps = (async () => {
+ const spec = getStorageConfigV0()
+ const descriptionSource = await serialize(spec.info.description)
+ return {
+ props: {
+ descriptionSource,
+ spec,
+ },
+ }
+}) satisfies GetStaticProps
+
+export const Page = (props: InferGetStaticPropsType) => (
+
+
+
+
+ {props.spec.info.tags.map((tag: ReturnType
['info']['tags']) => {
+ return (
+ <>
+ {tag.title}
+ {tag.description}
+
+
Parameters
+
+ {props.spec.parameters
+ .filter((param: ReturnType['parameters']) =>
+ param.tags.includes(tag.id)
+ )
+ .map((param: ReturnType['parameters']) => {
+ return (
+
+ )
+ })}
+
+
+ >
+ )
+ })}
+
+
+)
+
+export default Page
diff --git a/apps/docs/scripts/codemod/mdx-meta.mjs b/apps/docs/scripts/codemod/mdx-meta.mjs
index 99c9b212fc1..84f9fe15adf 100644
--- a/apps/docs/scripts/codemod/mdx-meta.mjs
+++ b/apps/docs/scripts/codemod/mdx-meta.mjs
@@ -7,7 +7,7 @@
* Also deletes import and export statements.
*/
-let SUB_DIR = 'ai'
+let SUB_DIR = 'self-hosting'
import { parse } from 'acorn'
import { fromMarkdown } from 'mdast-util-from-markdown'
diff --git a/package-lock.json b/package-lock.json
index bbb88e2c2d8..e8d053c9c49 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -526,6 +526,7 @@
"devDependencies": {
"@aws-sdk/client-secrets-manager": "^3.410.0",
"@types/hast": "^2.3.4",
+ "@types/jsrsasign": "^10.5.12",
"@types/node": "^18.11.9",
"@types/react": "^18.2.24",
"@types/unist": "^2.0.6",
@@ -11977,6 +11978,12 @@
"@types/node": "*"
}
},
+ "node_modules/@types/jsrsasign": {
+ "version": "10.5.12",
+ "resolved": "https://registry.npmjs.org/@types/jsrsasign/-/jsrsasign-10.5.12.tgz",
+ "integrity": "sha512-sOA+eVnHU+FziThpMhuqs/tjFKe5gHVJKIS7g1BzhXP+e2FS8OvtzM0K3IzFxVksDOr98Gz5FJiZVxZ9uFoHhw==",
+ "dev": true
+ },
"node_modules/@types/lodash": {
"version": "4.14.202",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz",