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.