diff --git a/apps/www/_blog/2022-06-28-partial-postgresql-data-dumps-with-rls.mdx b/apps/www/_blog/2022-06-28-partial-postgresql-data-dumps-with-rls.mdx new file mode 100644 index 00000000000..cb5b3f7b262 --- /dev/null +++ b/apps/www/_blog/2022-06-28-partial-postgresql-data-dumps-with-rls.mdx @@ -0,0 +1,178 @@ +--- +title: Partial data dumps using Postgres Row Level Security +description: Using RLS to dump only a subset of your database. +author: paul_copplestone +image: python-1/python.jpg +thumb: python-1/python.jpg +tags: + - postgresql + - data +date: '2022-06-28' +toc_depth: 3 +--- + +When working with databases, it's common to create a `seed.sql` file which contains a subset of production data for testing. + +During early development, it's fine to dump the entire database and restore it on your development machine. +However, once you have production users this becomes a security issue - do you really want to dump your users' data onto your local machines? + +There are many ways to solve this, but recently I stumbled upon a neat way to do it using PostgreSQL's Row Level Security (RLS). + +The concept is simple: + +1. Create a database user with restricted access. +2. Define some RLS rules for that user, limiting what data they can access. +3. Run `pg_dump` as that user. + +For this scenario, let's imagine that you have a table called `profiles` in your database: + +```sql hideCopy + +create table profiles ( + id serial primary key, + name text, + email text +); +``` + +| `id` | `name` | `email` | +| ---- | ------------ | ------------------------ | +| `1` | `Employee 1` | `employee1@supabase.com` | +| `2` | `Employee 2` | `employee2@supabase.com` | +| `3` | `Employee 3` | `employee3@supabase.com` | +| `4` | `Jenny` | `jenny@example.com` | +| `5` | `Joe` | `joe@example.com` | + +In this case, if we ran a `pg_dump` we will save Jenny and Joe's personal data. We don't want that, so let's create a Postgres user called `exporter`, who can only dump the data we want. + +### Step 1: Prepare a user + +Create a user to connect to the database. We'll call them `exporter` and grant them access to the public schema: + +```sql hideCopy +-- Create a new user with login privileges +create user exporter + with password 'exporter_secure_password'; + +-- Allow this user to select the rows we need +grant usage on schema public to exporter; +grant select on profiles to exporter; +``` + +### Step 2: Create data access rules + +Let's turn on RLS for this table and limit the data which `exporter` can access: + +```sql hideCopy +-- Turn on Row Level Security +alter table profiles + enable row level security; + +-- Only dump data for internal team members 1, 2, 3 +create policy "Data dump rule" on profiles + for select + to exporter + using ( + id in (1, 2, 3) + ); +``` + +### Step 3: Export the data + +Now we can use `pg_dump` to get only the data that we need. + +Run the dump with the `exporter` user that we created above and use the `--enable-row-security` flag to ensure that the dump succeeds. + +```bash hideCopy + +# Dump all the data into a "seed.sql" file +# which we can use to restore our local databases. +pg_dump \ +-h db.host.supabase.co \ +-U exporter \ +-d postgres \ +-n public \ +--data-only \ +--enable-row-security \ +--table=profiles \ +> seed.sql +``` + +And that's it. You can follow this same pattern for any tables that you want to dump. + +## Data access patterns + +RLS is a bit like appending a “where” clause to a `select`, so you can create all sorts of data access patterns. Let's see a few more which are useful for extracting seed data. + +### Using email rules + +Instead of using hardcoded numbers in our RLS policies, we could use email extensions to determine the users who we want to export: + +```sql hideCopy +-- Only dump data for supabase employees +create policy "Data dump rule" on profiles + for select + to exporter + using ( + substring(email from '@(.*)$') = 'supabase.com' + ); + +``` + +### Only recent data + +If we have a table with a lot of data, like an `analytics` table, we might only care about the last 2 months of data. + +```sql hideCopy +-- A fake analytics table where we store actions a user takes +create table analytics ( + id serial primary key, + ts timestamptz default now(), + profile_id references profiles, + event text +); +alter table profiles + enable row level security; + +-- Here is an "age" rule so that we only dump the most recent analytics +create policy "Data dump rule" on logs + for select + to exporter + using ( + profile_id in (1, 2, 3) and + ts > now() - interval '2 MONTHS' -- here's the magic + ); +``` + +### Using flags + +If you don't mind having some additional columns in you database, you can add flags to each row to determine whether it's safe to export. + +```sql hideCopy +create table profiles ( + id serial primary key, + name text, + email text, + is_exportable boolean -- make this "TRUE" if you want to allow access +); +alter table profiles + enable row level security; + +-- Only dump data for internal team members 1, 2, 3 +create policy "Data dump rule" on profiles + for select + to exporter + using ( is_exportable = true ); + +``` + +## Conclusion + +Using `seed` data isn't the only way to run development environments. It's also possible to run fully-masked copies of your database using tools like +[Snaplet](https://docs.snaplet.dev/tutorials/supabase-clone-environments). + +We're also bullish on copy-on-write strategies which allow users to "fork" a database at a point in time, +a strategy used by [Database Lab Engine](https://postgres.ai/docs/database-lab). +DLE uses the ZFS file system to achieve this, but it's within reach of the Postgres core once alternative storage strategies become easier to implement. + +If you want to try out the steps we described in this article, fire up a full PostgreSQL database: [database.new](https://database.new) diff --git a/apps/www/public/rss.xml b/apps/www/public/rss.xml index e0d100e0b62..de3ce4efc85 100644 --- a/apps/www/public/rss.xml +++ b/apps/www/public/rss.xml @@ -5,15 +5,23 @@ https://supabase.com Latest news from Supabase en - Wed, 22 Jun 2022 00:00:00 GMT + Mon, 27 Jun 2022 05:00:00 GMT + + https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls + Partial data dumps using Postgres Row Level Security + https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls + An example of how to load data into Supabase using supabase-py + Mon, 27 Jun 2022 05:00:00 GMT + + https://supabase.com/blog/2022/06/15/loading-data-supabase-python Python data loading with Supabase https://supabase.com/blog/2022/06/15/loading-data-supabase-python An example of how to load data into Supabase using supabase-py - Fri, 17 Jun 2022 00:00:00 GMT + Thu, 16 Jun 2022 05:00:00 GMT @@ -21,7 +29,7 @@ Supabase Beta May 2022 https://supabase.com/blog/2022/06/07/beta-update-may-2022 Product and community updates including wildcard auth redirects, edge functions with webhooks, and Prometheus endpoints for everybody. - Wed, 01 Jun 2022 00:00:00 GMT + Tue, 31 May 2022 05:00:00 GMT @@ -29,7 +37,7 @@ How Mike Lyndon is using Supabase to accelerate development of AllPullTogether https://supabase.com/blog/2022/05/26/how-supabase-accelerates-development-of-all-pull-together Mike Lyndon is learning web development as he builds AllPullTogether, and Supabase is helping him accelerate what he can accomplish. - Thu, 26 May 2022 00:00:00 GMT + Wed, 25 May 2022 05:00:00 GMT @@ -37,7 +45,7 @@ Works With Supabase - announcing our Partner Gallery https://supabase.com/blog/2022/04/20/partner-gallery-works-with-supabase Introducing our Partner Gallery - open source and made with Supabase. - Wed, 20 Apr 2022 00:00:00 GMT + Tue, 19 Apr 2022 05:00:00 GMT @@ -45,7 +53,7 @@ Bring the Func Hackathon Winners 2022 https://supabase.com/blog/2022/04/18/bring-the-func-hackathon-winners Celebrating many amazing OSS Hackathon projects using GraphQL and Edge Functions. - Mon, 18 Apr 2022 00:00:00 GMT + Sun, 17 Apr 2022 05:00:00 GMT @@ -53,7 +61,7 @@ Supabase Beta March 2022 https://supabase.com/blog/2022/04/15/beta-update-march-2022 Functions, GraphQL, and much more. - Fri, 15 Apr 2022 00:00:00 GMT + Thu, 14 Apr 2022 05:00:00 GMT @@ -61,7 +69,7 @@ Supabrew - Never Code Thirsty https://supabase.com/blog/2022/04/01/supabrew A light and refreshing non-alcoholic beer for devs. - Fri, 01 Apr 2022 00:00:00 GMT + Fri, 01 Apr 2022 05:00:00 GMT @@ -69,7 +77,7 @@ Supabase Realtime, with Multiplayer Features https://supabase.com/blog/2022/04/01/supabase-realtime-with-multiplayer-features Today we're announced Realtime, with multiplayer features. Realtime enables broadcast, presence, and listening to database changes delivered over WebSockets. - Fri, 01 Apr 2022 00:00:00 GMT + Fri, 01 Apr 2022 05:00:00 GMT @@ -77,7 +85,7 @@ Hackathon: Bring the Func(🕺) https://supabase.com/blog/2022/04/01/hackathon-bring-the-func Build open-source projects with our latest features, win limited edition swag and plant a tree! - Fri, 01 Apr 2022 00:00:00 GMT + Fri, 01 Apr 2022 05:00:00 GMT @@ -85,7 +93,7 @@ Edge Functions are now available in Supabase https://supabase.com/blog/2022/03/31/supabase-edge-functions Today we're launching Edge Functions. Edge Functions let you execute Typescript code close to your users, no matter where they're located. - Thu, 31 Mar 2022 00:00:00 GMT + Wed, 30 Mar 2022 05:00:00 GMT @@ -93,7 +101,7 @@ Introducing Supabase Enterprise https://supabase.com/blog/2022/03/30/supabase-enterprise Today we are releasing Supabase Enterprise, a suite of features to scale your project. - Wed, 30 Mar 2022 00:00:00 GMT + Tue, 29 Mar 2022 05:00:00 GMT @@ -101,7 +109,7 @@ GraphQL is now available in Supabase https://supabase.com/blog/2022/03/29/graphql-now-available GraphQL support is now in general availability on the Supabase platform via our open source PostgreSQL extension, pg_graphql (beta). - Tue, 29 Mar 2022 00:00:00 GMT + Mon, 28 Mar 2022 05:00:00 GMT @@ -109,7 +117,7 @@ Community Day https://supabase.com/blog/2022/03/28/community-day Kicking off Launch Week IV with contributors, partners, and friends. - Mon, 28 Mar 2022 00:00:00 GMT + Sun, 27 Mar 2022 05:00:00 GMT @@ -117,7 +125,7 @@ Supabase Launch Week IV https://supabase.com/blog/2022/03/25/supabase-launch-week-four Launch Week 4: One new feature every day for an entire week. Starting Monday 28th March. - Fri, 25 Mar 2022 00:00:00 GMT + Thu, 24 Mar 2022 05:00:00 GMT @@ -125,7 +133,7 @@ Should I Open Source my Company? https://supabase.com/blog/2022/03/25/should-i-open-source-my-company The unexpected upsides of building in public - Fri, 25 Mar 2022 00:00:00 GMT + Thu, 24 Mar 2022 05:00:00 GMT @@ -133,7 +141,7 @@ Postgres Auditing in 150 lines of SQL https://supabase.com/blog/2022/03/08/audit PostgreSQL has a robust set of features which we can leverage to create a generic auditing solution in 150 lines of SQL. - Tue, 08 Mar 2022 00:00:00 GMT + Mon, 07 Mar 2022 06:00:00 GMT @@ -141,7 +149,7 @@ Supabase Beta January 2022 https://supabase.com/blog/2022/02/22/supabase-beta-january-2022 New auth providers, SMS providers, and new videos. - Tue, 22 Feb 2022 00:00:00 GMT + Mon, 21 Feb 2022 06:00:00 GMT @@ -149,7 +157,7 @@ Supabase Beta December 2021 https://supabase.com/blog/2022/01/20/supabase-beta-december-2021 New crypto extension, Postgres videos, and a bunch of cool integrations. - Thu, 20 Jan 2022 00:00:00 GMT + Wed, 19 Jan 2022 06:00:00 GMT @@ -157,7 +165,7 @@ Golden Kitty Awards Ceremony Watch Party with Supabase https://supabase.com/blog/2022/01/20/product-hunt-golden-kitty-awards-2021 Hang out with us while watching the Product Hunt Golden Kitty Awards Ceremony - Thu, 20 Jan 2022 00:00:00 GMT + Wed, 19 Jan 2022 06:00:00 GMT @@ -165,7 +173,7 @@ Holiday Hackdays Winners 2021 https://supabase.com/blog/2021/12/17/holiday-hackdays-winners-2021 Celebrating many amazing projects submitted to our Holiday Hackdays Hackathon. - Fri, 17 Dec 2021 00:00:00 GMT + Thu, 16 Dec 2021 06:00:00 GMT @@ -173,7 +181,7 @@ Supabase Beta November 2021: Launch Week Recap https://supabase.com/blog/2021/12/15/beta-november-2021-launch-week-recap We wrapped up November with Supabase's third Launch Week. Here's all the awesome stuff that got shipped ... - Wed, 15 Dec 2021 00:00:00 GMT + Tue, 14 Dec 2021 06:00:00 GMT @@ -181,7 +189,7 @@ Kicking off the Holiday Hackdays https://supabase.com/blog/2021/12/03/supabase-holiday-hackdays-hackathon Build cool stuff and celebrate open-source software with us during the Holiday Hackdays! - Fri, 03 Dec 2021 00:00:00 GMT + Thu, 02 Dec 2021 06:00:00 GMT @@ -189,7 +197,7 @@ pg_graphql: A GraphQL extension for PostgreSQL https://supabase.com/blog/2021/12/03/pg-graphql GraphQL support is in development for PostgreSQL + Supabase. - Fri, 03 Dec 2021 00:00:00 GMT + Thu, 02 Dec 2021 06:00:00 GMT @@ -197,7 +205,7 @@ Five more things https://supabase.com/blog/2021/12/03/launch-week-three-friday-five-more-things It's never just one more thing! - Fri, 03 Dec 2021 00:00:00 GMT + Thu, 02 Dec 2021 06:00:00 GMT @@ -205,7 +213,7 @@ Supabase acquires Logflare https://supabase.com/blog/2021/12/02/supabase-acquires-logflare Today, we're ecstatic to announce that Logflare is joining Supabase. - Thu, 02 Dec 2021 00:00:00 GMT + Wed, 01 Dec 2021 06:00:00 GMT @@ -213,7 +221,7 @@ Realtime Postgres RLS now available on Supabase https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql Realtime database changes are now broadcast to authenticated users, respecting the same PostgreSQL policies that you use for Row Level Security. - Wed, 01 Dec 2021 00:00:00 GMT + Tue, 30 Nov 2021 06:00:00 GMT @@ -221,7 +229,7 @@ Supabase Studio https://supabase.com/blog/2021/11/30/supabase-studio The same Dashboard that you're using on our Platform is now available for local development and Self-Hosting. - Tue, 30 Nov 2021 00:00:00 GMT + Mon, 29 Nov 2021 06:00:00 GMT @@ -229,7 +237,7 @@ Community Day https://supabase.com/blog/2021/11/29/community-day Kicking off launch week by highlighting the communities around Supabase. - Mon, 29 Nov 2021 00:00:00 GMT + Sun, 28 Nov 2021 06:00:00 GMT @@ -237,7 +245,7 @@ New in PostgreSQL 14: What every developer should know https://supabase.com/blog/2021/11/28/whats-new-in-postgres-14 A quick look at some new features and functionality in PostgreSQL 14. - Sun, 28 Nov 2021 00:00:00 GMT + Sat, 27 Nov 2021 06:00:00 GMT @@ -245,7 +253,7 @@ PostgREST 9 https://supabase.com/blog/2021/11/28/postgrest-9 New features and updates in PostgREST version 9. - Sat, 27 Nov 2021 00:00:00 GMT + Fri, 26 Nov 2021 06:00:00 GMT @@ -253,7 +261,7 @@ Supabase Launch Week III: Holiday Special https://supabase.com/blog/2021/11/26/supabase-launch-week-the-trilogy Tis the season to be shipping. - Fri, 26 Nov 2021 00:00:00 GMT + Thu, 25 Nov 2021 06:00:00 GMT @@ -261,7 +269,7 @@ How we launch at Supabase https://supabase.com/blog/2021/11/26/supabase-how-we-launch The history and methodology of Supabase Launch Week. - Fri, 26 Nov 2021 00:00:00 GMT + Thu, 25 Nov 2021 06:00:00 GMT @@ -269,7 +277,7 @@ Supabase Beta October 2021 https://supabase.com/blog/2021/11/05/supabase-beta-october-2021 Three new Auth providers, multi-schema support, and we're gearing up for another Launch Week. - Sun, 07 Nov 2021 00:00:00 GMT + Sat, 06 Nov 2021 05:00:00 GMT @@ -277,7 +285,7 @@ Supabase $30m Series A https://supabase.com/blog/2021/10/28/supabase-series-a Supabase just raised $30M, bringing our total funding to $36M. - Thu, 28 Oct 2021 00:00:00 GMT + Wed, 27 Oct 2021 05:00:00 GMT @@ -285,7 +293,7 @@ Replenysh uses Supabase to implement OTP in less than 24-hours https://supabase.com/blog/2021/10/19/replenysh-time-to-value-in-less-than-24-hours Learn how Replenysh uses Supabase to power the circular economy, redefining how brands interact with their customers and products. - Tue, 19 Oct 2021 00:00:00 GMT + Mon, 18 Oct 2021 05:00:00 GMT @@ -293,7 +301,7 @@ Hacktoberfest Hackathon Winners 2021 https://supabase.com/blog/2021/10/14/hacktoberfest-hackathon-winners-2021 Celebrating many amazing projects submitted to our Hacktoberfest Hackathon. - Thu, 14 Oct 2021 00:00:00 GMT + Wed, 13 Oct 2021 05:00:00 GMT @@ -301,7 +309,7 @@ Supabase Beta Sept 2021 https://supabase.com/blog/2021/10/04/supabase-beta-sept-2021 Hackathon, Aborting request, UI updates, and now Hiring. - Mon, 04 Oct 2021 00:00:00 GMT + Sun, 03 Oct 2021 05:00:00 GMT @@ -309,7 +317,7 @@ Supabase Hacktoberfest Hackathon 2021 https://supabase.com/blog/2021/09/28/supabase-hacktoberfest-hackathon-2021 We're running another Supabase Hackathon during Hacktoberfest! - Tue, 28 Sep 2021 00:00:00 GMT + Mon, 27 Sep 2021 05:00:00 GMT @@ -317,7 +325,7 @@ Supabase Beta August 2021 https://supabase.com/blog/2021/09/10/supabase-beta-august-2021 Fundraising, Realtime Security, custom SMS templates, and deployments in South Korea. - Fri, 10 Sep 2021 00:00:00 GMT + Thu, 09 Sep 2021 05:00:00 GMT @@ -325,7 +333,7 @@ Supabase Beta July 2021 https://supabase.com/blog/2021/08/12/supabase-beta-july-2021 Discord Logins, Vercel Integration, Full text search, and OAuth guides. - Thu, 12 Aug 2021 00:00:00 GMT + Wed, 11 Aug 2021 05:00:00 GMT @@ -333,7 +341,7 @@ Open Source Hackathon Winners https://supabase.com/blog/2021/08/09/hackathon-winners Let the medal ceremony begin for the best projects submitted during the Supabase Hackathon. - Mon, 09 Aug 2021 00:00:00 GMT + Sun, 08 Aug 2021 05:00:00 GMT @@ -341,7 +349,7 @@ Supabase Swag Store https://supabase.com/blog/2021/07/30/supabase-swag-store Today we are officially launching the Supabase Swag Store. - Fri, 30 Jul 2021 00:00:00 GMT + Thu, 29 Jul 2021 05:00:00 GMT @@ -349,7 +357,7 @@ Updates for Supabase Functions https://supabase.com/blog/2021/07/30/supabase-functions-updates The question on everyone's mind - are we launching Supabase Functions? Well, it's complicated. - Fri, 30 Jul 2021 00:00:00 GMT + Thu, 29 Jul 2021 05:00:00 GMT @@ -357,7 +365,7 @@ The Supabase Hackathon https://supabase.com/blog/2021/07/30/1-the-supabase-hackathon A whole week of Hacking for Fun and Prizes. - Fri, 30 Jul 2021 00:00:00 GMT + Thu, 29 Jul 2021 05:00:00 GMT @@ -365,7 +373,7 @@ Supabase Reports and Metrics https://supabase.com/blog/2021/07/29/supabase-reports-and-metrics We're exposing a full set of metrics in your projects, so that you can build better (and faster) products for your users. - Thu, 29 Jul 2021 00:00:00 GMT + Wed, 28 Jul 2021 05:00:00 GMT @@ -373,7 +381,7 @@ Supabase Auth v2: Phone Auth now available https://supabase.com/blog/2021/07/28/supabase-auth-passwordless-sms-login Phone Auth is available today on all new and existing Supabase projects. - Wed, 28 Jul 2021 00:00:00 GMT + Tue, 27 Jul 2021 05:00:00 GMT @@ -381,7 +389,7 @@ Mobbin uses Supabase to authenticate 200,000 users https://supabase.com/blog/2021/07/28/mobbin-supabase-200000-users Learn how Mobbin migrated 200,000 users from Firebase for a better authentication experience. - Wed, 28 Jul 2021 00:00:00 GMT + Tue, 27 Jul 2021 05:00:00 GMT @@ -389,7 +397,7 @@ Supabase Storage now in Beta https://supabase.com/blog/2021/07/27/storage-beta Supabase Storage moves into Beta. - Tue, 27 Jul 2021 00:00:00 GMT + Mon, 26 Jul 2021 05:00:00 GMT @@ -397,7 +405,7 @@ Spot: a video sharing app built with Flutter https://supabase.com/blog/2021/07/27/spot-flutter-with-postgres Spot is a geolocation-based video-sharing app with some social networking features. - Tue, 27 Jul 2021 00:00:00 GMT + Mon, 26 Jul 2021 05:00:00 GMT @@ -405,7 +413,7 @@ Supabase is now on Postgres 13.3 https://supabase.com/blog/2021/07/26/supabase-postgres-13 From today, new Supabase projects will be on a version of Supabase Postgres that runs on Postgres 13.3. - Mon, 26 Jul 2021 00:00:00 GMT + Sun, 25 Jul 2021 05:00:00 GMT @@ -413,7 +421,7 @@ Supabase Community Day https://supabase.com/blog/2021/07/26/supabase-community-day Community Day - Mon, 26 Jul 2021 00:00:00 GMT + Sun, 25 Jul 2021 05:00:00 GMT @@ -421,7 +429,7 @@ Epsilon3 Self-Host Supabase To Revolutionize Space Operations https://supabase.com/blog/2021/07/26/epsilon3-self-hosting Learn how the team at Epsilon3 use Supabase to help teams execute secure and reliable operations in an industry that project spend runs into the billions. - Mon, 26 Jul 2021 00:00:00 GMT + Sun, 25 Jul 2021 05:00:00 GMT @@ -429,7 +437,7 @@ Supabase Launch Week II: The SQL https://supabase.com/blog/2021/07/22/supabase-launch-week-sql Five days of Supabase. Again. - Thu, 22 Jul 2021 00:00:00 GMT + Wed, 21 Jul 2021 05:00:00 GMT @@ -437,7 +445,7 @@ Protecting reserved roles with PostgreSQL Hooks https://supabase.com/blog/2021/07/01/roles-postgres-hooks Using Postgres Hooks to protect functionality in your Postgres database. - Fri, 02 Jul 2021 00:00:00 GMT + Thu, 01 Jul 2021 05:00:00 GMT @@ -445,7 +453,7 @@ Supabase Beta June 2021 https://supabase.com/blog/2021/07/02/supabase-beta-june-2021 Discord Logins, Vercel Integration, Full text search, and OAuth guides. - Wed, 02 Jun 2021 00:00:00 GMT + Tue, 01 Jun 2021 05:00:00 GMT @@ -453,7 +461,7 @@ Supabase Beta May 2021 https://supabase.com/blog/2021/06/02/supabase-beta-may-2021 Apple & Twitter Logins, Supabase Grid, Go & Swift Libraries. - Wed, 02 Jun 2021 00:00:00 GMT + Tue, 01 Jun 2021 05:00:00 GMT @@ -461,7 +469,7 @@ Supabase Beta April 2021 https://supabase.com/blog/2021/05/03/supabase-beta-april-2021 Supabase "gardening" - stability, security, and community support. - Wed, 05 May 2021 00:00:00 GMT + Tue, 04 May 2021 05:00:00 GMT @@ -469,7 +477,7 @@ Supabase Beta March 2021 https://supabase.com/blog/2021/04/06/supabase-beta-march-2021 Launch week, Storage, Supabase CLI, Connection Pooling, Supabase UI, and Pricing. - Tue, 06 Apr 2021 00:00:00 GMT + Mon, 05 Apr 2021 05:00:00 GMT @@ -477,7 +485,7 @@ Workflows are coming to Supabase https://supabase.com/blog/2021/04/02/supabase-workflows Functions are great, but you know what's better? - Fri, 02 Apr 2021 00:00:00 GMT + Thu, 01 Apr 2021 05:00:00 GMT @@ -485,7 +493,7 @@ PgBouncer is now available in Supabase https://supabase.com/blog/2021/04/02/supabase-pgbouncer Better support for Serverless and Postgres. - Fri, 02 Apr 2021 00:00:00 GMT + Thu, 01 Apr 2021 05:00:00 GMT @@ -493,7 +501,7 @@ Supabase Dot Com https://supabase.com/blog/2021/04/02/supabase-dot-com The Supabase Domain name is changing. - Fri, 02 Apr 2021 00:00:00 GMT + Thu, 01 Apr 2021 05:00:00 GMT @@ -501,7 +509,7 @@ Supabase Launches NFT Marketplace https://supabase.com/blog/2021/04/01/supabase-nft-marketplace A fully encrypted NFT platform to protect and transact your digital assets - Thu, 01 Apr 2021 00:00:00 GMT + Thu, 01 Apr 2021 05:00:00 GMT @@ -509,7 +517,7 @@ Supabase CLI https://supabase.com/blog/2021/03/31/supabase-cli Local development, database migrations, and self-hosting. - Wed, 31 Mar 2021 00:00:00 GMT + Wed, 31 Mar 2021 05:00:00 GMT @@ -517,7 +525,7 @@ Storage is now available in Supabase https://supabase.com/blog/2021/03/30/supabase-storage Launching Supabase Storage and how you can use it in your apps - Tue, 30 Mar 2021 00:00:00 GMT + Tue, 30 Mar 2021 05:00:00 GMT @@ -525,7 +533,7 @@ Supabase Beta Pricing https://supabase.com/blog/2021/03/29/pricing Supabase launches Beta pricing structure - Mon, 29 Mar 2021 00:00:00 GMT + Mon, 29 Mar 2021 05:00:00 GMT @@ -533,7 +541,7 @@ Launch week https://supabase.com/blog/2021/03/25/launch-week Five days of Supabase. - Thu, 25 Mar 2021 00:00:00 GMT + Wed, 24 Mar 2021 05:00:00 GMT @@ -541,7 +549,7 @@ Angels of Supabase https://supabase.com/blog/2021/03/25/angels-of-supabase Meet the investors of Supabase. - Thu, 25 Mar 2021 00:00:00 GMT + Wed, 24 Mar 2021 05:00:00 GMT @@ -549,7 +557,7 @@ Developers stay up to date with intheloop.dev https://supabase.com/blog/2021/03/22/In-The-Loop Learn why Kevin is building intheloop.dev with Supabase - Mon, 22 Mar 2021 00:00:00 GMT + Mon, 22 Mar 2021 05:00:00 GMT @@ -557,7 +565,7 @@ Using Supabase in Replit https://supabase.com/blog/2021/03/11/using-supabase-replit Free hosted relational database from within your node.js repl - Thu, 11 Mar 2021 00:00:00 GMT + Thu, 11 Mar 2021 06:00:00 GMT @@ -565,7 +573,7 @@ Toad, a link shortener with simple APIs for low-coders https://supabase.com/blog/2021/03/08/toad-a-link-shortener-with-simple-apis-for-low-coders An easy-to-use link shortening tool with simple APIs - Mon, 08 Mar 2021 00:00:00 GMT + Mon, 08 Mar 2021 06:00:00 GMT @@ -573,7 +581,7 @@ Postgres as a CRON Server https://supabase.com/blog/2021/03/05/postgres-as-a-cron-server Running repetitive tasks with your Postgres database. - Fri, 05 Mar 2021 00:00:00 GMT + Fri, 05 Mar 2021 06:00:00 GMT @@ -581,7 +589,7 @@ Supabase Beta February 2021 https://supabase.com/blog/2021/03/02/supabase-beta-february-2021 One year of building. - Tue, 02 Mar 2021 00:00:00 GMT + Tue, 02 Mar 2021 06:00:00 GMT @@ -589,7 +597,7 @@ Cracking PostgreSQL Interview Questions https://supabase.com/blog/2021/02/27/cracking-postgres-interview Understand the top PostgreSQL Interview Questions - Sat, 27 Feb 2021 00:00:00 GMT + Sat, 27 Feb 2021 06:00:00 GMT @@ -597,7 +605,7 @@ Roboflow.com choose Supabase to power Paint.wtf leaderboard https://supabase.com/blog/2021/02/09/case-study-roboflow Learn how Roboflow.com used Supabase to build their Paint.wtf leaderboard - Tue, 09 Feb 2021 00:00:00 GMT + Tue, 09 Feb 2021 06:00:00 GMT @@ -605,7 +613,7 @@ Supabase Beta January 2021 https://supabase.com/blog/2021/02/02/supabase-beta-january-2021 Eleven months of building. - Tue, 02 Feb 2021 00:00:00 GMT + Tue, 02 Feb 2021 06:00:00 GMT @@ -613,7 +621,7 @@ Supabase Beta December 2020 https://supabase.com/blog/2021/01/02/supabase-beta-december-2020 Ten months of building. - Sat, 02 Jan 2021 00:00:00 GMT + Sat, 02 Jan 2021 06:00:00 GMT @@ -621,7 +629,7 @@ Making the Supabase Dashboard Supa-fast https://supabase.com/blog/2020/12/13/supabase-dashboard-performance Improving the performance of the Supabase dashboard - Sun, 13 Dec 2020 00:00:00 GMT + Sun, 13 Dec 2020 06:00:00 GMT @@ -629,7 +637,7 @@ Supabase Partners With Strive School To Help Teach Open Source https://supabase.com/blog/2020/12/02/supabase-striveschool Supabase Partners With Strive School To Help Teach Open Source To The Next Generation Of Developers - Wed, 02 Dec 2020 00:00:00 GMT + Wed, 02 Dec 2020 06:00:00 GMT @@ -637,7 +645,7 @@ Xendit Built a Counter-Fraud Watchlist for the Fintech Industry https://supabase.com/blog/2020/12/02/case-study-xendit See how Xendit use Supabase to build a full-text search engine. - Wed, 02 Dec 2020 00:00:00 GMT + Wed, 02 Dec 2020 06:00:00 GMT @@ -645,7 +653,7 @@ TAYFA Built a No-Code Website Builder in Seven Days https://supabase.com/blog/2020/12/02/case-study-tayfa See how Tayfa went from idea to paying customer in less than 30 days. - Wed, 02 Dec 2020 00:00:00 GMT + Wed, 02 Dec 2020 06:00:00 GMT @@ -653,7 +661,7 @@ Monitoro Built a Web Crawler Handling Millions of API Requests https://supabase.com/blog/2020/12/02/case-study-monitoro See how Monitoro built an automated scraping platform using Supabase. - Wed, 02 Dec 2020 00:00:00 GMT + Wed, 02 Dec 2020 06:00:00 GMT @@ -661,7 +669,7 @@ Supabase Alpha November 2020 https://supabase.com/blog/2020/12/01/supabase-alpha-november-2020 Nine months of building. - Tue, 01 Dec 2020 00:00:00 GMT + Tue, 01 Dec 2020 06:00:00 GMT @@ -669,7 +677,7 @@ Postgres Views https://supabase.com/blog/2020/11/18/postgresql-views Creating and using a view in PostgreSQL. - Wed, 18 Nov 2020 00:00:00 GMT + Wed, 18 Nov 2020 06:00:00 GMT @@ -677,7 +685,7 @@ Supabase Alpha October 2020 https://supabase.com/blog/2020/11/02/supabase-alpha-october-2020 Eight months of building. - Mon, 02 Nov 2020 00:00:00 GMT + Mon, 02 Nov 2020 06:00:00 GMT @@ -685,7 +693,7 @@ Supabase.js 1.0 https://supabase.com/blog/2020/10/30/improved-dx We're releasing a new version of our Supabase client with some awesome new improvements. - Fri, 30 Oct 2020 00:00:00 GMT + Fri, 30 Oct 2020 05:00:00 GMT @@ -693,7 +701,7 @@ Supabase Alpha September 2020 https://supabase.com/blog/2020/10/03/supabase-alpha-september-2020 Seven months of building. - Sat, 03 Oct 2020 00:00:00 GMT + Sat, 03 Oct 2020 05:00:00 GMT @@ -701,7 +709,7 @@ Supabase Hacktoberfest 2020 https://supabase.com/blog/2020/09/11/supabase-hacktoberfest-2020 Join us for a celebration of open source software and learn how to contribute to Supabase. - Fri, 11 Sep 2020 00:00:00 GMT + Fri, 11 Sep 2020 05:00:00 GMT @@ -709,7 +717,7 @@ Supabase Alpha August 2020 https://supabase.com/blog/2020/09/03/supabase-alpha-august-2020 Six months of building - Thu, 03 Sep 2020 00:00:00 GMT + Thu, 03 Sep 2020 05:00:00 GMT @@ -717,7 +725,7 @@ Supabase Auth https://supabase.com/blog/2020/08/05/supabase-auth Authenticate and authorize your users with Supabase Auth - Wed, 05 Aug 2020 00:00:00 GMT + Wed, 05 Aug 2020 05:00:00 GMT @@ -725,7 +733,7 @@ Supabase Alpha July 2020 https://supabase.com/blog/2020/08/02/supabase-alpha-july-2020 Five months of building - Sun, 02 Aug 2020 00:00:00 GMT + Sun, 02 Aug 2020 05:00:00 GMT @@ -733,7 +741,7 @@ Continuous PostgreSQL Backups using WAL-G https://supabase.com/blog/2020/08/02/continuous-postgresql-backup-walg Have you ever wanted to restore your database's state to a particular moment in time? This post explains how, using WAL-G. - Sun, 02 Aug 2020 00:00:00 GMT + Sun, 02 Aug 2020 05:00:00 GMT @@ -741,7 +749,7 @@ Alpha Launch Postmortem https://supabase.com/blog/2020/07/10/alpha-launch-postmortem Everything that went wrong with Supabase's launch - Fri, 10 Jul 2020 00:00:00 GMT + Fri, 10 Jul 2020 05:00:00 GMT @@ -749,7 +757,7 @@ What are PostgreSQL Templates? https://supabase.com/blog/2020/07/09/postgresql-templates What are PostgreSQL templates and what are they used for? - Thu, 09 Jul 2020 00:00:00 GMT + Thu, 09 Jul 2020 05:00:00 GMT @@ -757,7 +765,7 @@ Physical vs Logical Backups in PostgreSQL https://supabase.com/blog/2020/07/17/postgresql-physical-logical-backups What are physical and logical backups in Postgres? - Tue, 07 Jul 2020 00:00:00 GMT + Tue, 07 Jul 2020 05:00:00 GMT @@ -765,7 +773,7 @@ Supabase Alpha June 2020 https://supabase.com/blog/2020/07/01/supabase-alpha-june-2020 Four months of building - Wed, 01 Jul 2020 00:00:00 GMT + Wed, 01 Jul 2020 05:00:00 GMT @@ -773,7 +781,7 @@ Steve Chavez has joined Supabase https://supabase.com/blog/2020/06/15/supabase-steve-chavez Steve joins Supabase to help build Auth. - Mon, 15 Jun 2020 00:00:00 GMT + Mon, 15 Jun 2020 05:00:00 GMT @@ -781,7 +789,7 @@ Supabase Alpha May 2020 https://supabase.com/blog/2020/06/01/supabase-alpha-may-2020 Three months of building - Mon, 01 Jun 2020 00:00:00 GMT + Mon, 01 Jun 2020 05:00:00 GMT @@ -789,7 +797,7 @@ Supabase Alpha April 2020 https://supabase.com/blog/2020/05/01/supabase-alpha-april-2020 Two months of building - Mon, 01 Jun 2020 00:00:00 GMT + Mon, 01 Jun 2020 05:00:00 GMT