Chore/relative paths (#3827)

* chore: use relative urls

* chore: update relative links for web

* fix some links

* more relative urls to homepage

* update config

* leverage the  /docs baseurl
This commit is contained in:
Jonathan Summers-Muir authored and GitHub committed 2021-11-08 15:41:08 +08:00
1 parent 4bf4b0b8a3
commit aaab51caef
72 files changed
+204 -204

No files matched your search

+1 -1
View File
@@ -124,7 +124,7 @@ This Privacy Notice was last modified on 27th March 2021
## Privacy disclosures for the European economic area, United Kingdom, and Switzerland.
While we are primarily based in the United States, Supabase maintains operations in Europe and may direct our services to individuals located in the European Economic Area ("**_EEA_**"), United Kingdom and Switzerland, including through our Site [supabase.io](https://supabase.io/) (collectively, our "**_European Services_**"). The following disclosures ("**_Privacy Disclosures_**") apply to our processing of personal data in connection with our European Services.
While we are primarily based in the United States, Supabase maintains operations in Europe and may direct our services to individuals located in the European Economic Area ("**_EEA_**"), United Kingdom and Switzerland, including through our Site [supabase.io](/) (collectively, our "**_European Services_**"). The following disclosures ("**_Privacy Disclosures_**") apply to our processing of personal data in connection with our European Services.
Supabase, Inc. is the data controller responsible for the processing of personal data in connection with our European Services. This means that we determine and are responsible for how your personal information is used.
+1 -1
View File
@@ -14,7 +14,7 @@ After developing your project, and deciding it's time to Go Live With Real Users
- Ensure RLS is enabled
- Tables that do not have RLS enabled with reasonable policies allow any client to access and modify their data. This is unlikely to be what you want in the majority of cases.
- [Learn more about RLS](https://supabase.io/docs/guides/auth/row-level-security)
- [Learn more about RLS](/docs/guides/auth/row-level-security)
- Ensure replication is disabled for tables containing sensitive data:
- Today, Realtime does not respect RLS policies and any client with your anon key can listen to changes on tables where replication is enabled.
- Go to the Database > Replication page in the Supabase Dashboard to manage these settings
+1 -1
View File
@@ -179,7 +179,7 @@ puts token
### Add login code to your client app
The JavaScript client code is documented in the [Supabase OAuth Reference](https://supabase.io/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers).
The JavaScript client code is documented in the [Supabase OAuth Reference](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers).
```js
const { user, session, error } = await supabase.auth.signIn({
+1 -1
View File
@@ -70,7 +70,7 @@ The next step requires a callback URL, which looks like this:
### Add login code to your client app
The JavaScript client code is documented here: [Supabase OAuth Client Code](https://supabase.io/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
```js
const { user, session, error } = await supabase.auth.signIn({
+1 -1
View File
@@ -70,7 +70,7 @@ In the next step you require a callback URL, which looks like this:
### Add login code to your client app
The JavaScript client code is documented here: [Supabase OAuth Client Code](https://supabase.io/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
```js
const { user, session, error } = await supabase.auth.signIn({
+1 -1
View File
@@ -87,7 +87,7 @@ You can read more about access levels [here](https://developers.facebook.com/doc
### Add login code to your client app
The JavaScript client code is documented here: [Supabase OAuth Client Code](https://supabase.io/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
```js
const { user, session, error } = await supabase.auth.signIn({
+1 -1
View File
@@ -79,7 +79,7 @@ Copy your new OAuth credentials
### Add login code to your client app
The JavaScript client code is documented here: [Supabase OAuth Client Code](https://supabase.io/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
```js
const { user, session, error } = await supabase.auth.signIn({
+1 -1
View File
@@ -66,7 +66,7 @@ The next step requires a callback URL, which looks like this:
### Add login code to your client app
The JavaScript client code is documented here: [Supabase OAuth Client Code](https://supabase.io/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
```js
const { user, session, error } = await supabase.auth.signIn({
+1 -1
View File
@@ -95,7 +95,7 @@ Copy your new OAuth credentials
### Add login code to your client app
The JavaScript client code is documented here: [Supabase OAuth Client Code](https://supabase.io/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
```js
const { user, session, error } = await supabase.auth.signIn({
+2 -2
View File
@@ -159,7 +159,7 @@ If successful the user will now be logged in and you should receive a valid sess
}
```
The access token can be sent in the Authorization header as a Bearer token for any CRUD operations on supabase-js. See our guide on [Row Level Security](https://supabase.io/docs/guides/auth#row-level-security) for more info on restricting access on a user basis.
The access token can be sent in the Authorization header as a Bearer token for any CRUD operations on supabase-js. See our guide on [Row Level Security](/docs/guides/auth#row-level-security) for more info on restricting access on a user basis.
Also now that the mobile has been verified, the user can use the number and password to sign in without needing to verify their number each time:
@@ -280,4 +280,4 @@ The user does not have a password therefore will need to sign in via this method
- [MessageBird Signup](https://dashboard.messagebird.com/en/sign-up)
- [Supabase Dashboard](https://app.supabase.io)
- [Supabase Row Level Security](https://supabase.io/docs/guides/auth#row-level-security)
- [Supabase Row Level Security](/docs/guides/auth#row-level-security)
+1 -1
View File
@@ -78,7 +78,7 @@ Under `Redirect URLs`:
### Add login code to your client app
The JavaScript client code is documented here: [Supabase OAuth Client Code](https://supabase.io/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers).
The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers).
```js
const { user, session, error } = await supabase.auth.signIn({
+1 -1
View File
@@ -73,7 +73,7 @@ Under `Redirect URIs`:
### Add login code to your client app
The JavaScript client code is documented here: [Supabase OAuth Client Code](https://supabase.io/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers).
The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers).
```js
const { user, session, error } = await supabase.auth.signIn({
+2 -2
View File
@@ -176,7 +176,7 @@ If successful the user will now be logged in and you should receive a valid sess
}
```
The access token can be sent in the Authorization header as a Bearer token for any CRUD operations on supabase-js. See our guide on [Row Level Security](https://supabase.io/docs/guides/auth#row-level-security) for more info on restricting access on a user basis.
The access token can be sent in the Authorization header as a Bearer token for any CRUD operations on supabase-js. See our guide on [Row Level Security](/docs/guides/auth#row-level-security) for more info on restricting access on a user basis.
Also now that the mobile has been verified, the user can use the number and password to sign in without needing to verify their number each time:
@@ -297,4 +297,4 @@ The user does not have a password therefore will need to sign in via this method
- [Twilio Signup](https://www.twilio.com/try-twilio)
- [Supabase Dashboard](https://app.supabase.io)
- [Supabase Row Level Security](https://supabase.io/docs/guides/auth#row-level-security)
- [Supabase Row Level Security](/docs/guides/auth#row-level-security)
+1 -1
View File
@@ -84,7 +84,7 @@ In the next step you require a callback URL, which looks like this:
### Add login code to your client app
The JavaScript client code is documented here: [Supabase OAuth Client Code](https://supabase.io/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
```js
const { user, session, error } = await supabase.auth.signIn({
+1 -1
View File
@@ -74,7 +74,7 @@ The next step requires a callback URL, which looks like this:
### Add login code to your client app
The JavaScript client code is documented here: [Supabase OAuth Client Code](https://supabase.io/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers).
The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers).
```js
const { user, session, error } = await supabase.auth.signIn({
+1 -1
View File
@@ -94,7 +94,7 @@ alter publication supabase_realtime add table posts;
| SECURITY WARNING |
| - |
| Please check [Disable realtime for private tables](https://supabase.io/docs/guides/auth#disable-realtime-for-private-tables) for the current state of Realtime security. |
| Please check [Disable realtime for private tables](/docs/guides/auth#disable-realtime-for-private-tables) for the current state of Realtime security. |
By default only "new" values are sent, but if you want to receive the old record (previous values) whenever you `update` or `delete` a record,
you can update the replica identity of your tables, setting it to `full`:
+3 -3
View File
@@ -78,8 +78,8 @@ const { data, error } = await supabase
* [Supabase Account - Free Tier OK](https://supabase.io)
* [Postgrest Operators](https://postgrest.org/en/stable/api.html#operators)
* [Supabase Javascript API: select](https://supabase.io/docs/reference/javascript/select)
* [Supabase Javascript API: modifiers](https://supabase.io/docs/reference/javascript/using-modifiers)
* [Supabase Javascript API: filters](https://supabase.io/docs/reference/javascript/using-filters)
* [Supabase Javascript API: select](/docs/reference/javascript/select)
* [Supabase Javascript API: modifiers](/docs/reference/javascript/using-modifiers)
* [Supabase Javascript API: filters](/docs/reference/javascript/using-filters)
+3 -3
View File
@@ -302,9 +302,9 @@ For example, if your file is stored in `public/subfolder/avatar.png` it would re
## Accessing objects
For private buckets, you can access objects via the [download](https://supabase.io/docs/reference/javascript/storage-from-download) method. This corresponds to `/object/auth/` API endpoint. Alternatively, you can create a publicly shareable URL an expiry date using the [createSignedUrl](https://supabase.io/docs/reference/javascript/storage-from-createsignedurl) method which calls the `/object/sign/` API.
For private buckets, you can access objects via the [download](/docs/reference/javascript/storage-from-download) method. This corresponds to `/object/auth/` API endpoint. Alternatively, you can create a publicly shareable URL an expiry date using the [createSignedUrl](/docs/reference/javascript/storage-from-createsignedurl) method which calls the `/object/sign/` API.
For public buckets, you can access the assets directly without a token or an Authorisation header. The [getPublicUrl](https://supabase.io/docs/reference/javascript/storage-from-getpublicurl) helper method returns the full public URL for an asset. This calls the `/object/public/` API endpoint internally.
For public buckets, you can access the assets directly without a token or an Authorisation header. The [getPublicUrl](/docs/reference/javascript/storage-from-getpublicurl) helper method returns the full public URL for an asset. This calls the `/object/public/` API endpoint internally.
---
@@ -359,5 +359,5 @@ let us know on our [GitHub](https://github.com/supabase/supabase/discussions) an
## Next steps
- Got a question? [Ask here](https://github.com/supabase/supabase/discussions).
- Read more about storage in our [blog post](https://supabase.io/blog/2021/03/30/supabase-storage).
- Read more about storage in our [blog post](/blog/2021/03/30/supabase-storage).
- Sign in: [app.supabase.io](https://app.supabase.io)
+1 -1
View File
@@ -46,7 +46,7 @@ Help us maintain the community guidelines in our GitHub and Community-led commun
- Access to a Supabase Discord channel providing direct communication with the team, Discord badges, and elevated privileges.
- Special AMA sessions with members of the Supabase team.
- Monthly DevRel committee call with industry-leading Developer Advocates (many of whom are [angel investors](https://supabase.io/blog/2021/03/25/angels-of-supabase)), where you can learn from the best.
- Monthly DevRel committee call with industry-leading Developer Advocates (many of whom are [angel investors](/blog/2021/03/25/angels-of-supabase)), where you can learn from the best.
- We'll help you build your audience by promoting content via the Supabase social channels.
- Featured profile on Supabase website.
- Early access to new features (and the opportunity to provide feedback to the team!).
+2 -2
View File
@@ -21,7 +21,7 @@ We'll start with how user sessions work in Supabase, and later move onto writing
Let's say we're signing a user up to our service for the first time. The typical way to do this is by invoking the following method in supabase-js:
```jsx
// see full api reference here: https://supabase.io/docs/reference/javascript/auth-signup
// see full api reference here: /docs/reference/javascript/auth-signup
supabase.auth.signUp({ email, password })
```
@@ -80,7 +80,7 @@ For the curious, try heading to the SQL editor and querying:
select * from auth.users;
```
If supabase-js is loaded on your site (in this case http://localhost:3000) then it will automatically pluck the access_token out of the URL and initiate a session. You can check the [session()](https://supabase.io/docs/reference/javascript/auth-session) method to see if there is a valid session:
If supabase-js is loaded on your site (in this case http://localhost:3000) then it will automatically pluck the access_token out of the URL and initiate a session. You can check the [session()](/docs/reference/javascript/auth-session) method to see if there is a valid session:
```jsx
console.log(supabase.auth.session())
+2 -2
View File
@@ -127,7 +127,7 @@ module.exports = {
},
{
label: 'Docs',
to: '/docs',
to: '/',
},
{
label: 'Pricing',
@@ -135,7 +135,7 @@ module.exports = {
},
{
label: 'Support',
to: '/docs/support',
to: '/support',
},
{
label: 'System Status',
@@ -11,7 +11,7 @@ tags:
date: '06-01-2020'
---
It has been a monster month at [Supabase](https://supabase.io) and we're back with a video update. It's a longer video this month because we have a couple of housekeeping items.
It has been a monster month at [Supabase](/) and we're back with a video update. It's a longer video this month because we have a couple of housekeeping items.
<!--truncate-->
@@ -11,7 +11,7 @@ tags:
date: '07-01-2020'
---
We're now 4 months into building [Supabase](https://supabase.io), which means another major update. Here's a few things we think you'll love in this release.
We're now 4 months into building [Supabase](/), which means another major update. Here's a few things we think you'll love in this release.
<!--truncate-->
@@ -23,7 +23,7 @@ Here is everything that went wrong along the way.
Before we get into the details, here are some high-level numbers for the week following the launch.
We had 30,000 new website visitors to [supabase.io](http://supabase.io):
We had 30,000 new website visitors to [supabase.io](/):
![This graph shows the traffic to our website, that peaks at 15,000 the first day and tails off throughout the week. We had a total of 30,000 visitors to our site. That's according to Google Analytics though, and everyone on HN blocks GA so who knows what the real number is.](/images/blog/supabase-traffic-may.png)
@@ -51,7 +51,7 @@ We have since migrated our middleware to multiple ECS clusters, globally load-ba
### Frontend: Netlify, Vercel, Auth0
We serve our marketing site ([supabase.io](http://supabase.io)) from Netlify. It's a static-build [Docusaurus (v2)](https://v2.docusaurus.io/) site, so it had no problems (apart from one developer in Russia who couldn't access the site - it looks like some of Netlify's IP addresses are blocked there).
We serve our marketing site ([supabase.io](/)) from Netlify. It's a static-build [Docusaurus (v2)](https://v2.docusaurus.io/) site, so it had no problems (apart from one developer in Russia who couldn't access the site - it looks like some of Netlify's IP addresses are blocked there).
We serve our app ([app.supabase.io](http://app.supabase.io)) using Vercel, and the login system uses Auth0. These were both rock-solid. Before the launch we noticed that Vercel was extremely slow on their free plan, and once we upgraded to their Pro Plan for multi-region deploys it solved performance issues. It looks like they are changing their plans again so buyer beware.
@@ -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](https://supabase.io/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/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.
## Prerequisites
@@ -25,7 +25,7 @@ For this tutorial, we will be using two instances running Postgres databases on
### Installations
Make sure the below packages are installed in your instances. Alternatively, you can spin up the [latest version](https://github.com/supabase/postgres/releases/tag/v0.13.0) of [Supabase Postgres](https://github.com/supabase/postgres) which would already have everything configured and installed, along with other [goodies](https://github.com/supabase/postgres#features). It is readily available in either the [AWS](https://aws.amazon.com/marketplace/pp/B08915TCJ2?qid=1595854723755&sr=0-1&ref_=srh_res_product_title) or [Digital Ocean](https://marketplace.digitalocean.com/apps/supabase-postgres) marketplaces and only takes [a few minutes](https://supabase.io/docs/postgres/postgres-intro) to get running.
Make sure the below packages are installed in your instances. Alternatively, you can spin up the [latest version](https://github.com/supabase/postgres/releases/tag/v0.13.0) of [Supabase Postgres](https://github.com/supabase/postgres) which would already have everything configured and installed, along with other [goodies](https://github.com/supabase/postgres#features). It is readily available in either the [AWS](https://aws.amazon.com/marketplace/pp/B08915TCJ2?qid=1595854723755&sr=0-1&ref_=srh_res_product_title) or [Digital Ocean](https://marketplace.digitalocean.com/apps/supabase-postgres) marketplaces and only takes [a few minutes](/docs/postgres/postgres-intro) to get running.
#### Postgres 12
@@ -68,7 +68,7 @@ If you launch a new Supabase project, you'll have access to several new Postgres
We have a number of small improvements:
- Added Auth documentation to the auto-generated docs in each project
- Added a new `or` filter [to the client library](https://supabase.io/docs/library/get#or)
- Added a new `or` filter [to the client library](/docs/library/get#or)
- Table View now remembers which tabs you had open.
- We have [released](https://github.com/supabase/postgres-meta/releases) a lot of new functionality to [postgres-meta](https://github.com/supabase/postgres-meta), a server for for managing Postgres internals via a REST interface.
- Performance: the "flash of black" which was appearing on page transition is now gone
@@ -63,8 +63,8 @@ The biggest communty contribution to date, [@thorwebdev](https://twitter.com/tho
We have a number of small improvements:
- supabase-js now has [UMD support](https://github.com/supabase/supabase/pull/156)
- We significantly [improved our docs](https://supabase.io/docs). Try out the new search!
- All of our awesome sponsors are now listed [on our OSS page](https://supabase.io/oss).
- We significantly [improved our docs](/docs). Try out the new search!
- All of our awesome sponsors are now listed [on our OSS page](/oss).
### From the community
@@ -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](https://supabase.io/blog/2020/09/11/supabase-hacktoberfest-2020), check our 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/2020/09/11/supabase-hacktoberfest-2020), check our 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](https://supabase.io/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/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.
Check out the [blog post](https://supabase.io/blog/2020/10/30/improved-dx) to learn more.
Check out the [blog post](/blog/2020/10/30/improved-dx) to learn more.
### More powerful SQL Editor
@@ -56,7 +56,7 @@ One of the most requested Auth features was the ability to send magic links that
### Kaizen
- We have new and improved [docs](https://supabase.io/docs/reference/javascript/supabase-client).
- We have new and improved [docs](/docs/reference/javascript/supabase-client).
- We converted [realtime-js](https://github.com/supabase/realtime-js/) to TypeScript.
- Dashboard Performance: we heavily optimised our dashboard routes.
- With the help of the community, we [closed a lot of issues](https://github.com/orgs/supabase/projects/5) during Hacktoberfest.
+1 -1
View File
@@ -13,7 +13,7 @@ tags:
date: '12-02-2020'
---
[**TAYFA**](https://usetayfa.com) is the fastest no-code approach to create and iterate on bespoke frontends. Learn how its solo founder, [Sarup Banskota](https://twitter.com/sarupbanskota?lang=en), was able to launch quickly with [Supabase](https://supabase.io), Next.js, and Vercel.
[**TAYFA**](https://usetayfa.com) is the fastest no-code approach to create and iterate on bespoke frontends. Learn how its solo founder, [Sarup Banskota](https://twitter.com/sarupbanskota?lang=en), was able to launch quickly with [Supabase](/), Next.js, and Vercel.
<!--truncate-->
@@ -31,7 +31,7 @@ Watch a full demo:
### Supabase is now in Beta
We spent months working on Performance, Security, and Reliability. Read more on our [Beta Page](https://supabase.io/beta).
We spent months working on Performance, Security, and Reliability. Read more on our [Beta Page](/beta).
![This image shows our Beta Page.](/images/blog/blog/dec-beta.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](https://supabase.io/blog/2020/11/18/postgresql-views).
### Know how to create different representations of data with [VIEWs](/blog/2020/11/18/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: [https://supabase.io/blog/2020/11/18/postgresql-views](https://supabase.io/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/2020/11/18/postgresql-views](/blog/2020/11/18/postgresql-views). Some purists may argue that you should always query VIEWs and never TABLEs.
### Know about Autoupdatable views.
@@ -109,7 +109,7 @@ CREATE POLICY "Individuals can only write their own messages." ON messages FOR
### Know how to do business logic on SQL/[PLPGSQL](https://www.postgresql.org/docs/current/plpgsql-overview.html#PLPGSQL-ADVANTAGES)
PL/pgSQL is a procedural programming language that can be used to write functions inside of your database. It can be useful for making [remote procedure calls](https://supabase.io/docs/reference/javascript/rpc) from an API. You can go as deep as you want here, since it's an entire programming language, but understanding the basics will really go a long way, and give you super powers when working with your data.
PL/pgSQL is a procedural programming language that can be used to write functions inside of your database. It can be useful for making [remote procedure calls](/docs/reference/javascript/rpc) from an API. You can go as deep as you want here, since it's an entire programming language, but understanding the basics will really go a long way, and give you super powers when working with your data.
You can use FUNCTIONs in combination with TRIGGERs to do cool stuff like have auto-updating `updated_at` columns on your data:
@@ -46,7 +46,7 @@ Writing SQL just got 10x easier. We added autocomplete to the SQL editor, includ
### Auth Redirects
Redirect your users to specific route within your site on [`signIn()`](https://supabase.io/docs/reference/javascript/auth-signin#sign-in-with-redirect) and [`signUp()`](https://supabase.io/docs/reference/javascript/auth-signup#sign-up-with-redirect).
Redirect your users to specific route within your site on [`signIn()`](/docs/reference/javascript/auth-signin#sign-in-with-redirect) and [`signUp()`](/docs/reference/javascript/auth-signup#sign-up-with-redirect).
![Redirect your users after sign up](/images/blog/feb/auth-redirect.png)
@@ -58,7 +58,7 @@ We added a page to the Database section for managing Postgres Replication. It's
### Learning Resources
We've released a new [Resources](https://supabase.io/docs/resources) section in our docs, as well as two new Auth modules: [GoTrue Overview](https://supabase.io/docs/learn/auth-deep-dive/auth-gotrue) and [Google OAuth](https://supabase.io/docs/learn/auth-deep-dive/auth-google-oauth).
We've released a new [Resources](/docs/resources) section in our docs, as well as two new Auth modules: [GoTrue Overview](/docs/learn/auth-deep-dive/auth-gotrue) and [Google OAuth](/docs/learn/auth-deep-dive/auth-google-oauth).
![Our dashboard has sidebars](/images/blog/feb/docs-resources.png)
@@ -70,7 +70,7 @@ Launch your database in South Africa.
### Kaizen
- We filled up our [Examples](https://supabase.io/docs/guides/examples) page with a lot of new content.
- We filled up our [Examples](/docs/guides/examples) page with a lot of new content.
- We released a [Docker Compose](https://github.com/supabase/supabase/blob/master/docker/docker-compose.yml) file for running Supabase locally. This will be used in our upcoming CLI.
- We have a couple of pending RFCs which you may want to participate in:
- [Planning our CLI and Local Development](https://github.com/supabase/cli/pull/2)
@@ -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](https://supabase.io/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/2020/11/18/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).
@@ -91,7 +91,7 @@ const main = async() => {
main()
```
Once this is working, if you want to learn more about the [query interface](https://supabase.io/docs/reference/javascript/filter) you might want to try some of these challenges:
Once this is working, if you want to learn more about the [query interface](/docs/reference/javascript/filter) you might want to try some of these challenges:
```jsx
// 1. List all the countries in Antarctica
@@ -125,7 +125,7 @@ const { data, error } = await supabase
.select('name, country_id')
.neq('name', 'The shire')
// full docs here: https://supabase.io/docs/reference/javascript/filter
// full docs here: /docs/reference/javascript/filter
```
We look forward to showing off some more Supabase + Replit examples.
+9 -9
View File
@@ -21,7 +21,7 @@ Demo Day gave our team something to rally around. The looming deadline forced us
After we finished YC, we recreated Demo Day conditions internally: we gave ourselves a 3-month timeline to move from Alpha to Beta.
It worked wonders. We made [giant leaps forward](https://supabase.io/beta) in the performance, security, and
It worked wonders. We made [giant leaps forward](/beta) in the performance, security, and
stability of the platform.
The day after our Beta announcement (still high on the adrenaline of the launch) we asked ourselves:
@@ -43,9 +43,9 @@ or follow us on twitter to keep up to date: [@supabase](https://twitter.com/supa
- 29 March 2021
We're announcing pricing today. If you don’t care for the details, [here is the pricing](https://supabase.io/pricing).
We're announcing pricing today. If you don’t care for the details, [here is the pricing](/pricing).
The [blog post here](https://supabase.io/blog/2021/03/29/pricing) goes into depth around our decision-making process.
The [blog post here](/blog/2021/03/29/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](https://supabase.io/blog/2021/03/30/supabase-storage)
Checkout the launch post here: [Supabase Storage](/blog/2021/03/30/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](https://supabase.io/blog/2021/03/25/launch-week), and as promised - we're releasing our CLI.
Today is Day 3 of [Launch Week](/blog/2021/03/25/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: [https://supabase.io/blog/2021/03/31/supabase-cli](https://supabase.io/blog/2021/03/31/supabase-cli)
Check out the announcement post here: [/blog/2021/03/31/supabase-cli](/blog/2021/03/31/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.io](htt
It's the season finale of Supabase Launchweek! And we have THREE more things to share:
1. [Connection Pooling with PgBouncer](https://supabase.io/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/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.
2. [Workflow Engine](https://supabase.io/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/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!
3. supabase.io is now supabase.com - check out our origin story here: [https://supabase.io/blog/2021/04/02/supabase-dot-com](https://supabase.io/blog/2021/04/02/supabase-dot-com)
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)
![moar](/images/blog/launch-week/bernie-5.png)
+4 -4
View File
@@ -11,7 +11,7 @@ date: '03-29-2021'
## Pricing is hard
Many developers have been waiting for [pricing](https://supabase.io/pricing) before building on Supabase. It has taken this long to announce pricing for one simple reason: pricing is hard. We've spent countless hours discussing and testing different models. We consulted users, OSS veterans, and SaaS Gurus. We explored and ruled out a number of options including: no free tier, pure usage based, pay-per-seat, pay-per-row, and "bolt-on" feature based pricing.
Many developers have been waiting for [pricing](/pricing) before building on Supabase. It has taken this long to announce pricing for one simple reason: pricing is hard. We've spent countless hours discussing and testing different models. We consulted users, OSS veterans, and SaaS Gurus. We explored and ruled out a number of options including: no free tier, pure usage based, pay-per-seat, pay-per-row, and "bolt-on" feature based pricing.
Supabase is a suite of integrated products - should we compare our Postgres databases with Amazon RDS? Do we benchmark our Auth pricing against Auth0 or Okta?
@@ -19,7 +19,7 @@ So we decided to do what we always do: ship it, share it, and then listen to our
## TLDR
We are launching [pricing](https://supabase.io/pricing) with three tiers:
We are launching [pricing](/pricing) with three tiers:
1. Free - for up to four hobby-level projects
2. Pro - $25 per project per month, for more serious projects
@@ -75,10 +75,10 @@ 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](https://supabase.io/blog/2021/03/25/launch-week).
Check back throughout the week to see what else we're launching [here](/blog/2021/03/25/launch-week).
Sign up for the Supabase Beta [here](https://app.supabase.io).
And check out the full pricing details [here](https://supabase.io/pricing). And we'd love to hear your opnions on our Pricing! You can let us know via support@supabase.io.
And check out the full pricing details [here](/pricing). And we'd love to hear your opnions on our Pricing! You can let us know via support@supabase.io.
[^1]: Updated on Aug 17 2021 for clarity: the referenced Launch Week ended on the 4th of April 2021. Users that signed up prior to that date can request credits.
+5 -5
View File
@@ -56,7 +56,7 @@ We focused on performance, security and interoperability with the rest of the Su
### **Integration with the Supabase ecosystem**
Supabase is a [collection of open source tools](https://supabase.io/docs#how-it-works) which integrate very well with each other. We evaluated open source object storage servers like [Ceph](https://ceph.io/), [Swift](https://www.openstack.org/software/releases/ocata/components/swift), [Minio](https://min.io/) and [Zenko](https://github.com/scality/Zenko) but none of these tools were a good fit for our existing ecosystem.
Supabase is a [collection of open source tools](/docs#how-it-works) which integrate very well with each other. We evaluated open source object storage servers like [Ceph](https://ceph.io/), [Swift](https://www.openstack.org/software/releases/ocata/components/swift), [Minio](https://min.io/) and [Zenko](https://github.com/scality/Zenko) but none of these tools were a good fit for our existing ecosystem.
**Postgres Compatibility**
@@ -70,7 +70,7 @@ We are using managed services like [S3](https://aws.amazon.com/s3/), [Wasabi](ht
**Integration with Supabase Auth**
Existing tools do not play well with our authentication system. For example, Minio is bundled with its own [auth system](https://docs.min.io/docs/minio-admin-complete-guide.html#user) and there is no easy way to map Minio users to [Supabase users](https://supabase.io/docs/guides/auth).
Existing tools do not play well with our authentication system. For example, Minio is bundled with its own [auth system](https://docs.min.io/docs/minio-admin-complete-guide.html#user) and there is no easy way to map Minio users to [Supabase users](/docs/guides/auth).
In the end, we opted to build our own [Storage API server](https://github.com/supabase/storage-api).
@@ -113,7 +113,7 @@ on storage.objects for select using (
We have created helper functions like `foldername()`, `filename()` and `extension()` in the storage schema to make Policies even simpler.
This system integrates with our [User Management system](https://supabase.io/docs/guides/auth). Here is an example policy which gives access to a particular file to a Supabase user:
This system integrates with our [User Management system](/docs/guides/auth). Here is an example policy which gives access to a particular file to a Supabase user:
```sql
create policy crud_uid_file
@@ -146,7 +146,7 @@ We have intentionally kept the API surface for the storage backend very small, i
### Client libraries
You may be itching to get started tinkering around with our new Supabase storage - we have an example app prepared for you right [here](https://github.com/supabase/supabase-js/tree/master/example/next-storage) which simulates a simple context of setting an avatar image for a user. This will help you to get a high level overview of how to use your project's storage with our client library. For greater detail, refer to our storage API documentation [here](https://supabase.io/docs/reference/javascript/storage-createbucket).
You may be itching to get started tinkering around with our new Supabase storage - we have an example app prepared for you right [here](https://github.com/supabase/supabase-js/tree/master/example/next-storage) which simulates a simple context of setting an avatar image for a user. This will help you to get a high level overview of how to use your project's storage with our client library. For greater detail, refer to our storage API documentation [here](/docs/reference/javascript/storage-createbucket).
![Example app 1](/images/blog/storage/ph-7.png)
@@ -158,6 +158,6 @@ You may be itching to get started tinkering around with our new Supabase storage
- We will integrate our storage service with a Content Delivery Network. With a CDN, objects are cached on a global network. This leads to faster access times for your users around the world.
- We are working on transformations like resizing of images and automatic optimization of different media types. This makes it easy to embed Supabase objects directly in your websites and mobile applications without additional processing.
- A better editor to make authoring policies easier and less error prone.
- Reach out to us if you would like to help out with adding storage support in one of the [community maintained client libraries](https://supabase.io/docs/reference/javascript/supabase-client).
- Reach out to us if you would like to help out with adding storage support in one of the [community maintained client libraries](/docs/reference/javascript/supabase-client).
Take it for a spin on our [dashboard](http://app.supabase.io/) and let us know what you think!
+5 -5
View File
@@ -10,9 +10,9 @@ tags:
date: '03-31-2021'
---
**UPDATE:** The Node.js CLI is now obsolete. Follow the latest instructions [here](https://supabase.io/docs/guides/local-development).
**UPDATE:** The Node.js CLI is now obsolete. Follow the latest instructions [here](/docs/guides/local-development).
Today is Day 3 of [Launch Week](https://supabase.io/blog/2021/03/25/launch-week), and as promised - we're releasing our CLI.
Today is Day 3 of [Launch Week](/blog/2021/03/25/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:
@@ -29,7 +29,7 @@ Here are some of the items we have completed so far.
You can now run Supabase on your local machine, using Docker Compose. This Docker setup is 100% compatible with every project on Supabase - the tools used for local development are exactly the same as production.
We have released a full set of documentation [here](https://supabase.io/docs/guides/local-development). In this post we thought it would be useful to highlight how easy it is to get started.
We have released a full set of documentation [here](/docs/guides/local-development). In this post we thought it would be useful to highlight how easy it is to get started.
A lot of Supabase developers are familiar with React, so here are the steps you would use to create a new React project which uses Supabase as a backend.
@@ -220,8 +220,8 @@ Once you're all set, you can start the stack by running:
docker-compose up
```
Head over to the [Self Hosting Docs](https://supabase.io/docs/guides/self-hosting) for a more complete walk through, it also includes several [one-click deploys](https://supabase.io/docs/guides/self-hosting#one-click-deploys), so you can easily deploy into your own cloud hosting provider.
Head over to the [Self Hosting Docs](/docs/guides/self-hosting) for a more complete walk through, it also includes several [one-click deploys](/docs/guides/self-hosting#one-click-deploys), so you can easily deploy into your own cloud hosting provider.
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](https://supabase.io/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.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.io).
@@ -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](https://supabase.io/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/2021/03/25/launch-week).
+1 -1
View File
@@ -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](https://supabase.io/blog/2021/03/25/launch-week). While we were brainstorming
Anybody who knows Ant, knows that he [loves memes](/blog/2021/03/25/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
+3 -3
View File
@@ -14,7 +14,7 @@ tags:
date: '2021-04-02'
---
This week we [launched Supabase Storage](https://supabase.io/blog/2021/03/30/supabase-storage), which leaves one other huge piece of the
This week we [launched Supabase Storage](/blog/2021/03/30/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](https://supabase.io/blog/2021/03/30/supabase-storage#designing-the-storage-middleware), [n8n](https://n8n.io/),
[NodeRed](/blog/2021/03/30/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](https://supabase.io/blog/2021/03/30/supabase-storage#integration-with-the-supabase-ecosystem) that we found
[same shortcomings](/blog/2021/03/30/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](https://supabase.io/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](https://supabase.io/blog/2021/03/30/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).
![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](https://supabase.io/blog/2021/04/02/supabase-pgbouncer). Read the [full blog post](https://supabase.io/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/2021/04/02/supabase-pgbouncer). Read the [full blog post](/blog/2021/04/02/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](https://supabase.io/blog/2021/03/31/supabase-cli#migrations), and added some new tooling for self-hosting Supabase with Docker. [Blog post here](https://supabase.io/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/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).
![Supabase CLI](/images/blog/march-2021/supabase-cli.png)
@@ -56,34 +56,34 @@ 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](https://supabase.io/pricing) for full details and also our blog on why [pricing is hard](https://supabase.io/blog/2021/03/29/pricing).
See [Pricing Page](/pricing) for full details and also our blog on why [pricing is hard](/blog/2021/03/29/pricing).
![Supabase Pricing](/images/blog/march-2021/supabase-pricing.jpg)
## NFT Platform
Well... not really, but it made for a great [April Fools joke](https://supabase.io/blog/2021/04/01/supabase-nft-marketplace).
Well... not really, but it made for a great [April Fools joke](/blog/2021/04/01/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](https://supabase.io/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/2021/04/02/supabase-dot-com).
![Supabase Dot Com](/images/blog/supabase-dot-com-og.jpg)
## OAuth Scopes
Thanks to a comunity contribution ([@\_mateomorris](https://twitter.com/_mateomorris) and [@Beamanator](https://twitter.com/Beamanator)), Supabase Auth now includes OAuth scopes. These allow you to request elevated access during login. For example, you may want to request access to a list of Repositories when users log in with GitHub. Check out the [Documentation](https://supabase.io/docs/reference/javascript/auth-signup#sign-up-with-scopes).
Thanks to a comunity contribution ([@\_mateomorris](https://twitter.com/_mateomorris) and [@Beamanator](https://twitter.com/Beamanator)), Supabase Auth now includes OAuth scopes. These allow you to request elevated access during login. For example, you may want to request access to a list of Repositories when users log in with GitHub. Check out the [Documentation](/docs/reference/javascript/auth-signup#sign-up-with-scopes).
![Oauth Scope](/images/blog/march-2021/oauth-scopes.png)
## Kaizen
- You can now manage your PostgREST configuration inside the Dashboard.
- Our website has been redesigned. Check out our new [Homepage](https://supabase.io/) and [Blog](https://supabase.io/blog), and our new [Database](https://supabase.io/database), [Auth](https://supabase.io/auth), and [Storage](https://supabase.io/storage) product pages.
- We refactored some of our Filter methods to make them even easier to use. Check out the [Full Text Search](https://supabase.io/docs/reference/javascript/textsearch) refactor.
- We have added several new sections to our Docs including: [Local Dev](https://supabase.io/docs/guides/local-development), [Self Hosting](https://supabase.io/docs/guides/self-hosting), and [Postgres Reference](https://supabase.io/docs/reference/postgres/getting-started) docs (all still under development).
- Our website has been redesigned. Check out our new [Homepage](/) and [Blog](/blog), and our new [Database](/database), [Auth](/auth), and [Storage](/storage) product pages.
- We refactored some of our Filter methods to make them even easier to use. Check out the [Full Text Search](/docs/reference/javascript/textsearch) refactor.
- We have added several new sections to our Docs including: [Local Dev](/docs/guides/local-development), [Self Hosting](/docs/guides/self-hosting), and [Postgres Reference](/docs/reference/postgres/getting-started) docs (all still under development).
## Community
@@ -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](https://supabase.io/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/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.
![Workflows](/images/blog/workflows/workflows-thumb.jpg)
@@ -86,7 +86,7 @@ which provide a more general solution (but are less "realtime"), and we're openi
## Community spotlight: Threaded comments
One of the most powerful Postgres features is "recursive CTEs" which can be used for nested items (comments, pages, friend-graphs). [@lawrencecchen](https://twitter.com/lawrencecchen) has built a full [Threaded Comments demo](https://github.com/lawrencecchen/threaded-comments) which you can [Deploy with a single click](https://github.com/lawrencecchen/threaded-comments#instant-deploy). Want to add comments to your blog with [Full Text Search](https://supabase.io/docs/reference/javascript/textsearch)? Just use Postgres.
One of the most powerful Postgres features is "recursive CTEs" which can be used for nested items (comments, pages, friend-graphs). [@lawrencecchen](https://twitter.com/lawrencecchen) has built a full [Threaded Comments demo](https://github.com/lawrencecchen/threaded-comments) which you can [Deploy with a single click](https://github.com/lawrencecchen/threaded-comments#instant-deploy). Want to add comments to your blog with [Full Text Search](/docs/reference/javascript/textsearch)? Just use Postgres.
<video width="99%" autoPlay="autoplay" muted playsInline controls={true}>
<source src="/images/blog/april-2021/threaded-small.mp4" type="video/mp4" muted playsInline />
@@ -158,13 +158,13 @@ If you want to keep up to date, make sure you [subscribe to our YouTube channel]
## Coming Next
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](https://supabase.io/docs/guides/local-development) and [Self Hosting](https://supabase.io/docs/guides/self-hosting).
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](https://supabase.io/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/2021/04/02/supabase-workflows). This is quite a large task, but we're making progress and aiming to ship sometime in July.
## One more thing
[We started hiring](https://supabase.io/docs/careers).
[We started hiring](/docs/careers).
![screenshot of our hiring page](/images/blog/april-2021/hiring.png)
@@ -60,7 +60,7 @@ There are a huge number of Supabase developers in Japan and China, and at their
## Return data as CSV
You can now [retrieve your data](https://supabase.io/docs/reference/javascript/select#return-data-as-csv) as Comma Separated Values. Thanks to [@andreivreja](https://github.com/andreivreja) for the [awesome PR](https://github.com/supabase/postgrest-js/pull/187).
You can now [retrieve your data](/docs/reference/javascript/select#return-data-as-csv) as Comma Separated Values. Thanks to [@andreivreja](https://github.com/andreivreja) for the [awesome PR](https://github.com/supabase/postgrest-js/pull/187).
![Download data as a CSV](/images/blog/2021-may/return-data-as-csv.png)
@@ -15,7 +15,7 @@ date: '2021-07-02'
PostgreSQL manages permissions through roles. To create these roles, a database user needs the `CREATEROLE` privilege,
which not only allows role creation but also _modification_ of any role (except superusers).
At Supabase, we use dedicated roles for each of our customers' backend services. For instance, our [Storage API](https://supabase.io/storage) 
At Supabase, we use dedicated roles for each of our customers' backend services. For instance, our [Storage API](/storage) 
uses the `supabase_storage_admin` role for connecting to the database. Giving the `CREATEROLE` privilege to our customers would allow them to
drop this role and take their own Storage API down.
@@ -403,7 +403,7 @@ As you can see, PostgreSQL Hooks allow us to intercept SQL statements. There are
The full SupaUtils code is in our [GitHub repository](https://github.com/supabase/supautils/).
By the way, if you like working on PostgreSQL tooling and extensions: we are hiring [PostgreSQL experts](https://supabase.io/docs/careers/postgres-experts)!
By the way, if you like working on PostgreSQL tooling and extensions: we are hiring [PostgreSQL experts](/docs/careers/postgres-experts)!
[^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).
@@ -45,32 +45,32 @@ If you're building a community product, Discord logins are the perfect option.
## New Guides
We spent the month building up a new [Guides section](https://supabase.io/docs/guides) in our Docs. Here are a few highlights:
We spent the month building up a new [Guides section](/docs/guides) in our Docs. Here are a few highlights:
### Postgres Full Text Search
Ever wanted to build a Search Engine? We just released a guide which shows you how to implement
[Full Text Search using Postgres](https://supabase.io/docs/guides/database/full-text-search).
[Full Text Search using Postgres](/docs/guides/database/full-text-search).
![Postgres Full Text Search](/images/blog/2021-june/postgres-fts.png)
### OAuth Guides
We released step-by-step guides to help you set up OAuth with
[Apple](https://supabase.io/docs/guides/auth/auth-apple),
[Bitbucket](https://supabase.io/docs/guides/auth/auth-bitbucket),
[Facebook](https://supabase.io/docs/guides/auth/auth-facebook),
[GitHub](https://supabase.io/docs/guides/auth/auth-github),
[GitLab](https://supabase.io/docs/guides/auth/auth-gitlab),
[Google](https://supabase.io/docs/guides/auth/auth-google), and
[Twitter](https://supabase.io/docs/guides/auth/auth-twitter).
[Apple](/docs/guides/auth/auth-apple),
[Bitbucket](/docs/guides/auth/auth-bitbucket),
[Facebook](/docs/guides/auth/auth-facebook),
[GitHub](/docs/guides/auth/auth-github),
[GitLab](/docs/guides/auth/auth-gitlab),
[Google](/docs/guides/auth/auth-google), and
[Twitter](/docs/guides/auth/auth-twitter).
![Image of Apple's developer Portal](/images/blog/2021-june/apple-developer-portal.png)
### Javascript + Postgres
Did you know that you can use Javascript inside your Postgres database? Here's how, with the
[`plv8` extension](https://supabase.io/docs/guides/database/extensions/plv8).
[`plv8` extension](/docs/guides/database/extensions/plv8).
![Postgres and Javascript with plv8](/images/blog/2021-june/supabase-plv8.png)
@@ -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](https://supabase.io/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/2021/03/25/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](https://supabase.io/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/2021/03/25/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**.
@@ -47,7 +47,7 @@ Tuesday 27 July 2021.[^1]
### What?
We shipped [Version 1 of Supabase Storage](https://supabase.io/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/2021/03/30/supabase-storage) in the last Launch Week, and now we've had 4 months to work on Storage Reloaded.
### Where?
@@ -63,7 +63,7 @@ Wednesday 28 July 2021.[^1]
### What?
What's cooler than Arnie in the 90's? Passwordless logins. We've [already](https://supabase.io/docs/guides/auth/auth-apple) [built](https://supabase.io/docs/guides/auth/auth-bitbucket) [support](https://supabase.io/docs/guides/auth/auth-discord) [for](https://supabase.io/docs/guides/auth/auth-facebook) [eight](https://supabase.io/docs/guides/auth/auth-github) [different](https://supabase.io/docs/guides/auth/auth-gitlab) [Oauth](https://supabase.io/docs/guides/auth/auth-google) [providers](https://supabase.io/docs/guides/auth/auth-twitter), so it's anyone's guess what can happen in Supabase Auth Episode II.
What's cooler than Arnie in the 90's? Passwordless logins. We've [already](/docs/guides/auth/auth-apple) [built](/docs/guides/auth/auth-bitbucket) [support](/docs/guides/auth/auth-discord) [for](/docs/guides/auth/auth-facebook) [eight](/docs/guides/auth/auth-github) [different](/docs/guides/auth/auth-gitlab) [Oauth](/docs/guides/auth/auth-google) [providers](/docs/guides/auth/auth-twitter), so it's anyone's guess what can happen in Supabase Auth Episode II.
### Where?
@@ -13,7 +13,7 @@ date: '2021-07-26'
toc_depth: 2
---
Supabase has grown a lot [^1] since last [Launch Week](https://supabase.io/blog/2021/03/25/launch-week),
Supabase has grown a lot [^1] since last [Launch Week](/blog/2021/03/25/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.
@@ -103,15 +103,15 @@ Today the Community are releasing both the Flutter and Dart libraries in Beta (w
### Get started
- Check out the [Flutter Quickstart Guide](https://supabase.io/docs/guides/with-flutter)
- Check out the [Flutter Quickstart Guide](/docs/guides/with-flutter)
- Check out the code:
- Supabase Flutter: [GitHub](https://github.com/supabase/supabase-flutter/) | [Release](https://pub.dev/packages/supabase_flutter)
- Supabase Dart: [GitHub](https://github.com/supabase/supabase-dart/) | [Release](https://pub.dev/packages/supabase)
### Get involved
- Help [write](https://supabase.io/docs/handbook/supasquad#author) the Flutter Docs.
- Help [maintain](https://supabase.io/docs/handbook/supasquad#maintainer) the [Flutter](https://github.com/supabase/supabase-flutter/)
- Help [write](/docs/handbook/supasquad#author) the Flutter Docs.
- Help [maintain](/docs/handbook/supasquad#maintainer) the [Flutter](https://github.com/supabase/supabase-flutter/)
and [Dart](https://github.com/supabase/supabase-dart/) libraries.
## Supabase Discord
+5 -5
View File
@@ -11,7 +11,7 @@ date: '2021-07-27'
toc_depth: 2
---
At Supabase, one of our core values is [Kaizen](https://en.wikipedia.org/wiki/Kaizen) - continuous improvement. And that's exactly what we've been doing with Storage since it [launched](https://supabase.io/blog/2021/03/30/supabase-storage) three months ago. Today, we are launching the Sequel to Storage Alpha (I bet you didn't see that coming): Storage Beta!
At Supabase, one of our core values is [Kaizen](https://en.wikipedia.org/wiki/Kaizen) - continuous improvement. And that's exactly what we've been doing with Storage since it [launched](/blog/2021/03/30/supabase-storage) three months ago. Today, we are launching the Sequel to Storage Alpha (I bet you didn't see that coming): Storage Beta!
## Streaming Media
@@ -38,7 +38,7 @@ You can make objects public in S3 via multiple mechanisms (e.g. tags, or prefixe
Objects in public buckets can be accessed via a URL without any Authorization tokens or headers. This makes them perfect for hosting assets for your web or mobile application.
Public buckets still require [Auth Policies](https://supabase.io/docs/guides/storage#policy-examples) to upload and delete objects, allowing you to securely manage their contents.
Public buckets still require [Auth Policies](/docs/guides/storage#policy-examples) to upload and delete objects, allowing you to securely manage their contents.
<video width="99%" autoPlay="autoplay" muted playsInline controls={true}>
<source src="/images/blog/2021-june/public-buckets.mp4" type="video/mp4" muted playsInline />
@@ -77,7 +77,7 @@ It took some time to enable Storage on self-hosted Supabase. We wanted to provid
From day 1, Supabase Storage was designed so that it would be easy to add new Storage backends. We knew we'd add more storage options like Google Cloud Storage or Backblaze, but little did we expect that this would be useful for our self-hosting setup! We implemented a new Storage Backend which [use a local filesystem](https://github.com/supabase/storage-api/blob/master/src/backend/file.ts) for storing objects. You can now get started with Storage without any additional setup, giving you a completely self-contained instance of Supabase.
Check out our updated [self hosting guide](https://supabase.io/docs/guides/self-hosting) and our [CLI](https://github.com/supabase/cli) to get started.
Check out our updated [self hosting guide](/docs/guides/self-hosting) and our [CLI](https://github.com/supabase/cli) to get started.
## Upload anything
@@ -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](https://supabase.io/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/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.
![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](https://supabase.io/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/2021/07/27/spot-flutter-with-postgres) built with Flutter
<Quote img="tyler-spot.jpg" caption="Tyler Shukert, creator of Spot">
<p>
@@ -21,7 +21,7 @@ list of external providers including GitHub, Discord, Azure, Apple and more.
Supabase Auth is similar to Auth0 and Firebase Auth with one major difference - the user data lives in your own database,
reducing lock-in, and making the auth system more extensible. You can write native PostgreSQL Row Level Security policies to
determine which data your users should (or should not) have access to. It can even be used in conjunction with other Supabase features,
such as [Storage](https://supabase.io/storage), to control access for specific files and buckets.
such as [Storage](/storage), to control access for specific files and buckets.
Today we're announcing some major new features for our [fork](https://github.com/supabase/gotrue) of Netlify's [GoTrue](https://github.com/netlify/gotrue) Auth server.
@@ -51,7 +51,7 @@ with either an OTP or a phone + password combo.
Supabase Auth supports [Twilio](https://www.twilio.com/) as an SMS provider, with more options coming soon.
Simply plug your Twilio credentials into your Auth Settings in the Supabase Dashboard to get started.
Check out the [documentation](https://supabase.io/docs/guides/auth/auth-twilio) to get started with Mobile OTPs,
Check out the [documentation](/docs/guides/auth/auth-twilio) to get started with Mobile OTPs,
or watch the [Youtube guide](https://youtu.be/akScoPO01bc).
<iframe
@@ -73,8 +73,8 @@ Auth and will be offering that as an option soon.
The community has contributed tons of OAuth providers, and today we're announcing two more.
Shoutout to [@ph1p](https://github.com/ph1p) who contributed [Twitch](https://supabase.io/docs/guides/auth/auth-twitch) as our latest OAuth provider!
The Supabase team added [Discord](https://supabase.io/docs/guides/auth/auth-discord) last month, bringing the total OAuth Providers to ten.
Shoutout to [@ph1p](https://github.com/ph1p) who contributed [Twitch](/docs/guides/auth/auth-twitch) as our latest OAuth provider!
The Supabase team added [Discord](/docs/guides/auth/auth-discord) last month, bringing the total OAuth Providers to ten.
![All Supabase OAuth providers](/images/blog/auth-v2/supabase-oauth-providers.png)
@@ -16,7 +16,7 @@ toc_depth: 3
# The Supabase Hackathon
We've reached the end of [Launch Week II: The SQL](https://supabase.io/blog/2021/07/22/supabase-launch-week-sql) - but it's the start of something else...
We've reached the end of [Launch Week II: The SQL](/blog/2021/07/22/supabase-launch-week-sql) - but it's the start of something else...
The first Supabase Hackathon starts **right now**.
@@ -122,13 +122,13 @@ If you need help or advice when building, find other people to join your team, o
Here's a collection of resources that will help you get started building with Supabase:
- [Examples and Resources](https://supabase.io/docs/guides/examples)
- [Examples and Resources](/docs/guides/examples)
- [Supabase Crash Course](https://www.youtube.com/watch?v=7uKQBl9uZ00) [video]
- [Flutter Quickstart Guide](https://supabase.io/docs/guides/with-flutter)
- [Nextjs Quickstart Guide](https://supabase.io/docs/guides/with-nextjs)
- [Using Supabase inside Replit](https://supabase.io/blog/2021/03/11/using-supabase-replit)
- [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)
- [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](https://supabase.io/docs/learn/auth-deep-dive/auth-deep-dive-jwts) [videos]
- [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)
- [How to Integrate Supabase in Your Ionic App](https://www.youtube.com/watch?v=pl9XfIWutKE) [video]
- [Building a Slack clone with authentication and realtime data syncing using Supabase](https://www.youtube.com/watch?v=LUMxJ4w-MUU) [video]
@@ -29,7 +29,7 @@ Postgres has built-in support for [SQL functions](https://www.postgresql.org/doc
![Postgres Functions](/images/blog/functions-updates/postgres-functions.png)
You can call PostgreSQL Functions with `supabase-js` using your project API [[Docs](https://supabase.io/docs/reference/javascript/rpc)]:
You can call PostgreSQL Functions with `supabase-js` using your project API [[Docs](/docs/reference/javascript/rpc)]:
```js hideCopy
const { data, error } = await supabase.rpc('best_star_wars_series', {
@@ -92,7 +92,7 @@ Supabase will support several different targets.
### Hook Payload
If the target is a Serverless function or an HTTP `POST` request, the payload is automatically generated from the underlying table data. The format matches Supabase [Realtime](https://supabase.io/docs/reference/javascript/subscribe), except in this case you don't a client to "listen" to the changes. This provides yet another mechanism for responding to database changes.
If the target is a Serverless function or an HTTP `POST` request, the payload is automatically generated from the underlying table data. The format matches Supabase [Realtime](/docs/reference/javascript/subscribe), except in this case you don't a client to "listen" to the changes. This provides yet another mechanism for responding to database changes.
```ts hideCopy
type InsertPayload = {
@@ -248,4 +248,4 @@ Function Hooks is enabled today on all [new projects](https://app.supabase.io).
![Enable hooks](/images/blog/functions-updates/enable-hooks.png)
[^1]: Postgres also has the concept of [Hooks](https://supabase.io/blog/2021/07/01/roles-postgres-hooks), but they're more of an internal concept.
[^1]: Postgres also has the concept of [Hooks](/blog/2021/07/01/roles-postgres-hooks), but they're more of an internal concept.
+5 -5
View File
@@ -146,13 +146,13 @@ If you want to join the community and build with us, find other people using Sup
If you're inspired to build, here's a collection of resources that will help you get started building with Supabase:
- [Examples and Resources](https://supabase.io/docs/guides/examples)
- [Examples and Resources](/docs/guides/examples)
- [Supabase Crash Course](https://www.youtube.com/watch?v=7uKQBl9uZ00) [video]
- [Flutter Quickstart Guide](https://supabase.io/docs/guides/with-flutter)
- [Nextjs Quickstart Guide](https://supabase.io/docs/guides/with-nextjs)
- [Using Supabase inside Replit](https://supabase.io/blog/2021/03/11/using-supabase-replit)
- [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)
- [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](https://supabase.io/docs/learn/auth-deep-dive/auth-deep-dive-jwts) [videos]
- [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)
- [How to Integrate Supabase in Your Ionic App](https://www.youtube.com/watch?v=pl9XfIWutKE) [video]
- [Building a Slack clone with authentication and realtime data syncing using Supabase](https://www.youtube.com/watch?v=LUMxJ4w-MUU) [video]
@@ -38,10 +38,10 @@ The community has been sieving through a slew of bad puns and retro memes to dis
## Auth v2 with Phone Auth
Your users can now log in with SMS based mobile auth! We have a Twilio integration ([Guide Here](https://supabase.io/docs/guides/auth/auth-twilio)) and will be adding more providers soon.
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](https://supabase.io/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/2021/07/28/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](https://supabase.io/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/2021/07/27/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](https://supabase.io/blog/2021/07/29/supabase-reports-and-metrics) on what you get and how we built it.
Check the [post here](/blog/2021/07/29/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](https://supabase.io/blog/2021/07/26/supabase-postgres-13).
This gives you [looooaads of new stuff out the box](/blog/2021/07/26/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](https://supabase.io/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/2021/07/26/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`.
@@ -85,21 +85,21 @@ which provides the auto-generated CRUD API that we wrap with `supabase-js`.
## Flutter/Dart support
Our community driven libs for the fasted growing mobile and web framework are now in beta. Learn more by following the [Quickstart guide](https://supabase.io/docs/guides/with-flutter).
Our community driven libs for the fasted growing mobile and web framework are now in beta. Learn more by following the [Quickstart guide](/docs/guides/with-flutter).
![Flutter/Dart support](/images/blog/2021-july/dart.png)
## 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](https://supabase.io/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/2021/07/30/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](https://supabase.io/blog/2021/07/30/supabase-functions-updates).
Read the latest [updates here](/blog/2021/07/30/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](https://supabase.io/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/2021/07/28/mobbin-supabase-200000-users)
- To the amazing users who are helping moderate our discord server, ya'll are amazing
**Supabase Github Star Growth**
@@ -39,7 +39,7 @@ We'll release more details soon. Read more on [TechCrunch](https://techcrunch.co
## Realtime Security, codename: WALRUS
If you've been waiting for Row Level Security to land in Postgres [subscriptions](https://supabase.io/docs/reference/javascript/subscribe),
If you've been waiting for Row Level Security to land in Postgres [subscriptions](/docs/reference/javascript/subscribe),
then you're going to love our new repo:
[Write Ahead Log Realtime Unified Security (WALRUS)](https://github.com/supabase/walrus).
The name might be a bit forced, but the security design is deliberate.
@@ -50,13 +50,13 @@ It's not in production yet, but we're making the repo public for comments using
## Custom SMS templates
If you're using SMS login in [Auth v2](https://supabase.io/blog/2021/07/28/supabase-auth-passwordless-sms-login), you can now customize the SMS which is sent to your users. Read more in the [docs](https://supabase.io/docs/guides/auth/auth-twilio#sms-custom-template).
If you're using SMS login in [Auth v2](/blog/2021/07/28/supabase-auth-passwordless-sms-login), you can now customize the SMS which is sent to your users. Read more in the [docs](/docs/guides/auth/auth-twilio#sms-custom-template).
![Custom SMS templates](/images/blog/2021-august/custom-sms.png)
## Dart and Flutter Docs
Thanks entirely to [@dshukertjr](https://twitter.com/dshukertjr), we now have in-depth [reference Dart documentation](https://supabase.io/docs/reference/dart/installing) for CRUD, Auth, Realtime and more!
Thanks entirely to [@dshukertjr](https://twitter.com/dshukertjr), we now have in-depth [reference Dart documentation](/docs/reference/dart/installing) for CRUD, Auth, Realtime and more!
![Dart and Flutter Docs](/images/blog/2021-august/supabase-flutter.jpg)
@@ -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](https://supabase.io/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/2021/08/09/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)
@@ -152,7 +152,7 @@ If you want to keep up to date, make sure you [subscribe to our YouTube channel]
## Coming Next
Last December we [moved from Alpha to Beta](https://supabase.io/beta), with a focus on Security, Performance, and Reliability. After a couple of Launch Weeks pushing out new and sexy features, we have decided it's time to focus on these again.
Last December we [moved from Alpha to Beta](/beta), with a focus on Security, Performance, and Reliability. After a couple of Launch Weeks pushing out new and sexy features, we have decided it's time to focus on these again.
By the time we're done, Supabase will be production-ready for all use cases.
@@ -16,7 +16,7 @@ toc_depth: 3
# Supabase Hacktoberfest Hackathon 2021
We were absolutely blown away by [all the amazing projects](https://supabase.io/blog/2021/08/09/hackathon-winners) you built during our [first Supabase Hackathon](https://supabase.io/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/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/).
## Here's the plan
@@ -133,14 +133,14 @@ 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](https://supabase.io/blog/2021/08/09/hackathon-winners)!
- [Examples and Resources](https://supabase.io/docs/guides/examples)
- Need some inspiration? [See what folks built last time](/blog/2021/08/09/hackathon-winners)!
- [Examples and Resources](/docs/guides/examples)
- [Supabase Crash Course](https://www.youtube.com/watch?v=7uKQBl9uZ00) [video]
- [Flutter Quickstart Guide](https://supabase.io/docs/guides/with-flutter)
- [Nextjs Quickstart Guide](https://supabase.io/docs/guides/with-nextjs)
- [Using Supabase inside Replit](https://supabase.io/blog/2021/03/11/using-supabase-replit)
- [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)
- [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](https://supabase.io/docs/learn/auth-deep-dive/auth-deep-dive-jwts) [videos]
- [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)
- [How to Integrate Supabase in Your Ionic App](https://www.youtube.com/watch?v=pl9XfIWutKE) [video]
- [Building a Slack clone with authentication and realtime data syncing using Supabase](https://www.youtube.com/watch?v=LUMxJ4w-MUU) [video]
@@ -18,13 +18,13 @@ We spent this month updating docs and content, improving UX, and [onboarding Dev
## Hackathon v2
To kick off [Hacktoberfest](https://hacktoberfest.digitalocean.com/), another Supabase Hackathon is happening [right now](https://supabase.io/blog/2021/09/28/supabase-hacktoberfest-hackathon-2021). You've got another 7 days to be in to win a limited edition t-shirt.
To kick off [Hacktoberfest](https://hacktoberfest.digitalocean.com/), another Supabase Hackathon is happening [right now](/blog/2021/09/28/supabase-hacktoberfest-hackathon-2021). You've got another 7 days to be in to win a limited edition t-shirt.
![Hackathon](/images/blog/2021-sept/hacktober.png)
## Abort Requests
We added support for [AbortController](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) in our Javascript library so that you can abort long-running queries. [[Docs](https://supabase.io/docs/reference/javascript/select#aborting-requests-in-flight)]
We added support for [AbortController](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) in our Javascript library so that you can abort long-running queries. [[Docs](/docs/reference/javascript/select#aborting-requests-in-flight)]
![Abort Requests](/images/blog/2021-sept/Supabase_abort_requests.png)
@@ -58,7 +58,7 @@ We updated our [grid](https://github.com/supabase/grid) to support relationships
## Improved Auth Docs
We've revamped the Auth docs - The docs are now broken down into [Authentication](https://supabase.io/docs/guides/auth/auth-apple) and [Authorization](https://supabase.io/docs/guides/auth/row-level-security), and organized alongside our [Deep Dive](https://supabase.io/docs/learn/auth-deep-dive/auth-deep-dive-jwts) series.
We've revamped the Auth docs - The docs are now broken down into [Authentication](/docs/guides/auth/auth-apple) and [Authorization](/docs/guides/auth/row-level-security), and organized alongside our [Deep Dive](/docs/learn/auth-deep-dive/auth-deep-dive-jwts) series.
![Auth Docs](/images/blog/2021-sept/auth-docs.png)
@@ -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](https://supabase.io/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/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.
### Get started
@@ -144,13 +144,13 @@ If you want to join the community and build with us, find other people using Sup
If you're inspired to build, here's a collection of resources that will help you get started building with Supabase:
- [Examples and Resources](https://supabase.io/docs/guides/examples)
- [Examples and Resources](/docs/guides/examples)
- [Supabase Crash Course](https://www.youtube.com/watch?v=7uKQBl9uZ00) [video]
- [Flutter Quickstart Guide](https://supabase.io/docs/guides/with-flutter)
- [Nextjs Quickstart Guide](https://supabase.io/docs/guides/with-nextjs)
- [Using Supabase inside Replit](https://supabase.io/blog/2021/03/11/using-supabase-replit)
- [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)
- [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](https://supabase.io/docs/learn/auth-deep-dive/auth-deep-dive-jwts) [videos]
- [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)
- [How to Integrate Supabase in Your Ionic App](https://www.youtube.com/watch?v=pl9XfIWutKE) [video]
- [Building a Slack clone with authentication and realtime data syncing using Supabase](https://www.youtube.com/watch?v=LUMxJ4w-MUU) [video]
@@ -42,7 +42,7 @@ Firebase seemed appealing due to its ability to get started quickly, but the tea
When the team discovered Supabase on Hacker News they felt excitement. Supabase has a reputation for a smooth developer experience, providing Postgres and Row Level Security as a core feature.
As a bonus, Supabase provided more than just a database, reducing their DevOps overhead. After reading the [Supabase Auth documentation](https://supabase.io/docs/guides/auth) the team determined they can have the functionality they need, like SMS OTP. When they saw [Mobbin are using Supabase at scale](https://supabase.io/blog/2021/07/28/mobbin-supabase-200000-users), they decided to migrate to Supabase.
As a bonus, Supabase provided more than just a database, reducing their DevOps overhead. After reading the [Supabase Auth documentation](/docs/guides/auth) the team determined they can have the functionality they need, like SMS OTP. When they saw [Mobbin are using Supabase at scale](/blog/2021/07/28/mobbin-supabase-200000-users), they decided to migrate to Supabase.
## Globally recognised brands need quality at scale
+7 -7
View File
@@ -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](https://supabase.io/blog/2020/12/02/case-study-xendit) to
[digital platforms powering 200,000 users](https://supabase.io/blog/2021/07/28/mobbin-supabase-200000-users).
[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).
<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](https://supabase.io/blog/2020/06/15/supabase-steve-chavez),
([PostgREST](/blog/2020/06/15/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.
@@ -216,8 +216,8 @@ User-facing applications usually require tools beyond just a database and fronte
- **Authentication:** for users sign ups.
- **File Storage:** for large images and media.
Supabase makes all of this easy. Beyond the database we offer [Auth](https://supabase.io/docs/guides/auth),
RESTful and Realtime [APIs](https://supabase.io/docs/guides/api), a [Storage](https://supabase.io/docs/guides/storage)
Supabase makes all of this easy. Beyond the database we offer [Auth](/docs/guides/auth),
RESTful and Realtime [APIs](/docs/guides/api), a [Storage](/docs/guides/storage)
system for large files, and a bunch of other tools - all wrapped up into a simple-to-use Dashboard.
![Supabase Dashboard](/images/blog/series-a/dashboard.png)
@@ -228,7 +228,7 @@ existing functionality.
- **Row Level Security:** restrict user access to data and files using Postgres Policies.
- **Realtime data streams:** subscribe to database changes using the logical replication stream.
- **Function Hooks:** trigger external systems using Postgres triggers and our [async request extension](https://github.com/supabase/pg_net/).
- **RESTful APIs:** query your database [tables](https://supabase.io/docs/reference/javascript/select) and [functions](https://supabase.io/docs/reference/javascript/rpc) over HTTP, using [PostgREST](https://postgrest.org).
- **RESTful APIs:** query your database [tables](/docs/reference/javascript/select) and [functions](/docs/reference/javascript/rpc) over HTTP, using [PostgREST](https://postgrest.org).
### Phase 3: Cloud-native PostgreSQL
@@ -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](https://supabase.io/blog/2020/06/15/supabase-steve-chavez), one of our first hires over a year ago.
[Supabase developer](/blog/2020/06/15/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.
+2 -2
View File
@@ -21,8 +21,8 @@ const BuiltExamples = () => {
</p>
<Space className="justify-center">
<Link
href="https://supabase.io/docs/guides/examples"
as="https://supabase.io/docs/guides/examples"
href="/docs/guides/examples"
as="/docs/guides/examples"
>
<a>
<Button type="default">View all examples</Button>
+1 -1
View File
@@ -37,7 +37,7 @@ const Hero = () => {
</Button>
</a>
</Link>
<Link href="https://app.supabase.io/docs" as="https://supabase.io/docs">
<Link href="/docs" as="/docs">
<a>
<Button
className="mt-10 py-3"
+4 -4
View File
@@ -44,8 +44,8 @@ function GithubExamples() {
</Typography.Text>
<div className="flex space-y-1.5 flex-col lg:space-y-0 lg:space-x-1.5 lg:flex-row justify-center">
<Link
href="https://supabase.io/docs/guides/examples#guides"
as="https://supabase.io/docs/guides/examples#guides"
href="/docs/guides/examples#guides"
as="/docs/guides/examples#guides"
>
<a>
<Button type="default" icon={<IconBookOpen />}>
@@ -54,8 +54,8 @@ function GithubExamples() {
</a>
</Link>
<Link
href="https://supabase.io/docs/guides/examples"
as="https://supabase.io/docs/guides/examples"
href="/docs/guides/examples"
as="/docs/guides/examples"
>
<a>
<Button type="default">View all examples</Button>
+1 -1
View File
@@ -1,5 +1,5 @@
{
"show": true,
"text": "Supabase Raises $30m Series A... Read More",
"link": "https://supabase.io/blog/2021/10/28/supabase-series-a"
"link": "/blog/2021/10/28/supabase-series-a"
}
+3 -3
View File
@@ -3,19 +3,19 @@
"name": "TypeScript Support",
"description": "Type definitions built directly from your database schema",
"badge": "",
"url": "https://supabase.io/docs/client/generating-types"
"url": "/docs/client/generating-types"
},
{
"name": "Install from CDN",
"description": "Use Supabase in the browser without a build process",
"badge": "",
"url": "https://supabase.io/docs/client/initializing"
"url": "/docs/client/initializing"
},
{
"name": "Local emulator",
"description": "Develop locally and push to production when you're ready",
"badge": "",
"url": "https://supabase.io/docs/guides/self-hosting"
"url": "/docs/guides/self-hosting"
},
{
"name": "Supabase CLI",
+1 -1
View File
@@ -99,7 +99,7 @@
},
{
"text": "Security.txt",
"url": "https://supabase.io/.well-known/security.txt"
"url": "/.well-known/security.txt"
}
]
}
+2 -2
View File
@@ -49,7 +49,7 @@
},
{
"question": "Are you going to change your pricing in the future?",
"answer": "Our pricing is in Beta. You can read more about our decisions in our blog on pricing [here](https://supabase.io/blog/2021/03/29/pricing). Pricing may change in the future, however as a team of developers we are committed to pricing being as developer friendly as possible."
"answer": "Our pricing is in Beta. You can read more about our decisions in our blog on pricing [here](/blog/2021/03/29/pricing). Pricing may change in the future, however as a team of developers we are committed to pricing being as developer friendly as possible."
},
{
"question": "I read that you are giving credits to users who sign up during beta, do I get those?",
@@ -101,7 +101,7 @@
},
{
"question": "Where can I find Privacy and Terms of Use information for Supabase?",
"answer": "You can check out our privacy policy here [here](https://supabase.io/docs/company/privacy) and terms of service [here](https://supabase.io/docs/company/terms)."
"answer": "You can check out our privacy policy here [here](/docs/company/privacy) and terms of service [here](/docs/company/terms)."
},
{
"question": "What is the largest sized file I can deploy to storage?",
@@ -6,7 +6,7 @@ export default [
detail_text: 'Create a policy that allows public access to a table',
badges_label: '',
badges: [],
url: 'https://supabase.io/docs/guides/auth#allow-read-access',
url: '/docs/guides/auth#allow-read-access',
code: `
-- 1. Create table
create table profiles (
@@ -31,7 +31,7 @@ using ( true );
'Create a policy that only allows a user to update rows that match their unique ID',
badges_label: '',
badges: [],
url: 'https://supabase.io/docs/guides/auth#restrict-updates',
url: '/docs/guides/auth#restrict-updates',
code: `
-- 1. Create table
create table profiles (
@@ -56,7 +56,7 @@ using ( auth.uid() = id );
'Create a policy that allows for team members to update only rows which match their team ID.',
badges_label: '',
badges: [],
url: 'https://supabase.io/docs/guides/auth#policies-with-joins',
url: '/docs/guides/auth#policies-with-joins',
code: `
create table teams (
id serial primary key,
+3 -3
View File
@@ -93,7 +93,7 @@ function AuthPage() {
/>
</div>,
]}
documentation_url={'https://supabase.io/docs/guides/auth'}
documentation_url={'/docs/guides/auth'}
/>
<SectionContainer>
@@ -197,7 +197,7 @@ function AuthPage() {
</div>
</div>,
]}
documentation_link={'https://supabase.io/docs/guides/auth'}
documentation_link={'/docs/guides/auth'}
/>
</SectionContainer>
@@ -229,7 +229,7 @@ function AuthPage() {
</p>
<p>Policies can be written in SQL or using the dashboard online.</p>
</Typography.Text>
<Link href="https://supabase.io/docs/guides/auth#policy-examples">
<Link href="/docs/guides/auth#policy-examples">
<a>
<Button size="small" type="default" className="mt-4" icon={<IconArrowUpRight />}>
Explore documentation
+3 -3
View File
@@ -294,7 +294,7 @@ function Database() {
</div>
</div>,
]}
documentation_link={'https://supabase.io/docs/guides/database'}
documentation_link={'/docs/guides/database'}
/>
</SectionContainer>
@@ -329,8 +329,8 @@ function Database() {
text="We only show a few of the extensions supported by supabase here, but we preinstall many more that you can use right away."
/>
<Link
href="https://supabase.io/docs/guides/database"
as="https://supabase.io/docs/guides/database"
href="/docs/guides/database"
as="/docs/guides/database"
>
<a>
<Button size="small" className="mt-4" type="default" icon={<IconArrowUpRight />}>
+2 -2
View File
@@ -265,8 +265,8 @@ function StoragePage() {
</p>
</Typography.Text>
<Link
href="https://supabase.io/docs/reference/javascript/storage-createbucket"
as="https://supabase.io/docs/reference/javascript/storage-createbucket"
href="/docs/reference/javascript/storage-createbucket"
as="/docs/reference/javascript/storage-createbucket"
>
<a>
<Button