Merge pull request #7941 from supabase/blog-redirects

Redirects for new Blog URL structure.
This commit is contained in:
Jonathan Summers-Muir authored and GitHub committed 2022-08-08 13:05:24 -03:00
commit c4ae6ebdbf
75 files changed
+2350 -1258

No files matched your search

@@ -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
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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)
<img
className="border dark:border-gray-600 rounded"
className="rounded border dark:border-gray-600"
src="/images/blog/angels/mike-krieger-supabase.png"
alt="Mike Krieger Supabase"
/>
@@ -70,7 +70,7 @@ fun side project or exploration and ended up learning something I applied to mor
## Cassidy Williams (Netlify)
<img
className="border dark:border-gray-600 rounded"
className="rounded border dark:border-gray-600"
src="/images/blog/angels/cassidy-williams-supabase.png"
alt="Cassidy Williams Supabase"
/>
@@ -114,7 +114,7 @@ Get a calendar you'll actually use and stick to your to-do lists!
## Thorsten Schaeff (Stripe)
<img
className="border dark:border-gray-600 rounded"
className="rounded border dark:border-gray-600"
src="/images/blog/angels/thor-supabase.png"
alt="Thorsten Schaeff Supabase"
/>
@@ -159,7 +159,7 @@ and I'm certain that it will pay off!
## Brian Douglas (GitHub)
<img
className="border dark:border-gray-600 rounded"
className="rounded border dark:border-gray-600"
src="/images/blog/angels/brian-douglas-supabase.png"
alt="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)
<img
className="border dark:border-gray-600 rounded"
className="rounded border dark:border-gray-600"
src="/images/blog/angels/justin-gauge-supabase.png"
alt="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)
<img
className="border dark:border-gray-600 rounded"
className="rounded border dark:border-gray-600"
src="/images/blog/angels/iheanyi-ekechukwu-supabase.png"
alt="Iheanyi Ekechukwu Supabase"
/>
@@ -277,7 +277,7 @@ Never settle, never get comfortable, learn as much as you can consistently.
## Zach Waterfield (On Deck)
<img
className="border dark:border-gray-600 rounded overflow-hidden"
className="overflow-hidden rounded border dark:border-gray-600"
src="/images/blog/angels/zach-waterfield-supabase.png"
alt="Zach Waterfield Supabase"
/>
@@ -312,7 +312,7 @@ university peers, OnDeck, Twitter, etc. Focus on building your network, and good
## Shawn Wang (Temporal)
<img
className="border dark:border-gray-600 rounded overflow-hidden object-cover m-0 p-0 "
className="m-0 overflow-hidden rounded border object-cover p-0 dark:border-gray-600 "
src="/images/blog/angels/swyx-supabase.png"
alt="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)!
+7 -7
View File
@@ -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)
+1 -1
View File
@@ -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).
+2 -2
View File
@@ -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).
@@ -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).
@@ -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
@@ -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.
@@ -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?".
@@ -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)
@@ -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
@@ -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).
@@ -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.
@@ -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
@@ -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
@@ -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)
@@ -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)
+2 -2
View File
@@ -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
<Quote img="tyler-spot.jpg" caption="Tyler Shukert, creator of Spot">
<p>
@@ -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!
@@ -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)
@@ -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.
@@ -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**
@@ -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)
@@ -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? 👀{' '}
<a href="https://t.co/XPWw02kZad">https://t.co/XPWw02kZad</a>
</p>
&mdash; Supabase (@supabase){' '}
<a href="https://twitter.com/supabase/status/1440737587895799809?ref_src=twsrc%5Etfw">
September 22, 2021
</a>
&mdash; Supabase (@supabase) <a href="https://twitter.com/supabase/status/1440737587895799809?ref_src=twsrc%5Etfw">September 22, 2021</a>
</blockquote> <script async src="https://platform.twitter.com/widgets.js" charSet="utf-8"></script>{' '}
### Prize categories
@@ -98,10 +95,7 @@ We'll be contacting and announcing winners [on Twitter](https://twitter.com/supa
<a href="https://twitter.com/supabase?ref_src=twsrc%5Etfw">@supabase</a> hackathon! 🥳{' '}
<a href="https://t.co/rm5HBuju73">https://t.co/rm5HBuju73</a>
</p>
&mdash; Josh Cawthorne (@cawthornejosh){' '}
<a href="https://twitter.com/cawthornejosh/status/1424985377136390183?ref_src=twsrc%5Etfw">
August 10, 2021
</a>
&mdash; Josh Cawthorne (@cawthornejosh) <a href="https://twitter.com/cawthornejosh/status/1424985377136390183?ref_src=twsrc%5Etfw">August 10, 2021</a>
</blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>{' '}
### 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)
@@ -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
@@ -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)
@@ -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).
<ImageGrid
smCols={3}
@@ -152,7 +152,7 @@ Building an alternative is a bit like launching five different startups at once.
That said, our approach has been clear from the start: we don't want to re-invent the wheel.
We want to leverage existing open source products wherever we can, improving them by up-streaming changes and employing maintainers
([PostgREST](/blog/2020/06/15/supabase-steve-chavez),
([PostgREST](/blog/supabase-steve-chavez),
[PostgreSQL](https://www.postgresql.org/message-id/CABwTF4UZzYoHcaEGe2cESVn-e9dc3wzg%3Dmvx7Tz8qbKJ7p3UKA%40mail.gmail.com)).
This model is the real promise of open source, and we've been lucky to have investors who have backed our approach
since the start - Y Combinator, Mozilla, and our lead investor, Coatue.
@@ -254,7 +254,7 @@ We're building a cloud-native Postgres platform.
## Join us
We have a track record of hiring open source maintainers, PostgREST is maintained by a
[Supabase developer](/blog/2020/06/15/supabase-steve-chavez), one of our first hires over a year ago.
[Supabase developer](/blog/supabase-steve-chavez), one of our first hires over a year ago.
We've recently added [another developer](https://www.postgresql.org/message-id/CABwTF4UZzYoHcaEGe2cESVn-e9dc3wzg%3Dmvx7Tz8qbKJ7p3UKA%40mail.gmail.com)
with the explicit goal of working within the PostgreSQL community.
@@ -161,11 +161,11 @@ We hit 20K stars!! 21,268 to be exact: [github.com/supabase/supabase](http://git
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).
## Coming Next: Launch Week III
We had Launch Week [numero uno](https://supabase.com/blog/2021/03/25/launch-week) in March, and the sequel "[Launch Week II: the SQL](https://supabase.com/blog/2021/07/22/supabase-launch-week-sql)" in July.
We had Launch Week [numero uno](https://supabase.com/blog/launch-week) in March, and the sequel "[Launch Week II: the SQL](https://supabase.com/blog/supabase-launch-week-sql)" in July.
Now we're going even bigger with the third installment: `Launch Week III: The Trilogy`. Join us on 29th November on our [Discord](https://discord.supabase.com).
@@ -35,9 +35,9 @@ We went the whole hog. We had kick-off events, we invited external people to com
The very next week, still high on adrenaline, we met for a retrospective. The debrief, however, quickly turned into a planning meeting, and the question was raised "what is the MOST ambitious thing we could hope to ship 3 months from now?". A few projects got kicked about until someone suggested, "why just have one launch? Why can't we aim to ship one major feature or announcement every day for a week?". It was quickly agreed that Launch Day would instead become Launch Week.
During the last week of March 2021, we went on to ship [7 major features](/blog/2021/03/25/launch-week#friday-one-more-thing). We once again saw an immediate uptick in growth rate which helped solidify our strategy.
During the last week of March 2021, we went on to ship [7 major features](/blog/launch-week#friday-one-more-thing). We once again saw an immediate uptick in growth rate which helped solidify our strategy.
More recently we ran "[Launch Week II: The SQL](/blog/2021/07/22/supabase-launch-week-sql)", where we bumped the versions of several key products in our stack, and added a [Community Day](https://supabase.com/blog/2021/07/26/supabase-community-day) with the aim of boosting visibility and support of various open source tools and projects that we rely on, along with products, frameworks, and tooling built by the rapidly expanding [Supabase Community](https://github.com/supabase-community/).
More recently we ran "[Launch Week II: The SQL](/blog/supabase-launch-week-sql)", where we bumped the versions of several key products in our stack, and added a [Community Day](https://supabase.com/blog/supabase-community-day) with the aim of boosting visibility and support of various open source tools and projects that we rely on, along with products, frameworks, and tooling built by the rapidly expanding [Supabase Community](https://github.com/supabase-community/).
We're now just a few days away from Launch Week III, and over time have incrementally improved upon many of the processes and tactics that help us maximize output whilst minimizing stress on the team. So let's get into some specifics about how we run a product cycle and the resulting Launch Week.
@@ -83,7 +83,7 @@ We have more regular check-ins throughout this week, and make sure everyone is o
### Launch Week
I can't think of many things more fun than executing on a Supabase Launch Week. It's the culmination of 3 months of epic work from a highly skilled team of folks distributed across every corner of the planet. The awesome thing is that, with most of the features we ship, the person who implemented the code will be the same person who writes the marketing content. This means that the content usually includes deep technical discussion. They're also probably the best person to decide which will be the most effective channels to market that particular feature. As an example, when we launched [ui.supabase.com](http://ui.supabase.com), we made sure to hit up all the front end and design channels, made sure it ranked on Product Hunt, and reached out to some friendly designers to help boost our message. This is very different from the approach we took to marketing our [file storage offering](https://supabase.com/blog/2021/03/30/supabase-storage). The technical design discussion of Storage is better suited to channels like Hacker News, and technical conference audiences who may be more interested in DX than UI components.
I can't think of many things more fun than executing on a Supabase Launch Week. It's the culmination of 3 months of epic work from a highly skilled team of folks distributed across every corner of the planet. The awesome thing is that, with most of the features we ship, the person who implemented the code will be the same person who writes the marketing content. This means that the content usually includes deep technical discussion. They're also probably the best person to decide which will be the most effective channels to market that particular feature. As an example, when we launched [ui.supabase.com](http://ui.supabase.com), we made sure to hit up all the front end and design channels, made sure it ranked on Product Hunt, and reached out to some friendly designers to help boost our message. This is very different from the approach we took to marketing our [file storage offering](https://supabase.com/blog/supabase-storage). The technical design discussion of Storage is better suited to channels like Hacker News, and technical conference audiences who may be more interested in DX than UI components.
When it comes to the day of each launch we've gotten into the habit of constructing a finely detailed schedule to follow. It will contain items such as:
@@ -110,7 +110,7 @@ Once the dust has settled, the **most** **important** phase of the entire proces
This "internal accelerator" model has worked well within Supabase as a 2-person team and is still proving effective now at 30, but there's no telling whether it would work as well in other organizations. I would be very keen to learn from those who also do something similar.
In some ways, running Supabase is like launching many startups at the same time, we have to build and maintain many different parallel projects in order to match Firebase's incredible suite of products, which could be one reason why it lends itself so well to this acceleration model. And, in fact, being a Firebase alternative is only a small part of [what we want to achieve with Supabase](https://supabase.com/blog/2021/10/28/supabase-series-a), so we have many, many more initiatives to run as we grow.
In some ways, running Supabase is like launching many startups at the same time, we have to build and maintain many different parallel projects in order to match Firebase's incredible suite of products, which could be one reason why it lends itself so well to this acceleration model. And, in fact, being a Firebase alternative is only a small part of [what we want to achieve with Supabase](https://supabase.com/blog/supabase-series-a), so we have many, many more initiatives to run as we grow.
Running an accelerator model may also be why we've had success [hiring so many other founders](https://about.supabase.com/careers/founders). We're able to give a high degree of autonomy to individuals when it comes to managing projects and initiatives. If this kind of work environment sounds interesting to you, we have tons of [open roles](https://about.supabase.com/careers). We've already hired people who joined because they "couldn't stand to watch another Launch Week from the sidelines" and team members often quote experiencing their first Launch Week as one of the highlights of their Supabase journey so far. It clearly has benefits that extend beyond just growth and user activation.
@@ -13,9 +13,9 @@ date: '2021-11-26'
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.
In July we did [Launch Week II: The SQL](/blog/2021/07/22/supabase-launch-week-sql), with another week of feature releases.
In July we did [Launch Week II: The SQL](/blog/supabase-launch-week-sql), with another week of feature releases.
Santa's little hackers have been hard at work because we've got another five days of launches ready to go.
@@ -37,7 +37,7 @@ Last Launch Week we introduced the idea of Community Day - a day where we shine
### Where?
Read the [blog post](/blog/2021/11/29/community-day).
Read the [blog post](/blog/community-day).
Watch the Twitter Spaces recap on [YouTube](https://youtu.be/9zmaKt6evxw).
@@ -55,7 +55,7 @@ We've released [Supabase Studio](https://github.com/supabase/supabase/tree/maste
### Where?
Read the [blog post](/blog/2021/11/30/supabase-studio).
Read the [blog post](/blog/supabase-studio).
Watch the Twitter Spaces recap on [YouTube](https://youtu.be/n1QGq75ZzvE).
@@ -73,7 +73,7 @@ We released Realtime Row Level Security.
### Where?
Read the [blog post](/blog/2021/12/01/realtime-row-level-security-in-postgresql).
Read the [blog post](/blog/realtime-row-level-security-in-postgresql).
Watch the Twitter Spaces recap on [YouTube](https://youtu.be/4thVj8j19s).
@@ -91,7 +91,7 @@ We acquired [Logflare](https://logflare.app).
### Where?
Read the [blog post](/blog/2021/12/02/supabase-acquires-logflare).
Read the [blog post](/blog/supabase-acquires-logflare).
Watch the Twitter Spaces recap on [YouTube](https://youtu.be/4thVj8j19s).
@@ -109,5 +109,4 @@ Let's be honest. It's never just one more thing. Today we announced five more th
### Where?
Read the [blog post](/blog/2021/12/03/launch-week-three-friday-five-more-things).
Read the [blog post](/blog/launch-week-three-friday-five-more-things).
+21 -26
View File
@@ -16,23 +16,22 @@ date: '2021-11-27'
toc_depth: 2
---
PostgREST turns your PostgreSQL database automatically into a RESTful API. Today, PostgREST 9 was [released](https://postgrest.org/en/v9.0/releases/v9.0.0.html). Let's take a look at some of the new features.
## Resource embedding with Inner Joins
PostgREST 9 brings a [much-requested feature](https://github.com/supabase/postgrest-js/issues/197): the ability to do `inner joins` when embedding a table.
PostgREST 9 brings a [much-requested feature](https://github.com/supabase/postgrest-js/issues/197): the ability to do `inner joins` when embedding a table.
Here's an example with `supabase-js`:
```js hideCopy
const { data, error } = await supabase
.from('messages')
.select('*, users!inner(*)')
.eq('users.username', 'Jane')
.from('messages')
.select('*, users!inner(*)')
.eq('users.username', 'Jane')
```
With the new `!inner` keyword, you can now filter rows of the top-level table (`messages`) based on a filter (`eq`) of the embedded table (`users`).
With the new `!inner` keyword, you can now filter rows of the top-level table (`messages`) based on a filter (`eq`) of the embedded table (`users`).
This works across all Supabase client libraries and you can use it with any of the available operators (`gt`, `in`, etc.)
[Read more](https://postgrest.org/en/v9.0/releases/v9.0.0.html#resource-embedding-with-top-level-filtering).
@@ -42,19 +41,19 @@ This works across all Supabase client libraries and you can use it with any of t
You can now make `POST` requests to functions with a single unnamed parameter. This is particularly useful for webhooks that send JSON payloads.
For example, imagine you were using Postmark as an email provider and you wanted to save email bounces using their [bounce webhook](https://postmarkapp.com/developer/webhooks/bounce-webhook).
Previously this wouldn't be possible with PostgREST, as every function required a named parameter.
Previously this wouldn't be possible with PostgREST, as every function required a named parameter.
As of PostgREST 9, this is possible.
Simply create a function inside your PostgreSQL database to receive the raw JSON:
```sql hideCopy
create function store_bounces(json)
returns json
create function store_bounces(json)
returns json
language sql
as $$
insert into bounces (webhook_id, email)
values (
($1->>'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)
@@ -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)
+9 -9
View File
@@ -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. 💚
@@ -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
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/zHvatf2wySI"
@@ -31,19 +31,18 @@ Today, we're announcing security improvements to Realtime, where database change
allowFullScreen
></iframe>
## 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.
<small>*Realtime server does not broadcast TRUNCATE changes</small>
@@ -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)
<div class="overflow-x-scroll" markdown="block">
| 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 |
</div>
@@ -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
@@ -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)
![devs.png](/images/blog/launch-week-three/five-more-things/devs.png)
@@ -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.
<blockquote class="twitter-tweet" data-theme="dark"><p lang="en" dir="ltr">Hacktoberfest Hackathon Swag finally arrived! 🥇🥈🥨 see the winners here: <a href="https://t.co/wgRBu92Bq4">https://t.co/wgRBu92Bq4</a> <a href="https://t.co/i1eD1pdA8I">pic.twitter.com/i1eD1pdA8I</a></p>&mdash; Supabase (@supabase) <a href="https://twitter.com/supabase/status/1463355998928736262?ref_src=twsrc%5Etfw">November 24, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" data-theme="dark">
<p lang="en" dir="ltr">
Hacktoberfest Hackathon Swag finally arrived! 🥇🥈🥨 see the winners here:{' '}
<a href="https://t.co/wgRBu92Bq4">https://t.co/wgRBu92Bq4</a>{' '}
<a href="https://t.co/i1eD1pdA8I">pic.twitter.com/i1eD1pdA8I</a>
</p>
&mdash; Supabase (@supabase) <a href="https://twitter.com/supabase/status/1463355998928736262?ref_src=twsrc%5Etfw">November 24, 2021</a>
</blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
### 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
<a href="https://twitter.com/supabase?ref_src=twsrc%5Etfw">@supabase</a> hackathon! 🥳{' '}
<a href="https://t.co/rm5HBuju73">https://t.co/rm5HBuju73</a>
</p>
&mdash; Josh Cawthorne (@cawthornejosh){' '}
<a href="https://twitter.com/cawthornejosh/status/1424985377136390183?ref_src=twsrc%5Etfw">
August 10, 2021
</a>
&mdash; Josh Cawthorne (@cawthornejosh) <a href="https://twitter.com/cawthornejosh/status/1424985377136390183?ref_src=twsrc%5Etfw">August 10, 2021</a>
</blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>{' '}
### 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)
@@ -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)
@@ -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)
@@ -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
@@ -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.
<iframe
className="video-with-border w-full"
@@ -1,6 +1,6 @@
---
title: 'Should I Open Source my Company?'
description: The unexpected upsides of building in public
description: The unexpected upsides of building in public
author: ant_wilson
author_url: https://github.com/awalias
author_image_url: https://github.com/awalias.png
@@ -56,11 +56,11 @@ In software ideas are cheap. Value is almost always created in execution of idea
### Grow a community of experts
In order to build a successful company, you'll have to execute well and grow your customer base over a long period of time, let's say 10 years. In this Ultra Marathon, any advantages gained by competitors peeking at your code base are unlikely to be material over that 10 year period. It's likely that you'll have to iterate on, and refactor your code base many times over during that period. Building a team and a community that is the best in the world at iterating on *your* solution is how you will win in the long term.
In order to build a successful company, you'll have to execute well and grow your customer base over a long period of time, let's say 10 years. In this Ultra Marathon, any advantages gained by competitors peeking at your code base are unlikely to be material over that 10 year period. It's likely that you'll have to iterate on, and refactor your code base many times over during that period. Building a team and a community that is the best in the world at iterating on _your_ solution is how you will win in the long term.
### Winning in the market
If you're in a market with a huge (and growing) TAM, that is *really* worth pursuing, it's unlikely to be a winner takes all situation. The first lesson is to find a segment of users you can “wow” and then iterate like crazy. Every second you focus on your competitors is time you could be focused on improving your product or your team. If a competitor forks your open source project, and is able to out-ship you, then I would argue that you were bound to lose that particular race anyway.
If you're in a market with a huge (and growing) TAM, that is _really_ worth pursuing, it's unlikely to be a winner takes all situation. The first lesson is to find a segment of users you can “wow” and then iterate like crazy. Every second you focus on your competitors is time you could be focused on improving your product or your team. If a competitor forks your open source project, and is able to out-ship you, then I would argue that you were bound to lose that particular race anyway.
On top of all this, IP and patents in software are notoriously difficult to enforce. It will save you time, money, and mental energy if you're not worrying about trying to protect your software ideas with lawyers. You can protect your business much better by becoming the best in the world at implementing your software ideas.
@@ -70,7 +70,7 @@ On top of all this, IP and patents in software are notoriously difficult to enfo
Once your project reaches significant scale, you might find yourself in a situation like Elastic, or Mongo, where large cloud providers are offering your product with a superior distribution model.
Firstly, if you're just starting out, the biggest problem facing you right now is getting to that point. If you become so successful that AWS is deciding to take resources away from one of it's many billion dollar product lines to compete with you in hosting your product, you're doing something *very* right.
Firstly, if you're just starting out, the biggest problem facing you right now is getting to that point. If you become so successful that AWS is deciding to take resources away from one of it's many billion dollar product lines to compete with you in hosting your product, you're doing something _very_ right.
Secondly, and more constructively, you should prepare for this eventuality by finding areas where you can outcompete anyone. Most cloud providers are notoriously bad at Developer Experience for example, so take advantage of that and make DX one of your core competencies. If after 6 years, Google tries to steal your lunch, you should have a brand, a team, and a community, that have spent the last few years preparing for a David versus Goliath-type fight. Make sure you're not blindsided by something like this by planning for it from the beginning. You have enough time and focus on your side to construct a winning strategy.
@@ -84,11 +84,11 @@ Now that we've addressed some of the common objections, let's move on to some of
## Hiring developers
One of the biggest complaints of startups - no matter the size - is how hard it is to hire developers. Sourcing is hard, assessing developers is hard, convincing them of the quality of their future colleagues is hard. Being open source can solve your developer hiring problems!
One of the biggest complaints of startups - no matter the size - is how hard it is to hire developers. Sourcing is hard, assessing developers is hard, convincing them of the quality of their future colleagues is hard. Being open source can solve your developer hiring problems!
### Sourcing openly
All developers benefit from open-source, and many developers look to pay those benefits forward by contributing to open source projects they find interesting. Maybe they contribute because of a good community, maybe they're trying to learn a new technology, or enjoy solving hard technical problems in new and novel codebases. If you lower the barriers to contribute code to your open source project, there's a good chance great developers will find your project. They might contribute in issue discussions, solve bugs, identify problems, or review PRs. Every contributor may not be open to work, but many will be attracted by the prospect of working on open source code as part of their full time gig. It's a huge advantage open source companies have over closed sourced ones. At Supabase we didn't start doing outbound recruitment until after we already hired 32 developers, and been operating for more than 2 years. Open source has been, and will continue to be, our primary source of finding new (and incredible) talent. Being a remote and async company, we find having an open source hiring strategy means candidates are self selecting for these skills, which makes our job of screening for them much easier.
All developers benefit from open-source, and many developers look to pay those benefits forward by contributing to open source projects they find interesting. Maybe they contribute because of a good community, maybe they're trying to learn a new technology, or enjoy solving hard technical problems in new and novel codebases. If you lower the barriers to contribute code to your open source project, there's a good chance great developers will find your project. They might contribute in issue discussions, solve bugs, identify problems, or review PRs. Every contributor may not be open to work, but many will be attracted by the prospect of working on open source code as part of their full time gig. It's a huge advantage open source companies have over closed sourced ones. At Supabase we didn't start doing outbound recruitment until after we already hired 32 developers, and been operating for more than 2 years. Open source has been, and will continue to be, our primary source of finding new (and incredible) talent. Being a remote and async company, we find having an open source hiring strategy means candidates are self selecting for these skills, which makes our job of screening for them much easier.
![leetcode.png](/images/blog/open-source/leetcode.png)
@@ -97,7 +97,7 @@ All developers benefit from open-source, and many developers look to pay those b
One of the biggest complaints developers make while looking for their next gig is having to solve LeetCode problems or do take-home tests in the interview process. They are time-consuming, arduous, and often don't represent the type of work they'll be doing on the job. However, if someone contributes to your repo you already have:
- examples of how the person communicates with team/community members asynchronously and in a remote setting.
- examples of *real world* code contribution.
- examples of _real world_ code contribution.
And the candidate gets to see all this from the company side as well! Does this team value code quality? Do they communicate effectively? Do they make good technical decisions?
@@ -119,4 +119,4 @@ I won't evangelize too much here... I think this meme summarizes my feelings on
## More evidence please
Next week is Supabase Launch Week. It's the culmination of everything the team and community have spent the last 3 months working on. If you're not convinced by my arguments above, I believe the rate at which the Supabase community is progressing, in such a short time, speaks to all the benefits of running an open source company. See the [Launch Week 4 post](/blog/2022/03/25/supabase-launch-week-four) for all the details. And visit [our GitHub](https://github.com/supabase) if you want to get involved.
Next week is Supabase Launch Week. It's the culmination of everything the team and community have spent the last 3 months working on. If you're not convinced by my arguments above, I believe the rate at which the Supabase community is progressing, in such a short time, speaks to all the benefits of running an open source company. See the [Launch Week 4 post](/blog/supabase-launch-week-four) for all the details. And visit [our GitHub](https://github.com/supabase) if you want to get involved.
@@ -18,9 +18,9 @@ every day for an entire week.
If this is your first Launch Week, check out our previous Launch Weeks for a taste of what's to come:
- [Launch Week I](/blog/2021/03/25/launch-week)
- [Launch Week II: The SQL](/blog/2021/07/22/supabase-launch-week-sql)
- [Launch Week III: The Trilogy](/blog/2021/11/26/supabase-launch-week-the-trilogy)
- [Launch Week I](/blog/launch-week)
- [Launch Week II: The SQL](/blog/supabase-launch-week-sql)
- [Launch Week III: The Trilogy](/blog/supabase-launch-week-the-trilogy)
## What to expect
@@ -35,7 +35,7 @@ to keep updated by following the hashtag [#SupaLaunchWeek](https://twitter.com/h
Watch us as we kick off Launch Week, shipping this blog post.
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/bpzQCViwLLA"
@@ -56,7 +56,7 @@ This Community Day is going to be our biggest one yet.
Have a look at the [#SupaLaunchWeek hashtag on Twitter](https://twitter.com/hashtag/SupaLaunchWeek?src=hashtag_click)
to see some of the awesome guests that will be joining us.
[Launch Week 4: Community Day.](/blog/2022/03/28/community-day)
[Launch Week 4: Community Day.](/blog/community-day)
### When?
@@ -64,7 +64,7 @@ Monday 28 March 2022: 9am PT
### Where?
- Read the [blogpost](/blog/2022/03/28/community-day).
- Read the [blogpost](/blog/community-day).
- Listen back to the [Twitter Spaces](https://twitter.com/i/spaces/1mnxedEZzVPJX).
- Watch the [recording](https://youtu.be/D0gIgjozOzc).
@@ -74,10 +74,10 @@ Monday 28 March 2022: 9am PT
### What?
If Postgres could talk it would sing “I am the <a href="/blog/2021/09/10/supabase-beta-august-2021#realtime-security-codename-walrus">WALRUS</a>”.
If Postgres could talk it would sing “I am the <a href="/blog/2021/09/10/supabase-beta-august-2021#realtime-security-codename-walrus">WALRUS</a>”.
Since last Launch Week we've been busy shipping. Tune in on Tuesday to learn about a brand new way to fetch your data.
[GraphQL is now available in Supabase!](/blog/2022/03/29/graphql-now-available)
[GraphQL is now available in Supabase!](/blog/graphql-now-available)
### When?
@@ -85,7 +85,7 @@ Tuesday 29 March 2022: 9am PT
### Where?
- Read the [blog post](/blog/2022/03/29/graphql-now-available).
- Read the [blog post](/blog/graphql-now-available).
- Listen back to the [Twitter Spaces](https://twitter.com/i/spaces/1dRKZlAQPaVJB).
- Watch live on [YouTube](https://youtu.be/fApxu_U_hdw).
@@ -98,7 +98,7 @@ Tuesday 29 March 2022: 9am PT
Tune in to ~~Channel~~ Launch Week Four News updates to hear about some classy Enterprise updates.
100% of the time, it works every time.
[Introducing Supabase Enterprise](/blog/2022/03/30/supabase-enterprise).
[Introducing Supabase Enterprise](/blog/supabase-enterprise).
### When?
@@ -106,7 +106,7 @@ Wednesday 30 March 2022: 9am PT
### Where?
- Read the [blog post](/blog/2022/03/30/supabase-enterprise).
- Read the [blog post](/blog/supabase-enterprise).
- Listen back to the [Twitter Spaces](https://twitter.com/i/spaces/1dRKZlAdaawJB).
- Watch live on [YouTube](https://youtu.be/UZrl1cwzTDg).
@@ -119,7 +119,7 @@ Wednesday 30 March 2022: 9am PT
This one's gonna be hotter than the Human Torch 🔥, more scalable than Mister Fantastic, more rock solid than The Thing,~
~and the latency will be harder to find than Invisible Woman.
[Edge Functions are now available in Supabase](/blog/2022/03/31/supabase-edge-functions)
[Edge Functions are now available in Supabase](/blog/supabase-edge-functions)
### When?
@@ -127,7 +127,7 @@ Wednesday 31 March 2022: 9am PT
### Where?
- Read the [blog post](/blog/2022/03/31/supabase-edge-functions).
- Read the [blog post](/blog/supabase-edge-functions).
- Listen back to the [Twitter Spaces](https://twitter.com/i/spaces/1dRKZlAdaawJB).
- Watch live on [YouTube](https://youtu.be/fApxu_U_hdw).
@@ -141,16 +141,14 @@ Absolutely, definitely not an April Fool's joke. Friday is reserved for “one m
a secret announcement of some sort. There's always too much to ship in a week, so let's be honest -
it's never really just _one_ more thing.
### When?
Friday 1 April 2022: 9am PT
### Where?
- [Supabrew - Never Code Thirsty](/blog/2022/04/01/supabrew)
- [Supabase Realtime, with Multiplayer Features](/blog/2022/04/01/supabase-realtime-with-multiplayer-features)
- [Supabrew - Never Code Thirsty](/blog/supabrew)
- [Supabase Realtime, with Multiplayer Features](/blog/supabase-realtime-with-multiplayer-features)
## Wrap-up Hackathon: Bring the func(🕺)
@@ -175,4 +173,4 @@ Friday 1 April 2022: 9:00am PT - Sunday 9 April 11:59pm PT
We're extremely excited to see what you'll build and can't wait to dive into your submissions on
[madewithsupabase.com](https://www.madewithsupabase.com/).
Check out the blog post - [Hackathon: Bring the Func](/blog/2022/04/01/hackathon-bring-the-func).
Check out the blog post - [Hackathon: Bring the Func](/blog/hackathon-bring-the-func).
+4 -4
View File
@@ -24,8 +24,8 @@ Supabase Launch Week was born out of [YC Demo Day](https://www.ycombinator.com/d
With Launch Week, we replicate Demo Day conditions, but for a whole week! This is the secret formula that works for us:
- The Friday before, we publish a blog post about a topic of interest (e.g. [How we launch at Supabase](https://supabase.com/blog/2021/11/26/supabase-how-we-launch), or this time around we [explore whether you should open source your company](https://supabase.com/blog/2022/03/25/should-i-open-source-my-company) — hint: we think you most likely should!) as well as an [overview blogpost](https://supabase.com/blog/2022/03/25/supabase-launch-week-four) with tons of memes and hints to what we’re shipping each day.
- Monday is Community Day, where we rally many of the awesome contributors and partners together and showcase awesome things around Supabase and open-source. This is also the time to watch out for the [#SupaLaunchWeek hashtag on Twitter](https://twitter.com/hashtag/SupaLaunchWeek?src=hashtag_click) as we arm our guest speakers, [Angels](https://supabase.com/blog/2021/03/25/angels-of-supabase), and [SupaSquad](https://supabase.com/docs/handbook/supasquad) with free swag codes.
- The Friday before, we publish a blog post about a topic of interest (e.g. [How we launch at Supabase](https://supabase.com/blog/supabase-how-we-launch), or this time around we [explore whether you should open source your company](https://supabase.com/blog/should-i-open-source-my-company) — hint: we think you most likely should!) as well as an [overview blogpost](https://supabase.com/blog/supabase-launch-week-four) with tons of memes and hints to what we’re shipping each day.
- Monday is Community Day, where we rally many of the awesome contributors and partners together and showcase awesome things around Supabase and open-source. This is also the time to watch out for the [#SupaLaunchWeek hashtag on Twitter](https://twitter.com/hashtag/SupaLaunchWeek?src=hashtag_click) as we arm our guest speakers, [Angels](https://supabase.com/blog/angels-of-supabase), and [SupaSquad](https://supabase.com/docs/handbook/supasquad) with free swag codes.
- Tuesday, Wednesday, and Thursday are the big feature launches.
- Friday has become the feature kitchen sink, as we ship too many things to fit into one week. It’s our “One more thing(s)” day.
- And last but not least, coming out of Launch Week, we roll into a 10 day virtual hackathon with the community submitting tons of awesome projects to [madewithsupabase.com](https://www.madewithsupabase.com/), which, once upon a time, was a hackathon project itself. I know, quite the inception kinda stuff - so cool!
@@ -126,7 +126,7 @@ We’ve also added 2 new phone providers from the same contributor:
- [Vonage](https://supabase.com/docs/guides/auth/auth-vonage) ([@devkiran](https://github.com/devkiran))
- [TextLocal](https://github.com/supabase/gotrue/pull/342) ([@devkiran](https://github.com/devkiran))
If you haven’t tried out phone auth yet, check out [this blog post](https://supabase.com/blog/2021/07/28/supabase-auth-passwordless-sms-login) to get started!
If you haven’t tried out phone auth yet, check out [this blog post](https://supabase.com/blog/supabase-auth-passwordless-sms-login) to get started!
### Send OTP via Email
@@ -224,4 +224,4 @@ We’re also delighted to be partnering with [the Future Forest Company](https:/
## Let’s get launching 🚀
And with that, we officially declare Launch Week as open! Check back [here](/blog/2022/03/25/supabase-launch-week-four) every day this week to see what new things we are shipping. We can't wait to share them with you!
And with that, we officially declare Launch Week as open! Check back [here](/blog/supabase-launch-week-four) every day this week to see what new things we are shipping. We can't wait to share them with you!
@@ -128,7 +128,7 @@ Some features are too good to limit to large customers, so today we're introduci
</video>
To simplify pricing, we've merged the “Pro” and “Pay as you go” tiers and introduced monthly spend caps to avoid nasty billing surprises.
These changes are to keep Supabase pricing [predictable, transparent, and developer friendly](/blog/2021/03/29/pricing).
These changes are to keep Supabase pricing [predictable, transparent, and developer friendly](/blog/pricing).
When you upgrade to the Pro Tier, spend caps are turned on by default, limiting your per-project costs to $25 per month.
We're also retaining our soft limits while we manage the transition to granular spend-caps, so your service will continue to run even if your usage exceeds $25 (we'll contact you directly when you go over the limit). Right now there is a global project spend-cap, and in the future you'll have full control with configurable spend-caps on a “per-feature” basis.
@@ -155,7 +155,7 @@ Today, Database Add-ons are available for a small set of customers. We will prog
Today we're releasing a brand new [Log Explorer](/docs/guides/platform/logs) in the Supabase Dashboard.
As big advocates of SQL, we've done what any good Postgres fanatics would do - we're giving you the ability to query your logs using SQL.
And if you're new to SQL, we have plenty of templates included.
This is just one of the exciting features we are releasing through our [Logflare acquisition](/blog/2021/12/02/supabase-acquires-logflare).
This is just one of the exciting features we are releasing through our [Logflare acquisition](/blog/supabase-acquires-logflare).
Log history is available to every Supabase project [^1]:
- Free Tier: 1 day of log history
@@ -93,7 +93,7 @@ Once you've tested your Function locally (or gone straight to production cos you
<source src="/videos/blog/launch-week-4/logs-polish.mov" type="video/mp4" muted playsInline />
</video>
Our observability pipeline has been built [using Logflare](https://supabase.com/blog/2021/12/02/supabase-acquires-logflare). Structured logs from your Edge Functions get sent to Logflare, which also processes them into metrics. Your Supabase Dashboard is able to reach out to Logflare endpoints, and with some of the [(not so) secret sauce](https://supabase.com/blog/2021/11/30/supabase-studio) from our front-end team, you get responsive charts and logs for your Edge Functions.
Our observability pipeline has been built [using Logflare](https://supabase.com/blog/supabase-acquires-logflare). Structured logs from your Edge Functions get sent to Logflare, which also processes them into metrics. Your Supabase Dashboard is able to reach out to Logflare endpoints, and with some of the [(not so) secret sauce](https://supabase.com/blog/supabase-studio) from our front-end team, you get responsive charts and logs for your Edge Functions.
![new —> deploy —> invoke —> logs](/images/blog/launch-week-4/thursday-functions/functions-new-deploy-invoke-logs.gif)
new —> deploy —> invoke —> logs
@@ -103,7 +103,7 @@ To round off the end-to-end experience, `supabase-js` now works in Deno, making
## Quickstart
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/rzglqRdZUQE"
@@ -14,7 +14,7 @@ date: '2022-04-01T16:00:00'
toc_depth: 3
---
We can’t believe that it’s already a wrap on our [fourth launch week](https://supabase.com/blog/2022/03/25/supabase-launch-week-four)! To keep the party and excitement going, and as [is now tradition](https://supabase.com/blog/2022/03/28/community-day#launch-week-iv---what-to-expect), starting at 9am PT today we'll be hacking together for the next 10 days until 23:59pm PT on Sunday April 10th. And because we’ve launched [GraphQL support](https://supabase.com/blog/2022/03/29/graphql-now-available) and [Supabase Edge Functions](https://supabase.com/blog/2022/03/30/supabase-enterprise), these will be the major themes and therefore categories for the hackathon.
We can’t believe that it’s already a wrap on our [fourth launch week](https://supabase.com/blog/supabase-launch-week-four)! To keep the party and excitement going, and as [is now tradition](https://supabase.com/blog/community-day#launch-week-iv---what-to-expect), starting at 9am PT today we'll be hacking together for the next 10 days until 23:59pm PT on Sunday April 10th. And because we’ve launched [GraphQL support](https://supabase.com/blog/graphql-now-available) and [Supabase Edge Functions](https://supabase.com/blog/supabase-enterprise), these will be the major themes and therefore categories for the hackathon.
For some inspiration, check out [TheGuildDev](https://twitter.com/TheGuildDev)’s [GraphQL HackerNews clone](https://supabase-graphql-example.vercel.app/), and [Tyler’s](https://twitter.com/dshukertjr) [Flutter](https://github.com/supabase-community/flutter-stripe-payments-with-supabase-functions) and [Thor’s](https://twitter.com/thorwebdev) [React Native](https://github.com/supabase-community/expo-stripe-payments-with-supabase-functions) apps with Supabase Edge Functions, or have a browse through [madewithsupabase.com](http://madewithsupabase.com)!
@@ -49,7 +49,7 @@ Finally, we're delighted to be partnering with [the Future Forest Company](https
There are multiple chances to win, there will be prizes for:
- Most impressive GraphQL project (must use [pg_graphql](https://supabase.com/blog/2022/03/29/graphql-now-available#getting-started))
- Most impressive GraphQL project (must use [pg_graphql](https://supabase.com/blog/graphql-now-available#getting-started))
- Most interesting usage of [Edge Functions]()
- Most fun / visually pleasing (get creative)
@@ -127,7 +127,7 @@ Join our Discord: [discord.supabase.com](https://discord.supabase.com)
Here's a collection of resources that will help you get started building with Supabase:
- Getting started with [GraphQL on Supabase](https://supabase.com/blog/2022/03/29/graphql-now-available#getting-started)
- Getting started with [GraphQL on Supabase](https://supabase.com/blog/graphql-now-available#getting-started)
- [GraphQL HackerNews clone](https://supabase-graphql-example.vercel.app/)
- [Edge Functions Guide](https://supabase.com/docs/guides/functions)
- [Edge Functions Quickstart video](https://youtu.be/rzglqRdZUQE)
+1 -1
View File
@@ -34,4 +34,4 @@ By far the best feature of SupaBrew, is the pricing structure. Thanks to an inno
Want to get started with SupaBrew? Head over to our [swag store](https://store.supabase.com/products/supabrew-6-pack?variant=42199068541083) to order your first crate now.
This is of course an April Fools, but since you're here why not check out what else we [dropped this week](/blog/2022/03/25/supabase-launch-week-four).
This is of course an April Fools, but since you're here why not check out what else we [dropped this week](/blog/supabase-launch-week-four).
@@ -14,51 +14,51 @@ Definitely our most feature-packed month so far. Here's a ton of stuff we shippe
## Functions
The one we've all been waiting for. You can now [deploy Javascript & Typescript functions](/blog/2022/03/31/supabase-edge-functions) to Supabase. You can develop and test locally, link a project, and deploy globally to the edge in a matter of seconds!
The one we've all been waiting for. You can now [deploy Javascript & Typescript functions](/blog/supabase-edge-functions) to Supabase. You can develop and test locally, link a project, and deploy globally to the edge in a matter of seconds!
[![supabase functions](/images/blog/2022-march/functions.png)](/blog/2022/03/31/supabase-edge-functions)
[![supabase functions](/images/blog/2022-march/functions.png)](/blog/supabase-edge-functions)
## GraphQL
You can now [query your Supabase database with GraphQL](/blog/2022/03/29/graphql-now-available). We built this as a postgres extension, so it's portable, open source, and solves some of the problems that exist in other GraphQL implementations.
You can now [query your Supabase database with GraphQL](/blog/graphql-now-available). We built this as a postgres extension, so it's portable, open source, and solves some of the problems that exist in other GraphQL implementations.
[![graphql](/images/blog/2022-march/graphql.jpg)](/blog/2022/03/29/graphql-now-available)
[![graphql](/images/blog/2022-march/graphql.jpg)](/blog/graphql-now-available)
## Realtime
Supabase Realtime [now supports multiplayer and presence](/blog/2022/04/01/supabase-realtime-with-multiplayer-features), so you can build collaborative applications like Figma and Google Docs with Supabase. Come and have some fun on our demo application.
Supabase Realtime [now supports multiplayer and presence](/blog/supabase-realtime-with-multiplayer-features), so you can build collaborative applications like Figma and Google Docs with Supabase. Come and have some fun on our demo application.
[![realtime](/images/blog/2022-march/realtime.png)](/blog/2022/04/01/supabase-realtime-with-multiplayer-features)
[![realtime](/images/blog/2022-march/realtime.png)](/blog/supabase-realtime-with-multiplayer-features)
## Enterprise
[Logging and Observability dashboard](/blog/2022/03/30/supabase-enterprise), Prometheus endpoint, SLAs, premium support, pricing updates, and Point-In-Time-Recovery. Everything you need to use Supabase at scale.
[Logging and Observability dashboard](/blog/supabase-enterprise), Prometheus endpoint, SLAs, premium support, pricing updates, and Point-In-Time-Recovery. Everything you need to use Supabase at scale.
[![enterprise](/images/blog/2022-march/enterprise.png)](/blog/2022/03/30/supabase-enterprise)
[![enterprise](/images/blog/2022-march/enterprise.png)](/blog/supabase-enterprise)
## GitHub Secret Scanning
We're now an official [GitHub secret scanning partner](/blog/2022/03/28/community-day#supabase-is-now-a-github-secret-scanning-partner), meaning that if you accidentally push your service_role key to GitHub, you'll get a notification email, and your keys will automatically be rolled on Supabase. For private repos you can disable this.
We're now an official [GitHub secret scanning partner](/blog/community-day#supabase-is-now-a-github-secret-scanning-partner), meaning that if you accidentally push your service_role key to GitHub, you'll get a notification email, and your keys will automatically be rolled on Supabase. For private repos you can disable this.
[![secret scanning](/images/blog/2022-march/secret-scanning.png)](/blog/2022/03/28/community-day#supabase-is-now-a-github-secret-scanning-partner)
[![secret scanning](/images/blog/2022-march/secret-scanning.png)](/blog/community-day#supabase-is-now-a-github-secret-scanning-partner)
## Community Day
[PostgREST 10 pre-release](/blog/2022/03/28/community-day#postgrest-10-pre-release), new OAuth providers, Next-JS auth helpers, new courses, and an open source Partner Gallery.
[PostgREST 10 pre-release](/blog/community-day#postgrest-10-pre-release), new OAuth providers, Next-JS auth helpers, new courses, and an open source Partner Gallery.
[![community day](/images/blog/2022-march/community-day.png)](/blog/2022/03/28/community-day)
[![community day](/images/blog/2022-march/community-day.png)](/blog/community-day)
## Should I open source my company?
[We wrote an article](/blog/2022/03/25/should-i-open-source-my-company) for anyone considoring making their codebase open source. We explore the advantages and tackle some common concerns.
[We wrote an article](/blog/should-i-open-source-my-company) for anyone considoring making their codebase open source. We explore the advantages and tackle some common concerns.
[![open source](/images/blog/2022-march/open-source.png)](/blog/2022/03/25/should-i-open-source-my-company)
[![open source](/images/blog/2022-march/open-source.png)](/blog/should-i-open-source-my-company)
## Supabrew - Never Code Thirsty
For April Fools - [we announced a non-alcoholic](/blog/2022/04/01/supabrew), light, and refreshing brew. Perfect for coding late into the night. We're pushing the boundaries of Developer Experience.
For April Fools - [we announced a non-alcoholic](/blog/supabrew), light, and refreshing brew. Perfect for coding late into the night. We're pushing the boundaries of Developer Experience.
[![supabrew](/images/blog/2022-march/supabrew.png)](/blog/2022/04/01/supabrew)
[![supabrew](/images/blog/2022-march/supabrew.png)](/blog/supabrew)
## Video Highlights
@@ -14,7 +14,7 @@ date: '2022-04-18'
toc_depth: 2
---
To cool down from [our latest launch week](/blog/2022/03/25/supabase-launch-week-four) we (virtually) sat down with y'all and started hacking, and once again we absolutely loved your hackathon submissions and are excited to send some extremely limited swag your way and plant some trees for each of your submitted projects!
To cool down from [our latest launch week](/blog/supabase-launch-week-four) we (virtually) sat down with y'all and started hacking, and once again we absolutely loved your hackathon submissions and are excited to send some extremely limited swag your way and plant some trees for each of your submitted projects!
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/bring-the-func). And now, without further ado, let's look at some of our favourites in more detail:
@@ -94,7 +94,7 @@ If you want to join the community and build with us, find other people using Sup
If you're inspired to build, check out some of the latest resources:
- Getting started with [GraphQL on Supabase](https://supabase.com/blog/2022/03/29/graphql-now-available#getting-started)
- Getting started with [GraphQL on Supabase](https://supabase.com/blog/graphql-now-available#getting-started)
- [GraphQL HackerNews clone](https://supabase-graphql-example.vercel.app/)
- [Edge Functions Guide](https://supabase.com/docs/guides/functions)
- [Edge Functions Quickstart video](https://youtu.be/rzglqRdZUQE)
@@ -181,10 +181,9 @@ If you want to try out the steps we described in this article, fire up a full Po
## More Postgres resources
- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql)
- [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)
- [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)
@@ -16,7 +16,7 @@ Data helps organizations make better decisions. With a programming language like
With Metabase, a powerful visualization tool, you can quickly turn your data into easy-to-understand visuals like graphs, pie charts, flow diagrams, and much more. Then, using Metabase’s intuitive interface, you can cut through the data noise and focus on what’s essential for your business.
In the previous blog of this series**,** we explained [how to use Python to load data into Supabase](https://supabase.com/blog/2022/06/15/loading-data-supabase-python). In this blog, we will create different kinds of charts out of the data stored in Supabase using Metabase.
In the previous blog of this series**,** we explained [how to use Python to load data into Supabase](https://supabase.com/blog/loading-data-supabase-python). In this blog, we will create different kinds of charts out of the data stored in Supabase using Metabase.
## Prerequisites
@@ -24,7 +24,7 @@ Before we dive in, let’s look at some prerequisites that you will need:
- **Supabase project with data**
Based on our [previous article](https://supabase.com/blog/2022/06/15/loading-data-supabase-python), we assume we already have a Supabase project setup and have data loaded into it.
Based on our [previous article](https://supabase.com/blog/loading-data-supabase-python), we assume we already have a Supabase project setup and have data loaded into it.
- **Metabase Docker Container**
@@ -86,8 +86,8 @@ The Supabase community is exploding and we’ve reached a point where we can’t
- Build a Full-Stack App with Next.js, Supabase & Prisma. [Course](https://themodern.dev/courses/build-a-fullstack-app-with-nextjs-supabase-and-prisma-322389284337222224)
- Jon Meyers looks at using Row Level Security policies to limit the number of rows a particular user can insert into a table. [Article](https://jonmeyers.io/blog/using-a-row-level-security-policy-to-limit-the-number-of-rows-inserted-per-user)
- How to use Realtime Functionality in Supabase Postgress Database. [Tutorial](https://nextdev1111.hashnode.dev/how-to-use-realtime-functionality-in-supabase-postgress-database)
- A brand new Flutter Tutorial Series. The first post: [Building a realtime Flutter chat app](https://supabase.com/blog/2022/06/30/flutter-tutorial-building-a-chat-app).
- Python, Metabase, and Supabase: [Part 1](https://supabase.com/blog/2022/06/15/loading-data-supabase-python) and [Part 2](https://supabase.com/blog/2022/06/29/visualizing-supabase-data-using-metabase).
- A brand new Flutter Tutorial Series. The first post: [Building a realtime Flutter chat app](https://supabase.com/blog/flutter-tutorial-building-a-chat-app).
- Python, Metabase, and Supabase: [Part 1](https://supabase.com/blog/loading-data-supabase-python) and [Part 2](https://supabase.com/blog/visualizing-supabase-data-using-metabase).
## Singapore CityJS
@@ -10,7 +10,7 @@ date: '2022-07-13'
toc_depth: 9
---
We've been hard at work making an Auth experience that is as smooth as possible for Supabase developers. One of the challenges has been creating a simple experience for server-side rendering (SSR) environments. We [previously released](https://supabase.com/blog/2022/03/28/community-day#server-side-auth-for-nextjs-and-nuxt-sveltekit-and-remix-coming-soon) our Auth Helpers libraries with support for React and NextJS, and today we’re announcing some exciting updates.
We've been hard at work making an Auth experience that is as smooth as possible for Supabase developers. One of the challenges has been creating a simple experience for server-side rendering (SSR) environments. We [previously released](https://supabase.com/blog/community-day#server-side-auth-for-nextjs-and-nuxt-sveltekit-and-remix-coming-soon) our Auth Helpers libraries with support for React and NextJS, and today we’re announcing some exciting updates.
## What are Auth Helpers?
@@ -705,12 +705,12 @@ As usual, Postgres has the tools to solve the problem _reasonably_ well (if not
## More Postgres resources
- [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)
- [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)
[pew-twitter-user-stats]: https://www.pewresearch.org/internet/2019/04/24/sizing-up-twitter-users/
[k6]: https://k6.io
@@ -13,20 +13,19 @@ toc_depth: 3
Today, we are releasing of Developer Preview version of v1.0 of [Supabase Flutter SDK](https://pub.dev/packages/supabase_flutter/versions/1.0.0-dev.1). Flutter has quickly become one of the most popular frameworks for developers to build cross-platform mobile apps. We can attest to that growth, our Flutter SDK is one of the most popular libraries and each day we see more Flutter devs choosing Supabase.
For this release, our main focus is developer experiences. We would love for you to try the SDK and provide your feedback so that we can continue to improve!
Before we dive into the actual updates, I would like to thank all the community contributors who have helped the library to be where it is today.
For this release, our main focus is developer experiences. We would love for you to try the SDK and provide your feedback so that we can continue to improve!
Before we dive into the actual updates, I would like to thank all the community contributors who have helped the library to be where it is today.
## Better developer experience
Until now, there were some disputable implementations in the Flutter SDK. We've made several improvements:
### Automatically handling auth state persistence
### Automatically handling auth state persistence
Previously, `supabase-flutter` required a class that extends `SupabaseAuthState` or `SupabaseAuthRequiredState` to persist auth state. With `supabase-flutter` 1.0, you no longer need to include these classes.
Previously, `supabase-flutter` required a class that extends `SupabaseAuthState` or `SupabaseAuthRequiredState` to persist auth state. With `supabase-flutter` 1.0, you no longer need to include these classes.
All you need to persist the auth state is initialize Supabase and everything else will be automatically taken care of. `SupabaseAuthState` and `SupabaseAuthRequiredState` have been removed from the code base.
All you need to persist the auth state is initialize Supabase and everything else will be automatically taken care of. `SupabaseAuthState` and `SupabaseAuthRequiredState` have been removed from the code base.
```dart
// Before
@@ -49,9 +48,9 @@ await Supabase.initialize(
### Automatically handling deep links
Deep link handling had similar issues previously, requiring you to implement `SupabaseAuthState` or `SupabaseAuthRequiredState` classes.
Deep link handling had similar issues previously, requiring you to implement `SupabaseAuthState` or `SupabaseAuthRequiredState` classes.
With the 1.0 update, you no longer need to use these classes, and deep links will be automatically handled. You can listen to `onAuthStateChange` to handle when a deep link is received to redirect users to a new screen.
With the 1.0 update, you no longer need to use these classes, and deep links will be automatically handled. You can listen to `onAuthStateChange` to handle when a deep link is received to redirect users to a new screen.
```dart
// Before
@@ -68,9 +67,9 @@ await Supabase.instance.initialize(
### Throwing errors instead of returning them
When `supabase-dart` and `supabase-flutter` were created, we wanted to mirror the JavaScript library as much as possible. We soon realized that some syntax does not fit well when written in Dart. Throwing vs returning error is a good example of that. Since Dart does not have object destruction, the code becomes a bit tedious when errors are returned.
When `supabase-dart` and `supabase-flutter` were created, we wanted to mirror the JavaScript library as much as possible. We soon realized that some syntax does not fit well when written in Dart. Throwing vs returning error is a good example of that. Since Dart does not have object destruction, the code becomes a bit tedious when errors are returned.
With `supabase-flutter` 1.0, we are throwing errors instead of returning them. This is consistent across all features from `auth`, `postgrest`, and `storage`.
With `supabase-flutter` 1.0, we are throwing errors instead of returning them. This is consistent across all features from `auth`, `postgrest`, and `storage`.
```dart
// Before
@@ -88,7 +87,7 @@ try {
### No more `.execute()` to get the data
We want this SDK to be as close as possible to the JavaScript SDK to provide consistent developer experience no matter what programming language you are using. Prior to the 1.0 update, whenever you called the `postgrest` endpoints, you had to call `.execute()` at the end of each query.
We want this SDK to be as close as possible to the JavaScript SDK to provide consistent developer experience no matter what programming language you are using. Prior to the 1.0 update, whenever you called the `postgrest` endpoints, you had to call `.execute()` at the end of each query.
`.execute()` is now deprecated. You no longer needed it to query data from your Supabase database. This update, along with many many other improvements across the whole library, has been done by [Bruno D'Luka](https://github.com/bdlukaa), and I would love to give him a special shout out here!
@@ -103,18 +102,17 @@ final data = await Supabase.instance.from('messages').select();
## Desktop support for deeplinks
Ever since `supabase-flutter` was born, it supported only iOS, Android and Web for deep linking. This was a limitation of the deep link library that we were using.
Ever since `supabase-flutter` was born, it supported only iOS, Android and Web for deep linking. This was a limitation of the deep link library that we were using.
With the 1.0 launch, we are moving to use [app_links](https://pub.dev/packages/app_links), which will enable us to support MacOS and Windows applications as well! Linux support is being worked on - follow the repo to keep updated.
With the 1.0 launch, we are moving to use [app_links](https://pub.dev/packages/app_links), which will enable us to support MacOS and Windows applications as well! Linux support is being worked on - follow the repo to keep updated.
![Supabase Flutter desktop support](/images/blog/flutter-1/supported-platforms-table.png)
## Multiplayer support
[Multiplayer](https://supabase.com/blog/2022/04/01/supabase-realtime-with-multiplayer-features) is the next generation Supabase Realtime engine that was announced at the previous launch week.
[Multiplayer](https://supabase.com/blog/supabase-realtime-with-multiplayer-features) is the next generation Supabase Realtime engine that was announced at the previous launch week.
We want our Flutter developers to experience this new multiplayer feature as well, so are working hard at bringing it to our Flutter SDK. It is not yet included in the developer preview of Supabase Flutter 1.0, but will be part of it when stable launch has been released.
We want our Flutter developers to experience this new multiplayer feature as well, so are working hard at bringing it to our Flutter SDK. It is not yet included in the developer preview of Supabase Flutter 1.0, but will be part of it when stable launch has been released.
## Supabase Auth UI for Flutter
@@ -124,7 +122,7 @@ Last but not least, we are bringing you another library, the Supabase Auth UI fo
You can get started with it on [pub.dev](https://pub.dev/packages/supabase_auth_ui).
I would like to thank [Fatuma](https://twitter.com/XquisiteDreamer) for single-handedly working on bringing us an easier authentication experience.
I would like to thank [Fatuma](https://twitter.com/XquisiteDreamer) for single-handedly working on bringing us an easier authentication experience.
```dart
// Email and password signin form
@@ -148,17 +146,17 @@ SupaSocialsAuth(
## Final thoughts
These updates are just the tip of the iceberg for 1.0. There are been many bug fixes and features constantly being added to the Supabase Flutter SDK. This could not have been possible with the help from the open source community. Here, I would also like to give a shout out to two other developers who have been a major part of the journey of this SDK: [Vinzent](https://twitter.com/Vinzent03_) and [Daniel Mossaband](https://github.com/DanMossa). They have been a huge part of the Supabase Flutter SDK - not just for the 1.0 release, but throughout the lifetime of the library.
For those of you who want to try out the new SDK, you can get the developer preview version from [supabase-flutter](https://pub.dev/packages/supabase_flutter/versions/1.0.0-dev.1) pub.dev page or can simply copy and paste the following into your pubspec.yaml file.
These updates are just the tip of the iceberg for 1.0. There are been many bug fixes and features constantly being added to the Supabase Flutter SDK. This could not have been possible with the help from the open source community. Here, I would also like to give a shout out to two other developers who have been a major part of the journey of this SDK: [Vinzent](https://twitter.com/Vinzent03_) and [Daniel Mossaband](https://github.com/DanMossa). They have been a huge part of the Supabase Flutter SDK - not just for the 1.0 release, but throughout the lifetime of the library.
For those of you who want to try out the new SDK, you can get the developer preview version from [supabase-flutter](https://pub.dev/packages/supabase_flutter/versions/1.0.0-dev.1) pub.dev page or can simply copy and paste the following into your pubspec.yaml file.
```yaml
supabase_flutter: ^1.0.0-dev.1
```
If you have any feedbacks, please let us know in the issues of the [supabase-flutter](https://github.com/supabase-community/supabase-flutter/issues) repository.
If you have any feedbacks, please let us know in the issues of the [supabase-flutter](https://github.com/supabase-community/supabase-flutter/issues) repository.
## Flutter Resources
- [supabase-flutter 1.0 developer preview](https://pub.dev/packages/supabase_flutter)
- [Flutter Tutorial: building a Flutter chat app](https://supabase.com/blog/2022/06/30/flutter-tutorial-building-a-chat-app)
- [Flutter Tutorial: building a Flutter chat app](https://supabase.com/blog/flutter-tutorial-building-a-chat-app)
- [Build a Flutter app with Very Good CLI and Supabase](https://verygood.ventures/blog/flutter-app-very-good-cli-supabase)
@@ -24,13 +24,13 @@ Register for [#SupaLaunchWeek 5](https://twitter.com/hashtag/SupaLaunchWeek) and
![flutter sdk 1.0](/images/blog/2022-july/flutter-sdk.png)
Supabase Flutter SDK is getting a major update, with a big focus on developer experience. We shared a preview of what is to come so you can help us make it even better with your feedback. [Read the blog.](https://supabase.com/blog/2022/08/02/supabase-flutter-sdk-1-developer-preview)
Supabase Flutter SDK is getting a major update, with a big focus on developer experience. We shared a preview of what is to come so you can help us make it even better with your feedback. [Read the blog.](https://supabase.com/blog/supabase-flutter-sdk-1-developer-preview)
## Revamped Auth Helpers (now with SvelteKit support)
![Sveltekit auth helpers](/images/blog/2022-july/auth-helpers.jpg)
We've been hard at work making an Auth experience that is as smooth as possible for Supabase developers. The new Auth Helpers have a better experience for server-side rendering (SSR) environments, new Github structure, SvelteKit support, and more. [Read the blog](https://supabase.com/blog/2022/07/13/supabase-auth-helpers-with-sveltekit-support).
We've been hard at work making an Auth experience that is as smooth as possible for Supabase developers. The new Auth Helpers have a better experience for server-side rendering (SSR) environments, new Github structure, SvelteKit support, and more. [Read the blog](https://supabase.com/blog/supabase-auth-helpers-with-sveltekit-support).
## pg_jsonschema – A Postgres extension for JSON validation
@@ -50,7 +50,6 @@ The new hCpatcha integration allows you to implement captcha functionality for a
We've started updating our settings UI, starting with the Auth settings. You'll now see updated UI for setting up your Auth providers, Email templates and SMTP config. [Auth settings](https://app.supabase.com/project/_/auth/settings)
## Quick product announcements
-  Email OTP now supports 6-10 digits length. [PR](https://github.com/supabase/gotrue/pull/513)
@@ -77,30 +76,30 @@ Discover other projects: [Made with Supabase](https://www.madewithsupabase.com/
The Supabase community is exploding and we’ve reached a point where we can’t fit everything into our monthly newsletter so here’s the full list of community updates from July:
- Netlify announced a new webinar series, Web Ecosystem, and we get to be part of it. [Blog Post](https://www.netlify.com/blog/web-ecosystem-webinar-series/)
- Implementing "seen by" functionality with Postgres. [Blog Post](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql)
- Implementing "seen by" functionality with Postgres. [Blog Post](https://supabase.com/blog/seen-by-in-postgresql)
- Open Source Startup Podcast with our CEO Paul Copplestone. [Podcast](https://anchor.fm/ossstartuppodcast/episodes/E43-Building-Supabase--the-Open-Source-Firebase-Alternative-e1ld637)
- Scaleway listed 40+ of the best open-source tools to build your startup. [Blog Post](https://blog.scaleway.com/40-open-source-projects/)
- Sign-up form with OTP and auto login using Supabase and Arengu. [Guide](https://www.arengu.com/tutorials/sign-up-form-with-otp-and-auto-login-using-supabase)
- Setup Supabase with Nest.js. [Tutorial](https://blog.devgenius.io/setup-supabase-with-nest-js-85041b03ec3a)
- Loading SportsDB data into Supabase. [Tutorial](https://dev.to/supabase/auto-generated-documentation-in-supabase-5e8o)
- Introduction to Supabase: Postgres Database using Python. [Tutorial](https://www.analyticsvidhya.com/blog/2022/07/introduction-to-supabase-postgres-database-using-python/)
- Supabase and SWR to fetch data updates in realtime using React Hooks. [Tutorial](https://dev.to/jakobpotosme/supabase-swr-3icp)
- Protected routes using Next.js Edge Middleware & Supabase. [Tutorial](https://engineering.udacity.com/protected-routes-using-next-js-edge-middleware-supabase-f197ba7f503c)
- Supabase backend demo with Bravo Studio. [Video](https://www.youtube.com/watch?v=ZWQeAmbYFzg)
- Building a live demo with Supabase and AppSmith. [Video](https://www.youtube.com/watch?v=xmb4JrTYhZg)
- Auto-generated documentation in Supabase. [Tutorial](https://dev.to/supabase/auto-generated-documentation-in-supabase-5ecd)
- Speeding Up Bulk Loading in PostgreSQL. [Blog Post](https://dev.to/supabase/speeding-up-bulk-loading-in-postgresql-41g5)
- Installing React-Admin In A Remix App. [Tutorial](https://marmelab.com/blog/2022/07/01/add-react-admin-to-your-remix-app-using-supabase.html)
- How to set up Supabase in React? And Some Useful Tips. [Tutorial](https://dev.to/eminvergil/how-to-setup-supabase-in-react-and-some-useful-tips-40oc)
- My approach to authentication with Next.JS, Prisma & Supabase. [Guide](https://ktra99.hashnode.dev/my-approach-to-authentication-with-nextjs-prisma-supabase)
- Setup Supabase with Nest.js. [Tutorial](https://blog.devgenius.io/setup-supabase-with-nest-js-85041b03ec3a)
- Loading SportsDB data into Supabase. [Tutorial](https://dev.to/supabase/auto-generated-documentation-in-supabase-5e8o)
- Introduction to Supabase: Postgres Database using Python. [Tutorial](https://www.analyticsvidhya.com/blog/2022/07/introduction-to-supabase-postgres-database-using-python/)
- Supabase and SWR to fetch data updates in realtime using React Hooks. [Tutorial](https://dev.to/jakobpotosme/supabase-swr-3icp)
- Protected routes using Next.js Edge Middleware & Supabase. [Tutorial](https://engineering.udacity.com/protected-routes-using-next-js-edge-middleware-supabase-f197ba7f503c)
- Supabase backend demo with Bravo Studio. [Video](https://www.youtube.com/watch?v=ZWQeAmbYFzg)
- Building a live demo with Supabase and AppSmith. [Video](https://www.youtube.com/watch?v=xmb4JrTYhZg)
- Auto-generated documentation in Supabase. [Tutorial](https://dev.to/supabase/auto-generated-documentation-in-supabase-5ecd)
- Speeding Up Bulk Loading in PostgreSQL. [Blog Post](https://dev.to/supabase/speeding-up-bulk-loading-in-postgresql-41g5)
- Installing React-Admin In A Remix App. [Tutorial](https://marmelab.com/blog/2022/07/01/add-react-admin-to-your-remix-app-using-supabase.html)
- How to set up Supabase in React? And Some Useful Tips. [Tutorial](https://dev.to/eminvergil/how-to-setup-supabase-in-react-and-some-useful-tips-40oc)
- My approach to authentication with Next.JS, Prisma & Supabase. [Guide](https://ktra99.hashnode.dev/my-approach-to-authentication-with-nextjs-prisma-supabase)
## We’re hiring
Come join one of the fastest growing open source projects ever 🤗
-  [Customer Success (US time zone)](https://boards.greenhouse.io/supabase/jobs/4594393004)
-  [Go-To-Market Recruiter](https://boards.greenhouse.io/supabase/jobs/4561503004)
-  [View all our openings](https://boards.greenhouse.io/supabase)
- [Customer Success (US time zone)](https://boards.greenhouse.io/supabase/jobs/4594393004)
- [Go-To-Market Recruiter](https://boards.greenhouse.io/supabase/jobs/4561503004)
- [View all our openings](https://boards.greenhouse.io/supabase)
---
+14 -12
View File
@@ -47,20 +47,22 @@ async function generate() {
if (route === '/alternatives/[slug]') return null
if (route === '/partners/[slug]') return null
//
// blog specific urls
//
/**
* Blog based urls
*/
if (route.includes('/blog/')) {
// clean blog post route from string
/**
* remove directory from route
*/
const _route = route.replace('/blog/', '')
// splut the url
let split = _route.split('')
// target and replace the `-` between dates
split[4] = '/'
split[7] = '/'
split[10] = '/'
// reconstruct the url
route = '/blog/' + split.join('')
/**
* remove the date from the file name
*/
const substring = _route.substring(11)
/**
* reconsruct the route
*/
route = '/blog/' + substring
}
return `
+19 -8
View File
@@ -106,19 +106,30 @@ export const getAllPostSlugs = (directory: Directories) => {
return files
}
// Get Post based on Slug
export const getPostdata = async (slug: string, directory: string) => {
//Finding directory named "blog" from the current working directory of Node.
/**
* All files are mdx files
*/
const fileType = 'mdx'
slug = slug + '.' + fileType
/**
* Return full directory
*/
const postDirectory = path.join(process.cwd(), directory)
const folderfiles = fs.readdirSync(postDirectory)
console.log('postDirectory', postDirectory)
const fullPath = path.join(postDirectory, `${slug}.mdx`)
console.log('fullPath', fullPath)
/**
* Check if the file exists in the directory
* This should return 1 result
*
* this is so slugs like 'blog-post.mdx' will work
* even if the mdx file is date namednamed like '2022-01-01-blog-post.mdx'
*/
const found = folderfiles.filter((x) => x.includes(slug))[0]
const fullPath = path.join(postDirectory, found)
const postContent = fs.readFileSync(fullPath, 'utf8')
return postContent
}
+15 -4
View File
@@ -1,12 +1,21 @@
const generateRssItem = (post: any): string => `
<item>
const dayjs = require('dayjs')
var utc = require('dayjs/plugin/utc')
var advancedFormat = require('dayjs/plugin/advancedFormat')
dayjs.extend(utc)
dayjs.extend(advancedFormat)
const generateRssItem = (post: any): string => {
post.url = post.url.substring(11)
return `<item>
<guid>https://supabase.com/blog/${post.url}</guid>
<title>${post.title}</title>
<link>https://supabase.com/blog/${post.url}</link>
<description>${post.description}</description>
<pubDate>${new Date(post.date).toUTCString()}</pubDate>
<pubDate>${dayjs(post.date).utc().format('ddd, DD MMM YYYY HH:hh:mm')}</pubDate>
</item>
`
}
export const generateRss = (posts: any[]): string => {
return `
@@ -16,7 +25,9 @@ export const generateRss = (posts: any[]): string => {
<link>https://supabase.com</link>
<description>Latest news from Supabase</description>
<language>en</language>
<lastBuildDate>${new Date(posts[0].date).toUTCString()}</lastBuildDate>
<lastBuildDate>${dayjs(posts[0].date)
.utc()
.format('ddd, DD MMM YYYY HH:hh:mm')}</lastBuildDate>
<atom:link href="https://supabase.com/blog/rss.xml" rel="self" type="application/rss+xml"/>
${posts.map(generateRssItem).join('')}
</channel>
+531 -1
View File
@@ -701,13 +701,543 @@ module.exports = withMDX({
{
permanent: true,
source: '/blog/2022/06/15/blog/2022/06/29/visualizing-supabase-data-using-metabase',
destination: '/blog/2022/06/29/visualizing-supabase-data-using-metabase',
destination: '/blog/visualizing-supabase-data-using-metabase',
},
{
permanent: true,
source: '/_app',
destination: 'https://app.supabase.com',
},
{
permanent: true,
source: '/blog/2020/05/01/supabase-alpha-april-2020',
destination: 'blog/supabase-alpha-april-2020',
},
{
permanent: true,
source: '/blog/2020/06/01/supabase-alpha-may-2020',
destination: '/blog/supabase-alpha-may-2020',
},
{
permanent: true,
source: '/blog/2020/06/15/supabase-steve-chavez',
destination: '/blog/supabase-steve-chavez',
},
{
permanent: true,
source: '/blog/2020/07/01/supabase-alpha-june-2020',
destination: '/blog/supabase-alpha-june-2020',
},
{
permanent: true,
source: '/blog/2020/07/09/postgresql-templates',
destination: '/blog/postgresql-templates',
},
{
permanent: true,
source: '/blog/2020/07/10/alpha-launch-postmortem',
destination: '/blog/alpha-launch-postmortem',
},
{
permanent: true,
source: '/blog/2020/07/17/postgresql-physical-logical-backups',
destination: '/blog/postgresql-physical-logical-backups',
},
{
permanent: true,
source: '/blog/2020/08/02/continuous-postgresql-backup-walg',
destination: '/blog/continuous-postgresql-backup-walg',
},
{
permanent: true,
source: '/blog/2020/08/02/supabase-alpha-july-2020',
destination: '/blog/supabase-alpha-july-2020',
},
{
permanent: true,
source: '/blog/2020/08/05/supabase-auth',
destination: '/blog/supabase-auth',
},
{
permanent: true,
source: '/blog/2020/09/03/supabase-alpha-august-2020',
destination: '/blog/supabase-alpha-august-2020',
},
{
permanent: true,
source: '/blog/2020/09/11/supabase-hacktoberfest-2020',
destination: '/blog/supabase-hacktoberfest-2020',
},
{
permanent: true,
source: '/blog/2020/10/03/supabase-alpha-september-2020',
destination: '/blog/supabase-alpha-september-2020',
},
{
permanent: true,
source: '/blog/2020/10/30/improved-dx',
destination: '/blog/improved-dx',
},
{
permanent: true,
source: '/blog/2020/11/02/supabase-alpha-october-2020',
destination: '/blog/supabase-alpha-october-2020',
},
{
permanent: true,
source: '/blog/2020/11/18/postgresql-views',
destination: '/blog/postgresql-views',
},
{
permanent: true,
source: '/blog/2020/12/01/supabase-alpha-november-2020',
destination: '/blog/supabase-alpha-november-2020',
},
{
permanent: true,
source: '/blog/2020/12/02/case-study-monitoro',
destination: '/blog/case-study-monitoro',
},
{
permanent: true,
source: '/blog/2020/12/02/case-study-tayfa',
destination: '/blog/case-study-tayfa',
},
{
permanent: true,
source: '/blog/2020/12/02/case-study-xendit',
destination: '/blog/case-study-xendit',
},
{
permanent: true,
source: '/blog/2020/12/02/supabase-striveschool',
destination: '/blog/supabase-striveschool',
},
{
permanent: true,
source: '/blog/2020/12/13/supabase-dashboard-performance',
destination: '/blog/supabase-dashboard-performance',
},
{
permanent: true,
source: '/blog/2021/01/02/supabase-beta-december-2020',
destination: '/blog/supabase-beta-december-2020',
},
{
permanent: true,
source: '/blog/2021/02/02/supabase-beta-january-2021',
destination: '/blog/supabase-beta-january-2021',
},
{
permanent: true,
source: '/blog/2021/02/09/case-study-roboflow',
destination: '/blog/case-study-roboflow',
},
{
permanent: true,
source: '/blog/2021/02/27/cracking-postgres-interview',
destination: '/blog/cracking-postgres-interview',
},
{
permanent: true,
source: '/blog/2021/03/02/supabase-beta-february-2021',
destination: '/blog/supabase-beta-february-2021',
},
{
permanent: true,
source: '/blog/2021/03/05/postgres-as-a-cron-server',
destination: '/blog/postgres-as-a-cron-server',
},
{
permanent: true,
source: '/blog/2021/03/08/toad-a-link-shortener-with-simple-apis-for-low-coders',
destination: '/blog/toad-a-link-shortener-with-simple-apis-for-low-coders',
},
{
permanent: true,
source: '/blog/2021/03/11/using-supabase-replit',
destination: '/blog/using-supabase-replit',
},
{
permanent: true,
source: '/blog/2021/03/22/In-The-Loop',
destination: '/blog/in-the-loop',
},
{
permanent: true,
source: '/blog/2021/03/25/angels-of-supabase',
destination: '/blog/angels-of-supabase',
},
{
permanent: true,
source: '/blog/2021/03/25/launch-week',
destination: '/blog/launch-week',
},
{
permanent: true,
source: '/blog/2021/03/29/pricing',
destination: '/blog/pricing',
},
{
permanent: true,
source: '/blog/2021/03/30/supabase-storage',
destination: '/blog/supabase-storage',
},
{
permanent: true,
source: '/blog/2021/03/31/supabase-cli',
destination: '/blog/supabase-cli',
},
{
permanent: true,
source: '/blog/2021/04/01/supabase-nft-marketplace',
destination: '/blog/supabase-nft-marketplace',
},
{
permanent: true,
source: '/blog/2021/04/02/supabase-dot-com',
destination: '/blog/supabase-dot-com',
},
{
permanent: true,
source: '/blog/2021/04/02/supabase-pgbouncer',
destination: '/blog/supabase-pgbouncer',
},
{
permanent: true,
source: '/blog/2021/04/02/supabase-workflows',
destination: '/blog/supabase-workflows',
},
{
permanent: true,
source: '/blog/2021/04/06/supabase-beta-march-2021',
destination: '/blog/supabase-beta-march-2021',
},
{
permanent: true,
source: '/blog/2021/05/03/supabase-beta-april-2021',
destination: '/blog/supabase-beta-april-2021',
},
{
permanent: true,
source: '/blog/2021/06/02/supabase-beta-may-2021',
destination: '/blog/supabase-beta-may-2021',
},
{
permanent: true,
source: '/blog/2021/07/01/roles-postgres-hooks',
destination: '/blog/roles-postgres-hooks',
},
{
permanent: true,
source: '/blog/supabase-beta-june-2021',
destination: '/blog/2021/07/02/supabase-beta-june-2021',
},
{
permanent: true,
source: '/blog/2021/07/22/supabase-launch-week-sql',
destination: '/blog/supabase-launch-week-sql',
},
{
permanent: true,
source: '/blog/2021/07/26/epsilon3-self-hosting',
destination: '/blog/epsilon3-self-hosting',
},
{
permanent: true,
source: '/blog/2021/07/26/supabase-community-day',
destination: '/blog/supabase-community-day',
},
{
permanent: true,
source: '/blog/2021/07/26/supabase-postgres-13',
destination: '/blog/supabase-postgres-13',
},
{
permanent: true,
source: '/blog/2021/07/27/spot-flutter-with-postgres',
destination: '/blog/spot-flutter-with-postgres',
},
{
permanent: true,
source: '/blog/2021/07/27/storage-beta',
destination: '/blog/storage-beta',
},
{
permanent: true,
source: '/blog/2021/07/28/mobbin-supabase-200000-users',
destination: '/blog/mobbin-supabase-200000-users',
},
{
permanent: true,
source: '/blog/2021/07/28/supabase-auth-passwordless-sms-login',
destination: '/blog/supabase-auth-passwordless-sms-login',
},
{
permanent: true,
source: '/blog/2021/07/29/supabase-reports-and-metrics',
destination: '/blog/supabase-reports-and-metrics',
},
{
permanent: true,
source: '/blog/2021/07/30/1-the-supabase-hackathon',
destination: '/blog/the-supabase-hackathon',
},
{
permanent: true,
source: '/blog/2021/07/30/supabase-functions-updates',
destination: '/blog/supabase-functions-updates',
},
{
permanent: true,
source: '/blog/2021/07/30/supabase-swag-store',
destination: '/blog/supabase-swag-store',
},
{
permanent: true,
source: '/blog/2021/08/09/hackathon-winners',
destination: '/blog/hackathon-winners',
},
{
permanent: true,
source: '/blog/2021/08/12/supabase-beta-july-2021',
destination: '/blog/supabase-beta-july-2021',
},
{
permanent: true,
source: '/blog/2021/09/10/supabase-beta-august-2021',
destination: '/blog/supabase-beta-august-2021',
},
{
permanent: true,
source: '/blog/2021/09/28/supabase-hacktoberfest-hackathon-2021',
destination: '/blog/supabase-hacktoberfest-hackathon-2021',
},
{
permanent: true,
source: '/blog/2021/10/04/supabase-beta-sept-2021',
destination: '/blog/supabase-beta-sept-2021',
},
{
permanent: true,
source: '/blog/2021/10/14/hacktoberfest-hackathon-winners-2021',
destination: '/blog/hacktoberfest-hackathon-winners-2021',
},
{
permanent: true,
source: '/blog/2021/10/19/replenysh-time-to-value-in-less-than-24-hours',
destination: '/blog/replenysh-time-to-value-in-less-than-24-hours',
},
{
permanent: true,
source: '/blog/2021/10/28/supabase-series-a',
destination: '/blog/supabase-series-a',
},
{
permanent: true,
source: '/blog/2021/11/05/supabase-beta-october-2021',
destination: '/blog/supabase-beta-october-2021',
},
{
permanent: true,
source: '/blog/2021/11/26/supabase-how-we-launch',
destination: '/blog/supabase-how-we-launch',
},
{
permanent: true,
source: '/blog/2021/11/26/supabase-launch-week-the-trilogy',
destination: '/blog/supabase-launch-week-the-trilogy',
},
{
permanent: true,
source: '/blog/2021/11/28/postgrest-9',
destination: '/blog/postgrest-9',
},
{
permanent: true,
source: '/blog/2021/11/28/whats-new-in-postgres-14',
destination: '/blog/whats-new-in-postgres-14',
},
{
permanent: true,
source: '/blog/2021/11/29/community-day',
destination: '/blog/community-day',
},
{
permanent: true,
source: '/blog/2021/11/30/supabase-studio',
destination: '/blog/supabase-studio',
},
{
permanent: true,
source: '/blog/2021/12/01/realtime-row-level-security-in-postgresql',
destination: '/blog/realtime-row-level-security-in-postgresql',
},
{
permanent: true,
source: '/blog/2021/12/02/supabase-acquires-logflare',
destination: '/blog/supabase-acquires-logflare',
},
{
permanent: true,
source: '/blog/2021/12/03/launch-week-three-friday-five-more-things',
destination: '/blog/launch-week-three-friday-five-more-things',
},
{
permanent: true,
source: '/blog/2021/12/03/pg-graphql',
destination: '/blog/pg-graphql',
},
{
permanent: true,
source: '/blog/2021/12/03/supabase-holiday-hackdays-hackathon',
destination: '/blog/supabase-holiday-hackdays-hackathon',
},
{
permanent: true,
source: '/blog/2021/12/15/beta-november-2021-launch-week-recap',
destination: '/blog/beta-november-2021-launch-week-recap',
},
{
permanent: true,
source: '/blog/2021/12/17/holiday-hackdays-winners-2021',
destination: '/blog/holiday-hackdays-winners-2021',
},
{
permanent: true,
source: '/blog/2022/01/20/product-hunt-golden-kitty-awards-2021',
destination: '/blog/product-hunt-golden-kitty-awards-2021',
},
{
permanent: true,
source: '/blog/2022/01/20/supabase-beta-december-2021',
destination: '/blog/supabase-beta-december-2021',
},
{
permanent: true,
source: '/blog/2022/02/22/supabase-beta-january-2022',
destination: '/blog/supabase-beta-january-2022',
},
{
permanent: true,
source: '/blog/2022/03/08/audit',
destination: '/blog/postgres-audit',
},
{
permanent: true,
source: '/blog/2022/03/25/should-i-open-source-my-company',
destination: '/blog/should-i-open-source-my-company',
},
{
permanent: true,
source: '/blog/2022/03/25/supabase-launch-week-four',
destination: '/blog/supabase-launch-week-four',
},
{
permanent: true,
source: '/blog/2022/03/28/community-day',
destination: '/blog/community-day',
},
{
permanent: true,
source: '/blog/2022/03/29/graphql-now-available',
destination: '/blog/graphql-now-available',
},
{
permanent: true,
source: '/blog/2022/03/30/supabase-enterprise',
destination: '/blog/supabase-enterprise',
},
{
permanent: true,
source: '/blog/2022/03/31/supabase-edge-functions',
destination: '/blog/supabase-edge-functions',
},
{
permanent: true,
source: '/blog/2022/04/01/hackathon-bring-the-func',
destination: '/blog/hackathon-bring-the-func',
},
{
permanent: true,
source: '/blog/2022/04/01/supabase-realtime-with-multiplayer-features',
destination: '/blog/supabase-realtime-with-multiplayer-features',
},
{
permanent: true,
source: '/blog/2022/04/01/supabrew',
destination: '/blog/supabrew',
},
{
permanent: true,
source: '/blog/2022/04/15/beta-update-march-2022',
destination: '/blog/beta-update-march-2022',
},
{
permanent: true,
source: '/blog/2022/04/18/bring-the-func-hackathon-winners',
destination: '/blog/bring-the-func-hackathon-winners',
},
{
permanent: true,
source: '/blog/2022/04/20/partner-gallery-works-with-supabase',
destination: '/blog/partner-gallery-works-with-supabase',
},
{
permanent: true,
source: '/blog/2022/05/26/how-supabase-accelerates-development-of-all-pull-together',
destination: '/blog/how-supabase-accelerates-development-of-all-pull-together',
},
{
permanent: true,
source: '/blog/2022/06/07/beta-update-may-2022',
destination: '/blog/beta-update-may-2022',
},
{
permanent: true,
source: '/blog/2022/06/15/loading-data-supabase-python',
destination: '/blog/loading-data-supabase-python',
},
{
permanent: true,
source: '/blog/2022/06/28/partial-postgresql-data-dumps-with-rls',
destination: '/blog/partial-postgresql-data-dumps-with-rls',
},
{
permanent: true,
source: '/blog/2022/06/29/visualizing-supabase-data-using-metabase',
destination: '/blog/visualizing-supabase-data-using-metabase',
},
{
permanent: true,
source: '/blog/2022/06/30/flutter-tutorial-building-a-chat-app',
destination: '/blog/flutter-tutorial-building-a-chat-app',
},
{
permanent: true,
source: '/blog/2022/07/05/beta-update-june-2022',
destination: '/blog/beta-update-june-2022',
},
{
permanent: true,
source: '/blog/2022/07/13/supabase-auth-helpers-with-sveltekit-support',
destination: '/blog/supabase-auth-helpers-with-sveltekit-support',
},
{
permanent: true,
source: '/blog/2022/07/18/seen-by-in-postgresql',
destination: '/blog/seen-by-in-postgresql',
},
{
permanent: true,
source: '/blog/2022/08/02/supabase-flutter-sdk-1-developer-preview',
destination: '/blog/supabase-flutter-sdk-1-developer-preview',
},
{
permanent: true,
source: '/blog/2022/08/03/supabase-beta-update-july-2022',
destination: '/blog/supabase-beta-update-july-2022',
},
]
},
})
+1
View File
@@ -21,6 +21,7 @@
"@supabase/ui": "v0.37.0-alpha.50",
"classnames": "^2.3.1",
"date-fns": "2.10.0",
"dayjs": "^1.11.4",
"globby": "^12.0.2",
"gray-matter": "^4.0.2",
"markdown-toc": "^1.2.0",
@@ -17,7 +17,6 @@ import Avatar from '~/components/Avatar'
import ImageGrid from '~/components/ImageGrid'
import { generateReadingTime } from '~/lib/helpers'
import { getAllPostSlugs, getPostdata, getSortedPosts } from '~/lib/posts'
import blogStyles from './[slug].module.css'
// import all components used in blog articles here
// for instance, if you use a button, you must add `Button` in the components object below.
@@ -61,7 +60,7 @@ export async function getStaticPaths() {
}
export async function getStaticProps({ params }: any) {
const filePath = `${params.year}-${params.month}-${params.day}-${params.slug}`
const filePath = `${params.slug}`
const postContent = await getPostdata(filePath, '_blog')
const { data, content } = matter(postContent)
@@ -157,7 +156,7 @@ function BlogPostPage(props: any) {
<div>
<p className="text-scale-1200">On this page</p>
<div>
<div className={[blogStyles['toc'], 'prose prose-toc'].join(' ')}>
<div className={['prose prose-toc'].join(' ')}>
<ReactMarkdown plugins={[gfm]}>{props.blog.toc.content}</ReactMarkdown>
</div>
</div>
@@ -274,9 +273,7 @@ function BlogPostPage(props: any) {
/>
</div>
)}
<article className={[blogStyles['article'], 'prose prose-docs'].join(' ')}>
{content}
</article>
<article className={['prose prose-docs'].join(' ')}>{content}</article>
<div className="py-16">
<div className="text-scale-900 dark:text-scale-1000 text-sm">
Share this article
+320 -426
View File
File diff suppressed because it is too large. Load diff
+162 -100
View File
@@ -54,6 +54,12 @@
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/database</loc>
<changefreq>weekly</changefreq>
@@ -66,6 +72,12 @@
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/nextjs/Nextjs</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/storage</loc>
<changefreq>weekly</changefreq>
@@ -73,581 +85,631 @@
</url>
<url>
<loc>https://supabase.com/blog/2020/05/01/supabase-alpha-april-2020</loc>
<loc>https://supabase.com/blog/supabase-alpha-april-2020</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/06/01/supabase-alpha-may-2020</loc>
<loc>https://supabase.com/blog/supabase-alpha-may-2020</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/06/15/supabase-steve-chavez</loc>
<loc>https://supabase.com/blog/supabase-steve-chavez</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/07/01/supabase-alpha-june-2020</loc>
<loc>https://supabase.com/blog/supabase-alpha-june-2020</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/07/09/postgresql-templates</loc>
<loc>https://supabase.com/blog/postgresql-templates</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/07/10/alpha-launch-postmortem</loc>
<loc>https://supabase.com/blog/alpha-launch-postmortem</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/07/17/postgresql-physical-logical-backups</loc>
<loc>https://supabase.com/blog/postgresql-physical-logical-backups</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/08/02/continuous-postgresql-backup-walg</loc>
<loc>https://supabase.com/blog/continuous-postgresql-backup-walg</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/08/02/supabase-alpha-july-2020</loc>
<loc>https://supabase.com/blog/supabase-alpha-july-2020</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/08/05/supabase-auth</loc>
<loc>https://supabase.com/blog/supabase-auth</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/09/03/supabase-alpha-august-2020</loc>
<loc>https://supabase.com/blog/supabase-alpha-august-2020</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/09/11/supabase-hacktoberfest-2020</loc>
<loc>https://supabase.com/blog/supabase-hacktoberfest-2020</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/10/03/supabase-alpha-september-2020</loc>
<loc>https://supabase.com/blog/supabase-alpha-september-2020</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/10/30/improved-dx</loc>
<loc>https://supabase.com/blog/improved-dx</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/11/02/supabase-alpha-october-2020</loc>
<loc>https://supabase.com/blog/supabase-alpha-october-2020</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/11/18/postgresql-views</loc>
<loc>https://supabase.com/blog/postgresql-views</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/12/01/supabase-alpha-november-2020</loc>
<loc>https://supabase.com/blog/supabase-alpha-november-2020</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/12/02/case-study-monitoro</loc>
<loc>https://supabase.com/blog/case-study-monitoro</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/12/02/case-study-tayfa</loc>
<loc>https://supabase.com/blog/case-study-tayfa</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/12/02/case-study-xendit</loc>
<loc>https://supabase.com/blog/case-study-xendit</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/12/02/supabase-striveschool</loc>
<loc>https://supabase.com/blog/supabase-striveschool</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2020/12/13/supabase-dashboard-performance</loc>
<loc>https://supabase.com/blog/supabase-dashboard-performance</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/01/02/supabase-beta-december-2020</loc>
<loc>https://supabase.com/blog/supabase-beta-december-2020</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/02/02/supabase-beta-january-2021</loc>
<loc>https://supabase.com/blog/supabase-beta-january-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/02/09/case-study-roboflow</loc>
<loc>https://supabase.com/blog/case-study-roboflow</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/02/27/cracking-postgres-interview</loc>
<loc>https://supabase.com/blog/cracking-postgres-interview</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/03/02/supabase-beta-february-2021</loc>
<loc>https://supabase.com/blog/supabase-beta-february-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/03/05/postgres-as-a-cron-server</loc>
<loc>https://supabase.com/blog/postgres-as-a-cron-server</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc
>https://supabase.com/blog/2021/03/08/toad-a-link-shortener-with-simple-apis-for-low-coders</loc
>
<loc>https://supabase.com/blog/toad-a-link-shortener-with-simple-apis-for-low-coders</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/03/11/using-supabase-replit</loc>
<loc>https://supabase.com/blog/using-supabase-replit</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/03/22/In-The-Loop</loc>
<loc>https://supabase.com/blog/In-The-Loop</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/03/25/angels-of-supabase</loc>
<loc>https://supabase.com/blog/angels-of-supabase</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/03/25/launch-week</loc>
<loc>https://supabase.com/blog/launch-week</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/03/29/pricing</loc>
<loc>https://supabase.com/blog/pricing</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/03/30/supabase-storage</loc>
<loc>https://supabase.com/blog/supabase-storage</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/03/31/supabase-cli</loc>
<loc>https://supabase.com/blog/supabase-cli</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/04/01/supabase-nft-marketplace</loc>
<loc>https://supabase.com/blog/supabase-nft-marketplace</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/04/02/supabase-dot-com</loc>
<loc>https://supabase.com/blog/supabase-dot-com</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/04/02/supabase-pgbouncer</loc>
<loc>https://supabase.com/blog/supabase-pgbouncer</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/04/02/supabase-workflows</loc>
<loc>https://supabase.com/blog/supabase-workflows</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/04/06/supabase-beta-march-2021</loc>
<loc>https://supabase.com/blog/supabase-beta-march-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/05/03/supabase-beta-april-2021</loc>
<loc>https://supabase.com/blog/supabase-beta-april-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/06/02/supabase-beta-may-2021</loc>
<loc>https://supabase.com/blog/supabase-beta-may-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/01/roles-postgres-hooks</loc>
<loc>https://supabase.com/blog/roles-postgres-hooks</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/02/supabase-beta-june-2021</loc>
<loc>https://supabase.com/blog/supabase-beta-june-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/22/supabase-launch-week-sql</loc>
<loc>https://supabase.com/blog/supabase-launch-week-sql</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/26/epsilon3-self-hosting</loc>
<loc>https://supabase.com/blog/epsilon3-self-hosting</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/26/supabase-community-day</loc>
<loc>https://supabase.com/blog/supabase-community-day</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/26/supabase-postgres-13</loc>
<loc>https://supabase.com/blog/supabase-postgres-13</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/27/spot-flutter-with-postgres</loc>
<loc>https://supabase.com/blog/spot-flutter-with-postgres</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/27/storage-beta</loc>
<loc>https://supabase.com/blog/storage-beta</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/28/mobbin-supabase-200000-users</loc>
<loc>https://supabase.com/blog/mobbin-supabase-200000-users</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/28/supabase-auth-passwordless-sms-login</loc>
<loc>https://supabase.com/blog/supabase-auth-passwordless-sms-login</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/29/supabase-reports-and-metrics</loc>
<loc>https://supabase.com/blog/supabase-reports-and-metrics</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/30/1-the-supabase-hackathon</loc>
<loc>https://supabase.com/blog/1-the-supabase-hackathon</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/30/supabase-functions-updates</loc>
<loc>https://supabase.com/blog/supabase-functions-updates</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/07/30/supabase-swag-store</loc>
<loc>https://supabase.com/blog/supabase-swag-store</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/08/09/hackathon-winners</loc>
<loc>https://supabase.com/blog/hackathon-winners</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/08/12/supabase-beta-july-2021</loc>
<loc>https://supabase.com/blog/supabase-beta-july-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/09/10/supabase-beta-august-2021</loc>
<loc>https://supabase.com/blog/supabase-beta-august-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/09/28/supabase-hacktoberfest-hackathon-2021</loc>
<loc>https://supabase.com/blog/supabase-hacktoberfest-hackathon-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/10/04/supabase-beta-sept-2021</loc>
<loc>https://supabase.com/blog/supabase-beta-sept-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/10/14/hacktoberfest-hackathon-winners-2021</loc>
<loc>https://supabase.com/blog/hacktoberfest-hackathon-winners-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/10/19/replenysh-time-to-value-in-less-than-24-hours</loc>
<loc>https://supabase.com/blog/replenysh-time-to-value-in-less-than-24-hours</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/10/28/supabase-series-a</loc>
<loc>https://supabase.com/blog/supabase-series-a</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/11/05/supabase-beta-october-2021</loc>
<loc>https://supabase.com/blog/supabase-beta-october-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/11/26/supabase-how-we-launch</loc>
<loc>https://supabase.com/blog/supabase-how-we-launch</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/11/26/supabase-launch-week-the-trilogy</loc>
<loc>https://supabase.com/blog/supabase-launch-week-the-trilogy</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/11/28/postgrest-9</loc>
<loc>https://supabase.com/blog/postgrest-9</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/11/28/whats-new-in-postgres-14</loc>
<loc>https://supabase.com/blog/whats-new-in-postgres-14</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/11/29/community-day</loc>
<loc>https://supabase.com/blog/community-day</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/11/30/supabase-studio</loc>
<loc>https://supabase.com/blog/supabase-studio</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql</loc>
<loc>https://supabase.com/blog/realtime-row-level-security-in-postgresql</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/12/02/supabase-acquires-logflare</loc>
<loc>https://supabase.com/blog/supabase-acquires-logflare</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/12/03/launch-week-three-friday-five-more-things</loc>
<loc>https://supabase.com/blog/launch-week-three-friday-five-more-things</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/12/03/pg-graphql</loc>
<loc>https://supabase.com/blog/pg-graphql</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/12/03/supabase-holiday-hackdays-hackathon</loc>
<loc>https://supabase.com/blog/supabase-holiday-hackdays-hackathon</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/12/15/beta-november-2021-launch-week-recap</loc>
<loc>https://supabase.com/blog/beta-november-2021-launch-week-recap</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2021/12/17/holiday-hackdays-winners-2021</loc>
<loc>https://supabase.com/blog/holiday-hackdays-winners-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/01/20/product-hunt-golden-kitty-awards-2021</loc>
<loc>https://supabase.com/blog/product-hunt-golden-kitty-awards-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/01/20/supabase-beta-december-2021</loc>
<loc>https://supabase.com/blog/supabase-beta-december-2021</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/02/22/supabase-beta-january-2022</loc>
<loc>https://supabase.com/blog/supabase-beta-january-2022</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/03/08/audit</loc>
<loc>https://supabase.com/blog/audit</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/03/25/should-i-open-source-my-company</loc>
<loc>https://supabase.com/blog/should-i-open-source-my-company</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/03/25/supabase-launch-week-four</loc>
<loc>https://supabase.com/blog/supabase-launch-week-four</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/03/28/community-day</loc>
<loc>https://supabase.com/blog/community-day</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/03/29/graphql-now-available</loc>
<loc>https://supabase.com/blog/graphql-now-available</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/03/30/supabase-enterprise</loc>
<loc>https://supabase.com/blog/supabase-enterprise</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/03/31/supabase-edge-functions</loc>
<loc>https://supabase.com/blog/supabase-edge-functions</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/04/01/hackathon-bring-the-func</loc>
<loc>https://supabase.com/blog/hackathon-bring-the-func</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/04/01/supabase-realtime-with-multiplayer-features</loc>
<loc>https://supabase.com/blog/supabase-realtime-with-multiplayer-features</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/04/01/supabrew</loc>
<loc>https://supabase.com/blog/supabrew</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/04/15/beta-update-march-2022</loc>
<loc>https://supabase.com/blog/beta-update-march-2022</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/04/18/bring-the-func-hackathon-winners</loc>
<loc>https://supabase.com/blog/bring-the-func-hackathon-winners</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/2022/04/20/partner-gallery-works-with-supabase</loc>
<loc>https://supabase.com/blog/partner-gallery-works-with-supabase</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc
>https://supabase.com/blog/2022/05/26/how-supabase-accelerates-development-of-all-pull-together</loc
>
<loc>https://supabase.com/blog/how-supabase-accelerates-development-of-all-pull-together</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/beta-update-may-2022</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/loading-data-supabase-python</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/partial-postgresql-data-dumps-with-rls</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/visualizing-supabase-data-using-metabase</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/flutter-tutorial-building-a-chat-app</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/beta-update-june-2022</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/supabase-auth-helpers-with-sveltekit-support</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/seen-by-in-postgresql</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
<url>
<loc>https://supabase.com/blog/supabase-flutter-sdk-1-developer-preview</loc>
<changefreq>weekly</changefreq>
<changefreq>0.5</changefreq>
</url>
+916 -310
View File
File diff suppressed because it is too large. Load diff