From 5aa940286981f29de739b1dc84e1fbf9f834fb93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ramiro=20Nu=C3=B1ez=20Dosio?= Date: Thu, 28 Jul 2022 21:03:19 +0100 Subject: [PATCH 1/8] Redirects for new Blog URL structure. --- apps/www/next.config.js | 524 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 523 insertions(+), 1 deletion(-) diff --git a/apps/www/next.config.js b/apps/www/next.config.js index 625e880b532..2ab3f9f8719 100644 --- a/apps/www/next.config.js +++ b/apps/www/next.config.js @@ -701,13 +701,535 @@ module.exports = withMDX({ { permanent: true, source: '/blog/2022/06/15/blog/2022/06/29/visualizing-supabase-data-using-metabase', - destination: '/blog/2022/06/29/visualizing-supabase-data-using-metabase', + destination: '/blog/visualizing-supabase-data-using-metabase', }, { permanent: true, source: '/_app', destination: 'https://app.supabase.com', }, + { + permanent: true, + source: '/blog/2020/05/01/supabase-alpha-april-2020', + destination: 'blog/supabase-alpha-april-2020', + }, + { + permanent: true, + source: '/blog/2020/06/01/supabase-alpha-may-2020', + destination: '/blog/supabase-alpha-may-2020', + }, + { + permanent: true, + source: '/blog/2020/06/15/supabase-steve-chavez', + destination: '/blog/supabase-steve-chavez', + }, + { + permanent: true, + source: '/blog/2020/07/01/supabase-alpha-june-2020', + destination: '/blog/supabase-alpha-june-2020', + }, + { + permanent: true, + source: '/blog/2020/07/09/postgresql-templates', + destination: '/blog/postgresql-templates', + }, + { + permanent: true, + source: '/blog/2020/07/10/alpha-launch-postmortem', + destination: '/blog/alpha-launch-postmortem', + }, + { + permanent: true, + source: '/blog/2020/07/17/postgresql-physical-logical-backups', + destination: '/blog/postgresql-physical-logical-backups', + }, + { + permanent: true, + source: '/blog/2020/08/02/continuous-postgresql-backup-walg', + destination: '/blog/continuous-postgresql-backup-walg', + }, + { + permanent: true, + source: '/blog/2020/08/02/supabase-alpha-july-2020', + destination: '/blog/supabase-alpha-july-2020', + }, + { + permanent: true, + source: '/blog/2020/08/05/supabase-auth', + destination: '/blog/supabase-auth', + }, + { + permanent: true, + source: '/blog/2020/09/03/supabase-alpha-august-2020', + destination: '/blog/supabase-alpha-august-2020', + }, + { + permanent: true, + source: '/blog/2020/09/11/supabase-hacktoberfest-2020', + destination: '/blog/supabase-hacktoberfest-2020', + }, + { + permanent: true, + source: '/blog/2020/10/03/supabase-alpha-september-2020', + destination: '/blog/supabase-alpha-september-2020', + }, + { + permanent: true, + source: '/blog/2020/10/30/improved-dx', + destination: '/blog/improved-dx', + }, + { + permanent: true, + source: '/blog/2020/11/02/supabase-alpha-october-2020', + destination: '/blog/supabase-alpha-october-2020', + }, + { + permanent: true, + source: '/blog/2020/11/18/postgresql-views', + destination: '/blog/postgresql-views', + }, + { + permanent: true, + source: '/blog/2020/12/01/supabase-alpha-november-2020', + destination: '/blog/supabase-alpha-november-2020', + }, + { + permanent: true, + source: '/blog/2020/12/02/case-study-monitoro', + destination: '/blog/case-study-monitoro', + }, + { + permanent: , + source: '/blog/2020/12/02/case-study-tayfa', + destination: '/blog/case-study-tayfa', + }, + { + permanent: , + source: '/blog/2020/12/02/case-study-xendit', + destination: '/blog/case-study-xendit', + }, + { + permanent: , + source: '/blog/2020/12/02/supabase-striveschool', + destination: '/blog/supabase-striveschool', + }, + { + permanent: , + source: '/blog/2020/12/13/supabase-dashboard-performance', + destination: '/blog/supabase-dashboard-performance', + }, + { + permanent: , + source: '/blog/2021/01/02/supabase-beta-december-2020', + destination: '/blog/supabase-beta-december-2020', + }, + { + permanent: , + source: '/blog/2021/02/02/supabase-beta-january-2021', + destination: '/blog/supabase-beta-january-2021', + }, + { + permanent: , + source: '/blog/2021/02/09/case-study-roboflow', + destination: '/blog/case-study-roboflow', + }, + { + permanent: , + source: '/blog/2021/02/27/cracking-postgres-interview', + destination: '/blog/cracking-postgres-interview', + }, + { + permanent: , + source: '/blog/2021/03/02/supabase-beta-february-2021', + destination: '/blog/supabase-beta-february-2021', + }, + { + permanent: , + source: '/blog/2021/03/05/postgres-as-a-cron-server', + destination: '/blog/postgres-as-a-cron-server', + }, + { + permanent: , + source: '/blog/2021/03/08/toad-a-link-shortener-with-simple-apis-for-low-coders', + destination: '/blog/toad-a-link-shortener-with-simple-apis-for-low-coders', + }, + { + permanent: , + source: '/blog/2021/03/11/using-supabase-replit', + destination: '/blog/using-supabase-replit', + }, + { + permanent: , + source: '/blog/2021/03/22/In-The-Loop', + destination: '/blog/in-the-loop', + }, + { + permanent: , + source: '/blog/2021/03/25/angels-of-supabase', + destination: '/blog/angels-of-supabase', + }, + { + permanent: , + source: '/blog/2021/03/25/launch-week', + destination: '/blog/launch-week', + }, + { + permanent: , + source: '/blog/2021/03/29/pricing', + destination: '/blog/pricing', + }, + { + permanent: , + source: '/blog/2021/03/30/supabase-storage', + destination: '/blog/supabase-storage', + }, + { + permanent: , + source: '/blog/2021/03/31/supabase-cli', + destination: '/blog/supabase-cli', + }, + { + permanent: , + source: '/blog/2021/04/01/supabase-nft-marketplace', + destination: '/blog/supabase-nft-marketplace', + }, + { + permanent: , + source: '/blog/2021/04/02/supabase-dot-com', + destination: '/blog/supabase-dot-com', + }, + { + permanent: , + source: '/blog/2021/04/02/supabase-pgbouncer', + destination: '/blog/supabase-pgbouncer', + }, + { + permanent: , + source: '/blog/2021/04/02/supabase-workflows', + destination: '/blog/supabase-workflows', + }, + { + permanent: , + source: '/blog/2021/04/06/supabase-beta-march-2021', + destination: '/blog/supabase-beta-march-2021', + }, + { + permanent: , + source: '/blog/2021/05/03/supabase-beta-april-2021', + destination: '/blog/supabase-beta-april-2021', + }, + { + permanent: , + source: '/blog/2021/06/02/supabase-beta-may-2021', + destination: '/blog/supabase-beta-may-2021', + }, + { + permanent: , + source: '/blog/2021/07/01/roles-postgres-hooks', + destination: '/blog/roles-postgres-hooks', + }, + { + permanent: , + source: '/blog/supabase-beta-june-2021', + destination: '/blog/2021/07/02/supabase-beta-june-2021', + }, + { + permanent: , + source: '/blog/2021/07/22/supabase-launch-week-sql', + destination: '/blog/supabase-launch-week-sql', + }, + { + permanent: , + source: '/blog/2021/07/26/epsilon3-self-hosting', + destination: '/blog/epsilon3-self-hosting', + }, + { + permanent: , + source: '/blog/2021/07/26/supabase-community-day', + destination: '/blog/supabase-community-day', + }, + { + permanent: , + source: '/blog/2021/07/26/supabase-postgres-13', + destination: '/blog/supabase-postgres-13', + }, + { + permanent: , + source: '/blog/2021/07/27/spot-flutter-with-postgres', + destination: '/blog/spot-flutter-with-postgres', + }, + { + permanent: , + source: '/blog/2021/07/27/storage-beta', + destination: '/blog/storage-beta', + }, + { + permanent: , + source: '/blog/2021/07/28/mobbin-supabase-200000-users', + destination: '/blog/mobbin-supabase-200000-users', + }, + { + permanent: , + source: '/blog/2021/07/28/supabase-auth-passwordless-sms-login', + destination: '/blog/supabase-auth-passwordless-sms-login', + }, + { + permanent: , + source: '/blog/2021/07/29/supabase-reports-and-metrics', + destination: '/blog/supabase-reports-and-metrics', + }, + { + permanent: , + source: '/blog/2021/07/30/1-the-supabase-hackathon', + destination: '/blog/the-supabase-hackathon', + }, + { + permanent: , + source: '/blog/2021/07/30/supabase-functions-updates', + destination: '/blog/supabase-functions-updates', + }, + { + permanent: , + source: '/blog/2021/07/30/supabase-swag-store', + destination: '/blog/supabase-swag-store', + }, + { + permanent: , + source: '/blog/2021/08/09/hackathon-winners', + destination: '/blog/hackathon-winners', + }, + { + permanent: , + source: '/blog/2021/08/12/supabase-beta-july-2021', + destination: '/blog/supabase-beta-july-2021', + }, + { + permanent: , + source: '/blog/2021/09/10/supabase-beta-august-2021', + destination: '/blog/supabase-beta-august-2021', + }, + { + permanent: , + source: '/blog/2021/09/28/supabase-hacktoberfest-hackathon-2021', + destination: '/blog/supabase-hacktoberfest-hackathon-2021', + }, + { + permanent: , + source: '/blog/2021/10/04/supabase-beta-sept-2021', + destination: '/blog/supabase-beta-sept-2021', + }, + { + permanent: , + source: '/blog/2021/10/14/hacktoberfest-hackathon-winners-2021', + destination: '/blog/hacktoberfest-hackathon-winners-2021', + }, + { + permanent: , + source: '/blog/2021/10/19/replenysh-time-to-value-in-less-than-24-hours', + destination: '/blog/replenysh-time-to-value-in-less-than-24-hours', + }, + { + permanent: , + source: '/blog/2021/10/28/supabase-series-a', + destination: '/blog/supabase-series-a', + }, + { + permanent: , + source: '/blog/2021/11/05/supabase-beta-october-2021', + destination: '/blog/supabase-beta-october-2021', + }, + { + permanent: , + source: '/blog/2021/11/26/supabase-how-we-launch', + destination: '/blog/supabase-how-we-launch', + }, + { + permanent: , + source: '/blog/2021/11/26/supabase-launch-week-the-trilogy', + destination: '/blog/supabase-launch-week-the-trilogy', + }, + { + permanent: , + source: '/blog/2021/11/28/postgrest-9', + destination: '/blog/postgrest-9', + }, + { + permanent: , + source: '/blog/2021/11/28/whats-new-in-postgres-14', + destination: '/blog/whats-new-in-postgres-14', + }, + { + permanent: , + source: '/blog/2021/11/29/community-day', + destination: '/blog/community-day', + }, + { + permanent: , + source: '/blog/2021/11/30/supabase-studio', + destination: '/blog/supabase-studio', + }, + { + permanent: , + source: '/blog/2021/12/01/realtime-row-level-security-in-postgresql', + destination: '/blog/realtime-row-level-security-in-postgresql', + }, + { + permanent: , + source: '/blog/2021/12/02/supabase-acquires-logflare', + destination: '/blog/supabase-acquires-logflare', + }, + { + permanent: , + source: '/blog/2021/12/03/launch-week-three-friday-five-more-things', + destination: '/blog/launch-week-three-friday-five-more-things', + }, + { + permanent: , + source: '/blog/2021/12/03/pg-graphql', + destination: '/blog/pg-graphql', + }, + { + permanent: , + source: '/blog/2021/12/03/supabase-holiday-hackdays-hackathon', + destination: '/blog/supabase-holiday-hackdays-hackathon', + }, + { + permanent: , + source: '/blog/2021/12/15/beta-november-2021-launch-week-recap', + destination: '/blog/beta-november-2021-launch-week-recap', + }, + { + permanent: , + source: '/blog/2021/12/17/holiday-hackdays-winners-2021', + destination: '/blog/holiday-hackdays-winners-2021', + }, + { + permanent: , + source: '/blog/2022/01/20/product-hunt-golden-kitty-awards-2021', + destination: '/blog/product-hunt-golden-kitty-awards-2021', + }, + { + permanent: , + source: '/blog/2022/01/20/supabase-beta-december-2021', + destination: '/blog/supabase-beta-december-2021', + }, + { + permanent: , + source: '/blog/2022/02/22/supabase-beta-january-2022', + destination: '/blog/supabase-beta-january-2022', + }, + { + permanent: , + source: '/blog/2022/03/08/audit', + destination: '/blog/postgres-audit', + }, + { + permanent: , + source: '/blog/2022/03/25/should-i-open-source-my-company', + destination: '/blog/should-i-open-source-my-company', + }, + { + permanent: , + source: '/blog/2022/03/25/supabase-launch-week-four', + destination: '/blog/supabase-launch-week-four', + }, + { + permanent: , + source: '/blog/2022/03/28/community-day', + destination: '/blog/community-day', + }, + { + permanent: , + source: '/blog/2022/03/29/graphql-now-available', + destination: '/blog/graphql-now-available', + }, + { + permanent: , + source: '/blog/2022/03/30/supabase-enterprise', + destination: '/blog/supabase-enterprise', + }, + { + permanent: , + source: '/blog/2022/03/31/supabase-edge-functions', + destination: '/blog/supabase-edge-functions', + }, + { + permanent: , + source: '/blog/2022/04/01/hackathon-bring-the-func', + destination: '/blog/hackathon-bring-the-func', + }, + { + permanent: , + source: '/blog/2022/04/01/supabase-realtime-with-multiplayer-features', + destination: '/blog/supabase-realtime-with-multiplayer-features', + }, + { + permanent: , + source: '/blog/2022/04/01/supabrew', + destination: '/blog/supabrew', + }, + { + permanent: , + source: '/blog/2022/04/15/beta-update-march-2022', + destination: '/blog/beta-update-march-2022', + }, + { + permanent: , + source: '/blog/2022/04/18/bring-the-func-hackathon-winners', + destination: '/blog/bring-the-func-hackathon-winners', + }, + { + permanent: , + source: '/blog/2022/04/20/partner-gallery-works-with-supabase', + destination: '/blog/partner-gallery-works-with-supabase', + }, + { + permanent: true, + source: '/blog/2022/05/26/how-supabase-accelerates-development-of-all-pull-together', + destination: '/blog/how-supabase-accelerates-development-of-all-pull-together', + }, + { + permanent: true, + source: '', + destination: '', + }, + { + permanent: true, + source: '', + destination: '', + }, + { + permanent: true, + source: '', + destination: '', + }, + { + permanent: true, + source: '', + destination: '', + }, + { + permanent: true, + source: '', + destination: '', + }, + { + permanent: true, + source: '', + destination: '', + }, + { + permanent: true, + source: '', + destination: '', + }, + { + permanent: true, + source: '', + destination: '', + }, + + ] }, }) From 8cae796dd343c18745ff00324f24bd4875b4499a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ramiro=20Nu=C3=B1ez=20Dosio?= Date: Thu, 28 Jul 2022 21:10:42 +0100 Subject: [PATCH 2/8] Added lasts redirects. --- apps/www/next.config.js | 186 ++++++++++++++++++++-------------------- 1 file changed, 93 insertions(+), 93 deletions(-) diff --git a/apps/www/next.config.js b/apps/www/next.config.js index 2ab3f9f8719..34384b990cc 100644 --- a/apps/www/next.config.js +++ b/apps/www/next.config.js @@ -799,387 +799,387 @@ module.exports = withMDX({ destination: '/blog/case-study-monitoro', }, { - permanent: , + permanent: true, source: '/blog/2020/12/02/case-study-tayfa', destination: '/blog/case-study-tayfa', }, { - permanent: , + permanent: true, source: '/blog/2020/12/02/case-study-xendit', destination: '/blog/case-study-xendit', }, { - permanent: , + permanent: true, source: '/blog/2020/12/02/supabase-striveschool', destination: '/blog/supabase-striveschool', }, { - permanent: , + permanent: true, source: '/blog/2020/12/13/supabase-dashboard-performance', destination: '/blog/supabase-dashboard-performance', }, { - permanent: , + permanent: true, source: '/blog/2021/01/02/supabase-beta-december-2020', destination: '/blog/supabase-beta-december-2020', }, { - permanent: , + permanent: true, source: '/blog/2021/02/02/supabase-beta-january-2021', destination: '/blog/supabase-beta-january-2021', }, { - permanent: , + permanent: true, source: '/blog/2021/02/09/case-study-roboflow', destination: '/blog/case-study-roboflow', }, { - permanent: , + permanent: true, source: '/blog/2021/02/27/cracking-postgres-interview', destination: '/blog/cracking-postgres-interview', }, { - permanent: , + permanent: true, source: '/blog/2021/03/02/supabase-beta-february-2021', destination: '/blog/supabase-beta-february-2021', }, { - permanent: , + permanent: true, source: '/blog/2021/03/05/postgres-as-a-cron-server', destination: '/blog/postgres-as-a-cron-server', }, { - permanent: , + permanent: true, source: '/blog/2021/03/08/toad-a-link-shortener-with-simple-apis-for-low-coders', destination: '/blog/toad-a-link-shortener-with-simple-apis-for-low-coders', }, { - permanent: , + permanent: true, source: '/blog/2021/03/11/using-supabase-replit', destination: '/blog/using-supabase-replit', }, { - permanent: , + permanent: true, source: '/blog/2021/03/22/In-The-Loop', destination: '/blog/in-the-loop', }, { - permanent: , + permanent: true, source: '/blog/2021/03/25/angels-of-supabase', destination: '/blog/angels-of-supabase', }, { - permanent: , + permanent: true, source: '/blog/2021/03/25/launch-week', destination: '/blog/launch-week', }, { - permanent: , + permanent: true, source: '/blog/2021/03/29/pricing', destination: '/blog/pricing', }, { - permanent: , + permanent: true, source: '/blog/2021/03/30/supabase-storage', destination: '/blog/supabase-storage', }, { - permanent: , + permanent: true, source: '/blog/2021/03/31/supabase-cli', destination: '/blog/supabase-cli', }, { - permanent: , + permanent: true, source: '/blog/2021/04/01/supabase-nft-marketplace', destination: '/blog/supabase-nft-marketplace', }, { - permanent: , + permanent: true, source: '/blog/2021/04/02/supabase-dot-com', destination: '/blog/supabase-dot-com', }, { - permanent: , + permanent: true, source: '/blog/2021/04/02/supabase-pgbouncer', destination: '/blog/supabase-pgbouncer', }, { - permanent: , + permanent: true, source: '/blog/2021/04/02/supabase-workflows', destination: '/blog/supabase-workflows', }, { - permanent: , + permanent: true, source: '/blog/2021/04/06/supabase-beta-march-2021', destination: '/blog/supabase-beta-march-2021', }, { - permanent: , + permanent: true, source: '/blog/2021/05/03/supabase-beta-april-2021', destination: '/blog/supabase-beta-april-2021', }, { - permanent: , + permanent: true, source: '/blog/2021/06/02/supabase-beta-may-2021', destination: '/blog/supabase-beta-may-2021', }, { - permanent: , + permanent: true, source: '/blog/2021/07/01/roles-postgres-hooks', destination: '/blog/roles-postgres-hooks', }, { - permanent: , + permanent: true, source: '/blog/supabase-beta-june-2021', destination: '/blog/2021/07/02/supabase-beta-june-2021', }, { - permanent: , + permanent: true, source: '/blog/2021/07/22/supabase-launch-week-sql', destination: '/blog/supabase-launch-week-sql', }, { - permanent: , + permanent: true, source: '/blog/2021/07/26/epsilon3-self-hosting', destination: '/blog/epsilon3-self-hosting', }, { - permanent: , + permanent: true, source: '/blog/2021/07/26/supabase-community-day', destination: '/blog/supabase-community-day', }, { - permanent: , + permanent: true, source: '/blog/2021/07/26/supabase-postgres-13', destination: '/blog/supabase-postgres-13', }, { - permanent: , + permanent: true, source: '/blog/2021/07/27/spot-flutter-with-postgres', destination: '/blog/spot-flutter-with-postgres', }, { - permanent: , + permanent: true, source: '/blog/2021/07/27/storage-beta', destination: '/blog/storage-beta', }, { - permanent: , + permanent: true, source: '/blog/2021/07/28/mobbin-supabase-200000-users', destination: '/blog/mobbin-supabase-200000-users', }, { - permanent: , + permanent: true, source: '/blog/2021/07/28/supabase-auth-passwordless-sms-login', destination: '/blog/supabase-auth-passwordless-sms-login', }, { - permanent: , + permanent: true, source: '/blog/2021/07/29/supabase-reports-and-metrics', destination: '/blog/supabase-reports-and-metrics', }, { - permanent: , + permanent: true, source: '/blog/2021/07/30/1-the-supabase-hackathon', destination: '/blog/the-supabase-hackathon', }, { - permanent: , + permanent: true, source: '/blog/2021/07/30/supabase-functions-updates', destination: '/blog/supabase-functions-updates', }, { - permanent: , + permanent: true, source: '/blog/2021/07/30/supabase-swag-store', destination: '/blog/supabase-swag-store', }, { - permanent: , + permanent: true, source: '/blog/2021/08/09/hackathon-winners', destination: '/blog/hackathon-winners', }, { - permanent: , + permanent: true, source: '/blog/2021/08/12/supabase-beta-july-2021', destination: '/blog/supabase-beta-july-2021', }, { - permanent: , + permanent: true, source: '/blog/2021/09/10/supabase-beta-august-2021', destination: '/blog/supabase-beta-august-2021', }, { - permanent: , + permanent: true, source: '/blog/2021/09/28/supabase-hacktoberfest-hackathon-2021', destination: '/blog/supabase-hacktoberfest-hackathon-2021', }, { - permanent: , + permanent: true, source: '/blog/2021/10/04/supabase-beta-sept-2021', destination: '/blog/supabase-beta-sept-2021', }, { - permanent: , + permanent: true, source: '/blog/2021/10/14/hacktoberfest-hackathon-winners-2021', destination: '/blog/hacktoberfest-hackathon-winners-2021', }, { - permanent: , + permanent: true, source: '/blog/2021/10/19/replenysh-time-to-value-in-less-than-24-hours', destination: '/blog/replenysh-time-to-value-in-less-than-24-hours', }, { - permanent: , + permanent: true, source: '/blog/2021/10/28/supabase-series-a', destination: '/blog/supabase-series-a', }, { - permanent: , + permanent: true, source: '/blog/2021/11/05/supabase-beta-october-2021', destination: '/blog/supabase-beta-october-2021', }, { - permanent: , + permanent: true, source: '/blog/2021/11/26/supabase-how-we-launch', destination: '/blog/supabase-how-we-launch', }, { - permanent: , + permanent: true, source: '/blog/2021/11/26/supabase-launch-week-the-trilogy', destination: '/blog/supabase-launch-week-the-trilogy', }, { - permanent: , + permanent: true, source: '/blog/2021/11/28/postgrest-9', destination: '/blog/postgrest-9', }, { - permanent: , + permanent: true, source: '/blog/2021/11/28/whats-new-in-postgres-14', destination: '/blog/whats-new-in-postgres-14', }, { - permanent: , + permanent: true, source: '/blog/2021/11/29/community-day', destination: '/blog/community-day', }, { - permanent: , + permanent: true, source: '/blog/2021/11/30/supabase-studio', destination: '/blog/supabase-studio', }, { - permanent: , + permanent: true, source: '/blog/2021/12/01/realtime-row-level-security-in-postgresql', destination: '/blog/realtime-row-level-security-in-postgresql', }, { - permanent: , + permanent: true, source: '/blog/2021/12/02/supabase-acquires-logflare', destination: '/blog/supabase-acquires-logflare', }, { - permanent: , + permanent: true, source: '/blog/2021/12/03/launch-week-three-friday-five-more-things', destination: '/blog/launch-week-three-friday-five-more-things', }, { - permanent: , + permanent: true, source: '/blog/2021/12/03/pg-graphql', destination: '/blog/pg-graphql', }, { - permanent: , + permanent: true, source: '/blog/2021/12/03/supabase-holiday-hackdays-hackathon', destination: '/blog/supabase-holiday-hackdays-hackathon', }, { - permanent: , + permanent: true, source: '/blog/2021/12/15/beta-november-2021-launch-week-recap', destination: '/blog/beta-november-2021-launch-week-recap', }, { - permanent: , + permanent: true, source: '/blog/2021/12/17/holiday-hackdays-winners-2021', destination: '/blog/holiday-hackdays-winners-2021', }, { - permanent: , + permanent: true, source: '/blog/2022/01/20/product-hunt-golden-kitty-awards-2021', destination: '/blog/product-hunt-golden-kitty-awards-2021', }, { - permanent: , + permanent: true, source: '/blog/2022/01/20/supabase-beta-december-2021', destination: '/blog/supabase-beta-december-2021', }, { - permanent: , + permanent: true, source: '/blog/2022/02/22/supabase-beta-january-2022', destination: '/blog/supabase-beta-january-2022', }, { - permanent: , + permanent: true, source: '/blog/2022/03/08/audit', destination: '/blog/postgres-audit', }, { - permanent: , + permanent: true, source: '/blog/2022/03/25/should-i-open-source-my-company', destination: '/blog/should-i-open-source-my-company', }, { - permanent: , + permanent: true, source: '/blog/2022/03/25/supabase-launch-week-four', destination: '/blog/supabase-launch-week-four', }, { - permanent: , + permanent: true, source: '/blog/2022/03/28/community-day', destination: '/blog/community-day', }, { - permanent: , + permanent: true, source: '/blog/2022/03/29/graphql-now-available', destination: '/blog/graphql-now-available', }, { - permanent: , + permanent: true, source: '/blog/2022/03/30/supabase-enterprise', destination: '/blog/supabase-enterprise', }, { - permanent: , + permanent: true, source: '/blog/2022/03/31/supabase-edge-functions', destination: '/blog/supabase-edge-functions', }, { - permanent: , + permanent: true, source: '/blog/2022/04/01/hackathon-bring-the-func', destination: '/blog/hackathon-bring-the-func', }, { - permanent: , + permanent: true, source: '/blog/2022/04/01/supabase-realtime-with-multiplayer-features', destination: '/blog/supabase-realtime-with-multiplayer-features', }, { - permanent: , + permanent: true, source: '/blog/2022/04/01/supabrew', destination: '/blog/supabrew', }, { - permanent: , + permanent: true, source: '/blog/2022/04/15/beta-update-march-2022', destination: '/blog/beta-update-march-2022', }, { - permanent: , + permanent: true, source: '/blog/2022/04/18/bring-the-func-hackathon-winners', destination: '/blog/bring-the-func-hackathon-winners', }, { - permanent: , + permanent: true, source: '/blog/2022/04/20/partner-gallery-works-with-supabase', destination: '/blog/partner-gallery-works-with-supabase', }, @@ -1190,43 +1190,43 @@ module.exports = withMDX({ }, { permanent: true, - source: '', - destination: '', + source: '/blog/2022/06/07/beta-update-may-2022', + destination: '/blog/beta-update-may-2022', }, { permanent: true, - source: '', - destination: '', + source: '/blog/2022/06/15/loading-data-supabase-python', + destination: '/blog/loading-data-supabase-python', }, { permanent: true, - source: '', - destination: '', + source: '/blog/2022/06/28/partial-postgresql-data-dumps-with-rls', + destination: '/blog/partial-postgresql-data-dumps-with-rls', }, { permanent: true, - source: '', - destination: '', + source: '/blog/2022/06/29/visualizing-supabase-data-using-metabase', + destination: '/blog/visualizing-supabase-data-using-metabase', }, { permanent: true, - source: '', - destination: '', + source: '/blog/2022/06/30/flutter-tutorial-building-a-chat-app', + destination: '/blog/flutter-tutorial-building-a-chat-app', }, { permanent: true, - source: '', - destination: '', + source: '/blog/2022/07/05/beta-update-june-2022', + destination: '/blog/beta-update-june-2022', }, { permanent: true, - source: '', - destination: '', + source: '/blog/2022/07/13/supabase-auth-helpers-with-sveltekit-support', + destination: '/blog/supabase-auth-helpers-with-sveltekit-support', }, { permanent: true, - source: '', - destination: '', + source: '/blog/2022/07/18/seen-by-in-postgresql', + destination: '/blog/seen-by-in-postgresql', }, From 7f61072cf40b90bef564868cfd65cd93047155d7 Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Fri, 5 Aug 2022 14:04:36 -0300 Subject: [PATCH 3/8] chore: update urls --- apps/www/internals/generate-sitemap.mjs | 26 +- apps/www/lib/posts.tsx | 27 +- apps/www/lib/rss.tsx | 19 +- apps/www/package.json | 1 + .../[month]/[day] => }/[slug].module.css | 0 .../{[year]/[month]/[day] => }/[slug].tsx | 9 +- apps/www/public/rss.xml | 737 ++++++++---------- apps/www/public/sitemap_www.xml | 266 ++++--- package-lock.json | 344 ++++---- 9 files changed, 736 insertions(+), 693 deletions(-) rename apps/www/pages/blog/{[year]/[month]/[day] => }/[slug].module.css (100%) rename apps/www/pages/blog/{[year]/[month]/[day] => }/[slug].tsx (98%) diff --git a/apps/www/internals/generate-sitemap.mjs b/apps/www/internals/generate-sitemap.mjs index 43d5269f5ab..abcd15bbe6c 100644 --- a/apps/www/internals/generate-sitemap.mjs +++ b/apps/www/internals/generate-sitemap.mjs @@ -47,20 +47,22 @@ async function generate() { if (route === '/alternatives/[slug]') return null if (route === '/partners/[slug]') return null - // - // blog specific urls - // + /** + * Blog based urls + */ if (route.includes('/blog/')) { - // clean blog post route from string + /** + * remove directory from route + */ const _route = route.replace('/blog/', '') - // splut the url - let split = _route.split('') - // target and replace the `-` between dates - split[4] = '/' - split[7] = '/' - split[10] = '/' - // reconstruct the url - route = '/blog/' + split.join('') + /** + * remove the date from the file name + */ + const substring = _route.substring(11) + /** + * reconsruct the route + */ + route = '/blog/' + substring } return ` diff --git a/apps/www/lib/posts.tsx b/apps/www/lib/posts.tsx index eaa1985227c..199551e06e2 100644 --- a/apps/www/lib/posts.tsx +++ b/apps/www/lib/posts.tsx @@ -106,19 +106,30 @@ export const getAllPostSlugs = (directory: Directories) => { return files } -// Get Post based on Slug export const getPostdata = async (slug: string, directory: string) => { - //Finding directory named "blog" from the current working directory of Node. + /** + * All files are mdx files + */ + const fileType = 'mdx' + slug = slug + '.' + fileType + + /** + * Return full directory + */ const postDirectory = path.join(process.cwd(), directory) + const folderfiles = fs.readdirSync(postDirectory) - console.log('postDirectory', postDirectory) - - const fullPath = path.join(postDirectory, `${slug}.mdx`) - - console.log('fullPath', fullPath) + /** + * Check if the file exists in the directory + * This should return 1 result + * + * this is so slugs like 'blog-post.mdx' will work + * even if the mdx file is date namednamed like '2022-01-01-blog-post.mdx' + */ + const found = folderfiles.filter((x) => x.includes(slug))[0] + const fullPath = path.join(postDirectory, found) const postContent = fs.readFileSync(fullPath, 'utf8') - return postContent } diff --git a/apps/www/lib/rss.tsx b/apps/www/lib/rss.tsx index 9942ee024c3..2f713dd9c22 100644 --- a/apps/www/lib/rss.tsx +++ b/apps/www/lib/rss.tsx @@ -1,12 +1,21 @@ -const generateRssItem = (post: any): string => ` - +const dayjs = require('dayjs') +var utc = require('dayjs/plugin/utc') +var advancedFormat = require('dayjs/plugin/advancedFormat') +dayjs.extend(utc) +dayjs.extend(advancedFormat) + +const generateRssItem = (post: any): string => { + post.url = post.url.substring(11) + + return ` https://supabase.com/blog/${post.url} ${post.title} https://supabase.com/blog/${post.url} ${post.description} - ${new Date(post.date).toUTCString()} + ${dayjs(post.date).utc().format('ddd, DD MMM YYYY HH:hh:mm')} ` +} export const generateRss = (posts: any[]): string => { return ` @@ -16,7 +25,9 @@ export const generateRss = (posts: any[]): string => { https://supabase.com Latest news from Supabase en - ${new Date(posts[0].date).toUTCString()} + ${dayjs(posts[0].date) + .utc() + .format('ddd, DD MMM YYYY HH:hh:mm')} ${posts.map(generateRssItem).join('')} diff --git a/apps/www/package.json b/apps/www/package.json index a142d49c9b0..f7f6483192a 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -21,6 +21,7 @@ "@supabase/ui": "v0.37.0-alpha.50", "classnames": "^2.3.1", "date-fns": "2.10.0", + "dayjs": "^1.11.4", "globby": "^12.0.2", "gray-matter": "^4.0.2", "markdown-toc": "^1.2.0", diff --git a/apps/www/pages/blog/[year]/[month]/[day]/[slug].module.css b/apps/www/pages/blog/[slug].module.css similarity index 100% rename from apps/www/pages/blog/[year]/[month]/[day]/[slug].module.css rename to apps/www/pages/blog/[slug].module.css diff --git a/apps/www/pages/blog/[year]/[month]/[day]/[slug].tsx b/apps/www/pages/blog/[slug].tsx similarity index 98% rename from apps/www/pages/blog/[year]/[month]/[day]/[slug].tsx rename to apps/www/pages/blog/[slug].tsx index a2f5bfeaa06..3926dcabcc0 100644 --- a/apps/www/pages/blog/[year]/[month]/[day]/[slug].tsx +++ b/apps/www/pages/blog/[slug].tsx @@ -17,7 +17,6 @@ import Avatar from '~/components/Avatar' import ImageGrid from '~/components/ImageGrid' import { generateReadingTime } from '~/lib/helpers' import { getAllPostSlugs, getPostdata, getSortedPosts } from '~/lib/posts' -import blogStyles from './[slug].module.css' // import all components used in blog articles here // for instance, if you use a button, you must add `Button` in the components object below. @@ -61,7 +60,7 @@ export async function getStaticPaths() { } export async function getStaticProps({ params }: any) { - const filePath = `${params.year}-${params.month}-${params.day}-${params.slug}` + const filePath = `${params.slug}` const postContent = await getPostdata(filePath, '_blog') const { data, content } = matter(postContent) @@ -157,7 +156,7 @@ function BlogPostPage(props: any) {

On this page

-
+
{props.blog.toc.content}
@@ -274,9 +273,7 @@ function BlogPostPage(props: any) { />
)} -
- {content} -
+
{content}
Share this article diff --git a/apps/www/public/rss.xml b/apps/www/public/rss.xml index a8ee16939d9..97debcd2c26 100644 --- a/apps/www/public/rss.xml +++ b/apps/www/public/rss.xml @@ -5,799 +5,742 @@ https://supabase.com Latest news from Supabase en - Wed, 29 Jun 2022 00:00:00 GMT + Mon, 01 Aug 2022 03:03:00 - + + https://supabase.com/blog/supabase-flutter-sdk-1-developer-preview + Supabase Flutter SDK 1.0 Developer Preview + https://supabase.com/blog/supabase-flutter-sdk-1-developer-preview + Supabase Flutter SDK is getting a major update and we need your help making it better. + Mon, 01 Aug 2022 03:03:00 + - https://supabase.com/blog/2022/06/29/visualizing-supabase-data-using-metabase + https://supabase.com/blog/seen-by-in-postgresql + Implementing "seen by" functionality with Postgres + https://supabase.com/blog/seen-by-in-postgresql + Different approaches for tracking visitor counts with PostgreSQL. + Sun, 17 Jul 2022 03:03:00 + + + https://supabase.com/blog/supabase-auth-helpers-with-sveltekit-support + Revamped Auth Helpers for Supabase (with SvelteKit support) + https://supabase.com/blog/supabase-auth-helpers-with-sveltekit-support + Supabase Auth Helpers now have improved developer experience, Sveltekit support, and more. + Tue, 12 Jul 2022 03:03:00 + + + https://supabase.com/blog/beta-update-june-2022 + Supabase Beta June 2022 + https://supabase.com/blog/beta-update-june-2022 + Auth Helpers, Unlimited Free Projects, CLI and more... + Tue, 05 Jul 2022 03:03:00 + + + https://supabase.com/blog/flutter-tutorial-building-a-chat-app + Flutter Tutorial: building a Flutter chat app + https://supabase.com/blog/flutter-tutorial-building-a-chat-app + How to create a real time chat app using Flutter. + Wed, 29 Jun 2022 03:03:00 + + + https://supabase.com/blog/visualizing-supabase-data-using-metabase Visualizing Supabase Data using Metabase - https://supabase.com/blog/2022/06/29/visualizing-supabase-data-using-metabase + https://supabase.com/blog/visualizing-supabase-data-using-metabase How to create different kinds of charts out of data stored in Supabase using Metabase. - Wed, 29 Jun 2022 00:00:00 GMT + Tue, 28 Jun 2022 03:03:00 - - https://supabase.com/blog/2022/06/15/loading-data-supabase-python + https://supabase.com/blog/partial-postgresql-data-dumps-with-rls + Partial data dumps using Postgres Row Level Security + https://supabase.com/blog/partial-postgresql-data-dumps-with-rls + Using RLS to create seed files for local PostgreSQL testing. + Mon, 27 Jun 2022 03:03:00 + + + https://supabase.com/blog/loading-data-supabase-python Python data loading with Supabase - https://supabase.com/blog/2022/06/15/loading-data-supabase-python + https://supabase.com/blog/loading-data-supabase-python An example of how to load data into Supabase using supabase-py - Fri, 17 Jun 2022 00:00:00 GMT + Thu, 16 Jun 2022 03:03:00 - - https://supabase.com/blog/2022/06/07/beta-update-may-2022 + https://supabase.com/blog/beta-update-may-2022 Supabase Beta May 2022 - https://supabase.com/blog/2022/06/07/beta-update-may-2022 + https://supabase.com/blog/beta-update-may-2022 Product and community updates including wildcard auth redirects, edge functions with webhooks, and Prometheus endpoints for everybody. - Wed, 01 Jun 2022 00:00:00 GMT + Tue, 31 May 2022 03:03:00 - - https://supabase.com/blog/2022/05/26/how-supabase-accelerates-development-of-all-pull-together + https://supabase.com/blog/how-supabase-accelerates-development-of-all-pull-together How Mike Lyndon is using Supabase to accelerate development of AllPullTogether - https://supabase.com/blog/2022/05/26/how-supabase-accelerates-development-of-all-pull-together + https://supabase.com/blog/how-supabase-accelerates-development-of-all-pull-together Mike Lyndon is learning web development as he builds AllPullTogether, and Supabase is helping him accelerate what he can accomplish. - Thu, 26 May 2022 00:00:00 GMT + Wed, 25 May 2022 03:03:00 - - https://supabase.com/blog/2022/04/20/partner-gallery-works-with-supabase + https://supabase.com/blog/partner-gallery-works-with-supabase Works With Supabase - announcing our Partner Gallery - https://supabase.com/blog/2022/04/20/partner-gallery-works-with-supabase + https://supabase.com/blog/partner-gallery-works-with-supabase Introducing our Partner Gallery - open source and made with Supabase. - Wed, 20 Apr 2022 00:00:00 GMT + Tue, 19 Apr 2022 03:03:00 - - https://supabase.com/blog/2022/04/18/bring-the-func-hackathon-winners + https://supabase.com/blog/bring-the-func-hackathon-winners Bring the Func Hackathon Winners 2022 - https://supabase.com/blog/2022/04/18/bring-the-func-hackathon-winners + https://supabase.com/blog/bring-the-func-hackathon-winners Celebrating many amazing OSS Hackathon projects using GraphQL and Edge Functions. - Mon, 18 Apr 2022 00:00:00 GMT + Sun, 17 Apr 2022 03:03:00 - - https://supabase.com/blog/2022/04/15/beta-update-march-2022 + https://supabase.com/blog/beta-update-march-2022 Supabase Beta March 2022 - https://supabase.com/blog/2022/04/15/beta-update-march-2022 + https://supabase.com/blog/beta-update-march-2022 Functions, GraphQL, and much more. - Fri, 15 Apr 2022 00:00:00 GMT + Thu, 14 Apr 2022 03:03:00 - - https://supabase.com/blog/2022/04/01/supabrew + https://supabase.com/blog/supabrew Supabrew - Never Code Thirsty - https://supabase.com/blog/2022/04/01/supabrew + https://supabase.com/blog/supabrew A light and refreshing non-alcoholic beer for devs. - Fri, 01 Apr 2022 00:00:00 GMT + Fri, 01 Apr 2022 03:03:00 - - https://supabase.com/blog/2022/04/01/supabase-realtime-with-multiplayer-features + https://supabase.com/blog/supabase-realtime-with-multiplayer-features Supabase Realtime, with Multiplayer Features - https://supabase.com/blog/2022/04/01/supabase-realtime-with-multiplayer-features + https://supabase.com/blog/supabase-realtime-with-multiplayer-features Today we're announced Realtime, with multiplayer features. Realtime enables broadcast, presence, and listening to database changes delivered over WebSockets. - Fri, 01 Apr 2022 00:00:00 GMT + Fri, 01 Apr 2022 03:03:00 - - https://supabase.com/blog/2022/04/01/hackathon-bring-the-func + https://supabase.com/blog/hackathon-bring-the-func Hackathon: Bring the Func(🕺) - https://supabase.com/blog/2022/04/01/hackathon-bring-the-func + https://supabase.com/blog/hackathon-bring-the-func Build open-source projects with our latest features, win limited edition swag and plant a tree! - Fri, 01 Apr 2022 00:00:00 GMT + Fri, 01 Apr 2022 03:03:00 - - https://supabase.com/blog/2022/03/31/supabase-edge-functions + https://supabase.com/blog/supabase-edge-functions Edge Functions are now available in Supabase - https://supabase.com/blog/2022/03/31/supabase-edge-functions + https://supabase.com/blog/supabase-edge-functions Today we're launching Edge Functions. Edge Functions let you execute Typescript code close to your users, no matter where they're located. - Thu, 31 Mar 2022 00:00:00 GMT + Wed, 30 Mar 2022 03:03:00 - - https://supabase.com/blog/2022/03/30/supabase-enterprise + https://supabase.com/blog/supabase-enterprise Introducing Supabase Enterprise - https://supabase.com/blog/2022/03/30/supabase-enterprise + https://supabase.com/blog/supabase-enterprise Today we are releasing Supabase Enterprise, a suite of features to scale your project. - Wed, 30 Mar 2022 00:00:00 GMT + Tue, 29 Mar 2022 03:03:00 - - https://supabase.com/blog/2022/03/29/graphql-now-available + https://supabase.com/blog/graphql-now-available GraphQL is now available in Supabase - https://supabase.com/blog/2022/03/29/graphql-now-available + https://supabase.com/blog/graphql-now-available GraphQL support is now in general availability on the Supabase platform via our open source PostgreSQL extension, pg_graphql (beta). - Tue, 29 Mar 2022 00:00:00 GMT + Mon, 28 Mar 2022 03:03:00 - - https://supabase.com/blog/2022/03/28/community-day + https://supabase.com/blog/community-day Community Day - https://supabase.com/blog/2022/03/28/community-day + https://supabase.com/blog/community-day Kicking off Launch Week 4 with contributors, partners, and friends. - Mon, 28 Mar 2022 00:00:00 GMT + Sun, 27 Mar 2022 03:03:00 - - https://supabase.com/blog/2022/03/25/supabase-launch-week-four + https://supabase.com/blog/supabase-launch-week-four Supabase Launch Week 4 - https://supabase.com/blog/2022/03/25/supabase-launch-week-four + https://supabase.com/blog/supabase-launch-week-four Launch Week 4: One new feature every day for an entire week. Starting Monday 28th March. - Fri, 25 Mar 2022 00:00:00 GMT + Thu, 24 Mar 2022 03:03:00 - - https://supabase.com/blog/2022/03/25/should-i-open-source-my-company + https://supabase.com/blog/should-i-open-source-my-company Should I Open Source my Company? - https://supabase.com/blog/2022/03/25/should-i-open-source-my-company + https://supabase.com/blog/should-i-open-source-my-company The unexpected upsides of building in public - Fri, 25 Mar 2022 00:00:00 GMT + Thu, 24 Mar 2022 03:03:00 - - https://supabase.com/blog/2022/03/08/audit + https://supabase.com/blog/audit Postgres Auditing in 150 lines of SQL - https://supabase.com/blog/2022/03/08/audit + https://supabase.com/blog/audit PostgreSQL has a robust set of features which we can leverage to create a generic auditing solution in 150 lines of SQL. - Tue, 08 Mar 2022 00:00:00 GMT + Mon, 07 Mar 2022 03:03:00 - - https://supabase.com/blog/2022/02/22/supabase-beta-january-2022 + https://supabase.com/blog/supabase-beta-january-2022 Supabase Beta January 2022 - https://supabase.com/blog/2022/02/22/supabase-beta-january-2022 + https://supabase.com/blog/supabase-beta-january-2022 New auth providers, SMS providers, and new videos. - Tue, 22 Feb 2022 00:00:00 GMT + Mon, 21 Feb 2022 03:03:00 - - https://supabase.com/blog/2022/01/20/supabase-beta-december-2021 + https://supabase.com/blog/supabase-beta-december-2021 Supabase Beta December 2021 - https://supabase.com/blog/2022/01/20/supabase-beta-december-2021 + https://supabase.com/blog/supabase-beta-december-2021 New crypto extension, Postgres videos, and a bunch of cool integrations. - Thu, 20 Jan 2022 00:00:00 GMT + Wed, 19 Jan 2022 03:03:00 - - https://supabase.com/blog/2022/01/20/product-hunt-golden-kitty-awards-2021 + https://supabase.com/blog/product-hunt-golden-kitty-awards-2021 Golden Kitty Awards Ceremony Watch Party with Supabase - https://supabase.com/blog/2022/01/20/product-hunt-golden-kitty-awards-2021 + https://supabase.com/blog/product-hunt-golden-kitty-awards-2021 Hang out with us while watching the Product Hunt Golden Kitty Awards Ceremony - Thu, 20 Jan 2022 00:00:00 GMT + Wed, 19 Jan 2022 03:03:00 - - https://supabase.com/blog/2021/12/17/holiday-hackdays-winners-2021 + https://supabase.com/blog/holiday-hackdays-winners-2021 Holiday Hackdays Winners 2021 - https://supabase.com/blog/2021/12/17/holiday-hackdays-winners-2021 + https://supabase.com/blog/holiday-hackdays-winners-2021 Celebrating many amazing projects submitted to our Holiday Hackdays Hackathon. - Fri, 17 Dec 2021 00:00:00 GMT + Thu, 16 Dec 2021 03:03:00 - - https://supabase.com/blog/2021/12/15/beta-november-2021-launch-week-recap + https://supabase.com/blog/beta-november-2021-launch-week-recap Supabase Beta November 2021: Launch Week Recap - https://supabase.com/blog/2021/12/15/beta-november-2021-launch-week-recap + https://supabase.com/blog/beta-november-2021-launch-week-recap We wrapped up November with Supabase's third Launch Week. Here's all the awesome stuff that got shipped ... - Wed, 15 Dec 2021 00:00:00 GMT + Tue, 14 Dec 2021 03:03:00 - - https://supabase.com/blog/2021/12/03/supabase-holiday-hackdays-hackathon + https://supabase.com/blog/supabase-holiday-hackdays-hackathon Kicking off the Holiday Hackdays - https://supabase.com/blog/2021/12/03/supabase-holiday-hackdays-hackathon + https://supabase.com/blog/supabase-holiday-hackdays-hackathon Build cool stuff and celebrate open-source software with us during the Holiday Hackdays! - Fri, 03 Dec 2021 00:00:00 GMT + Thu, 02 Dec 2021 03:03:00 - - https://supabase.com/blog/2021/12/03/pg-graphql + https://supabase.com/blog/pg-graphql pg_graphql: A GraphQL extension for PostgreSQL - https://supabase.com/blog/2021/12/03/pg-graphql + https://supabase.com/blog/pg-graphql GraphQL support is in development for PostgreSQL + Supabase. - Fri, 03 Dec 2021 00:00:00 GMT + Thu, 02 Dec 2021 03:03:00 - - https://supabase.com/blog/2021/12/03/launch-week-three-friday-five-more-things + https://supabase.com/blog/launch-week-three-friday-five-more-things Five more things - https://supabase.com/blog/2021/12/03/launch-week-three-friday-five-more-things + https://supabase.com/blog/launch-week-three-friday-five-more-things It's never just one more thing! - Fri, 03 Dec 2021 00:00:00 GMT + Thu, 02 Dec 2021 03:03:00 - - https://supabase.com/blog/2021/12/02/supabase-acquires-logflare + https://supabase.com/blog/supabase-acquires-logflare Supabase acquires Logflare - https://supabase.com/blog/2021/12/02/supabase-acquires-logflare + https://supabase.com/blog/supabase-acquires-logflare Today, we're ecstatic to announce that Logflare is joining Supabase. - Thu, 02 Dec 2021 00:00:00 GMT + Wed, 01 Dec 2021 03:03:00 - - https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql + https://supabase.com/blog/realtime-row-level-security-in-postgresql Realtime Postgres RLS now available on Supabase - https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql + https://supabase.com/blog/realtime-row-level-security-in-postgresql Realtime database changes are now broadcast to authenticated users, respecting the same PostgreSQL policies that you use for Row Level Security. - Wed, 01 Dec 2021 00:00:00 GMT + Tue, 30 Nov 2021 03:03:00 - - https://supabase.com/blog/2021/11/30/supabase-studio + https://supabase.com/blog/supabase-studio Supabase Studio - https://supabase.com/blog/2021/11/30/supabase-studio + https://supabase.com/blog/supabase-studio The same Dashboard that you're using on our Platform is now available for local development and Self-Hosting. - Tue, 30 Nov 2021 00:00:00 GMT + Mon, 29 Nov 2021 03:03:00 - - https://supabase.com/blog/2021/11/29/community-day + https://supabase.com/blog/community-day Community Day - https://supabase.com/blog/2021/11/29/community-day + https://supabase.com/blog/community-day Kicking off launch week by highlighting the communities around Supabase. - Mon, 29 Nov 2021 00:00:00 GMT + Sun, 28 Nov 2021 03:03:00 - - https://supabase.com/blog/2021/11/28/whats-new-in-postgres-14 + https://supabase.com/blog/whats-new-in-postgres-14 New in PostgreSQL 14: What every developer should know - https://supabase.com/blog/2021/11/28/whats-new-in-postgres-14 + https://supabase.com/blog/whats-new-in-postgres-14 A quick look at some new features and functionality in PostgreSQL 14. - Sun, 28 Nov 2021 00:00:00 GMT + Sat, 27 Nov 2021 03:03:00 - - https://supabase.com/blog/2021/11/28/postgrest-9 + https://supabase.com/blog/postgrest-9 PostgREST 9 - https://supabase.com/blog/2021/11/28/postgrest-9 + https://supabase.com/blog/postgrest-9 New features and updates in PostgREST version 9. - Sat, 27 Nov 2021 00:00:00 GMT + Fri, 26 Nov 2021 03:03:00 - - https://supabase.com/blog/2021/11/26/supabase-launch-week-the-trilogy + https://supabase.com/blog/supabase-launch-week-the-trilogy Supabase Launch Week III: Holiday Special - https://supabase.com/blog/2021/11/26/supabase-launch-week-the-trilogy + https://supabase.com/blog/supabase-launch-week-the-trilogy Tis the season to be shipping. - Fri, 26 Nov 2021 00:00:00 GMT + Thu, 25 Nov 2021 03:03:00 - - https://supabase.com/blog/2021/11/26/supabase-how-we-launch + https://supabase.com/blog/supabase-how-we-launch How we launch at Supabase - https://supabase.com/blog/2021/11/26/supabase-how-we-launch + https://supabase.com/blog/supabase-how-we-launch The history and methodology of Supabase Launch Week. - Fri, 26 Nov 2021 00:00:00 GMT + Thu, 25 Nov 2021 03:03:00 - - https://supabase.com/blog/2021/11/05/supabase-beta-october-2021 + https://supabase.com/blog/supabase-beta-october-2021 Supabase Beta October 2021 - https://supabase.com/blog/2021/11/05/supabase-beta-october-2021 + https://supabase.com/blog/supabase-beta-october-2021 Three new Auth providers, multi-schema support, and we're gearing up for another Launch Week. - Sun, 07 Nov 2021 00:00:00 GMT + Sat, 06 Nov 2021 03:03:00 - - https://supabase.com/blog/2021/10/28/supabase-series-a + https://supabase.com/blog/supabase-series-a Supabase $30m Series A - https://supabase.com/blog/2021/10/28/supabase-series-a + https://supabase.com/blog/supabase-series-a Supabase just raised $30M, bringing our total funding to $36M. - Thu, 28 Oct 2021 00:00:00 GMT + Wed, 27 Oct 2021 03:03:00 - - https://supabase.com/blog/2021/10/19/replenysh-time-to-value-in-less-than-24-hours + https://supabase.com/blog/replenysh-time-to-value-in-less-than-24-hours Replenysh uses Supabase to implement OTP in less than 24-hours - https://supabase.com/blog/2021/10/19/replenysh-time-to-value-in-less-than-24-hours + https://supabase.com/blog/replenysh-time-to-value-in-less-than-24-hours Learn how Replenysh uses Supabase to power the circular economy, redefining how brands interact with their customers and products. - Tue, 19 Oct 2021 00:00:00 GMT + Mon, 18 Oct 2021 03:03:00 - - https://supabase.com/blog/2021/10/14/hacktoberfest-hackathon-winners-2021 + https://supabase.com/blog/hacktoberfest-hackathon-winners-2021 Hacktoberfest Hackathon Winners 2021 - https://supabase.com/blog/2021/10/14/hacktoberfest-hackathon-winners-2021 + https://supabase.com/blog/hacktoberfest-hackathon-winners-2021 Celebrating many amazing projects submitted to our Hacktoberfest Hackathon. - Thu, 14 Oct 2021 00:00:00 GMT + Wed, 13 Oct 2021 03:03:00 - - https://supabase.com/blog/2021/10/04/supabase-beta-sept-2021 + https://supabase.com/blog/supabase-beta-sept-2021 Supabase Beta Sept 2021 - https://supabase.com/blog/2021/10/04/supabase-beta-sept-2021 + https://supabase.com/blog/supabase-beta-sept-2021 Hackathon, Aborting request, UI updates, and now Hiring. - Mon, 04 Oct 2021 00:00:00 GMT + Sun, 03 Oct 2021 03:03:00 - - https://supabase.com/blog/2021/09/28/supabase-hacktoberfest-hackathon-2021 + https://supabase.com/blog/supabase-hacktoberfest-hackathon-2021 Supabase Hacktoberfest Hackathon 2021 - https://supabase.com/blog/2021/09/28/supabase-hacktoberfest-hackathon-2021 + https://supabase.com/blog/supabase-hacktoberfest-hackathon-2021 We're running another Supabase Hackathon during Hacktoberfest! - Tue, 28 Sep 2021 00:00:00 GMT + Mon, 27 Sep 2021 03:03:00 - - https://supabase.com/blog/2021/09/10/supabase-beta-august-2021 + https://supabase.com/blog/supabase-beta-august-2021 Supabase Beta August 2021 - https://supabase.com/blog/2021/09/10/supabase-beta-august-2021 + https://supabase.com/blog/supabase-beta-august-2021 Fundraising, Realtime Security, custom SMS templates, and deployments in South Korea. - Fri, 10 Sep 2021 00:00:00 GMT + Thu, 09 Sep 2021 03:03:00 - - https://supabase.com/blog/2021/08/12/supabase-beta-july-2021 + https://supabase.com/blog/supabase-beta-july-2021 Supabase Beta July 2021 - https://supabase.com/blog/2021/08/12/supabase-beta-july-2021 + https://supabase.com/blog/supabase-beta-july-2021 Discord Logins, Vercel Integration, Full text search, and OAuth guides. - Thu, 12 Aug 2021 00:00:00 GMT + Wed, 11 Aug 2021 03:03:00 - - https://supabase.com/blog/2021/08/09/hackathon-winners + https://supabase.com/blog/hackathon-winners Open Source Hackathon Winners - https://supabase.com/blog/2021/08/09/hackathon-winners + https://supabase.com/blog/hackathon-winners Let the medal ceremony begin for the best projects submitted during the Supabase Hackathon. - Mon, 09 Aug 2021 00:00:00 GMT + Sun, 08 Aug 2021 03:03:00 - - https://supabase.com/blog/2021/07/30/supabase-swag-store + https://supabase.com/blog/supabase-swag-store Supabase Swag Store - https://supabase.com/blog/2021/07/30/supabase-swag-store + https://supabase.com/blog/supabase-swag-store Today we are officially launching the Supabase Swag Store. - Fri, 30 Jul 2021 00:00:00 GMT + Thu, 29 Jul 2021 03:03:00 - - https://supabase.com/blog/2021/07/30/supabase-functions-updates + https://supabase.com/blog/supabase-functions-updates Updates for Supabase Functions - https://supabase.com/blog/2021/07/30/supabase-functions-updates + https://supabase.com/blog/supabase-functions-updates The question on everyone's mind - are we launching Supabase Functions? Well, it's complicated. - Fri, 30 Jul 2021 00:00:00 GMT + Thu, 29 Jul 2021 03:03:00 - - https://supabase.com/blog/2021/07/30/1-the-supabase-hackathon + https://supabase.com/blog/1-the-supabase-hackathon The Supabase Hackathon - https://supabase.com/blog/2021/07/30/1-the-supabase-hackathon + https://supabase.com/blog/1-the-supabase-hackathon A whole week of Hacking for Fun and Prizes. - Fri, 30 Jul 2021 00:00:00 GMT + Thu, 29 Jul 2021 03:03:00 - - https://supabase.com/blog/2021/07/29/supabase-reports-and-metrics + https://supabase.com/blog/supabase-reports-and-metrics Supabase Reports and Metrics - https://supabase.com/blog/2021/07/29/supabase-reports-and-metrics + https://supabase.com/blog/supabase-reports-and-metrics We're exposing a full set of metrics in your projects, so that you can build better (and faster) products for your users. - Thu, 29 Jul 2021 00:00:00 GMT + Wed, 28 Jul 2021 03:03:00 - - https://supabase.com/blog/2021/07/28/supabase-auth-passwordless-sms-login + https://supabase.com/blog/supabase-auth-passwordless-sms-login Supabase Auth v2: Phone Auth now available - https://supabase.com/blog/2021/07/28/supabase-auth-passwordless-sms-login + https://supabase.com/blog/supabase-auth-passwordless-sms-login Phone Auth is available today on all new and existing Supabase projects. - Wed, 28 Jul 2021 00:00:00 GMT + Tue, 27 Jul 2021 03:03:00 - - https://supabase.com/blog/2021/07/28/mobbin-supabase-200000-users + https://supabase.com/blog/mobbin-supabase-200000-users Mobbin uses Supabase to authenticate 200,000 users - https://supabase.com/blog/2021/07/28/mobbin-supabase-200000-users + https://supabase.com/blog/mobbin-supabase-200000-users Learn how Mobbin migrated 200,000 users from Firebase for a better authentication experience. - Wed, 28 Jul 2021 00:00:00 GMT + Tue, 27 Jul 2021 03:03:00 - - https://supabase.com/blog/2021/07/27/storage-beta + https://supabase.com/blog/storage-beta Supabase Storage now in Beta - https://supabase.com/blog/2021/07/27/storage-beta + https://supabase.com/blog/storage-beta Supabase Storage moves into Beta. - Tue, 27 Jul 2021 00:00:00 GMT + Mon, 26 Jul 2021 03:03:00 - - https://supabase.com/blog/2021/07/27/spot-flutter-with-postgres + https://supabase.com/blog/spot-flutter-with-postgres Spot: a video sharing app built with Flutter - https://supabase.com/blog/2021/07/27/spot-flutter-with-postgres + https://supabase.com/blog/spot-flutter-with-postgres Spot is a geolocation-based video-sharing app with some social networking features. - Tue, 27 Jul 2021 00:00:00 GMT + Mon, 26 Jul 2021 03:03:00 - - https://supabase.com/blog/2021/07/26/supabase-postgres-13 + https://supabase.com/blog/supabase-postgres-13 Supabase is now on Postgres 13.3 - https://supabase.com/blog/2021/07/26/supabase-postgres-13 + https://supabase.com/blog/supabase-postgres-13 From today, new Supabase projects will be on a version of Supabase Postgres that runs on Postgres 13.3. - Mon, 26 Jul 2021 00:00:00 GMT + Sun, 25 Jul 2021 03:03:00 - - https://supabase.com/blog/2021/07/26/supabase-community-day + https://supabase.com/blog/supabase-community-day Supabase Community Day - https://supabase.com/blog/2021/07/26/supabase-community-day + https://supabase.com/blog/supabase-community-day Community Day - Mon, 26 Jul 2021 00:00:00 GMT + Sun, 25 Jul 2021 03:03:00 - - https://supabase.com/blog/2021/07/26/epsilon3-self-hosting + https://supabase.com/blog/epsilon3-self-hosting Epsilon3 Self-Host Supabase To Revolutionize Space Operations - https://supabase.com/blog/2021/07/26/epsilon3-self-hosting + https://supabase.com/blog/epsilon3-self-hosting Learn how the team at Epsilon3 use Supabase to help teams execute secure and reliable operations in an industry that project spend runs into the billions. - Mon, 26 Jul 2021 00:00:00 GMT + Sun, 25 Jul 2021 03:03:00 - - https://supabase.com/blog/2021/07/22/supabase-launch-week-sql + https://supabase.com/blog/supabase-launch-week-sql Supabase Launch Week II: The SQL - https://supabase.com/blog/2021/07/22/supabase-launch-week-sql + https://supabase.com/blog/supabase-launch-week-sql Five days of Supabase. Again. - Thu, 22 Jul 2021 00:00:00 GMT + Wed, 21 Jul 2021 03:03:00 - - https://supabase.com/blog/2021/07/01/roles-postgres-hooks + https://supabase.com/blog/roles-postgres-hooks Protecting reserved roles with PostgreSQL Hooks - https://supabase.com/blog/2021/07/01/roles-postgres-hooks + https://supabase.com/blog/roles-postgres-hooks Using Postgres Hooks to protect functionality in your Postgres database. - Fri, 02 Jul 2021 00:00:00 GMT + Thu, 01 Jul 2021 03:03:00 - - https://supabase.com/blog/2021/07/02/supabase-beta-june-2021 + https://supabase.com/blog/supabase-beta-june-2021 Supabase Beta June 2021 - https://supabase.com/blog/2021/07/02/supabase-beta-june-2021 + https://supabase.com/blog/supabase-beta-june-2021 Discord Logins, Vercel Integration, Full text search, and OAuth guides. - Wed, 02 Jun 2021 00:00:00 GMT + Tue, 01 Jun 2021 03:03:00 - - https://supabase.com/blog/2021/06/02/supabase-beta-may-2021 + https://supabase.com/blog/supabase-beta-may-2021 Supabase Beta May 2021 - https://supabase.com/blog/2021/06/02/supabase-beta-may-2021 + https://supabase.com/blog/supabase-beta-may-2021 Apple & Twitter Logins, Supabase Grid, Go & Swift Libraries. - Wed, 02 Jun 2021 00:00:00 GMT + Tue, 01 Jun 2021 03:03:00 - - https://supabase.com/blog/2021/05/03/supabase-beta-april-2021 + https://supabase.com/blog/supabase-beta-april-2021 Supabase Beta April 2021 - https://supabase.com/blog/2021/05/03/supabase-beta-april-2021 + https://supabase.com/blog/supabase-beta-april-2021 Supabase "gardening" - stability, security, and community support. - Wed, 05 May 2021 00:00:00 GMT + Tue, 04 May 2021 03:03:00 - - https://supabase.com/blog/2021/04/06/supabase-beta-march-2021 + https://supabase.com/blog/supabase-beta-march-2021 Supabase Beta March 2021 - https://supabase.com/blog/2021/04/06/supabase-beta-march-2021 + https://supabase.com/blog/supabase-beta-march-2021 Launch week, Storage, Supabase CLI, Connection Pooling, Supabase UI, and Pricing. - Tue, 06 Apr 2021 00:00:00 GMT + Mon, 05 Apr 2021 03:03:00 - - https://supabase.com/blog/2021/04/02/supabase-workflows + https://supabase.com/blog/supabase-workflows Workflows are coming to Supabase - https://supabase.com/blog/2021/04/02/supabase-workflows + https://supabase.com/blog/supabase-workflows Functions are great, but you know what's better? - Fri, 02 Apr 2021 00:00:00 GMT + Thu, 01 Apr 2021 03:03:00 - - https://supabase.com/blog/2021/04/02/supabase-pgbouncer + https://supabase.com/blog/supabase-pgbouncer PgBouncer is now available in Supabase - https://supabase.com/blog/2021/04/02/supabase-pgbouncer + https://supabase.com/blog/supabase-pgbouncer Better support for Serverless and Postgres. - Fri, 02 Apr 2021 00:00:00 GMT + Thu, 01 Apr 2021 03:03:00 - - https://supabase.com/blog/2021/04/02/supabase-dot-com + https://supabase.com/blog/supabase-dot-com Supabase Dot Com - https://supabase.com/blog/2021/04/02/supabase-dot-com + https://supabase.com/blog/supabase-dot-com The Supabase Domain name is changing. - Fri, 02 Apr 2021 00:00:00 GMT + Thu, 01 Apr 2021 03:03:00 - - https://supabase.com/blog/2021/04/01/supabase-nft-marketplace + https://supabase.com/blog/supabase-nft-marketplace Supabase Launches NFT Marketplace - https://supabase.com/blog/2021/04/01/supabase-nft-marketplace + https://supabase.com/blog/supabase-nft-marketplace A fully encrypted NFT platform to protect and transact your digital assets - Thu, 01 Apr 2021 00:00:00 GMT + Thu, 01 Apr 2021 03:03:00 - - https://supabase.com/blog/2021/03/31/supabase-cli + https://supabase.com/blog/supabase-cli Supabase CLI - https://supabase.com/blog/2021/03/31/supabase-cli + https://supabase.com/blog/supabase-cli Local development, database migrations, and self-hosting. - Wed, 31 Mar 2021 00:00:00 GMT + Wed, 31 Mar 2021 03:03:00 - - https://supabase.com/blog/2021/03/30/supabase-storage + https://supabase.com/blog/supabase-storage Storage is now available in Supabase - https://supabase.com/blog/2021/03/30/supabase-storage + https://supabase.com/blog/supabase-storage Launching Supabase Storage and how you can use it in your apps - Tue, 30 Mar 2021 00:00:00 GMT + Tue, 30 Mar 2021 03:03:00 - - https://supabase.com/blog/2021/03/29/pricing + https://supabase.com/blog/pricing Supabase Beta Pricing - https://supabase.com/blog/2021/03/29/pricing + https://supabase.com/blog/pricing Supabase launches Beta pricing structure - Mon, 29 Mar 2021 00:00:00 GMT + Mon, 29 Mar 2021 03:03:00 - - https://supabase.com/blog/2021/03/25/launch-week + https://supabase.com/blog/launch-week Launch week - https://supabase.com/blog/2021/03/25/launch-week + https://supabase.com/blog/launch-week Five days of Supabase. - Thu, 25 Mar 2021 00:00:00 GMT + Wed, 24 Mar 2021 03:03:00 - - https://supabase.com/blog/2021/03/25/angels-of-supabase + https://supabase.com/blog/angels-of-supabase Angels of Supabase - https://supabase.com/blog/2021/03/25/angels-of-supabase + https://supabase.com/blog/angels-of-supabase Meet the investors of Supabase. - Thu, 25 Mar 2021 00:00:00 GMT + Wed, 24 Mar 2021 03:03:00 - - https://supabase.com/blog/2021/03/22/In-The-Loop + https://supabase.com/blog/In-The-Loop Developers stay up to date with intheloop.dev - https://supabase.com/blog/2021/03/22/In-The-Loop + https://supabase.com/blog/In-The-Loop Learn why Kevin is building intheloop.dev with Supabase - Mon, 22 Mar 2021 00:00:00 GMT + Mon, 22 Mar 2021 03:03:00 - - https://supabase.com/blog/2021/03/11/using-supabase-replit + https://supabase.com/blog/using-supabase-replit Using Supabase in Replit - https://supabase.com/blog/2021/03/11/using-supabase-replit + https://supabase.com/blog/using-supabase-replit Free hosted relational database from within your node.js repl - Thu, 11 Mar 2021 00:00:00 GMT + Thu, 11 Mar 2021 03:03:00 - - https://supabase.com/blog/2021/03/08/toad-a-link-shortener-with-simple-apis-for-low-coders + https://supabase.com/blog/toad-a-link-shortener-with-simple-apis-for-low-coders Toad, a link shortener with simple APIs for low-coders - https://supabase.com/blog/2021/03/08/toad-a-link-shortener-with-simple-apis-for-low-coders + https://supabase.com/blog/toad-a-link-shortener-with-simple-apis-for-low-coders An easy-to-use link shortening tool with simple APIs - Mon, 08 Mar 2021 00:00:00 GMT + Mon, 08 Mar 2021 03:03:00 - - https://supabase.com/blog/2021/03/05/postgres-as-a-cron-server + https://supabase.com/blog/postgres-as-a-cron-server Postgres as a CRON Server - https://supabase.com/blog/2021/03/05/postgres-as-a-cron-server + https://supabase.com/blog/postgres-as-a-cron-server Running repetitive tasks with your Postgres database. - Fri, 05 Mar 2021 00:00:00 GMT + Fri, 05 Mar 2021 03:03:00 - - https://supabase.com/blog/2021/03/02/supabase-beta-february-2021 + https://supabase.com/blog/supabase-beta-february-2021 Supabase Beta February 2021 - https://supabase.com/blog/2021/03/02/supabase-beta-february-2021 + https://supabase.com/blog/supabase-beta-february-2021 One year of building. - Tue, 02 Mar 2021 00:00:00 GMT + Tue, 02 Mar 2021 03:03:00 - - https://supabase.com/blog/2021/02/27/cracking-postgres-interview + https://supabase.com/blog/cracking-postgres-interview Cracking PostgreSQL Interview Questions - https://supabase.com/blog/2021/02/27/cracking-postgres-interview + https://supabase.com/blog/cracking-postgres-interview Understand the top PostgreSQL Interview Questions - Sat, 27 Feb 2021 00:00:00 GMT + Sat, 27 Feb 2021 03:03:00 - - https://supabase.com/blog/2021/02/09/case-study-roboflow + https://supabase.com/blog/case-study-roboflow Roboflow.com choose Supabase to power Paint.wtf leaderboard - https://supabase.com/blog/2021/02/09/case-study-roboflow + https://supabase.com/blog/case-study-roboflow Learn how Roboflow.com used Supabase to build their Paint.wtf leaderboard - Tue, 09 Feb 2021 00:00:00 GMT + Tue, 09 Feb 2021 03:03:00 - - https://supabase.com/blog/2021/02/02/supabase-beta-january-2021 + https://supabase.com/blog/supabase-beta-january-2021 Supabase Beta January 2021 - https://supabase.com/blog/2021/02/02/supabase-beta-january-2021 + https://supabase.com/blog/supabase-beta-january-2021 Eleven months of building. - Tue, 02 Feb 2021 00:00:00 GMT + Tue, 02 Feb 2021 03:03:00 - - https://supabase.com/blog/2021/01/02/supabase-beta-december-2020 + https://supabase.com/blog/supabase-beta-december-2020 Supabase Beta December 2020 - https://supabase.com/blog/2021/01/02/supabase-beta-december-2020 + https://supabase.com/blog/supabase-beta-december-2020 Ten months of building. - Sat, 02 Jan 2021 00:00:00 GMT + Sat, 02 Jan 2021 03:03:00 - - https://supabase.com/blog/2020/12/13/supabase-dashboard-performance + https://supabase.com/blog/supabase-dashboard-performance Making the Supabase Dashboard Supa-fast - https://supabase.com/blog/2020/12/13/supabase-dashboard-performance + https://supabase.com/blog/supabase-dashboard-performance Improving the performance of the Supabase dashboard - Sun, 13 Dec 2020 00:00:00 GMT + Sun, 13 Dec 2020 03:03:00 - - https://supabase.com/blog/2020/12/02/supabase-striveschool + https://supabase.com/blog/supabase-striveschool Supabase Partners With Strive School To Help Teach Open Source - https://supabase.com/blog/2020/12/02/supabase-striveschool + https://supabase.com/blog/supabase-striveschool Supabase Partners With Strive School To Help Teach Open Source To The Next Generation Of Developers - Wed, 02 Dec 2020 00:00:00 GMT + Wed, 02 Dec 2020 03:03:00 - - https://supabase.com/blog/2020/12/02/case-study-xendit + https://supabase.com/blog/case-study-xendit Xendit Built a Counter-Fraud Watchlist for the Fintech Industry - https://supabase.com/blog/2020/12/02/case-study-xendit + https://supabase.com/blog/case-study-xendit See how Xendit use Supabase to build a full-text search engine. - Wed, 02 Dec 2020 00:00:00 GMT + Wed, 02 Dec 2020 03:03:00 - - https://supabase.com/blog/2020/12/02/case-study-tayfa + https://supabase.com/blog/case-study-tayfa TAYFA Built a No-Code Website Builder in Seven Days - https://supabase.com/blog/2020/12/02/case-study-tayfa + https://supabase.com/blog/case-study-tayfa See how Tayfa went from idea to paying customer in less than 30 days. - Wed, 02 Dec 2020 00:00:00 GMT + Wed, 02 Dec 2020 03:03:00 - - https://supabase.com/blog/2020/12/02/case-study-monitoro + https://supabase.com/blog/case-study-monitoro Monitoro Built a Web Crawler Handling Millions of API Requests - https://supabase.com/blog/2020/12/02/case-study-monitoro + https://supabase.com/blog/case-study-monitoro See how Monitoro built an automated scraping platform using Supabase. - Wed, 02 Dec 2020 00:00:00 GMT + Wed, 02 Dec 2020 03:03:00 - - https://supabase.com/blog/2020/12/01/supabase-alpha-november-2020 + https://supabase.com/blog/supabase-alpha-november-2020 Supabase Alpha November 2020 - https://supabase.com/blog/2020/12/01/supabase-alpha-november-2020 + https://supabase.com/blog/supabase-alpha-november-2020 Nine months of building. - Tue, 01 Dec 2020 00:00:00 GMT + Tue, 01 Dec 2020 03:03:00 - - https://supabase.com/blog/2020/11/18/postgresql-views + https://supabase.com/blog/postgresql-views Postgres Views - https://supabase.com/blog/2020/11/18/postgresql-views + https://supabase.com/blog/postgresql-views Creating and using a view in PostgreSQL. - Wed, 18 Nov 2020 00:00:00 GMT + Wed, 18 Nov 2020 03:03:00 - - https://supabase.com/blog/2020/11/02/supabase-alpha-october-2020 + https://supabase.com/blog/supabase-alpha-october-2020 Supabase Alpha October 2020 - https://supabase.com/blog/2020/11/02/supabase-alpha-october-2020 + https://supabase.com/blog/supabase-alpha-october-2020 Eight months of building. - Mon, 02 Nov 2020 00:00:00 GMT + Mon, 02 Nov 2020 03:03:00 - - https://supabase.com/blog/2020/10/30/improved-dx + https://supabase.com/blog/improved-dx Supabase.js 1.0 - https://supabase.com/blog/2020/10/30/improved-dx + https://supabase.com/blog/improved-dx We're releasing a new version of our Supabase client with some awesome new improvements. - Fri, 30 Oct 2020 00:00:00 GMT + Fri, 30 Oct 2020 03:03:00 - - https://supabase.com/blog/2020/10/03/supabase-alpha-september-2020 + https://supabase.com/blog/supabase-alpha-september-2020 Supabase Alpha September 2020 - https://supabase.com/blog/2020/10/03/supabase-alpha-september-2020 + https://supabase.com/blog/supabase-alpha-september-2020 Seven months of building. - Sat, 03 Oct 2020 00:00:00 GMT + Sat, 03 Oct 2020 03:03:00 - - https://supabase.com/blog/2020/09/11/supabase-hacktoberfest-2020 + https://supabase.com/blog/supabase-hacktoberfest-2020 Supabase Hacktoberfest 2020 - https://supabase.com/blog/2020/09/11/supabase-hacktoberfest-2020 + https://supabase.com/blog/supabase-hacktoberfest-2020 Join us for a celebration of open source software and learn how to contribute to Supabase. - Fri, 11 Sep 2020 00:00:00 GMT + Fri, 11 Sep 2020 03:03:00 - - https://supabase.com/blog/2020/09/03/supabase-alpha-august-2020 + https://supabase.com/blog/supabase-alpha-august-2020 Supabase Alpha August 2020 - https://supabase.com/blog/2020/09/03/supabase-alpha-august-2020 + https://supabase.com/blog/supabase-alpha-august-2020 Six months of building - Thu, 03 Sep 2020 00:00:00 GMT + Thu, 03 Sep 2020 03:03:00 - - https://supabase.com/blog/2020/08/05/supabase-auth + https://supabase.com/blog/supabase-auth Supabase Auth - https://supabase.com/blog/2020/08/05/supabase-auth + https://supabase.com/blog/supabase-auth Authenticate and authorize your users with Supabase Auth - Wed, 05 Aug 2020 00:00:00 GMT + Wed, 05 Aug 2020 03:03:00 - - https://supabase.com/blog/2020/08/02/supabase-alpha-july-2020 + https://supabase.com/blog/supabase-alpha-july-2020 Supabase Alpha July 2020 - https://supabase.com/blog/2020/08/02/supabase-alpha-july-2020 + https://supabase.com/blog/supabase-alpha-july-2020 Five months of building - Sun, 02 Aug 2020 00:00:00 GMT + Sun, 02 Aug 2020 03:03:00 - - https://supabase.com/blog/2020/08/02/continuous-postgresql-backup-walg + https://supabase.com/blog/continuous-postgresql-backup-walg Continuous PostgreSQL Backups using WAL-G - https://supabase.com/blog/2020/08/02/continuous-postgresql-backup-walg + https://supabase.com/blog/continuous-postgresql-backup-walg Have you ever wanted to restore your database's state to a particular moment in time? This post explains how, using WAL-G. - Sun, 02 Aug 2020 00:00:00 GMT + Sun, 02 Aug 2020 03:03:00 - - https://supabase.com/blog/2020/07/10/alpha-launch-postmortem + https://supabase.com/blog/alpha-launch-postmortem Alpha Launch Postmortem - https://supabase.com/blog/2020/07/10/alpha-launch-postmortem + https://supabase.com/blog/alpha-launch-postmortem Everything that went wrong with Supabase's launch - Fri, 10 Jul 2020 00:00:00 GMT + Fri, 10 Jul 2020 03:03:00 - - https://supabase.com/blog/2020/07/09/postgresql-templates + https://supabase.com/blog/postgresql-templates What are PostgreSQL Templates? - https://supabase.com/blog/2020/07/09/postgresql-templates + https://supabase.com/blog/postgresql-templates What are PostgreSQL templates and what are they used for? - Thu, 09 Jul 2020 00:00:00 GMT + Thu, 09 Jul 2020 03:03:00 - - https://supabase.com/blog/2020/07/17/postgresql-physical-logical-backups + https://supabase.com/blog/postgresql-physical-logical-backups Physical vs Logical Backups in PostgreSQL - https://supabase.com/blog/2020/07/17/postgresql-physical-logical-backups + https://supabase.com/blog/postgresql-physical-logical-backups What are physical and logical backups in Postgres? - Tue, 07 Jul 2020 00:00:00 GMT + Tue, 07 Jul 2020 03:03:00 - - https://supabase.com/blog/2020/07/01/supabase-alpha-june-2020 + https://supabase.com/blog/supabase-alpha-june-2020 Supabase Alpha June 2020 - https://supabase.com/blog/2020/07/01/supabase-alpha-june-2020 + https://supabase.com/blog/supabase-alpha-june-2020 Four months of building - Wed, 01 Jul 2020 00:00:00 GMT + Wed, 01 Jul 2020 03:03:00 - - https://supabase.com/blog/2020/06/15/supabase-steve-chavez + https://supabase.com/blog/supabase-steve-chavez Steve Chavez has joined Supabase - https://supabase.com/blog/2020/06/15/supabase-steve-chavez + https://supabase.com/blog/supabase-steve-chavez Steve joins Supabase to help build Auth. - Mon, 15 Jun 2020 00:00:00 GMT + Mon, 15 Jun 2020 03:03:00 - - https://supabase.com/blog/2020/06/01/supabase-alpha-may-2020 + https://supabase.com/blog/supabase-alpha-may-2020 Supabase Alpha May 2020 - https://supabase.com/blog/2020/06/01/supabase-alpha-may-2020 + https://supabase.com/blog/supabase-alpha-may-2020 Three months of building - Mon, 01 Jun 2020 00:00:00 GMT + Mon, 01 Jun 2020 03:03:00 - - https://supabase.com/blog/2020/05/01/supabase-alpha-april-2020 + https://supabase.com/blog/supabase-alpha-april-2020 Supabase Alpha April 2020 - https://supabase.com/blog/2020/05/01/supabase-alpha-april-2020 + https://supabase.com/blog/supabase-alpha-april-2020 Two months of building - Mon, 01 Jun 2020 00:00:00 GMT + Mon, 01 Jun 2020 03:03:00 diff --git a/apps/www/public/sitemap_www.xml b/apps/www/public/sitemap_www.xml index 7decc955855..78917d86ba8 100644 --- a/apps/www/public/sitemap_www.xml +++ b/apps/www/public/sitemap_www.xml @@ -49,13 +49,13 @@ - https://supabase.com/contact/enterprise + https://supabase.com/blog/ weekly 0.5 - https://supabase.com/database + https://supabase.com/contact/enterprise weekly 0.5 @@ -66,6 +66,18 @@ 0.5 + + https://supabase.com/nextjs/Nextjs + weekly + 0.5 + + + + https://supabase.com/database + weekly + 0.5 + + https://supabase.com/storage weekly @@ -73,581 +85,631 @@ - https://supabase.com/blog/2020/05/01/supabase-alpha-april-2020 + https://supabase.com/blog/supabase-alpha-april-2020 weekly 0.5 - https://supabase.com/blog/2020/06/01/supabase-alpha-may-2020 + https://supabase.com/blog/supabase-alpha-may-2020 weekly 0.5 - https://supabase.com/blog/2020/06/15/supabase-steve-chavez + https://supabase.com/blog/supabase-steve-chavez weekly 0.5 - https://supabase.com/blog/2020/07/01/supabase-alpha-june-2020 + https://supabase.com/blog/supabase-alpha-june-2020 weekly 0.5 - https://supabase.com/blog/2020/07/09/postgresql-templates + https://supabase.com/blog/postgresql-templates weekly 0.5 - https://supabase.com/blog/2020/07/10/alpha-launch-postmortem + https://supabase.com/blog/alpha-launch-postmortem weekly 0.5 - https://supabase.com/blog/2020/07/17/postgresql-physical-logical-backups + https://supabase.com/blog/postgresql-physical-logical-backups weekly 0.5 - https://supabase.com/blog/2020/08/02/continuous-postgresql-backup-walg + https://supabase.com/blog/continuous-postgresql-backup-walg weekly 0.5 - https://supabase.com/blog/2020/08/02/supabase-alpha-july-2020 + https://supabase.com/blog/supabase-alpha-july-2020 weekly 0.5 - https://supabase.com/blog/2020/08/05/supabase-auth + https://supabase.com/blog/supabase-auth weekly 0.5 - https://supabase.com/blog/2020/09/03/supabase-alpha-august-2020 + https://supabase.com/blog/supabase-alpha-august-2020 weekly 0.5 - https://supabase.com/blog/2020/09/11/supabase-hacktoberfest-2020 + https://supabase.com/blog/supabase-hacktoberfest-2020 weekly 0.5 - https://supabase.com/blog/2020/10/03/supabase-alpha-september-2020 + https://supabase.com/blog/supabase-alpha-september-2020 weekly 0.5 - https://supabase.com/blog/2020/10/30/improved-dx + https://supabase.com/blog/improved-dx weekly 0.5 - https://supabase.com/blog/2020/11/02/supabase-alpha-october-2020 + https://supabase.com/blog/supabase-alpha-october-2020 weekly 0.5 - https://supabase.com/blog/2020/11/18/postgresql-views + https://supabase.com/blog/postgresql-views weekly 0.5 - https://supabase.com/blog/2020/12/01/supabase-alpha-november-2020 + https://supabase.com/blog/supabase-alpha-november-2020 weekly 0.5 - https://supabase.com/blog/2020/12/02/case-study-monitoro + https://supabase.com/blog/case-study-monitoro weekly 0.5 - https://supabase.com/blog/2020/12/02/case-study-tayfa + https://supabase.com/blog/case-study-tayfa weekly 0.5 - https://supabase.com/blog/2020/12/02/case-study-xendit + https://supabase.com/blog/case-study-xendit weekly 0.5 - https://supabase.com/blog/2020/12/02/supabase-striveschool + https://supabase.com/blog/supabase-striveschool weekly 0.5 - https://supabase.com/blog/2020/12/13/supabase-dashboard-performance + https://supabase.com/blog/supabase-dashboard-performance weekly 0.5 - https://supabase.com/blog/2021/01/02/supabase-beta-december-2020 + https://supabase.com/blog/supabase-beta-december-2020 weekly 0.5 - https://supabase.com/blog/2021/02/02/supabase-beta-january-2021 + https://supabase.com/blog/supabase-beta-january-2021 weekly 0.5 - https://supabase.com/blog/2021/02/09/case-study-roboflow + https://supabase.com/blog/case-study-roboflow weekly 0.5 - https://supabase.com/blog/2021/02/27/cracking-postgres-interview + https://supabase.com/blog/cracking-postgres-interview weekly 0.5 - https://supabase.com/blog/2021/03/02/supabase-beta-february-2021 + https://supabase.com/blog/supabase-beta-february-2021 weekly 0.5 - https://supabase.com/blog/2021/03/05/postgres-as-a-cron-server + https://supabase.com/blog/postgres-as-a-cron-server weekly 0.5 - https://supabase.com/blog/2021/03/08/toad-a-link-shortener-with-simple-apis-for-low-coders + https://supabase.com/blog/toad-a-link-shortener-with-simple-apis-for-low-coders weekly 0.5 - https://supabase.com/blog/2021/03/11/using-supabase-replit + https://supabase.com/blog/using-supabase-replit weekly 0.5 - https://supabase.com/blog/2021/03/22/In-The-Loop + https://supabase.com/blog/In-The-Loop weekly 0.5 - https://supabase.com/blog/2021/03/25/angels-of-supabase + https://supabase.com/blog/angels-of-supabase weekly 0.5 - https://supabase.com/blog/2021/03/25/launch-week + https://supabase.com/blog/launch-week weekly 0.5 - https://supabase.com/blog/2021/03/29/pricing + https://supabase.com/blog/pricing weekly 0.5 - https://supabase.com/blog/2021/03/30/supabase-storage + https://supabase.com/blog/supabase-storage weekly 0.5 - https://supabase.com/blog/2021/03/31/supabase-cli + https://supabase.com/blog/supabase-cli weekly 0.5 - https://supabase.com/blog/2021/04/01/supabase-nft-marketplace + https://supabase.com/blog/supabase-nft-marketplace weekly 0.5 - https://supabase.com/blog/2021/04/02/supabase-dot-com + https://supabase.com/blog/supabase-dot-com weekly 0.5 - https://supabase.com/blog/2021/04/02/supabase-pgbouncer + https://supabase.com/blog/supabase-pgbouncer weekly 0.5 - https://supabase.com/blog/2021/04/02/supabase-workflows + https://supabase.com/blog/supabase-workflows weekly 0.5 - https://supabase.com/blog/2021/04/06/supabase-beta-march-2021 + https://supabase.com/blog/supabase-beta-march-2021 weekly 0.5 - https://supabase.com/blog/2021/05/03/supabase-beta-april-2021 + https://supabase.com/blog/supabase-beta-april-2021 weekly 0.5 - https://supabase.com/blog/2021/06/02/supabase-beta-may-2021 + https://supabase.com/blog/supabase-beta-may-2021 weekly 0.5 - https://supabase.com/blog/2021/07/01/roles-postgres-hooks + https://supabase.com/blog/roles-postgres-hooks weekly 0.5 - https://supabase.com/blog/2021/07/02/supabase-beta-june-2021 + https://supabase.com/blog/supabase-beta-june-2021 weekly 0.5 - https://supabase.com/blog/2021/07/22/supabase-launch-week-sql + https://supabase.com/blog/supabase-launch-week-sql weekly 0.5 - https://supabase.com/blog/2021/07/26/epsilon3-self-hosting + https://supabase.com/blog/epsilon3-self-hosting weekly 0.5 - https://supabase.com/blog/2021/07/26/supabase-community-day + https://supabase.com/blog/supabase-community-day weekly 0.5 - https://supabase.com/blog/2021/07/26/supabase-postgres-13 + https://supabase.com/blog/supabase-postgres-13 weekly 0.5 - https://supabase.com/blog/2021/07/27/spot-flutter-with-postgres + https://supabase.com/blog/spot-flutter-with-postgres weekly 0.5 - https://supabase.com/blog/2021/07/27/storage-beta + https://supabase.com/blog/storage-beta weekly 0.5 - https://supabase.com/blog/2021/07/28/mobbin-supabase-200000-users + https://supabase.com/blog/mobbin-supabase-200000-users weekly 0.5 - https://supabase.com/blog/2021/07/28/supabase-auth-passwordless-sms-login + https://supabase.com/blog/supabase-auth-passwordless-sms-login weekly 0.5 - https://supabase.com/blog/2021/07/29/supabase-reports-and-metrics + https://supabase.com/blog/supabase-reports-and-metrics weekly 0.5 - https://supabase.com/blog/2021/07/30/1-the-supabase-hackathon + https://supabase.com/blog/1-the-supabase-hackathon weekly 0.5 - https://supabase.com/blog/2021/07/30/supabase-functions-updates + https://supabase.com/blog/supabase-functions-updates weekly 0.5 - https://supabase.com/blog/2021/07/30/supabase-swag-store + https://supabase.com/blog/supabase-swag-store weekly 0.5 - https://supabase.com/blog/2021/08/09/hackathon-winners + https://supabase.com/blog/hackathon-winners weekly 0.5 - https://supabase.com/blog/2021/08/12/supabase-beta-july-2021 + https://supabase.com/blog/supabase-beta-july-2021 weekly 0.5 - https://supabase.com/blog/2021/09/10/supabase-beta-august-2021 + https://supabase.com/blog/supabase-beta-august-2021 weekly 0.5 - https://supabase.com/blog/2021/09/28/supabase-hacktoberfest-hackathon-2021 + https://supabase.com/blog/supabase-hacktoberfest-hackathon-2021 weekly 0.5 - https://supabase.com/blog/2021/10/04/supabase-beta-sept-2021 + https://supabase.com/blog/supabase-beta-sept-2021 weekly 0.5 - https://supabase.com/blog/2021/10/14/hacktoberfest-hackathon-winners-2021 + https://supabase.com/blog/hacktoberfest-hackathon-winners-2021 weekly 0.5 - https://supabase.com/blog/2021/10/19/replenysh-time-to-value-in-less-than-24-hours + https://supabase.com/blog/replenysh-time-to-value-in-less-than-24-hours weekly 0.5 - https://supabase.com/blog/2021/10/28/supabase-series-a + https://supabase.com/blog/supabase-series-a weekly 0.5 - https://supabase.com/blog/2021/11/05/supabase-beta-october-2021 + https://supabase.com/blog/supabase-beta-october-2021 weekly 0.5 - https://supabase.com/blog/2021/11/26/supabase-how-we-launch + https://supabase.com/blog/supabase-how-we-launch weekly 0.5 - https://supabase.com/blog/2021/11/26/supabase-launch-week-the-trilogy + https://supabase.com/blog/supabase-launch-week-the-trilogy weekly 0.5 - https://supabase.com/blog/2021/11/28/postgrest-9 + https://supabase.com/blog/postgrest-9 weekly 0.5 - https://supabase.com/blog/2021/11/28/whats-new-in-postgres-14 + https://supabase.com/blog/whats-new-in-postgres-14 weekly 0.5 - https://supabase.com/blog/2021/11/29/community-day + https://supabase.com/blog/community-day weekly 0.5 - https://supabase.com/blog/2021/11/30/supabase-studio + https://supabase.com/blog/supabase-studio weekly 0.5 - https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql + https://supabase.com/blog/realtime-row-level-security-in-postgresql weekly 0.5 - https://supabase.com/blog/2021/12/02/supabase-acquires-logflare + https://supabase.com/blog/supabase-acquires-logflare weekly 0.5 - https://supabase.com/blog/2021/12/03/launch-week-three-friday-five-more-things + https://supabase.com/blog/launch-week-three-friday-five-more-things weekly 0.5 - https://supabase.com/blog/2021/12/03/pg-graphql + https://supabase.com/blog/pg-graphql weekly 0.5 - https://supabase.com/blog/2021/12/03/supabase-holiday-hackdays-hackathon + https://supabase.com/blog/supabase-holiday-hackdays-hackathon weekly 0.5 - https://supabase.com/blog/2021/12/15/beta-november-2021-launch-week-recap + https://supabase.com/blog/beta-november-2021-launch-week-recap weekly 0.5 - https://supabase.com/blog/2021/12/17/holiday-hackdays-winners-2021 + https://supabase.com/blog/holiday-hackdays-winners-2021 weekly 0.5 - https://supabase.com/blog/2022/01/20/product-hunt-golden-kitty-awards-2021 + https://supabase.com/blog/product-hunt-golden-kitty-awards-2021 weekly 0.5 - https://supabase.com/blog/2022/01/20/supabase-beta-december-2021 + https://supabase.com/blog/supabase-beta-december-2021 weekly 0.5 - https://supabase.com/blog/2022/02/22/supabase-beta-january-2022 + https://supabase.com/blog/supabase-beta-january-2022 weekly 0.5 - https://supabase.com/blog/2022/03/08/audit + https://supabase.com/blog/audit weekly 0.5 - https://supabase.com/blog/2022/03/25/should-i-open-source-my-company + https://supabase.com/blog/should-i-open-source-my-company weekly 0.5 - https://supabase.com/blog/2022/03/25/supabase-launch-week-four + https://supabase.com/blog/supabase-launch-week-four weekly 0.5 - https://supabase.com/blog/2022/03/28/community-day + https://supabase.com/blog/community-day weekly 0.5 - https://supabase.com/blog/2022/03/29/graphql-now-available + https://supabase.com/blog/graphql-now-available weekly 0.5 - https://supabase.com/blog/2022/03/30/supabase-enterprise + https://supabase.com/blog/supabase-enterprise weekly 0.5 - https://supabase.com/blog/2022/03/31/supabase-edge-functions + https://supabase.com/blog/supabase-edge-functions weekly 0.5 - https://supabase.com/blog/2022/04/01/hackathon-bring-the-func + https://supabase.com/blog/hackathon-bring-the-func weekly 0.5 - https://supabase.com/blog/2022/04/01/supabase-realtime-with-multiplayer-features + https://supabase.com/blog/supabase-realtime-with-multiplayer-features weekly 0.5 - https://supabase.com/blog/2022/04/01/supabrew + https://supabase.com/blog/supabrew weekly 0.5 - https://supabase.com/blog/2022/04/15/beta-update-march-2022 + https://supabase.com/blog/beta-update-march-2022 weekly 0.5 - https://supabase.com/blog/2022/04/18/bring-the-func-hackathon-winners + https://supabase.com/blog/bring-the-func-hackathon-winners weekly 0.5 - https://supabase.com/blog/2022/04/20/partner-gallery-works-with-supabase + https://supabase.com/blog/partner-gallery-works-with-supabase weekly 0.5 - https://supabase.com/blog/2022/05/26/how-supabase-accelerates-development-of-all-pull-together + https://supabase.com/blog/how-supabase-accelerates-development-of-all-pull-together + weekly + 0.5 + + + + https://supabase.com/blog/beta-update-may-2022 + weekly + 0.5 + + + + https://supabase.com/blog/loading-data-supabase-python + weekly + 0.5 + + + + https://supabase.com/blog/partial-postgresql-data-dumps-with-rls + weekly + 0.5 + + + + https://supabase.com/blog/visualizing-supabase-data-using-metabase + weekly + 0.5 + + + + https://supabase.com/blog/flutter-tutorial-building-a-chat-app + weekly + 0.5 + + + + https://supabase.com/blog/beta-update-june-2022 + weekly + 0.5 + + + + https://supabase.com/blog/supabase-auth-helpers-with-sveltekit-support + weekly + 0.5 + + + + https://supabase.com/blog/seen-by-in-postgresql + weekly + 0.5 + + + + https://supabase.com/blog/supabase-flutter-sdk-1-developer-preview weekly 0.5 diff --git a/package-lock.json b/package-lock.json index ad56a3b0f68..ce10d15dcae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,6 +63,7 @@ } }, "apps/reference": { + "name": "reference-docs", "version": "0.0.0", "dependencies": { "@docusaurus/core": "2.0.0-rc.1", @@ -74,11 +75,7 @@ "react-dom": "^17.0.2" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.0.0-rc.1", - "ejs": "^3.1.8", - "fs": "^0.0.1-security", - "js-yaml": "^4.1.0", - "ts-node": "^10.9.1" + "@docusaurus/module-type-aliases": "2.0.0-rc.1" }, "engines": { "node": ">=16.14" @@ -96,94 +93,6 @@ "react": "^16.13.1 || ^17.0.0" } }, - "apps/reference/node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "apps/reference/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "apps/reference/node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "apps/reference/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "apps/reference/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "apps/reference/node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, "apps/temp-community-forum": { "name": "forum", "version": "0.0.0", @@ -1411,6 +1320,7 @@ "@supabase/ui": "v0.37.0-alpha.50", "classnames": "^2.3.1", "date-fns": "2.10.0", + "dayjs": "^1.11.4", "globby": "^12.0.2", "gray-matter": "^4.0.2", "markdown-toc": "^1.2.0", @@ -5974,6 +5884,10 @@ "cross-fetch": "^3.1.5" } }, + "node_modules/@supabase/generator": { + "resolved": "packages/spec", + "link": true + }, "node_modules/@supabase/gotrue-js": { "version": "1.22.15", "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.15.tgz", @@ -9823,6 +9737,11 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.10.0.tgz", "integrity": "sha512-EhfEKevYGWhWlZbNeplfhIU/+N+x0iCIx7VzKlXma2EdQyznVlZhCptXUY+BegNpPW2kjdx15Rvq503YcXXrcA==" }, + "node_modules/dayjs": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.4.tgz", + "integrity": "sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g==" + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -12225,12 +12144,6 @@ "node": ">= 0.6" } }, - "node_modules/fs": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", - "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==", - "dev": true - }, "node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -26029,6 +25942,103 @@ "resolved": "https://registry.npmjs.org/tailwindcss-radix/-/tailwindcss-radix-2.2.0.tgz", "integrity": "sha512-ErcLnoyB60lVB3jpeTOI2m2Cif3I6mTyjPiNs1/L/5cH+7FzbqzprLxwWgQtWQCIJCbzaZ2lh8AFEIo4He47XQ==" }, + "packages/spec": { + "version": "0.0.0", + "license": "MIT", + "devDependencies": { + "ejs": "^3.1.8", + "js-yaml": "^4.1.0", + "ts-node": "^10.9.1" + } + }, + "packages/spec/node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "packages/spec/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "packages/spec/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "packages/spec/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "packages/spec/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "packages/spec/node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, "packages/tsconfig": { "version": "0.0.0" }, @@ -29345,6 +29355,70 @@ "cross-fetch": "^3.1.5" } }, + "@supabase/generator": { + "version": "file:packages/spec", + "requires": { + "ejs": "^3.1.8", + "js-yaml": "^4.1.0", + "ts-node": "^10.9.1" + }, + "dependencies": { + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + } + } + }, "@supabase/gotrue-js": { "version": "1.22.15", "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.15.tgz", @@ -32294,6 +32368,11 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.10.0.tgz", "integrity": "sha512-EhfEKevYGWhWlZbNeplfhIU/+N+x0iCIx7VzKlXma2EdQyznVlZhCptXUY+BegNpPW2kjdx15Rvq503YcXXrcA==" }, + "dayjs": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.4.tgz", + "integrity": "sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g==" + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -34771,12 +34850,6 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, - "fs": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", - "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==", - "dev": true - }, "fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -41423,13 +41496,9 @@ "@docusaurus/preset-classic": "2.0.0-rc.1", "@mdx-js/react": "^1.6.22", "clsx": "^1.2.1", - "ejs": "^3.1.8", - "fs": "^0.0.1-security", - "js-yaml": "^4.1.0", "prism-react-renderer": "^1.3.5", "react": "^17.0.2", - "react-dom": "^17.0.2", - "ts-node": "^10.9.1" + "react-dom": "^17.0.2" }, "dependencies": { "@mdx-js/react": { @@ -41437,60 +41506,6 @@ "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", "requires": {} - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - } } } }, @@ -44757,6 +44772,7 @@ "autoprefixer": "^10.4.2", "classnames": "^2.3.1", "date-fns": "2.10.0", + "dayjs": "*", "file-loader": "^6.2.0", "globby": "^12.0.2", "gray-matter": "^4.0.2", From ab8df372566278e9de74fa44efc2c445241d8671 Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Sun, 7 Aug 2022 19:49:19 -0300 Subject: [PATCH 4/8] Update sitemap_www.xml --- apps/www/public/sitemap_www.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/www/public/sitemap_www.xml b/apps/www/public/sitemap_www.xml index 78917d86ba8..f62b0a8088d 100644 --- a/apps/www/public/sitemap_www.xml +++ b/apps/www/public/sitemap_www.xml @@ -48,6 +48,12 @@ 0.5 + + https://supabase.com/contact/enterprise + weekly + 0.5 + + https://supabase.com/blog/ weekly @@ -55,7 +61,7 @@ - https://supabase.com/contact/enterprise + https://supabase.com/database weekly 0.5 @@ -72,12 +78,6 @@ 0.5 - - https://supabase.com/database - weekly - 0.5 - - https://supabase.com/storage weekly From a614bb3de79f019bb5b660a7fa014ecd565c339c Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Sun, 7 Aug 2022 19:58:34 -0300 Subject: [PATCH 5/8] Update next.config.js --- apps/www/next.config.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/apps/www/next.config.js b/apps/www/next.config.js index 34384b990cc..7691af3eeca 100644 --- a/apps/www/next.config.js +++ b/apps/www/next.config.js @@ -897,7 +897,7 @@ module.exports = withMDX({ permanent: true, source: '/blog/2021/04/02/supabase-dot-com', destination: '/blog/supabase-dot-com', - }, + }, { permanent: true, source: '/blog/2021/04/02/supabase-pgbouncer', @@ -1192,17 +1192,17 @@ module.exports = withMDX({ permanent: true, source: '/blog/2022/06/07/beta-update-may-2022', destination: '/blog/beta-update-may-2022', - }, + }, { permanent: true, source: '/blog/2022/06/15/loading-data-supabase-python', destination: '/blog/loading-data-supabase-python', - }, + }, { permanent: true, source: '/blog/2022/06/28/partial-postgresql-data-dumps-with-rls', destination: '/blog/partial-postgresql-data-dumps-with-rls', - }, + }, { permanent: true, source: '/blog/2022/06/29/visualizing-supabase-data-using-metabase', @@ -1212,24 +1212,22 @@ module.exports = withMDX({ permanent: true, source: '/blog/2022/06/30/flutter-tutorial-building-a-chat-app', destination: '/blog/flutter-tutorial-building-a-chat-app', - }, + }, { permanent: true, source: '/blog/2022/07/05/beta-update-june-2022', destination: '/blog/beta-update-june-2022', - }, + }, { permanent: true, source: '/blog/2022/07/13/supabase-auth-helpers-with-sveltekit-support', destination: '/blog/supabase-auth-helpers-with-sveltekit-support', - }, + }, { permanent: true, source: '/blog/2022/07/18/seen-by-in-postgresql', destination: '/blog/seen-by-in-postgresql', }, - - ] }, }) From ec320c909f4dd19e28eafaaae3859b7815916b91 Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Sun, 7 Aug 2022 20:18:59 -0300 Subject: [PATCH 6/8] update links in blog posts --- .../2020-07-01-supabase-alpha-june-2020.mdx | 2 +- .../_blog/2020-07-09-postgresql-templates.mdx | 14 ++--- ...17-postgresql-physical-logical-backups.mdx | 15 +++-- ...8-02-continuous-postgresql-backup-walg.mdx | 17 +++--- ...20-10-03-supabase-alpha-september-2020.mdx | 2 +- ...2020-11-02-supabase-alpha-october-2020.mdx | 4 +- .../www/_blog/2020-11-18-postgresql-views.mdx | 12 ++-- ...020-12-01-supabase-alpha-november-2020.mdx | 2 +- ...2021-02-27-cracking-postgres-interview.mdx | 17 +++--- .../2021-03-05-postgres-as-a-cron-server.mdx | 16 ++--- .../_blog/2021-03-25-angels-of-supabase.mdx | 22 +++---- apps/www/_blog/2021-03-25-launch-week.mdx | 14 ++--- apps/www/_blog/2021-03-29-pricing.mdx | 2 +- apps/www/_blog/2021-03-31-supabase-cli.mdx | 4 +- .../2021-04-01-supabase-nft-marketplace.mdx | 2 +- .../www/_blog/2021-04-02-supabase-dot-com.mdx | 2 +- .../_blog/2021-04-02-supabase-pgbouncer.mdx | 2 +- .../_blog/2021-04-02-supabase-workflows.mdx | 6 +- .../2021-04-06-supabase-beta-march-2021.mdx | 14 ++--- .../2021-05-03-supabase-beta-april-2021.mdx | 2 +- .../_blog/2021-07-01-roles-postgres-hooks.mdx | 14 ++--- .../2021-07-02-supabase-beta-june-2021.mdx | 2 +- .../2021-07-22-supabase-launch-week-sql.mdx | 18 +++--- .../2021-07-26-supabase-community-day.mdx | 6 +- .../_blog/2021-07-26-supabase-postgres-13.mdx | 16 +++-- .../2021-07-27-spot-flutter-with-postgres.mdx | 2 +- apps/www/_blog/2021-07-27-storage-beta.mdx | 4 +- ...8-supabase-auth-passwordless-sms-login.mdx | 2 +- .../2021-07-30-1-the-supabase-hackathon.mdx | 2 +- .../2021-07-30-supabase-functions-updates.mdx | 2 +- .../2021-08-12-supabase-beta-july-2021.mdx | 18 +++--- .../2021-09-10-supabase-beta-august-2021.mdx | 2 +- ...-supabase-hacktoberfest-hackathon-2021.mdx | 16 ++--- .../2021-10-04-supabase-beta-sept-2021.mdx | 2 +- ...4-hacktoberfest-hackathon-winners-2021.mdx | 2 +- .../_blog/2021-10-28-supabase-series-a.mdx | 8 +-- .../2021-11-05-supabase-beta-october-2021.mdx | 4 +- .../2021-11-26-supabase-how-we-launch.mdx | 8 +-- ...11-26-supabase-launch-week-the-trilogy.mdx | 15 +++-- apps/www/_blog/2021-11-28-postgrest-9.mdx | 47 +++++++------- .../2021-11-28-whats-new-in-postgres-14.mdx | 14 ++--- apps/www/_blog/2021-11-29-community-day.mdx | 18 +++--- ...ltime-row-level-security-in-postgresql.mdx | 61 +++++++++---------- ...nch-week-three-friday-five-more-things.mdx | 22 +++---- ...03-supabase-holiday-hackdays-hackathon.mdx | 26 ++++---- ...5-beta-november-2021-launch-week-recap.mdx | 22 +++---- ...21-12-17-holiday-hackdays-winners-2021.mdx | 6 +- ...2022-01-20-supabase-beta-december-2021.mdx | 6 +- .../2022-02-22-supabase-beta-january-2022.mdx | 2 +- ...-03-25-should-i-open-source-my-company.mdx | 16 ++--- .../2022-03-25-supabase-launch-week-four.mdx | 34 +++++------ apps/www/_blog/2022-03-28-community-day.mdx | 8 +-- .../_blog/2022-03-30-supabase-enterprise.mdx | 4 +- .../2022-03-31-supabase-edge-functions.mdx | 4 +- .../2022-04-01-hackathon-bring-the-func.mdx | 6 +- apps/www/_blog/2022-04-01-supabrew.mdx | 2 +- .../2022-04-15-beta-update-march-2022.mdx | 32 +++++----- ...04-18-bring-the-func-hackathon-winners.mdx | 4 +- ...partial-postgresql-data-dumps-with-rls.mdx | 13 ++-- ...sualizing-supabase-data-using-metabase.mdx | 4 +- .../2022-07-05-beta-update-june-2022.mdx | 4 +- ...se-auth-helpers-with-sveltekit-support.mdx | 2 +- .../2022-07-18-seen-by-in-postgresql.mdx | 12 ++-- ...pabase-flutter-sdk-1-developer-preview.mdx | 40 ++++++------ ...2-08-03-supabase-beta-update-july-2022.mdx | 37 ++++++----- 65 files changed, 369 insertions(+), 391 deletions(-) diff --git a/apps/www/_blog/2020-07-01-supabase-alpha-june-2020.mdx b/apps/www/_blog/2020-07-01-supabase-alpha-june-2020.mdx index bb26bf746a0..8e58aa37b14 100644 --- a/apps/www/_blog/2020-07-01-supabase-alpha-june-2020.mdx +++ b/apps/www/_blog/2020-07-01-supabase-alpha-june-2020.mdx @@ -90,7 +90,7 @@ We have a number of small improvements: ### Hiring -- This month we [welcome Steve Chavez to the team](/blog/2020/06/15/supabase-steve-chavez). Steve is a maintainer of PostgREST, one of the core tools which makes Supabase possible. +- This month we [welcome Steve Chavez to the team](/blog/supabase-steve-chavez). Steve is a maintainer of PostgREST, one of the core tools which makes Supabase possible. - We're hiring a part-time designer or UX expert. See more [here](https://news.ycombinator.com/item?id=23708351). ### Get started diff --git a/apps/www/_blog/2020-07-09-postgresql-templates.mdx b/apps/www/_blog/2020-07-09-postgresql-templates.mdx index a413c23cc50..7adab0b4718 100644 --- a/apps/www/_blog/2020-07-09-postgresql-templates.mdx +++ b/apps/www/_blog/2020-07-09-postgresql-templates.mdx @@ -90,11 +90,9 @@ To quickly sum things up, we found out that new databases are, by default, creat ## More Postgres resources -- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql) -- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls) -- [Postgres Views](https://supabase.com/blog/2020/11/18/postgresql-views) -- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/2022/03/08/audit) -- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/2021/02/27/cracking-postgres-interview) -- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) - - +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Views](https://supabase.com/blog/postgresql-views) +- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/audit) +- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/cracking-postgres-interview) +- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/realtime-row-level-security-in-postgresql) diff --git a/apps/www/_blog/2020-07-17-postgresql-physical-logical-backups.mdx b/apps/www/_blog/2020-07-17-postgresql-physical-logical-backups.mdx index b4163af60fc..70014ea54b0 100644 --- a/apps/www/_blog/2020-07-17-postgresql-physical-logical-backups.mdx +++ b/apps/www/_blog/2020-07-17-postgresql-physical-logical-backups.mdx @@ -77,11 +77,10 @@ All in all, logical and physical backups are generated differently from one anot ## More Postgres resources -- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql) -- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls) -- [Postgres Views](https://supabase.com/blog/2020/11/18/postgresql-views) -- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/2022/03/08/audit) -- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/2021/02/27/cracking-postgres-interview) -- [What are PostgreSQL Templates?](https://supabase.com/blog/2020/07/09/postgresql-templates) -- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) - +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Views](https://supabase.com/blog/postgresql-views) +- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/audit) +- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/cracking-postgres-interview) +- [What are PostgreSQL Templates?](https://supabase.com/blog/postgresql-templates) +- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/realtime-row-level-security-in-postgresql) diff --git a/apps/www/_blog/2020-08-02-continuous-postgresql-backup-walg.mdx b/apps/www/_blog/2020-08-02-continuous-postgresql-backup-walg.mdx index 682dc875dba..7363a2fba09 100644 --- a/apps/www/_blog/2020-08-02-continuous-postgresql-backup-walg.mdx +++ b/apps/www/_blog/2020-08-02-continuous-postgresql-backup-walg.mdx @@ -17,7 +17,7 @@ Have you ever wanted to restore your database's state to a particular moment in ## Introduction -[WAL-G](https://github.com/wal-g/wal-g) is an [open-source continuous archiving tool](https://www.citusdata.com/blog/2017/08/18/introducing-wal-g-faster-restores-for-postgres/) used to easily set up and recover from [physical backups](/blog/2020/07/17/postgresql-physical-logical-backups) in Postgres. It mainly handles the storage and retrieval of physical backups and WAL archives to and from a chosen cloud storage provider. In this post, we will walk you through on how to effortlessly set up WAL-G for your database as well as guide you on what to do if and when disaster strikes. +[WAL-G](https://github.com/wal-g/wal-g) is an [open-source continuous archiving tool](https://www.citusdata.com/blog/introducing-wal-g-faster-restores-for-postgres/) used to easily set up and recover from [physical backups](/blog/postgresql-physical-logical-backups) in Postgres. It mainly handles the storage and retrieval of physical backups and WAL archives to and from a chosen cloud storage provider. In this post, we will walk you through on how to effortlessly set up WAL-G for your database as well as guide you on what to do if and when disaster strikes. ## Prerequisites @@ -188,11 +188,10 @@ Once Postgres finishes starting up and completes recovery mode, all data or data ## More Postgres resources -- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql) -- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls) -- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/2022/03/08/audit) -- [Postgres Views](https://supabase.com/blog/2020/11/18/postgresql-views) -- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/2021/02/27/cracking-postgres-interview) -- [What are PostgreSQL Templates?](https://supabase.com/blog/2020/07/09/postgresql-templates) -- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) - +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/audit) +- [Postgres Views](https://supabase.com/blog/postgresql-views) +- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/cracking-postgres-interview) +- [What are PostgreSQL Templates?](https://supabase.com/blog/postgresql-templates) +- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/realtime-row-level-security-in-postgresql) diff --git a/apps/www/_blog/2020-10-03-supabase-alpha-september-2020.mdx b/apps/www/_blog/2020-10-03-supabase-alpha-september-2020.mdx index 4b7f0cb6479..63ddd55993e 100644 --- a/apps/www/_blog/2020-10-03-supabase-alpha-september-2020.mdx +++ b/apps/www/_blog/2020-10-03-supabase-alpha-september-2020.mdx @@ -82,7 +82,7 @@ Supabase was given access to [GitHub Discussions](https://github.com/supabase/su ### Hacktoberfest -There's been [plenty of drama](https://hacktoberfest.digitalocean.com/hacktoberfest-update) during Hacktoberfest, but Supabase is committed to helping new contributors get started with open source. We've already seen a lot of issues closed by new members to our community and first-time contributors. If you're looking for ways to get involved, read our Hacktoberfest [blog post](/blog/2020/09/11/supabase-hacktoberfest-2020), check our [live stream](https://www.youtube.com/watch?v=3_xRLTjvEiE&t=60s), and then dive into our [project board](https://github.com/orgs/supabase/projects/5). +There's been [plenty of drama](https://hacktoberfest.digitalocean.com/hacktoberfest-update) during Hacktoberfest, but Supabase is committed to helping new contributors get started with open source. We've already seen a lot of issues closed by new members to our community and first-time contributors. If you're looking for ways to get involved, read our Hacktoberfest [blog post](/blog/supabase-hacktoberfest-2020), check our [live stream](https://www.youtube.com/watch?v=3_xRLTjvEiE&t=60s), and then dive into our [project board](https://github.com/orgs/supabase/projects/5). ![This is an image of our hacktoberfest project board on GitHub.](/images/blog/supabase-hacktoberfest-board.png) diff --git a/apps/www/_blog/2020-11-02-supabase-alpha-october-2020.mdx b/apps/www/_blog/2020-11-02-supabase-alpha-october-2020.mdx index 44b585829cb..f6f6c849a20 100644 --- a/apps/www/_blog/2020-11-02-supabase-alpha-october-2020.mdx +++ b/apps/www/_blog/2020-11-02-supabase-alpha-october-2020.mdx @@ -32,9 +32,9 @@ Watch a full demo: ### Supabase.js 1.0 -In the lead-up to our Beta launch, we've [released](/blog/2020/10/30/improved-dx) `supabase-js` version 1.0 and it comes with some major Developer Experience improvements. We received a lot of feedback from the community and we've incorporated it into our client libraries for our 1.0 release. +In the lead-up to our Beta launch, we've [released](/blog/improved-dx) `supabase-js` version 1.0 and it comes with some major Developer Experience improvements. We received a lot of feedback from the community and we've incorporated it into our client libraries for our 1.0 release. -Check out the [blog post](/blog/2020/10/30/improved-dx) to learn more. +Check out the [blog post](/blog/improved-dx) to learn more. ### More powerful SQL Editor diff --git a/apps/www/_blog/2020-11-18-postgresql-views.mdx b/apps/www/_blog/2020-11-18-postgresql-views.mdx index b6cae8d55d8..d23e9a1f333 100644 --- a/apps/www/_blog/2020-11-18-postgresql-views.mdx +++ b/apps/www/_blog/2020-11-18-postgresql-views.mdx @@ -185,9 +185,9 @@ Postgres views and materialized views are a great way to organize and view resul ## More Postgres resources -- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql) -- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls) -- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/2022/03/08/audit) -- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/2021/02/27/cracking-postgres-interview) -- [What are PostgreSQL Templates?](https://supabase.com/blog/2020/07/09/postgresql-templates) -- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/audit) +- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/cracking-postgres-interview) +- [What are PostgreSQL Templates?](https://supabase.com/blog/postgresql-templates) +- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/realtime-row-level-security-in-postgresql) diff --git a/apps/www/_blog/2020-12-01-supabase-alpha-november-2020.mdx b/apps/www/_blog/2020-12-01-supabase-alpha-november-2020.mdx index f7969dd15ba..768a4dc07f6 100644 --- a/apps/www/_blog/2020-12-01-supabase-alpha-november-2020.mdx +++ b/apps/www/_blog/2020-12-01-supabase-alpha-november-2020.mdx @@ -44,7 +44,7 @@ You can also perform admin functions on existing users - send password reset ema ### Even more powerful SQL Editor -Last month we [announced](/blog/2020/11/02/supabase-alpha-october-2020#more-powerful-sql-editor) an improved SQL Editor, and this month we've taken it even further. The SQL Editor is now a full Monaco editor, like you'd find in VS Code. Build your database directly from the browser. +Last month we [announced](/blog/supabase-alpha-october-2020#more-powerful-sql-editor) an improved SQL Editor, and this month we've taken it even further. The SQL Editor is now a full Monaco editor, like you'd find in VS Code. Build your database directly from the browser. ![This image shows our improved SQL Editor.](/images/blog/supabase-monaco-editor.png) diff --git a/apps/www/_blog/2021-02-27-cracking-postgres-interview.mdx b/apps/www/_blog/2021-02-27-cracking-postgres-interview.mdx index f522c0b76a0..8d1f2cf067a 100644 --- a/apps/www/_blog/2021-02-27-cracking-postgres-interview.mdx +++ b/apps/www/_blog/2021-02-27-cracking-postgres-interview.mdx @@ -66,9 +66,9 @@ Before and after adding your index will show you the difference in approach the ## 3. VIEWs -### Know how to create different representations of data with [VIEWs](/blog/2020/11/18/postgresql-views). +### Know how to create different representations of data with [VIEWs](/blog/postgresql-views). -We might create a VIEW `transcripts` which pulls out data from `students`, `courses`, and `grades`. It's useful for security, and logical abstractions. Check out our longer post on VIEWs here: [/blog/2020/11/18/postgresql-views](/blog/2020/11/18/postgresql-views). Some purists may argue that you should always query VIEWs and never TABLEs. +We might create a VIEW `transcripts` which pulls out data from `students`, `courses`, and `grades`. It's useful for security, and logical abstractions. Check out our longer post on VIEWs here: [/blog/postgresql-views](/blog/postgresql-views). Some purists may argue that you should always query VIEWs and never TABLEs. ### Know about Autoupdatable views. @@ -159,10 +159,9 @@ Thanks Steve Chavez for providing all the good bits of this post :) ## More Postgres resources -- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql) -- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls) -- [Postgres Views](https://supabase.com/blog/2020/11/18/postgresql-views) -- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/2022/03/08/audit) -- [What are PostgreSQL Templates?](https://supabase.com/blog/2020/07/09/postgresql-templates) -- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) - +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Views](https://supabase.com/blog/postgresql-views) +- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/audit) +- [What are PostgreSQL Templates?](https://supabase.com/blog/postgresql-templates) +- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/realtime-row-level-security-in-postgresql) diff --git a/apps/www/_blog/2021-03-05-postgres-as-a-cron-server.mdx b/apps/www/_blog/2021-03-05-postgres-as-a-cron-server.mdx index 9f1848dddbb..49e84faa6bd 100644 --- a/apps/www/_blog/2021-03-05-postgres-as-a-cron-server.mdx +++ b/apps/www/_blog/2021-03-05-postgres-as-a-cron-server.mdx @@ -186,7 +186,7 @@ select cron.unschedule('webhook-every-minute'); -- pass the name of the cron job There are plenty use-cases for this. For example: - **Sending welcome emails.** If you use an email provider with an HTTP API, then you batch emails to that service. Write a function that `selects` all your signups yesterday, then sends them to your favorite transactional email service. Schedule it every day to run at midnight. -- **Aggregating data.** If you're providing analytical data, you might want to aggregate it into time periods for faster querying (which serves a similar purpose as a [Materialized View](/blog/2020/11/18/postgresql-views#materialized-views-vs-conventional-views)). +- **Aggregating data.** If you're providing analytical data, you might want to aggregate it into time periods for faster querying (which serves a similar purpose as a [Materialized View](/blog/postgresql-views#materialized-views-vs-conventional-views)). - **Deleting old data.** Need to free up space? Run a scheduled job to delete data you no longer need. See a detailed list in the [`pg_cron` README](https://github.com/citusdata/pg_cron#example-use-cases). @@ -215,10 +215,10 @@ Is Postgres the best place to put your cron jobs? `¯\_(ツ)_/¯`. Postgres data ## More Postgres resources -- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql) -- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls) -- [Postgres Views](https://supabase.com/blog/2020/11/18/postgresql-views) -- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/2022/03/08/audit) -- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/2021/02/27/cracking-postgres-interview) -- [What are PostgreSQL Templates?](https://supabase.com/blog/2020/07/09/postgresql-templates) -- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Views](https://supabase.com/blog/postgresql-views) +- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/audit) +- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/cracking-postgres-interview) +- [What are PostgreSQL Templates?](https://supabase.com/blog/postgresql-templates) +- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/realtime-row-level-security-in-postgresql) diff --git a/apps/www/_blog/2021-03-25-angels-of-supabase.mdx b/apps/www/_blog/2021-03-25-angels-of-supabase.mdx index 11a1c0e6dd1..b9701abfddb 100644 --- a/apps/www/_blog/2021-03-25-angels-of-supabase.mdx +++ b/apps/www/_blog/2021-03-25-angels-of-supabase.mdx @@ -20,7 +20,7 @@ To build an amazing developer experience, we need developers to guide us. So aft deliberate approach to fundraising. We loaded our Seed round with developers, technical founders, and developer advocates: CTOs who have seen scale, community managers, and hackers. We amassed over 20 angel investors - almost all technical. -The Supabase Team is at full capacity preparing for [Launch Week](/blog/2021/03/25/launch-week) and since we're all short on time we decided - +The Supabase Team is at full capacity preparing for [Launch Week](/blog/launch-week) and since we're all short on time we decided - why not ask our Angels to write a fundraising post with us? So here is our unconventional fundraising announcement, written with a few of the Angels of Supabase. @@ -28,7 +28,7 @@ So here is our unconventional fundraising announcement, written with a few of th ## Mike Krieger (Instagram) Mike Krieger Supabase @@ -70,7 +70,7 @@ fun side project or exploration and ended up learning something I applied to mor ## Cassidy Williams (Netlify) Cassidy Williams Supabase @@ -114,7 +114,7 @@ Get a calendar you'll actually use and stick to your to-do lists! ## Thorsten Schaeff (Stripe) Thorsten Schaeff Supabase @@ -159,7 +159,7 @@ and I'm certain that it will pay off! ## Brian Douglas (GitHub) Brian Douglas Supabase @@ -200,7 +200,7 @@ learned, so do that. It is also easier to get hired when you already have conten ## Justin Gage (Retool) Justin Gage Supabase @@ -233,7 +233,7 @@ Eh, I can’t really give advice, I haven’t figured anything out myself yet! ## Iheanyi Ekechukwu (PlanetScale) Iheanyi Ekechukwu Supabase @@ -277,7 +277,7 @@ Never settle, never get comfortable, learn as much as you can consistently. ## Zach Waterfield (On Deck) Zach Waterfield Supabase @@ -312,7 +312,7 @@ university peers, OnDeck, Twitter, etc. Focus on building your network, and good ## Shawn Wang (Temporal) Shawn Wang Supabase @@ -347,6 +347,6 @@ Sadly I didn't see myself as a programmer until 20 years later. We [raised](https://techcrunch.com/2020/12/15/supabase-raises-6m-for-its-open-source-firebase-alternative/) a $6M seed round led by Coatue, Mozilla, and YC. -Next week is [Launch Week](/blog/2021/03/25/launch-week) and we'll be launching one new thing every day for a week. +Next week is [Launch Week](/blog/launch-week) and we'll be launching one new thing every day for a week. -[Check it out](/blog/2021/03/25/launch-week)! +[Check it out](/blog/launch-week)! diff --git a/apps/www/_blog/2021-03-25-launch-week.mdx b/apps/www/_blog/2021-03-25-launch-week.mdx index 68b397a2f61..ad1ddf51583 100644 --- a/apps/www/_blog/2021-03-25-launch-week.mdx +++ b/apps/www/_blog/2021-03-25-launch-week.mdx @@ -45,7 +45,7 @@ or follow us on twitter to keep up to date: [@supabase](https://twitter.com/supa We're announcing pricing today. If you don’t care for the details, [here is the pricing](/pricing). -The [blog post here](/blog/2021/03/29/pricing) goes into depth around our decision-making process. +The [blog post here](/blog/pricing) goes into depth around our decision-making process. The key takeaway is that we will stick with (what we feel is) a generous free tier. This was critical for many of our users who are still in the “build” phase of their project/business. @@ -65,7 +65,7 @@ If you aren’t confident in our business model though, we’re open source. You - 30 March 2021 -Checkout the launch post here: [Supabase Storage](/blog/2021/03/30/supabase-storage) +Checkout the launch post here: [Supabase Storage](/blog/supabase-storage) As with anything that we build in Supabase, Storage is fast, secure and scalable. It's integrated well with the rest of the Supabase ecosystem. @@ -87,7 +87,7 @@ You can use storage for your terabytes of ML training data, e-commerce product g - 31 March 2021 -Today is Day 3 of [Launch Week](/blog/2021/03/25/launch-week), and as promised - we're releasing our CLI. +Today is Day 3 of [Launch Week](/blog/launch-week), and as promised - we're releasing our CLI. Today we launched the Supabase CLI which includes: @@ -95,7 +95,7 @@ Today we launched the Supabase CLI which includes: - Managing database migrations - Self hosting with Docker! -Check out the announcement post here: [/blog/2021/03/31/supabase-cli](/blog/2021/03/31/supabase-cli) +Check out the announcement post here: [/blog/supabase-cli](/blog/supabase-cli) ![Supabase CLI](/images/blog/launch-week/bernie-3.png) @@ -119,10 +119,10 @@ Check out the demo and documentation website directly here: [ui.supabase.com](ht It's the season finale of Supabase Launchweek! And we have THREE more things to share: -1. [Connection Pooling with PgBouncer](/blog/2021/04/02/supabase-pgbouncer) - now you can connect directly to your Postgres instance without needing to worry that you'll cap out on connections. Perfect for use with Prisma. +1. [Connection Pooling with PgBouncer](/blog/supabase-pgbouncer) - now you can connect directly to your Postgres instance without needing to worry that you'll cap out on connections. Perfect for use with Prisma. -2. [Workflow Engine](/blog/2021/04/02/supabase-workflows) - Our WIP states language will eventually enable a drag and drop workflow builder like Zapier inside the dashboard. Built with Elixir for scale! +2. [Workflow Engine](/blog/supabase-workflows) - Our WIP states language will eventually enable a drag and drop workflow builder like Zapier inside the dashboard. Built with Elixir for scale! -3. supabase.io is now supabase.com - check out our origin story here: [/blog/2021/04/02/supabase-dot-com](/blog/2021/04/02/supabase-dot-com) +3. supabase.io is now supabase.com - check out our origin story here: [/blog/supabase-dot-com](/blog/supabase-dot-com) ![moar](/images/blog/launch-week/bernie-5.png) diff --git a/apps/www/_blog/2021-03-29-pricing.mdx b/apps/www/_blog/2021-03-29-pricing.mdx index ff3bd8249e4..ae3c5be69ad 100644 --- a/apps/www/_blog/2021-03-29-pricing.mdx +++ b/apps/www/_blog/2021-03-29-pricing.mdx @@ -75,7 +75,7 @@ What does this mean for you as a developer? In the next few days, you will see your usage appear in the dashboard with an upgrade button. -Check back throughout the week to see what else we're launching [here](/blog/2021/03/25/launch-week). +Check back throughout the week to see what else we're launching [here](/blog/launch-week). Sign up for the Supabase Beta [here](https://app.supabase.com). diff --git a/apps/www/_blog/2021-03-31-supabase-cli.mdx b/apps/www/_blog/2021-03-31-supabase-cli.mdx index 6a1b3bac88d..7733a7bf9ac 100644 --- a/apps/www/_blog/2021-03-31-supabase-cli.mdx +++ b/apps/www/_blog/2021-03-31-supabase-cli.mdx @@ -12,7 +12,7 @@ date: '03-31-2021' **UPDATE:** The Node.js CLI is now obsolete. Follow the latest instructions [here](/docs/guides/local-development). -Today is Day 3 of [Launch Week](/blog/2021/03/25/launch-week), and as promised - we're releasing our CLI. +Today is Day 3 of [Launch Week](/blog/launch-week), and as promised - we're releasing our CLI. This is the first step in a long journey of features we plan to deliver: @@ -224,4 +224,4 @@ Head over to the [Self Hosting Docs](/docs/guides/self-hosting) for a more compl If you require any assistance feel free to reach out in our [github discussions](https://github.com/supabase/supabase/discussions) or at support@supabase.io. -Check out what else we've [launched this week](/blog/2021/03/25/launch-week), contribute to the [CLI repo](https://github.com/supabase/cli), or go here for the [hosted version](https://app.supabase.com). +Check out what else we've [launched this week](/blog/launch-week), contribute to the [CLI repo](https://github.com/supabase/cli), or go here for the [hosted version](https://app.supabase.com). diff --git a/apps/www/_blog/2021-04-01-supabase-nft-marketplace.mdx b/apps/www/_blog/2021-04-01-supabase-nft-marketplace.mdx index f3719b8c23f..746b9e9deeb 100644 --- a/apps/www/_blog/2021-04-01-supabase-nft-marketplace.mdx +++ b/apps/www/_blog/2021-04-01-supabase-nft-marketplace.mdx @@ -36,4 +36,4 @@ When a sale is initiated i.e. the seller accepts a buyers offer, Metamask re-enc As a way to dis-incentivise previous owners of the image to not reveal the original image, we bake in a royalty mechanism, whereby previous owners receive a fraction of the sale price each time, the artwork changes hands. -Despite the undeniable value of such a platform, this announcement is of course an April Fools joke. We are not launching a Supabase NFT platform; but we are [Launching a TON of other stuff this week](/blog/2021/03/25/launch-week). +Despite the undeniable value of such a platform, this announcement is of course an April Fools joke. We are not launching a Supabase NFT platform; but we are [Launching a TON of other stuff this week](/blog/launch-week). diff --git a/apps/www/_blog/2021-04-02-supabase-dot-com.mdx b/apps/www/_blog/2021-04-02-supabase-dot-com.mdx index 0788731e8c5..a1a21a83d3e 100644 --- a/apps/www/_blog/2021-04-02-supabase-dot-com.mdx +++ b/apps/www/_blog/2021-04-02-supabase-dot-com.mdx @@ -31,7 +31,7 @@ The company we envisaged had Postgres at the core. We searched for every "dot co superbase, suprabase, uberbase. It turns out this is what every database start does. We couldn't find any good "dot coms". And so we moved on to "dot io" domains. -Anybody who knows Ant, knows that he [loves memes](/blog/2021/03/25/launch-week). While we were brainstorming +Anybody who knows Ant, knows that he [loves memes](/blog/launch-week). While we were brainstorming we found that "supabase.io" was available. To be honest, this name wasn't a strong contender, but it served a very important purpose - it was extremely "meme-able" because diff --git a/apps/www/_blog/2021-04-02-supabase-pgbouncer.mdx b/apps/www/_blog/2021-04-02-supabase-pgbouncer.mdx index e58b753957f..474d9c485bc 100644 --- a/apps/www/_blog/2021-04-02-supabase-pgbouncer.mdx +++ b/apps/www/_blog/2021-04-02-supabase-pgbouncer.mdx @@ -60,7 +60,7 @@ as mentioned above, PgBouncer allows your database to be able to handle more tha PgBouncer is like a Queue. With regular Postgres, when you hit your connection limit, new connections are rejected. PgBouncer overcomes this limitation. When all connections in the pool are in-use, it doesn't reject any incoming requests. Instead, -[PgBouncer queues them](https://www.percona.com/blog/2021/02/26/connection-queuing-in-pgbouncer-is-it-a-magical-remedy/) until a +[PgBouncer queues them](https://www.percona.com/blog/connection-queuing-in-pgbouncer-is-it-a-magical-remedy/) until a connection is returned to the pool and made available. This doesn't mean connection pooling is a magic bullet. If your clients is running expensive queries then the connections might take a long time before they are returned to the pool. The natural solution to this is to increase your database resources so that it processes queries faster or PgBouncer can open more connections. diff --git a/apps/www/_blog/2021-04-02-supabase-workflows.mdx b/apps/www/_blog/2021-04-02-supabase-workflows.mdx index 331fa7ad48b..842c624f334 100644 --- a/apps/www/_blog/2021-04-02-supabase-workflows.mdx +++ b/apps/www/_blog/2021-04-02-supabase-workflows.mdx @@ -14,7 +14,7 @@ tags: date: '2021-04-02' --- -This week we [launched Supabase Storage](/blog/2021/03/30/supabase-storage), which leaves one other huge piece of the +This week we [launched Supabase Storage](/blog/supabase-storage), which leaves one other huge piece of the stack that everyone is asking for: Functions. ## TLDR @@ -41,10 +41,10 @@ this yourself, probably using a cron-job. ## A better solution? We searched for some open source tools which we think are solving this problem well. We looked at -[NodeRed](/blog/2021/03/30/supabase-storage#designing-the-storage-middleware), [n8n](https://n8n.io/), +[NodeRed](/blog/supabase-storage#designing-the-storage-middleware), [n8n](https://n8n.io/), [Airflow](http://airflow.apache.org/blog/airflow-two-point-oh-is-here/), and about 10 other tools. They are amazing tools on their own, but for the Supabase Stack they ultimately had the -[same shortcomings](/blog/2021/03/30/supabase-storage#integration-with-the-supabase-ecosystem) that we found +[same shortcomings](/blog/supabase-storage#integration-with-the-supabase-ecosystem) that we found with Storage providers - most of them lacked deep Postgres integration. We went back to the drawing board and asked, "if we could wave a wand and get the perfect solution, what would it look like?". diff --git a/apps/www/_blog/2021-04-06-supabase-beta-march-2021.mdx b/apps/www/_blog/2021-04-06-supabase-beta-march-2021.mdx index 0583fbcc7ea..073fad6dbb0 100644 --- a/apps/www/_blog/2021-04-06-supabase-beta-march-2021.mdx +++ b/apps/www/_blog/2021-04-06-supabase-beta-march-2021.mdx @@ -30,13 +30,13 @@ Watch a full demo: ## Supabase Storage -Need to store images, audio, and video clips? Well now you can do it on [Supabase Storage](/blog/2021/03/30/supabase-storage). It's backed by S3 and our new [OSS storage API](https://github.com/supabase/storage-api) written in Fastify and Typescript. Read the [full blog post](/blog/2021/03/30/supabase-storage). +Need to store images, audio, and video clips? Well now you can do it on [Supabase Storage](/blog/supabase-storage). It's backed by S3 and our new [OSS storage API](https://github.com/supabase/storage-api) written in Fastify and Typescript. Read the [full blog post](/blog/supabase-storage). ![Supabase Storage](/images/blog/storage/ph-1.png) ## Connection Pooling -The Supabase API already handles Connection Pooling, but if you're connecting to your database directly (for example, with Prisma) we now [bundle PgBouncer](/blog/2021/04/02/supabase-pgbouncer). Read the [full blog post](/blog/2021/04/02/supabase-pgbouncer). +The Supabase API already handles Connection Pooling, but if you're connecting to your database directly (for example, with Prisma) we now [bundle PgBouncer](/blog/supabase-pgbouncer). Read the [full blog post](/blog/supabase-pgbouncer). ![Connection Pooling](/images/blog/bouncer/pgbouncer-thumb.jpg) @@ -48,7 +48,7 @@ We open sourced our internal UI component library, so that anyone can use and co ## CLI -Now you can run Supabase locally in the terminal with `supabase start`. We have done some preliminary work on [diff-based schema migrations](/blog/2021/03/31/supabase-cli#migrations), and added some new tooling for self-hosting Supabase with Docker. [Blog post here](/blog/2021/03/31/supabase-cli). +Now you can run Supabase locally in the terminal with `supabase start`. We have done some preliminary work on [diff-based schema migrations](/blog/supabase-cli#migrations), and added some new tooling for self-hosting Supabase with Docker. [Blog post here](/blog/supabase-cli). ![Supabase CLI](/images/blog/march-2021/supabase-cli.png) @@ -56,19 +56,19 @@ Now you can run Supabase locally in the terminal with `supabase start`. We hav Our most frequently asked question by far is "ok supabase is sweet, but how much is it going to cost?". TL;DR there's **Free Tier** up to 500mb + 10k auth users, a **Pro** **Tier** at $25/month for 8GB + 100k auth users, and anything additional is charged on a usage basis. -See [Pricing Page](/pricing) for full details and also our blog on why [pricing is hard](/blog/2021/03/29/pricing). +See [Pricing Page](/pricing) for full details and also our blog on why [pricing is hard](/blog/pricing). ![Supabase Pricing](/images/blog/march-2021/supabase-pricing.jpg) ## NFT Platform -Well... not really, but it made for a great [April Fools joke](/blog/2021/04/01/supabase-nft-marketplace). +Well... not really, but it made for a great [April Fools joke](/blog/supabase-nft-marketplace). ![Supabase NFT marketplace BuyMeth.com](/images/blog/nft/nft-1.png) ## Supabase Dot Com -We are now dot com! We'll be porting across over the next few weeks. Read the origin story behind the name [here](/blog/2021/04/02/supabase-dot-com). +We are now dot com! We'll be porting across over the next few weeks. Read the origin story behind the name [here](/blog/supabase-dot-com). ![Supabase Dot Com](/images/blog/supabase-dot-com-og.jpg) @@ -109,7 +109,7 @@ If you want to keep up to date, make sure you [subscribe to our YouTube channel] Lets say for each new sign up, you want to trigger a slack alert, send them an email after 24 hours. -For this we are working on our own [Workflow engine](/blog/2021/04/02/supabase-workflows), it will eventually have a Zapier-like interface inside the dashboard. For now it's a state-machine interpreter (fully compatible with Amazon States Language) written in Elixir, [open source](https://github.com/supabase/workflows), and ready for community contributions. +For this we are working on our own [Workflow engine](/blog/supabase-workflows), it will eventually have a Zapier-like interface inside the dashboard. For now it's a state-machine interpreter (fully compatible with Amazon States Language) written in Elixir, [open source](https://github.com/supabase/workflows), and ready for community contributions. ![Workflows](/images/blog/workflows/workflows-thumb.jpg) diff --git a/apps/www/_blog/2021-05-03-supabase-beta-april-2021.mdx b/apps/www/_blog/2021-05-03-supabase-beta-april-2021.mdx index 0f0146d0f4b..7575e01d9b6 100644 --- a/apps/www/_blog/2021-05-03-supabase-beta-april-2021.mdx +++ b/apps/www/_blog/2021-05-03-supabase-beta-april-2021.mdx @@ -160,7 +160,7 @@ If you want to keep up to date, make sure you [subscribe to our YouTube channel] You might have noticed our Dashboard slowly changing (improving), as we migrate the components out to our [open source UI Library](https://github.com/supabase/ui). This progression is an important step towards offering a UI for [Local Development](/docs/guides/local-development) and [Self Hosting](/docs/guides/self-hosting). -We're also working on our [Workflows engine](/blog/2021/04/02/supabase-workflows). This is quite a large task, but we're making progress and aiming to ship sometime in July. +We're also working on our [Workflows engine](/blog/supabase-workflows). This is quite a large task, but we're making progress and aiming to ship sometime in July. ## One more thing diff --git a/apps/www/_blog/2021-07-01-roles-postgres-hooks.mdx b/apps/www/_blog/2021-07-01-roles-postgres-hooks.mdx index 69d275644c1..b81e9211b3c 100644 --- a/apps/www/_blog/2021-07-01-roles-postgres-hooks.mdx +++ b/apps/www/_blog/2021-07-01-roles-postgres-hooks.mdx @@ -407,13 +407,13 @@ By the way, if you like working on PostgreSQL tooling and extensions: we are hir ## More Postgres resources -- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql) -- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls) -- [Postgres Views](https://supabase.com/blog/2020/11/18/postgresql-views) -- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/2022/03/08/audit) -- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/2021/02/27/cracking-postgres-interview) -- [What are PostgreSQL Templates?](https://supabase.com/blog/2020/07/09/postgresql-templates) -- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Views](https://supabase.com/blog/postgresql-views) +- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/audit) +- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/cracking-postgres-interview) +- [What are PostgreSQL Templates?](https://supabase.com/blog/postgresql-templates) +- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/realtime-row-level-security-in-postgresql) [^1]: You can see the `ProcessUtility_hook` declaration [here](https://github.com/postgres/postgres/blob/11e9caff82bc7326e2bc9782937cb03875050cc4/src/backend/tcop/utility.c#L75-L76) and its usage [here](https://github.com/postgres/postgres/blob/11e9caff82bc7326e2bc9782937cb03875050cc4/src/backend/tcop/utility.c#L515-L527). [^2]: This is also done on [pg_stat_statements](https://github.com/postgres/postgres/blob/6991e774e0304f5ef488cf1ae4fa79578b6ae3d5/contrib/pg_stat_statements/pg_stat_statements.c#L1130-L1137) and [sepgsql](https://github.com/postgres/postgres/blob/6991e774e0304f5ef488cf1ae4fa79578b6ae3d5/contrib/sepgsql/hooks.c#L381-L388). diff --git a/apps/www/_blog/2021-07-02-supabase-beta-june-2021.mdx b/apps/www/_blog/2021-07-02-supabase-beta-june-2021.mdx index dc6f1f4bdc4..80ca73046d1 100644 --- a/apps/www/_blog/2021-07-02-supabase-beta-june-2021.mdx +++ b/apps/www/_blog/2021-07-02-supabase-beta-june-2021.mdx @@ -155,7 +155,7 @@ If you want to keep up to date, make sure you [subscribe to our YouTube channel] ## Coming Next -Launch Week!! Remember that time we did a [Launch Week](/blog/2021/03/25/launch-week)? Well we're doing it again at the end of July. +Launch Week!! Remember that time we did a [Launch Week](/blog/launch-week)? Well we're doing it again at the end of July. Strap in, because we're shipping one thing every day for a week. Let's goooooo. diff --git a/apps/www/_blog/2021-07-22-supabase-launch-week-sql.mdx b/apps/www/_blog/2021-07-22-supabase-launch-week-sql.mdx index 281c160241d..f86c57ea758 100644 --- a/apps/www/_blog/2021-07-22-supabase-launch-week-sql.mdx +++ b/apps/www/_blog/2021-07-22-supabase-launch-week-sql.mdx @@ -13,7 +13,7 @@ date: '2021-07-22' toc_depth: 2 --- -In March, Supabase held a [Launch Week](/blog/2021/03/25/launch-week) where we launched a new product/feature every day for a week. +In March, Supabase held a [Launch Week](/blog/launch-week) where we launched a new product/feature every day for a week. It may seem crazy to do another launch week just four months later, but we couldn't give up on a good pun, so get ready for **Launch Week II: the SQL**. @@ -35,7 +35,7 @@ One of the best things about building Supabase is the community. We're even luck ### Where? -Read the [blog post](/blog/2021/07/26/supabase-community-day). +Read the [blog post](/blog/supabase-community-day). ## Tuesday 27 July: Storage v2 @@ -47,11 +47,11 @@ Tuesday 27 July 2021.[^1] ### What? -We shipped [Version 1 of Supabase Storage](/blog/2021/03/30/supabase-storage) in the last Launch Week, and now we've had 4 months to work on Storage Reloaded. +We shipped [Version 1 of Supabase Storage](/blog/supabase-storage) in the last Launch Week, and now we've had 4 months to work on Storage Reloaded. ### Where? -Read the [blog post](/blog/2021/07/27/storage-beta). +Read the [blog post](/blog/storage-beta). ## Wednesday 28 July: Auth v2 @@ -67,7 +67,7 @@ What's cooler than Arnie in the 90's? Passwordless logins. We've [already](/docs ### Where? -Read the [blog post](/blog/2021/07/28/supabase-auth-passwordless-sms-login). +Read the [blog post](/blog/supabase-auth-passwordless-sms-login). ## Thursday 29 July: Dashboard v2 @@ -83,7 +83,7 @@ Who needs a futuristic [Hoverboard from 2015](https://www.youtube.com/watch?v=NR ### Where? -Read the [blog post](/blog/2021/07/29/supabase-reports-and-metrics). +Read the [blog post](/blog/supabase-reports-and-metrics). ## Friday 30 July: One more thing @@ -99,9 +99,9 @@ We all know that the best [SeQueLs](https://www.reddit.com/r/SequelMemes/) are a ### Where? -Read about [Supabase Hackathon](/blog/2021/07/30/supabase-swag-store), -[Supabase Functions Updates](/blog/2021/07/30/supabase-functions-updates), -and the Supabase [Swag Store](/blog/2021/07/30/1-the-supabase-hackathon). +Read about [Supabase Hackathon](/blog/supabase-swag-store), +[Supabase Functions Updates](/blog/supabase-functions-updates), +and the Supabase [Swag Store](/blog/1-the-supabase-hackathon). [^1]: When we first announced, Storage was on Wednesday and Auth was on Tuesday. We switched the order of these as we are doing a diff --git a/apps/www/_blog/2021-07-26-supabase-community-day.mdx b/apps/www/_blog/2021-07-26-supabase-community-day.mdx index 3995482185f..928466c8212 100644 --- a/apps/www/_blog/2021-07-26-supabase-community-day.mdx +++ b/apps/www/_blog/2021-07-26-supabase-community-day.mdx @@ -13,7 +13,7 @@ date: '2021-07-26' toc_depth: 2 --- -Supabase has grown a lot [^1] since last [Launch Week](/blog/2021/03/25/launch-week), +Supabase has grown a lot [^1] since last [Launch Week](/blog/launch-week), but it wouldn't be possible without some amazing open source tools. Since we're shipping a few upgrades this week we feel it's only fair to shine a spotlight on some tools and community efforts that make Supabase possible. @@ -24,7 +24,7 @@ to shine a spotlight on some tools and community efforts that make Supabase poss PostgreSQL is a big part of Supabase, and it's also a huge inspiration - the speed that they ship, their community organization, and their absolute dedication towards reliability. PostgreSQL 13.3 was released in June and (from today) every new Supabase project will -be on [PostgreSQL version 13.3](/blog/2021/07/26/supabase-postgres-13). +be on [PostgreSQL version 13.3](/blog/supabase-postgres-13). ### Giving back @@ -34,7 +34,7 @@ few ways we make it easy to use PostgreSQL without Supabase: - Supabase was the first company to put Postgres in the [Digital Ocean Marketplace](https://marketplace.digitalocean.com/apps/supabase-postgres). Since then it's been installed over 1000 times (not by us!). - We provide a Postgres image in the [AWS marketplace](https://aws.amazon.com/marketplace/pp/prodview-lk2pfa5nafecg). -- We're packaging the Marketplace version, [along with "Bundles"](/blog/2021/07/26/supabase-postgres-13#postgresql-bundles) +- We're packaging the Marketplace version, [along with "Bundles"](/blog/supabase-postgres-13#postgresql-bundles) - We're developing a few extensions: [supautils](https://github.com/supabase/supautils), [pg_net](https://github.com/supabase/pg_net), and a couple more soon to be announced. ### Get involved diff --git a/apps/www/_blog/2021-07-26-supabase-postgres-13.mdx b/apps/www/_blog/2021-07-26-supabase-postgres-13.mdx index cbd2ad014f9..17aa71139ec 100644 --- a/apps/www/_blog/2021-07-26-supabase-postgres-13.mdx +++ b/apps/www/_blog/2021-07-26-supabase-postgres-13.mdx @@ -123,12 +123,10 @@ Try the new features of PostgreSQL 13.3 today by creating a [new project](https: ## More Postgres resources -- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) -- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql) -- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls) -- [Postgres Views](https://supabase.com/blog/2020/11/18/postgresql-views) -- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/2022/03/08/audit) -- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/2021/02/27/cracking-postgres-interview) -- [What are PostgreSQL Templates?](https://supabase.com/blog/2020/07/09/postgresql-templates) - - +- [Realtime Postgres RLS on Supabase](https://supabase.com/01/realtime-row-level-security-in-postgresql) +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Views](https://supabase.com/blog/postgresql-views) +- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/audit) +- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/cracking-postgres-interview) +- [What are PostgreSQL Templates?](https://supabase.com/blog/postgresql-templates) diff --git a/apps/www/_blog/2021-07-27-spot-flutter-with-postgres.mdx b/apps/www/_blog/2021-07-27-spot-flutter-with-postgres.mdx index f1ee118922b..a6349c9cec5 100644 --- a/apps/www/_blog/2021-07-27-spot-flutter-with-postgres.mdx +++ b/apps/www/_blog/2021-07-27-spot-flutter-with-postgres.mdx @@ -86,7 +86,7 @@ With Supabase, Tyler can use Flutter to build a performant app quickly at a low experience and has even joined the SupaSquad. > Update: After being part of the SupaSquad, Tyler joined Supabase full time as part of the DevRel squad, focusing on Flutter. This is some of his latest work: [Flutter Tutorial: building a Flutter chat app -](https://supabase.com/blog/2022/06/30/flutter-tutorial-building-a-chat-app). +> ](https://supabase.com/blog/flutter-tutorial-building-a-chat-app). You can download and install spot for [iOS](https://apps.apple.com/us/app/spot-videos/id1564675926?utm_source=supabase&utm_campaign=static) and [Android](https://play.google.com/store/apps/details?id=app.spotvideo&utm_source=supabase&utm_campaign=static) diff --git a/apps/www/_blog/2021-07-27-storage-beta.mdx b/apps/www/_blog/2021-07-27-storage-beta.mdx index 8b0768273f5..f416eb38feb 100644 --- a/apps/www/_blog/2021-07-27-storage-beta.mdx +++ b/apps/www/_blog/2021-07-27-storage-beta.mdx @@ -85,7 +85,7 @@ At launch, you could pass in a `File` object and `supabase-js` used `FormData` t However, `FormData` is only supported in the browser, making `supabase-js` incompatible with Node.js. The simplest way to solve this would have been to include the [FormData polyfill](https://www.npmjs.com/package/form-data) along with the library. -At Supabase, we are [maniacal about performance](/blog/2020/12/13/supabase-dashboard-performance). Keeping our client libraries lean is a key differentiator. Our entire client library (including the clients for postgrest, storage, realtime and auth) is just 15.8 kb. If you are just interested in using a single service like storage, you can use the `storage-js` library directly which is [even smaller](https://bundlephobia.com/package/@supabase/storage-js@1.4.0). This made including polyfills like Formdata a no-go. +At Supabase, we are [maniacal about performance](/blog/supabase-dashboard-performance). Keeping our client libraries lean is a key differentiator. Our entire client library (including the clients for postgrest, storage, realtime and auth) is just 15.8 kb. If you are just interested in using a single service like storage, you can use the `storage-js` library directly which is [even smaller](https://bundlephobia.com/package/@supabase/storage-js@1.4.0). This made including polyfills like Formdata a no-go. ![Supabase JS bundle size](/images/blog/launch-week-sql-day-2/supabase-js-size.png) @@ -139,7 +139,7 @@ We also have automated API docs generated [here](https://supabase.github.io/stor ### Storage in the wild -We have a few production applications using Supabase Storage. Wataru is using Storage to power his community site [Shikutoku](https://shikutoku.me/) and Tyler is using Supabase Storage to store short video clips uploaded to his [Spot app](/blog/2021/07/27/spot-flutter-with-postgres) built with Flutter +We have a few production applications using Supabase Storage. Wataru is using Storage to power his community site [Shikutoku](https://shikutoku.me/) and Tyler is using Supabase Storage to store short video clips uploaded to his [Spot app](/blog/spot-flutter-with-postgres) built with Flutter

diff --git a/apps/www/_blog/2021-07-28-supabase-auth-passwordless-sms-login.mdx b/apps/www/_blog/2021-07-28-supabase-auth-passwordless-sms-login.mdx index a58d6e98fb6..aa7a26ca013 100644 --- a/apps/www/_blog/2021-07-28-supabase-auth-passwordless-sms-login.mdx +++ b/apps/www/_blog/2021-07-28-supabase-auth-passwordless-sms-login.mdx @@ -99,7 +99,7 @@ We've exposed this functionality in `supabase-js`, and it can be invoked with th The next major item on the list is MFA (Multi-Factor Authentication) - which includes TOTP ([Time-Based One Time Password](https://en.wikipedia.org/wiki/Time-based_One-Time_Password)). -Find out how Mobbin is using Supabase Auth to [manage 200,000 users](/blog/2021/07/28/mobbin-supabase-200000-users). +Find out how Mobbin is using Supabase Auth to [manage 200,000 users](/blog/mobbin-supabase-200000-users). Anything else you want to see or can help implement in Auth? Reach out on [Discord](https://discord.supabase.com/) and give Auth a try by [creating a project](https://app.supabase.com/) on Supabase! diff --git a/apps/www/_blog/2021-07-30-1-the-supabase-hackathon.mdx b/apps/www/_blog/2021-07-30-1-the-supabase-hackathon.mdx index 9db102a40a5..ecc82d21258 100644 --- a/apps/www/_blog/2021-07-30-1-the-supabase-hackathon.mdx +++ b/apps/www/_blog/2021-07-30-1-the-supabase-hackathon.mdx @@ -126,7 +126,7 @@ Here's a collection of resources that will help you get started building with Su - [Supabase Crash Course](https://www.youtube.com/watch?v=7uKQBl9uZ00) [video] - [Flutter Quickstart Guide](/docs/guides/with-flutter) - [Nextjs Quickstart Guide](/docs/guides/with-nextjs) -- [Using Supabase inside Replit](/blog/2021/03/11/using-supabase-replit) +- [Using Supabase inside Replit](/blog/using-supabase-replit) - [Full Stack Development with Next.js and Supabase – The Complete Guide](https://www.freecodecamp.org/news/the-complete-guide-to-full-stack-development-with-supabas/) - [Auth Deep Dive - Learn everything there is to know about Supabase Auth](/docs/learn/auth-deep-dive/auth-deep-dive-jwts) [videos] - [Send SMS notifications using Twilio](https://www.twilio.com/blog/send-sms-notifications-supabase-users-node-js-twilio-messaging) diff --git a/apps/www/_blog/2021-07-30-supabase-functions-updates.mdx b/apps/www/_blog/2021-07-30-supabase-functions-updates.mdx index c03e986925c..32079802098 100644 --- a/apps/www/_blog/2021-07-30-supabase-functions-updates.mdx +++ b/apps/www/_blog/2021-07-30-supabase-functions-updates.mdx @@ -250,4 +250,4 @@ Database Webhooks is enabled today on all [new projects](https://app.supabase.co ![Enable hooks](/images/blog/functions-updates/enable-hooks.png) -[^1]: Postgres also has the concept of [Hooks](/blog/2021/07/01/roles-postgres-hooks), but they're more of an internal concept. +[^1]: Postgres also has the concept of [Hooks](/blog/roles-postgres-hooks), but they're more of an internal concept. diff --git a/apps/www/_blog/2021-08-12-supabase-beta-july-2021.mdx b/apps/www/_blog/2021-08-12-supabase-beta-july-2021.mdx index 87bdfe4eaa9..b418541886c 100644 --- a/apps/www/_blog/2021-08-12-supabase-beta-july-2021.mdx +++ b/apps/www/_blog/2021-08-12-supabase-beta-july-2021.mdx @@ -31,7 +31,7 @@ Watch a full demo of this month's releases. ## Launch Week II: The SQL -Following the success of our first Launch Week in March, we finished July with "[Launch Week II: The SQL](/blog/2021/07/22/supabase-launch-week-sql)". +Following the success of our first Launch Week in March, we finished July with "[Launch Week II: The SQL](/blog/supabase-launch-week-sql)". The community has been sieving through a slew of bad puns and retro memes to discover the new feature announcements. ![Launch Week II: The SQL](/images/blog/2021-july/supabase-launch-the-sql.png) @@ -41,7 +41,7 @@ The community has been sieving through a slew of bad puns and retro memes to dis Your users can now log in with SMS based mobile auth! We have a Twilio integration ([Guide Here](/docs/guides/auth/auth-twilio)) and will be adding more providers soon. Other Auth updating include, Twitch logins, and the ability to generate invite, recovery, confirmation, and magic links via the API, -for people who want more control over the email templating flow. Read the [blog post here](/blog/2021/07/28/supabase-auth-passwordless-sms-login). +for people who want more control over the email templating flow. Read the [blog post here](/blog/supabase-auth-passwordless-sms-login). ![Auth v2 with Phone Auth](/images/blog/2021-july/verify-phone.jpg) @@ -49,14 +49,14 @@ for people who want more control over the email templating flow. Read the [blog Storage updates include Media Streaming, Public Buckets, Directory Uploads, and a Performance Improvements. -Streaming Media in particular opens up a whole new host of potential use cases, learn more about the [updates here](/blog/2021/07/27/storage-beta). +Streaming Media in particular opens up a whole new host of potential use cases, learn more about the [updates here](/blog/storage-beta). ![Auth v2 with Phone Auth](/images/blog/2021-july/storage.png) ## Dashboard v2 We made some major new additions to the dashboard including usage statistics, a new project home, and tons of database insights. -Check the [post here](/blog/2021/07/29/supabase-reports-and-metrics) on what you get and how we built it. +Check the [post here](/blog/supabase-reports-and-metrics) on what you get and how we built it. ![Dashboard v2](/images/blog/2021-july/dashboards.png) @@ -71,13 +71,13 @@ We're fast approaching 1,500 members so come and join the action! [discord.supab ## PostgreSQL 13 All new Supabase projects will be launched with PostgreSQL 13.3, and we're working on a migration path for old projects. -This gives you [looooaads of new stuff out the box](/blog/2021/07/26/supabase-postgres-13). +This gives you [looooaads of new stuff out the box](/blog/supabase-postgres-13). ![PostgreSQL 13](/images/blog/2021-july/postgres-13.png) ## PostgREST v8.0 -We worked with our friends at [PostgREST](https://postgrest.org/) to make some [huge improvements](/blog/2021/07/26/supabase-community-day#postgrest-version-80). +We worked with our friends at [PostgREST](https://postgrest.org/) to make some [huge improvements](/blog/supabase-community-day#postgrest-version-80). For those of you who don't know, every Supabase instance comes with a dedicated PostgREST server by default, which provides the auto-generated CRUD API that we wrap with `supabase-js`. @@ -92,14 +92,14 @@ Our community driven libs for the fast growing mobile and web framework are now ## Hackathon We're running a week long hackathon starting NOW. There are some legit prizes, and you can win in a bunch of different categories. -Check the [full instructions here](/blog/2021/07/30/1-the-supabase-hackathon) on how to participate. Submissions close next Friday at midnight PST. +Check the [full instructions here](/blog/1-the-supabase-hackathon) on how to participate. Submissions close next Friday at midnight PST. ![Hackathon](/images/blog/2021-july/hackathon.png) ## Hooks & Functions We made an announcement on the progress of functions, and even shipped a few preliminary components, try them out and give us feedback as we continue to move towards this next major milestone. -Read the latest [updates here](/blog/2021/07/30/supabase-functions-updates). +Read the latest [updates here](/blog/supabase-functions-updates). ![Hooks & Functions](/images/blog/2021-july/hooks.jpg) @@ -115,7 +115,7 @@ Get your hands on some [Supabase Swag](https://store.supabase.com/), hand packed - [@themarcusbattle](https://twitter.com/themarcusbattle/status/1419638564573360130?s=20) wrote a [guide](https://www.twilio.com/blog/send-sms-notifications-supabase-users-node-js-twilio-messaging) on sending sms notifications using node.js, Twilio, and Supabase (this is different to sms auth above) - [@dots_hq](https://twitter.com/dots_hq) launched a slack/discord [community management tool](https://dots.community/) built on Supabase - [@KennethCassel](https://twitter.com/KennethCassel) launched a [platform for building programming courses](https://www.slip.so/) using Supabase -- [@MobbinDesign](https://twitter.com/MobbinDesign) migrated their UI/UX library app to Supabase, currently [serving 200,000 users](/blog/2021/07/28/mobbin-supabase-200000-users) +- [@MobbinDesign](https://twitter.com/MobbinDesign) migrated their UI/UX library app to Supabase, currently [serving 200,000 users](/blog/mobbin-supabase-200000-users) - To the amazing users who are helping moderate our discord server, ya'll are amazing **Supabase GitHub Star Growth** diff --git a/apps/www/_blog/2021-09-10-supabase-beta-august-2021.mdx b/apps/www/_blog/2021-09-10-supabase-beta-august-2021.mdx index 0ee022965e3..3db87aee69d 100644 --- a/apps/www/_blog/2021-09-10-supabase-beta-august-2021.mdx +++ b/apps/www/_blog/2021-09-10-supabase-beta-august-2021.mdx @@ -103,7 +103,7 @@ This video by [@\_dijonmusters](https://twitter.com/_dijonmusters) demystifies i ### We had a community Hackathon -We held a one-week async Hackathon. Check out [all the winners](/blog/2021/08/09/hackathon-winners) - it was truly impressive what people were able to build in just 7 days. +We held a one-week async Hackathon. Check out [all the winners](/blog/hackathon-winners) - it was truly impressive what people were able to build in just 7 days. ![We had a community Hackathon](/images/blog/2021-august/hackathon.png) diff --git a/apps/www/_blog/2021-09-28-supabase-hacktoberfest-hackathon-2021.mdx b/apps/www/_blog/2021-09-28-supabase-hacktoberfest-hackathon-2021.mdx index 0fc25d86734..0646e228508 100644 --- a/apps/www/_blog/2021-09-28-supabase-hacktoberfest-hackathon-2021.mdx +++ b/apps/www/_blog/2021-09-28-supabase-hacktoberfest-hackathon-2021.mdx @@ -16,7 +16,7 @@ toc_depth: 3 # Supabase Hacktoberfest Hackathon 2021 -We were absolutely blown away by [all the amazing projects](/blog/2021/08/09/hackathon-winners) you built during our [first Supabase Hackathon](/blog/2021/07/30/1-the-supabase-hackathon), that we were looking for an excuse to run our next virtual open-source hackathon, and we found it in the upcoming [Hacktoberfest](https://hacktoberfest.digitalocean.com/). +We were absolutely blown away by [all the amazing projects](/blog/hackathon-winners) you built during our [first Supabase Hackathon](/blog/1-the-supabase-hackathon), that we were looking for an excuse to run our next virtual open-source hackathon, and we found it in the upcoming [Hacktoberfest](https://hacktoberfest.digitalocean.com/). ## Here's the plan @@ -42,10 +42,7 @@ We were absolutely blown away by [all the amazing projects](/blog/2021/08/09/hac Who else deserves the Gold Supabase Tee? 👀{' '} https://t.co/XPWw02kZad

- — Supabase (@supabase){' '} - - September 22, 2021 - + — Supabase (@supabase) September 22, 2021 {' '} ### Prize categories @@ -98,10 +95,7 @@ We'll be contacting and announcing winners [on Twitter](https://twitter.com/supa @supabase hackathon! 🥳{' '} https://t.co/rm5HBuju73

- — Josh Cawthorne (@cawthornejosh){' '} - - August 10, 2021 - + — Josh Cawthorne (@cawthornejosh) August 10, 2021 {' '} ### Rules @@ -133,12 +127,12 @@ Join our Discord: [discord.gg/bnncdqgBSS](https://discord.gg/bnncdqgBSS) Here's a collection of resources that will help you get started building with Supabase: -- Need some inspiration? [See what folks built last time](/blog/2021/08/09/hackathon-winners)! +- Need some inspiration? [See what folks built last time](/blog/hackathon-winners)! - [Examples and Resources](/docs/guides/examples) - [Supabase Crash Course](https://www.youtube.com/watch?v=7uKQBl9uZ00) [video] - [Flutter Quickstart Guide](/docs/guides/with-flutter) - [Nextjs Quickstart Guide](/docs/guides/with-nextjs) -- [Using Supabase inside Replit](/blog/2021/03/11/using-supabase-replit) +- [Using Supabase inside Replit](/blog/using-supabase-replit) - [Full Stack Development with Next.js and Supabase – The Complete Guide](https://www.freecodecamp.org/news/the-complete-guide-to-full-stack-development-with-supabas/) - [Auth Deep Dive - Learn everything there is to know about Supabase Auth](/docs/learn/auth-deep-dive/auth-deep-dive-jwts) [videos] - [Send SMS notifications using Twilio](https://www.twilio.com/blog/send-sms-notifications-supabase-users-node-js-twilio-messaging) diff --git a/apps/www/_blog/2021-10-04-supabase-beta-sept-2021.mdx b/apps/www/_blog/2021-10-04-supabase-beta-sept-2021.mdx index 52ea16856a4..19e678e0219 100644 --- a/apps/www/_blog/2021-10-04-supabase-beta-sept-2021.mdx +++ b/apps/www/_blog/2021-10-04-supabase-beta-sept-2021.mdx @@ -120,7 +120,7 @@ We're Hiring [SREs](https://about.supabase.com/careers/sre). We're fully remote ## Coming Next -We're warming up for another Launch Week! Last time was "[Launch Week II: the SQL](/blog/2021/07/22/supabase-launch-week-sql)". We're going to need another month to come up with a good pun again, so we'll aim for November. +We're warming up for another Launch Week! Last time was "[Launch Week II: the SQL](/blog/supabase-launch-week-sql)". We're going to need another month to come up with a good pun again, so we'll aim for November. ## Get started diff --git a/apps/www/_blog/2021-10-14-hacktoberfest-hackathon-winners-2021.mdx b/apps/www/_blog/2021-10-14-hacktoberfest-hackathon-winners-2021.mdx index 7b05bded6e1..248613611a9 100644 --- a/apps/www/_blog/2021-10-14-hacktoberfest-hackathon-winners-2021.mdx +++ b/apps/www/_blog/2021-10-14-hacktoberfest-hackathon-winners-2021.mdx @@ -148,7 +148,7 @@ If you're inspired to build, here's a collection of resources that will help you - [Supabase Crash Course](https://www.youtube.com/watch?v=7uKQBl9uZ00) [video] - [Flutter Quickstart Guide](/docs/guides/with-flutter) - [Nextjs Quickstart Guide](/docs/guides/with-nextjs) -- [Using Supabase inside Replit](/blog/2021/03/11/using-supabase-replit) +- [Using Supabase inside Replit](/blog/using-supabase-replit) - [Full Stack Development with Next.js and Supabase – The Complete Guide](https://www.freecodecamp.org/news/the-complete-guide-to-full-stack-development-with-supabas/) - [Auth Deep Dive - Learn everything there is to know about Supabase Auth](/docs/learn/auth-deep-dive/auth-deep-dive-jwts) [videos] - [Send SMS notifications using Twilio](https://www.twilio.com/blog/send-sms-notifications-supabase-users-node-js-twilio-messaging) diff --git a/apps/www/_blog/2021-10-28-supabase-series-a.mdx b/apps/www/_blog/2021-10-28-supabase-series-a.mdx index 347fed39425..4a5e9a67f48 100644 --- a/apps/www/_blog/2021-10-28-supabase-series-a.mdx +++ b/apps/www/_blog/2021-10-28-supabase-series-a.mdx @@ -29,8 +29,8 @@ because we don't add telemetry. Active databases are growing 35% per month. As of September, over 40,000 developers have signed up to Supabase from some of the world's leading companies. Because of the versatility of Postgres, they're building everything from -[counter-fraud systems for Fintech](/blog/2020/12/02/case-study-xendit) to -[digital platforms powering 200,000 users](/blog/2021/07/28/mobbin-supabase-200000-users). +[counter-fraud systems for Fintech](/blog/case-study-xendit) to +[digital platforms powering 200,000 users](/blog/mobbin-supabase-200000-users). >'ID')::bigint, + ($1->>'ID')::bigint, ($1->>'Email')::text ); @@ -84,18 +83,15 @@ Content-Type: application/json [Read more](https://postgrest.org/en/v9.0/api.html#s-proc-single-unnamed). - ## PostgreSQL 14 compatibility -If you've ever done your own custom `auth` functions using PostgREST [HTTP Context](https://postgrest.org/en/v8.0/api.html#accessing-request-headers-cookies-and-jwt-claims), +If you've ever done your own custom `auth` functions using PostgREST [HTTP Context](https://postgrest.org/en/v8.0/api.html#accessing-request-headers-cookies-and-jwt-claims), note that a breaking change was necessary for PostgreSQL 14 Compatibility. You'll need to update them: - -| `From` | `To` | -| --- | --- | +| `From` | `To` | +| --------------------------------------------------------- | -------------------------------------------------------------------- | | `current_setting('request.jwt.claim.custom-claim', true)` | `current_setting('request.jwt.claims', true)::json->>'custom-claim'` | -| `current_setting('request.header.custom-header', true)` | `current_setting('request.headers', true)::json->>'custom-header'` | - +| `current_setting('request.header.custom-header', true)` | `current_setting('request.headers', true)::json->>'custom-header'` | If you only use Supabase default `auth` functions(`auth.email()`, `auth.uid()`, `auth.role()`), then no action is required because we have updated the functions to handle these changes transparently. @@ -103,18 +99,17 @@ If you only use Supabase default `auth` functions(`auth.email()`, `auth.uid()`, ## Release notes -There are a lot more improvements released in PostgREST 9, including [support for Partitioned Tables](https://postgrest.org/en/v9.0/releases/v9.0.0.html#partitioned-tables), +There are a lot more improvements released in PostgREST 9, including [support for Partitioned Tables](https://postgrest.org/en/v9.0/releases/v9.0.0.html#partitioned-tables), [improved doc](https://postgrest.org/en/v9.0/releases/v9.0.0.html#documentation-improvements), and [bug fixes](https://postgrest.org/en/v9.0/releases/v9.0.0.html#bug-fixes). You can see the full updates on the [PostgREST 9 release notes](https://postgrest.org/en/v9.0/releases/v9.0.0.html). ## More Postgres resources -- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql) -- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls) -- [Postgres Views](https://supabase.com/blog/2020/11/18/postgresql-views) -- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/2022/03/08/audit) -- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/2021/02/27/cracking-postgres-interview) -- [What are PostgreSQL Templates?](https://supabase.com/blog/2020/07/09/postgresql-templates) -- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) - +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Views](https://supabase.com/blog/postgresql-views) +- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/audit) +- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/cracking-postgres-interview) +- [What are PostgreSQL Templates?](https://supabase.com/blog/postgresql-templates) +- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/realtime-row-level-security-in-postgresql) diff --git a/apps/www/_blog/2021-11-28-whats-new-in-postgres-14.mdx b/apps/www/_blog/2021-11-28-whats-new-in-postgres-14.mdx index 40f75c79b2e..8f6b15351da 100644 --- a/apps/www/_blog/2021-11-28-whats-new-in-postgres-14.mdx +++ b/apps/www/_blog/2021-11-28-whats-new-in-postgres-14.mdx @@ -167,10 +167,10 @@ Explore the [Supabase dashboard now](https://app.supabase.com) and get started w ## More Postgres resources -- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql) -- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls) -- [Postgres Views](https://supabase.com/blog/2020/11/18/postgresql-views) -- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/2022/03/08/audit) -- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/2021/02/27/cracking-postgres-interview) -- [What are PostgreSQL Templates?](https://supabase.com/blog/2020/07/09/postgresql-templates) -- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Views](https://supabase.com/blog/postgresql-views) +- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/audit) +- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/cracking-postgres-interview) +- [What are PostgreSQL Templates?](https://supabase.com/blog/postgresql-templates) +- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/realtime-row-level-security-in-postgresql) diff --git a/apps/www/_blog/2021-11-29-community-day.mdx b/apps/www/_blog/2021-11-29-community-day.mdx index 46706b0ac39..5f5bd3fd4e5 100644 --- a/apps/www/_blog/2021-11-29-community-day.mdx +++ b/apps/www/_blog/2021-11-29-community-day.mdx @@ -16,7 +16,7 @@ toc_depth: 2 Supabase combines existing open-source tools with our own open-source contributions to provide a delightful experience for developers. As part of this goal we hope to build a community of communities, bringing together developers from many different tools, as well as new developers looking to get involved with open source. -To kick off launch week we want to showcase some of the communities that make up the Supabase community, highlight some of their updates, and celebrate everyone who contributes their time to the Supabase mission. +To kick off launch week we want to showcase some of the communities that make up the Supabase community, highlight some of their updates, and celebrate everyone who contributes their time to the Supabase mission. So let's get cracking, we've got a lot to cover. 🚀 @@ -47,13 +47,13 @@ Among the many open-source relational databases available, [PostgreSQL](/docs/gu It was named [DBMS of the year in 2020](https://db-engines.com/en/blog_post/85) by DBEngines, and with every release of PostgreSQL new features are available making it easy for developers and administrators to run their apps. -[Gurjeet](https://twitter.com/0xGurjeet), one of our Postgres engineers, has written up a [blogpost](/blog/2021/11/28/whats-new-in-postgres-14) with the most important updates the every dev should know. +[Gurjeet](https://twitter.com/0xGurjeet), one of our Postgres engineers, has written up a [blogpost](/blog/whats-new-in-postgres-14) with the most important updates the every dev should know. ## PostgREST 9 updates ![PostgREST-9](/images/blog/launch-week-three/community-day/postgrest-9-og.png) -We've had a lot of feedback on our Postgres APIs, and we've been hard at work with the [PostgREST team](https://github.com/orgs/PostgREST/people) to improve an already-incredible product. +We've had a lot of feedback on our Postgres APIs, and we've been hard at work with the [PostgREST team](https://github.com/orgs/PostgREST/people) to improve an already-incredible product. Some new features include @@ -63,7 +63,7 @@ Some new features include From tomorrow, every Supabase project will be on PostgREST 9 (including existing projects). -Read about some of the new features in PostgREST 9 [here](/blog/2021/11/28/postgrest-9). +Read about some of the new features in PostgREST 9 [here](/blog/postgrest-9). ## New community partner: GitGuardian @@ -81,7 +81,7 @@ The beauty of building in the open is that the community can get involved in add ## SupaSquad updates -The [SupaSquad](/docs/handbook/supasquad) is an official Supabase advocate program where community members help build and manage the Supabase community. +The [SupaSquad](/docs/handbook/supasquad) is an official Supabase advocate program where community members help build and manage the Supabase community. Among many other awesome things, the SupaSquad has been absolutely on fire building [client libraries](/docs/reference/javascript/installing) for all flavors of backends and environments. @@ -97,10 +97,10 @@ Among many other awesome things, the SupaSquad has been absolutely on fire build ## New tutorials and integration guides -Our own [Jon Meyers](https://twitter.com/_dijonmusters) and the broader community have been busy creating awesome tutorials and integration guides to help everyone build even more amazing things with Supabase: +Our own [Jon Meyers](https://twitter.com/_dijonmusters) and the broader community have been busy creating awesome tutorials and integration guides to help everyone build even more amazing things with Supabase: -- Jon has added official guides for working with [Auth0](/docs/guides/integrations/auth0) and [Vercel](/docs/guides/integrations/vercel), -- [Jonny Summers-Muir](https://twitter.com/JSummersMuir) has been busy paving the way for [Prisma](/docs/guides/integrations/prisma), and +- Jon has added official guides for working with [Auth0](/docs/guides/integrations/auth0) and [Vercel](/docs/guides/integrations/vercel), +- [Jonny Summers-Muir](https://twitter.com/JSummersMuir) has been busy paving the way for [Prisma](/docs/guides/integrations/prisma), and - [Aman Mittal](https://github.com/amandeepmittal) has hooked us up with a guide for [Draftbit](/docs/guides/integrations/draftbit)! And below are some of the community one's we've come across recently. If you've created one yourself, please notify us by tagging us in a Tweet! @@ -113,7 +113,7 @@ And below are some of the community one's we've come across recently. If you've ## Developer stories -Anytime we scroll through [madewithsupabase.com](https://www.madewithsupabase.com/) we're absolutely blown away by the awesome things y'all are building with Supabase. +Anytime we scroll through [madewithsupabase.com](https://www.madewithsupabase.com/) we're absolutely blown away by the awesome things y'all are building with Supabase. So we reached out to some of our users, requesting a short video to learn more and we were overwhelmed with your gracious submissions. We've started a user stories playlist and we are so excited to see many more of these stories in the future. 💚 diff --git a/apps/www/_blog/2021-12-01-realtime-row-level-security-in-postgresql.mdx b/apps/www/_blog/2021-12-01-realtime-row-level-security-in-postgresql.mdx index d51507e29c8..6fd02352523 100644 --- a/apps/www/_blog/2021-12-01-realtime-row-level-security-in-postgresql.mdx +++ b/apps/www/_blog/2021-12-01-realtime-row-level-security-in-postgresql.mdx @@ -1,6 +1,6 @@ --- -title: "Realtime Postgres RLS now available on Supabase" -description: "Realtime database changes are now broadcast to authenticated users, respecting the same PostgreSQL policies that you use for Row Level Security." +title: 'Realtime Postgres RLS now available on Supabase' +description: 'Realtime database changes are now broadcast to authenticated users, respecting the same PostgreSQL policies that you use for Row Level Security.' author: oli_rice author_url: https://github.com/olirice author_image_url: https://github.com/olirice.png @@ -22,7 +22,7 @@ Today, we're announcing security improvements to Realtime, where database change ## Demo - ## Overview -Since the first commit of Realtime server back in [September 2019](https://github.com/supabase/realtime/commit/175f649784147af80acfc9ff5be9d160285c76ea), -we've worked hard to improve its usability and scalability. +Since the first commit of Realtime server back in [September 2019](https://github.com/supabase/realtime/commit/175f649784147af80acfc9ff5be9d160285c76ea), +we've worked hard to improve its usability and scalability. -Until now, Realtime did not adhere to RLS policies and instead broadcast all database changes to all clients. +Until now, Realtime did not adhere to RLS policies and instead broadcast all database changes to all clients. The unsafe nature of this behavior is the reason why Realtime has been an opt-in feature, and a key reason why we are still in Beta. -As more developers rely on Realtime to receive and send database changes in their apps and services, +As more developers rely on Realtime to receive and send database changes in their apps and services, security has become a primary concern for us and others in the community who wish to build secure systems with Realtime. -Supabase projects have supported Row Level Security (RLS) for API authorization since our [Auth launch](https://supabase.io/blog/2020/08/05/supabase-auth). +Supabase projects have supported Row Level Security (RLS) for API authorization since our [Auth launch](https://supabase.io/blog/supabase-auth). In that time, it has quickly become the recommended way to implement authorization. As we were evaluating possible solutions to improve Realtime security, we looked to our Auth implementation as inspiration for a cohesive security system. @@ -54,14 +53,14 @@ Before diving deeper into our Realtime RLS implementation, let's briefly cover h ## Row Level Security Primer -When you need to control access to individual rows of data, PostgreSQL has you covered with [Row Level Security (RLS) policies](https://www.postgresql.org/docs/current/ddl-rowsecurity.html). +When you need to control access to individual rows of data, PostgreSQL has you covered with [Row Level Security (RLS) policies](https://www.postgresql.org/docs/current/ddl-rowsecurity.html). An RLS policy is a snippet of SQL filtering which users have the authority to create/read/update/delete rows in a table. For example, the following policy would allow users to select their own rows in a todos table: ```sql hideCopy -create policy todo_select_policy - on todos for select +create policy todo_select_policy + on todos for select using ( auth.uid() = user_id ); ``` @@ -85,14 +84,14 @@ Our Realtime server receives and decodes binary changes from PostgreSQL logical The challenge, when applying row level security to the replication stream is that the visibility of a row may be different for each user subscribed to a database table. -We recognized that to fully secure Realtime in accordance with row level security, a row's visibility must be checked separately for each user on every change. +We recognized that to fully secure Realtime in accordance with row level security, a row's visibility must be checked separately for each user on every change. However, this quickly becomes a performance bottleneck when the number of changes, or number of subscribers, is large. Since we can't control the number of subscribers or the number of changed records, we instead focused on making the security check for each user on every change as fast as possible. ### Implementation Overview -With these challenges in mind, we upstreamed the security responsibility to the database. Write Ahead Log Realtime Unified Security (WALRUS) exposes a PostgreSQL +With these challenges in mind, we upstreamed the security responsibility to the database. Write Ahead Log Realtime Unified Security (WALRUS) exposes a PostgreSQL function that Realtime server invokes with database changes. ### WALRUS Implementation @@ -100,11 +99,11 @@ function that Realtime server invokes with database changes. [WALRUS](https://github.com/supabase/walrus) inspects each record in the replication change to: - Identify the source table (e.g. `public.notes`). -- Identify the change's action (INSERT/UPDATE/DELETE/TRUNCATE*). +- Identify the change's action (INSERT/UPDATE/DELETE/TRUNCATE\*). - Query the `subscription` table to determine the connected users who are actively subscribed to the source table. The `subscription` table is kept up to date by the Realtime server and tracks all connected users and the tables they are currently subscribed to. - For each subscriber: - - Assume the identity of the subscriber. - - Query the source table to see if the record is visible to that subscriber. + - Assume the identity of the subscriber. + - Query the source table to see if the record is visible to that subscriber. - Report the list of subscribers who are authorized to view the record back to Realtime server. *Realtime server does not broadcast TRUNCATE changes @@ -119,7 +118,7 @@ For example: select exists(select 1 from some_table where id = 806); ``` -When more than one subscriber exists, the query is wrapped in a [prepared statement](https://www.postgresql.org/docs/13/sql-prepare.html) to remove the cost of the PostgreSQL +When more than one subscriber exists, the query is wrapped in a [prepared statement](https://www.postgresql.org/docs/13/sql-prepare.html) to remove the cost of the PostgreSQL query planner on subsequent calls. The query planner time is frequently 2-3x execution time for simple queries, so this immediately multiplies throughput in the most common cases! ```sql hideCopy @@ -129,21 +128,21 @@ query planner on subsequent calls. The query planner time is frequently 2-3x exe **Colocation** -Colocating the security engine with subscriber data inside PostgreSQL allows us to avoid significant overhead when applying RLS policies. -Namely, network round-trip latency and I/O bottlenecks are removed while connection overhead is reduced relative to testing each record's visibility by polling the database from a separate process. +Colocating the security engine with subscriber data inside PostgreSQL allows us to avoid significant overhead when applying RLS policies. +Namely, network round-trip latency and I/O bottlenecks are removed while connection overhead is reduced relative to testing each record's visibility by polling the database from a separate process. Instead, the SQL function only consumes a single connection and performs no network I/O. ### Performance -The throughput performance of the database server is best measured in terms of record processing time. As the number of subscribers to a table grows, the time required to process each record, +The throughput performance of the database server is best measured in terms of record processing time. As the number of subscribers to a table grows, the time required to process each record, and the resultant processing time also grows. ![supabase-realtime-processing-per-subscription](/images/blog/launch-week-three/realtime-row-level-security-in-postgresql/supabase-realtime-processing-per-subscription.png)
-| Subscribers | 1 | 5 | 10 | 25 | 50 | 100 | 250 | 500 | 1,000 | 2,000 | 5,000 | 10,000 | -|------------------------|------|------|------|------|------|------|------|------|-------|-------|-------|--------| +| Subscribers | 1 | 5 | 10 | 25 | 50 | 100 | 250 | 500 | 1,000 | 2,000 | 5,000 | 10,000 | +| -------------------- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ------ | | Processing Time (ms) | 11.2 | 12.5 | 14.2 | 16.7 | 18.8 | 24.5 | 27.8 | 29.1 | 64.7 | 75.5 | 158.4 | 303.8 |
@@ -162,7 +161,7 @@ The fastest security policy is one that doesn't exist :) If you do need row level security, make sure that your policies are fast. -Remember that your policy is executed *each* time a query touches the table that the policy is applied to. If your policy is slow, all access to that table will be slow. +Remember that your policy is executed _each_ time a query touches the table that the policy is applied to. If your policy is slow, all access to that table will be slow. Avoid joins within RLS policies when you can, and make sure all filter conditions use an index. Additionally, keep in mind that if you use joins within an RLS policy, any RLS policies on the tables you're joining to will also be executed in turn, adding to the overall overhead. @@ -175,17 +174,17 @@ Use single column primary keys with a fixed field size (integer, uuid, etc.) ove ## Next Steps -Realtime RLS is available today on all existing and new Supabase projects. To get started, upgrade your Supabase JavaScript client to version v1.23.0 +Realtime RLS is available today on all existing and new Supabase projects. To get started, upgrade your Supabase JavaScript client to version v1.23.0 and launch your new PostgreSQL database today: [database.new](https://database.new) ## More Postgres resources -- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql) -- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls) -- [Postgres Views](https://supabase.com/blog/2020/11/18/postgresql-views) -- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/2022/03/08/audit) -- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/2021/02/27/cracking-postgres-interview) -- [What are PostgreSQL Templates?](https://supabase.com/blog/2020/07/09/postgresql-templates) +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Views](https://supabase.com/blog/postgresql-views) +- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/audit) +- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/cracking-postgres-interview) +- [What are PostgreSQL Templates?](https://supabase.com/blog/postgresql-templates) ## Credits diff --git a/apps/www/_blog/2021-12-03-launch-week-three-friday-five-more-things.mdx b/apps/www/_blog/2021-12-03-launch-week-three-friday-five-more-things.mdx index 3df2ccbfa70..30f5eda1b31 100644 --- a/apps/www/_blog/2021-12-03-launch-week-three-friday-five-more-things.mdx +++ b/apps/www/_blog/2021-12-03-launch-week-three-friday-five-more-things.mdx @@ -46,11 +46,11 @@ Usually, negotiating a new SSL connection requires at least 3 round trips betwee ### HTTP/3 -HTTP/3 or HTTP over QUIC is the successor to HTTP/2. This protocol is based on UDP instead of TCP. HTTP/3 is faster than HTTP/2 (conditions apply), is more secure, future proof. +HTTP/3 or HTTP over QUIC is the successor to HTTP/2. This protocol is based on UDP instead of TCP. HTTP/3 is faster than HTTP/2 (conditions apply), is more secure, future proof. ### Brotli -Brotli is a new compression algorithm that performs better than gzip. All text based responses from Supabase (including the massive amount of Javascript required to render websites these days) are compressed with Brotli. +Brotli is a new compression algorithm that performs better than gzip. All text based responses from Supabase (including the massive amount of Javascript required to render websites these days) are compressed with Brotli. We can also ensure a higher degree of reliability of your Supabase APIs with a CDN by defending against Denial of Service Attacks and bots. @@ -58,13 +58,13 @@ We can also ensure a higher degree of reliability of your Supabase APIs with a C ## (Yet another) Supabase Functions update -It's been four months since our [last Functions update](https://supabase.com/blog/2021/07/30/supabase-functions-updates) and (as it's becoming a tradition at the end of Launch Week) we have another update for you. +It's been four months since our [last Functions update](https://supabase.com/blog/supabase-functions-updates) and (as it's becoming a tradition at the end of Launch Week) we have another update for you. -Unfortunately we're still not in a position to release anything. There are a few reasons for this - mainly it's because we've been hyper focused on a couple major milestones: +Unfortunately we're still not in a position to release anything. There are a few reasons for this - mainly it's because we've been hyper focused on a couple major milestones: -Since our last Functions update we've [raised our Series A,](https://supabase.com/blog/2021/10/28/supabase-series-a) [acquired a company](https://supabase.com/blog/2021/12/02/supabase-acquires-logflare), built [Realtime Row Level Security](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql), [open sourced the dashboard](https://supabase.com/blog/2021/11/30/supabase-studio), built a GraphQL extension for PostgreSQL, and added four Auth providers, all while growing the community, supporting open-source tools, and delivering a few other things that the community felt was important. +Since our last Functions update we've [raised our Series A,](https://supabase.com/blog/supabase-series-a) [acquired a company](https://supabase.com/blog/supabase-acquires-logflare), built [Realtime Row Level Security](https://supabase.com/blog/realtime-row-level-security-in-postgresql), [open sourced the dashboard](https://supabase.com/blog/supabase-studio), built a GraphQL extension for PostgreSQL, and added four Auth providers, all while growing the community, supporting open-source tools, and delivering a few other things that the community felt was important. -That being said, we *have* been working on Functions, iterating through different designs to figure out what's going to have the biggest impact for Supabase developers. So today we are going to open up our ideas and designs through our [RFC repo](https://github.com/supabase/rfcs) (request for comments). +That being said, we _have_ been working on Functions, iterating through different designs to figure out what's going to have the biggest impact for Supabase developers. So today we are going to open up our ideas and designs through our [RFC repo](https://github.com/supabase/rfcs) (request for comments). There are two important RFCs related to functions: @@ -91,14 +91,14 @@ You will learn how to build a subscription-based billing project from scratch, a While not everyone will be celebrating the holidays this December, we can all be united in celebrating open-source software, and to do so we're kicking off the "Holiday Hackdays" (loosely inspired by the [12 Pubs of Christmas](https://www.irelandbeforeyoudie.com/12-pubs-of-christmas-rules-tips-everything-you-need-for-a-great-night/) only a bit healthier). -Starting today at 7am PT we'll be hacking together for the next 10 days until 23:59pm PT on Sunday December 12th. And because we've launched [row-level security for our Realtime API](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) earlier this week, we'd love for you to use it in your Hackathon project. May it be to build a [Santa Tracker](https://www.freecodecamp.org/news/create-your-own-santa-tracker-with-gatsby-and-react-leaflet/) or that secure family chat app to bring all your relatives together for the festive season, be creative and most importantly have fun 🥳 +Starting today at 7am PT we'll be hacking together for the next 10 days until 23:59pm PT on Sunday December 12th. And because we've launched [row-level security for our Realtime API](https://supabase.com/blog/realtime-row-level-security-in-postgresql) earlier this week, we'd love for you to use it in your Hackathon project. May it be to build a [Santa Tracker](https://www.freecodecamp.org/news/create-your-own-santa-tracker-with-gatsby-and-react-leaflet/) or that secure family chat app to bring all your relatives together for the festive season, be creative and most importantly have fun 🥳 -[As always](https://supabase.com/blog/2021/10/14/hacktoberfest-hackathon-winners-2021#the-prizes), we'll have some extremely limited edition swag to give away that can only be won by participating in the Hackathon! +[As always](https://supabase.com/blog/hacktoberfest-hackathon-winners-2021#the-prizes), we'll have some extremely limited edition swag to give away that can only be won by participating in the Hackathon! -The Supabase team will be participating as well, for example [Jon](https://twitter.com/_dijonmusters) and Thor, inspired by [Egghead's "Holiday Course Release Extravaganza"](https://egghead.io/20-days), will be building an Advent Calendar for all the [awesome community content](https://supabase.com/blog/2021/11/29/community-day#new-tutorials-and-integration-guides) you've been creating. Get ready for a cool open-source project which will be using a lot of the hottest Supabase features! To make sure you don't miss this one, follow us on [Twitter](https://twitter.com/supabase) and subscribe to our [YouTube channel](https://www.youtube.com/supabase). We'll see you there. +The Supabase team will be participating as well, for example [Jon](https://twitter.com/_dijonmusters) and Thor, inspired by [Egghead's "Holiday Course Release Extravaganza"](https://egghead.io/20-days), will be building an Advent Calendar for all the [awesome community content](https://supabase.com/blog/community-day#new-tutorials-and-integration-guides) you've been creating. Get ready for a cool open-source project which will be using a lot of the hottest Supabase features! To make sure you don't miss this one, follow us on [Twitter](https://twitter.com/supabase) and subscribe to our [YouTube channel](https://www.youtube.com/supabase). We'll see you there. -Find the full hackathon details and rules in the [blog post](https://supabase.com/blog/2021/12/03/supabase-holiday-hackdays-hackathon). +Find the full hackathon details and rules in the [blog post](https://supabase.com/blog/supabase-holiday-hackdays-hackathon). That's it, that's another Launch Week wrapped. See you at the next one, or in the meantime on Discord, and until then, happy hacking! -![devs.png](/images/blog/launch-week-three/five-more-things/devs.png) \ No newline at end of file +![devs.png](/images/blog/launch-week-three/five-more-things/devs.png) diff --git a/apps/www/_blog/2021-12-03-supabase-holiday-hackdays-hackathon.mdx b/apps/www/_blog/2021-12-03-supabase-holiday-hackdays-hackathon.mdx index fb8990ba27b..89d4339c0f7 100644 --- a/apps/www/_blog/2021-12-03-supabase-holiday-hackdays-hackathon.mdx +++ b/apps/www/_blog/2021-12-03-supabase-holiday-hackdays-hackathon.mdx @@ -16,11 +16,11 @@ toc_depth: 3 While not everyone will be celebrating the holidays this December, we can all be united in celebrating open-source software, and to do so we're kicking off the "Holiday Hackdays" (loosely inspired by the [12 Pubs of Christmas](https://www.irelandbeforeyoudie.com/12-pubs-of-christmas-rules-tips-everything-you-need-for-a-great-night/), only a bit healthier). -Starting today at 7am PT we'll be hacking together for the next 10 days until 23:59pm PT on Sunday December 12th. And because we've launched [row-level security for our Realtime API](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) earlier this week, we'd love for you to use it in your Hackathon project. May it be to build a [Santa Tracker](https://www.freecodecamp.org/news/create-your-own-santa-tracker-with-gatsby-and-react-leaflet/) or that secure family chat app to bring all your relatives together for the festive season, be creative and most importantly have fun 🥳 +Starting today at 7am PT we'll be hacking together for the next 10 days until 23:59pm PT on Sunday December 12th. And because we've launched [row-level security for our Realtime API](https://supabase.com/blog/realtime-row-level-security-in-postgresql) earlier this week, we'd love for you to use it in your Hackathon project. May it be to build a [Santa Tracker](https://www.freecodecamp.org/news/create-your-own-santa-tracker-with-gatsby-and-react-leaflet/) or that secure family chat app to bring all your relatives together for the festive season, be creative and most importantly have fun 🥳 -[As always](https://supabase.com/blog/2021/10/14/hacktoberfest-hackathon-winners-2021#the-prizes), we'll have some extremely limited edition swag to give away that can only be won by participating in the Hackathon! +[As always](https://supabase.com/blog/hacktoberfest-hackathon-winners-2021#the-prizes), we'll have some extremely limited edition swag to give away that can only be won by participating in the Hackathon! -The Supabase team will be participating as well, for example [Jon](https://twitter.com/_dijonmusters) and I, inspired by [Egghead's "Holiday Course Release Extravaganza"](https://egghead.io/20-days), will be building an Advent Calendar for all the [awesome community content](https://supabase.com/blog/2021/11/29/community-day#new-tutorials-and-integration-guides) you've been creating. Get ready for a cool open-source project which will be using a lot of the hottest Supabase features! To make sure you don't miss this one, follow us on [Twitter](https://twitter.com/supabase) and subscribe to our [YouTube channel](https://www.youtube.com/supabase). We'll see you there. +The Supabase team will be participating as well, for example [Jon](https://twitter.com/_dijonmusters) and I, inspired by [Egghead's "Holiday Course Release Extravaganza"](https://egghead.io/20-days), will be building an Advent Calendar for all the [awesome community content](https://supabase.com/blog/community-day#new-tutorials-and-integration-guides) you've been creating. Get ready for a cool open-source project which will be using a lot of the hottest Supabase features! To make sure you don't miss this one, follow us on [Twitter](https://twitter.com/supabase) and subscribe to our [YouTube channel](https://www.youtube.com/supabase). We'll see you there. ## Details @@ -32,14 +32,21 @@ The Supabase team will be participating as well, for example [Jon](https://twitt - Judges Deliberate (Monday) - We'll be contacting and announcing the winners [on Twitter](https://twitter.com/supabase) throughout the week after. - + ### Prize categories There are multiple chances to win, there will be prizes for: - Most impressive usage of the Realtime API features -- Most fun / holiday themed project +- Most fun / holiday themed project There will be a winner and a runner-up prize for each category. @@ -81,10 +88,7 @@ We'll be contacting and announcing winners [on Twitter](https://twitter.com/supa @supabase hackathon! 🥳{' '} https://t.co/rm5HBuju73

- — Josh Cawthorne (@cawthornejosh){' '} - - August 10, 2021 - + — Josh Cawthorne (@cawthornejosh) August 10, 2021 {' '} ### Rules @@ -116,12 +120,12 @@ Join our Discord: [discord.gg/bnncdqgBSS](https://discord.gg/bnncdqgBSS) Here's a collection of resources that will help you get started building with Supabase: -- Need some inspiration? [See what folks built last time](/blog/2021/08/09/hackathon-winners)! +- Need some inspiration? [See what folks built last time](/blog/hackathon-winners)! - [Examples and Resources](/docs/guides/examples) - [Supabase Crash Course](https://www.youtube.com/watch?v=7uKQBl9uZ00) [video] - [Flutter Quickstart Guide](/docs/guides/with-flutter) - [Nextjs Quickstart Guide](/docs/guides/with-nextjs) -- [Using Supabase inside Replit](/blog/2021/03/11/using-supabase-replit) +- [Using Supabase inside Replit](/blog/using-supabase-replit) - [Full Stack Development with Next.js and Supabase – The Complete Guide](https://www.freecodecamp.org/news/the-complete-guide-to-full-stack-development-with-supabas/) - [Auth Deep Dive - Learn everything there is to know about Supabase Auth](/docs/learn/auth-deep-dive/auth-deep-dive-jwts) [videos] - [Send SMS notifications using Twilio](https://www.twilio.com/blog/send-sms-notifications-supabase-users-node-js-twilio-messaging) diff --git a/apps/www/_blog/2021-12-15-beta-november-2021-launch-week-recap.mdx b/apps/www/_blog/2021-12-15-beta-november-2021-launch-week-recap.mdx index 3815cede28a..708d30aeaf5 100644 --- a/apps/www/_blog/2021-12-15-beta-november-2021-launch-week-recap.mdx +++ b/apps/www/_blog/2021-12-15-beta-november-2021-launch-week-recap.mdx @@ -19,7 +19,7 @@ Here's all the awesome stuff that got shipped during Launch Week... ## Supabase Studio -We [open sourced the Dashboard](/blog/2021/11/30/supabase-studio) - it's now included in Self-Hosting, and the community are now able to contribute, +We [open sourced the Dashboard](/blog/supabase-studio) - it's now included in Self-Hosting, and the community are now able to contribute, which is going to help us move even faster! Expect many more updates to the dashboard over the coming weeks and months! [Read the code for yourself.](https://github.com/supabase/supabase/tree/master/studio) ![Supabase Studio](/images/blog/2021-nov/studio.jpg) @@ -27,20 +27,20 @@ which is going to help us move even faster! Expect many more updates to the dash ## We acquired Logflare We were early Logflare users, and found it to be one of the most impressive products we'd ever used. So impressive in fact, that we wanted to offer it's capabilities to our entire user base. -You'll now find fully searchable Supabase API and database logs within the dashboard, and we're also in the process of open sourcing the codebase. [Read more about the acquisition](/blog/2021/12/02/supabase-acquires-logflare). +You'll now find fully searchable Supabase API and database logs within the dashboard, and we're also in the process of open sourcing the codebase. [Read more about the acquisition](/blog/supabase-acquires-logflare). ![We acquired Logflare](/images/blog/2021-nov/logflare.png) ## Realtime Row Level Security -[Security rules now work for Realtime](/blog/2021/12/01/realtime-row-level-security-in-postgresql). +[Security rules now work for Realtime](/blog/realtime-row-level-security-in-postgresql). All of your row level security policies now work with the realtime API, so you can limit streams and subscriptions on a per user basis (or any configuration you want!). ![Realtime Row Level Security](/images/blog/2021-nov/realtime.png) ## GraphQL is coming to Supabase -We heard you! And built a Postgres extension for [querying your database with GraphQL](/blog/2021/12/03/pg-graphql). +We heard you! And built a Postgres extension for [querying your database with GraphQL](/blog/pg-graphql). This means that each GraphQL request is resolved by a single SQL statement and hits the theoretical minimum achievable network IO overhead of any GraphQL to SQL resolver. ![GraphQL is coming to Supabase](/images/blog/2021-nov/graphql.png) @@ -48,7 +48,7 @@ This means that each GraphQL request is resolved by a single SQL statement and h ## Supabase now runs on PostgreSQL 14 One of the most exciting things to happen in databases this year was the release of PG 14. -Which is now the default database used on our hosted platform. Read more here about [why we're so excited about it](/blog/2021/11/28/whats-new-in-postgres-14). +Which is now the default database used on our hosted platform. Read more here about [why we're so excited about it](/blog/whats-new-in-postgres-14). ![Supabase now runs on PostgreSQL 14](/images/blog/2021-nov/pg14.png) @@ -56,7 +56,7 @@ Which is now the default database used on our hosted platform. Read more here ab PostgREST is the tool we use to introspect your schema and make your database available over a RESTful API. We also sponsor and help maintain this amazing open source project. Version 9.0 was just released and has also been rolled out to all new and existing Supabase projects on our hosted platform. -[Check out the blog post](/blog/2021/11/28/postgrest-9) by Steve Chavez, the maintainer of PostgREST. +[Check out the blog post](/blog/postgrest-9) by Steve Chavez, the maintainer of PostgREST. ![PostgREST 9.0 ](/images/blog/2021-nov/postgrest9.png) @@ -70,13 +70,13 @@ It's honestly mind blowing how quickly you can get products out the door with th ## New Storage CDN -Serving your files in no time - Get eye wateringly fast load times for your media files. [Read all about the benefits](/blog/2021/12/03/launch-week-three-friday-five-more-things#supabase-cdn). +Serving your files in no time - Get eye wateringly fast load times for your media files. [Read all about the benefits](/blog/launch-week-three-friday-five-more-things#supabase-cdn). ![New Storage CDN](/images/blog/2021-nov/too_damn_high.png) ## How we Launch -We "open sourced" our launch methodology - Learn about how we plan, execute, and retrospect launch weeks internally. [Read the post](/blog/2021/11/26/supabase-how-we-launch). +We "open sourced" our launch methodology - Learn about how we plan, execute, and retrospect launch weeks internally. [Read the post](/blog/supabase-how-we-launch). supabase monthly growth ![How we Launch](/images/blog/2021-nov/supabase-universe.jpg) @@ -85,10 +85,10 @@ supabase monthly growth ### Highlights -- Community Day [blog](/blog/2021/11/29/community-day#new-tutorials-and-integration-guides) -- The SupaSquad has been busy [blog](/blog/2021/11/29/community-day#supasquad-updates) +- Community Day [blog](/blog/community-day#new-tutorials-and-integration-guides) +- The SupaSquad has been busy [blog](/blog/community-day#supasquad-updates) - 10 startups on what they're building with Supabase [video](https://www.youtube.com/watch?v=QAm1x7KaLq4&list=PL5S4mPUpp4OuzQN-a_FY3OZQuYo4NmXvb&t=3s) -- New official integration guides [blog](https://supabase.com/blog/2021/11/29/community-day#new-tutorials-and-integration-guides) +- New official integration guides [blog](https://supabase.com/blog/community-day#new-tutorials-and-integration-guides) - Add Supabase in Teta [video](https://www.youtube.com/watch?v=lt-Vebxk-Mk) - Auth flow with Remix and Supabase [video](https://www.youtube.com/watch?v=-KiH8feOHSc) - Discovering Supabase [video](https://www.youtube.com/watch?v=WToGeMIdoSY) diff --git a/apps/www/_blog/2021-12-17-holiday-hackdays-winners-2021.mdx b/apps/www/_blog/2021-12-17-holiday-hackdays-winners-2021.mdx index b770f4e4c8a..2f5af7e9a03 100644 --- a/apps/www/_blog/2021-12-17-holiday-hackdays-winners-2021.mdx +++ b/apps/www/_blog/2021-12-17-holiday-hackdays-winners-2021.mdx @@ -14,7 +14,7 @@ date: '2021-12-17' toc_depth: 2 --- -To cool down from [our latest launch week](/blog/2021/12/15/beta-november-2021-launch-week-recap) we (virtually) [sat down with y'all](https://youtu.be/TijBVcV4jXw) and started hacking, and once again we absolutely loved your hackathon submissions and are excited to send some extremely limited swag your way! +To cool down from [our latest launch week](/blog/beta-november-2021-launch-week-recap) we (virtually) [sat down with y'all](https://youtu.be/TijBVcV4jXw) and started hacking, and once again we absolutely loved your hackathon submissions and are excited to send some extremely limited swag your way! As always, it was challenging to pick the winners from all the great submissions! You can see all the amazing projects submitted on [madewithsupabase.com](https://www.madewithsupabase.com/holiday-hackdays). And now, without further ado, let's look at some of our favourites in more detail: @@ -88,9 +88,9 @@ This visually stunning website allows you to create a wishlist to share with you ### Runner Up -[card creator](https://github.com/maggie-j-liu/card-creator) - by [maggie-j-liu](https://github.com/maggie-j-liu), [Arash](https://github.com/arashnrim), [@eiilla11](https://twitter.com/eiilla11), and [@_pranavnt](https://twitter.com/_pranavnt) +[card creator](https://github.com/maggie-j-liu/card-creator) - by [maggie-j-liu](https://github.com/maggie-j-liu), [Arash](https://github.com/arashnrim), [@eiilla11](https://twitter.com/eiilla11), and [@\_pranavnt](https://twitter.com/_pranavnt) -This team of high school hackers just keeps knocking it out of the park again. In our [Hacktoberfest Hackathon](https://supabase.com/blog/2021/10/14/hacktoberfest-hackathon-winners-2021#most-spookyfun) they already made it onto the podium. This time around they built this stunning greeting card platform that lets you send well wishes to your friends around the globe in no time. We love it! +This team of high school hackers just keeps knocking it out of the park again. In our [Hacktoberfest Hackathon](https://supabase.com/blog/hacktoberfest-hackathon-winners-2021#most-spookyfun) they already made it onto the podium. This time around they built this stunning greeting card platform that lets you send well wishes to your friends around the globe in no time. We love it! [![card creator](https://madewithsupabase.com/api/resize?link=Card%20Creator-vs9hc-Screen%20Shot%202021-12-12%20at%2011.12.23%20PM.png&w=1000)](https://youtu.be/Yx4N2bONA44) diff --git a/apps/www/_blog/2022-01-20-supabase-beta-december-2021.mdx b/apps/www/_blog/2022-01-20-supabase-beta-december-2021.mdx index e7a6a33fc6c..c8255439139 100644 --- a/apps/www/_blog/2022-01-20-supabase-beta-december-2021.mdx +++ b/apps/www/_blog/2022-01-20-supabase-beta-december-2021.mdx @@ -19,9 +19,9 @@ Here's a bunch of stuff we shipped throughout December... ## Hackathon Winners -We had a ton of awesome projects [submitted for our Holiday Hackdays](/blog/2021/12/17/holiday-hackdays-winners-2021), all of the submissions are open source so come and check out the code for some of our top picks! +We had a ton of awesome projects [submitted for our Holiday Hackdays](/blog/holiday-hackdays-winners-2021), all of the submissions are open source so come and check out the code for some of our top picks! -[![hackathon winners](/images/blog/2021-dec/hackathon.png)](/blog/2021/12/17/holiday-hackdays-winners-2021) +[![hackathon winners](/images/blog/2021-dec/hackathon.png)](/blog/holiday-hackdays-winners-2021) ## New crypto extension - pg_crypto @@ -160,7 +160,7 @@ We hit 26K stars!!: [github.com/supabase/supabase](http://github.com/supabase/su Source: [repository.surf/supabase](https://repository.surf/supabase) -Check out some of our other community stats in our latest [Series A Blog Post](/blog/2021/10/28/supabase-series-a). +Check out some of our other community stats in our latest [Series A Blog Post](/blog/supabase-series-a). ## Get started diff --git a/apps/www/_blog/2022-02-22-supabase-beta-january-2022.mdx b/apps/www/_blog/2022-02-22-supabase-beta-january-2022.mdx index e20790dd937..da70c2b978c 100644 --- a/apps/www/_blog/2022-02-22-supabase-beta-january-2022.mdx +++ b/apps/www/_blog/2022-02-22-supabase-beta-january-2022.mdx @@ -106,7 +106,7 @@ Our React Native example has been correctly updated to be an Expo example. There's no stopping [Jon Meyers](https://jonmeyers.io/videos)! He’s back with an in-depth video on how to easily [automate API requests](https://www.youtube.com/watch?v=codAs9-NeHM&feature=emb_title) using our very own Database Webhooks. -You'll learn how to listen to _any_ database change, then send those changes [in a payload](https://supabase.com/blog/2021/07/30/supabase-functions-updates#hook-payload) via HTTP request. +You'll learn how to listen to _any_ database change, then send those changes [in a payload](https://supabase.com/blog/supabase-functions-updates#hook-payload) via HTTP request.