chore: update app.supabase.io links to app.supabase.com

This commit is contained in:
Jonathan Summers-Muir
2022-05-30 14:52:54 +08:00
parent 6b055c2b74
commit 5a38bd3d51
141 changed files with 575 additions and 842 deletions

View File

@@ -56,7 +56,7 @@ To build Supabase, you clone the source code repository:
### Choosing Directory
Before you start a development server, you must choose if you want to work on the [Supabase Website](https://supabase.com), [Supabase Docs](https://supabase.com/docs), or [Supabase Studio](https://app.supabase.io).
Before you start a development server, you must choose if you want to work on the [Supabase Website](https://supabase.com), [Supabase Docs](https://supabase.com/docs), or [Supabase Studio](https://app.supabase.com).
1. Go to the [Supabase Website](https://supabase.com) directory
@@ -70,7 +70,7 @@ Before you start a development server, you must choose if you want to work on th
cd web
```
Go to the [Supabase Studio](https://app.supabase.io) directory
Go to the [Supabase Studio](https://app.supabase.com) directory
```sh
cd studio
@@ -186,7 +186,6 @@ Then edit and visit any of the following sites:
- `/apps/temp-community-tutorials`: http://localhost:3003
- pulls all our DEV articles (which community members can write) into a nextjs site. Temporary/POC
### Shared components
The monorepo has a set of shared components under `/packages`:
@@ -194,6 +193,7 @@ The monorepo has a set of shared components under `/packages`:
- `/packages/common`: Common React code, shared between all sites.
- `/packages/config`: All shared config
- `/packages/tsconfig`: Shared Typescript settings
### Installing packages
Installing a package with NPM workspaces requires you to add the `-w` flag to tell NPM which workspace you want to install into.
@@ -211,8 +211,6 @@ You do not need to install `devDependencies` in each workspace. These can all be
`npm run dev`
## Finally
After making your changes to the file(s) you'd like to update, it's time to open a pull request. Once you submit your pull request, others from the Supabase team/community will review it with you.

View File

@@ -39,7 +39,7 @@ To see how to Contribute, visit [Getting Started](./DEVELOPERS.md)
## Status
- [x] Alpha: We are testing Supabase with a closed set of customers
- [x] Public Alpha: Anyone can sign up over at [app.supabase.io](https://app.supabase.io). But go easy on us, there are a few kinks
- [x] Public Alpha: Anyone can sign up over at [app.supabase.com](https://app.supabase.com). But go easy on us, there are a few kinks
- [x] Public Beta: Stable enough for most non-enterprise use-cases
- [ ] Public: Production-ready
@@ -55,7 +55,7 @@ Supabase is a combination of open source tools. Were building the features of
**Architecture**
Supabase is a [hosted platform](https://app.supabase.io). You can sign up and start using Supabase without installing anything.
Supabase is a [hosted platform](https://app.supabase.com). You can sign up and start using Supabase without installing anything.
You can also [self-host](https://supabase.com/docs/guides/hosting/overview) and [develop locally](https://supabase.com/docs/guides/local-development).
![Architecture](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png)

View File

@@ -64,7 +64,7 @@ const NavBar = ({ currentPage }: { currentPage: string }) => {
</li>
))}
<li>
<Link href="https://app.supabase.io">
<Link href="https://app.supabase.com">
<a className={`text-scale-1100 text-sm`}>Login</a>
</Link>
</li>

View File

@@ -79,7 +79,7 @@
"links": [
{
"text": "Join our beta",
"url": "https://app.supabase.io/"
"url": "https://app.supabase.com/"
}
]
}

View File

@@ -1,16 +1,15 @@
---
id: auth-signin
title: "auth.signIn()"
title: 'auth.signIn()'
slug: auth-signin
custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml
---
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
Log in an existing user, or login via a third-party provider.
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -25,38 +24,22 @@ final user = res.data?.user;
final error = res.error;
```
</TabsPanel>
</Tabs>
## Notes
- A user can sign up via email, phone number.
- If you provide `email` without a `password`, the user will be sent a magic link.
- The magic link's destination URL is determined by the SITE_URL config variable. To change this, you can go to Authentication -> Settings on [app.supabase.io](https://app.supabase.io)
- Similarly, if you provide `phone` without a `password`, the user will be sent a one time password.
- The magic link's destination URL is determined by the SITE_URL config variable. To change this, you can go to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- Similarly, if you provide `phone` without a `password`, the user will be sent a one time password.
- If you are looking to sign users in with OAuth in Flutter apps, go to [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider).
## Examples
### Sign in with email.
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -71,7 +54,6 @@ final user = res.data?.user;
final error = res.error;
```
</TabsPanel>
</Tabs>
@@ -93,17 +75,15 @@ final res = await supabase.auth.signIn(email: 'example@email.com');
final error = res.error;
```
</TabsPanel>
</Tabs>
### Get OAuth sign in URL.
Passing provider parameter to `signIn()` will return a URL to sign your user in via OAuth.
Passing provider parameter to `signIn()` will return a URL to sign your user in via OAuth.
If you are looking to sign in a user via OAuth on Flutter app, go to [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider).
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -118,7 +98,6 @@ final url = res.data?.url;
final error = res.error;
```
</TabsPanel>
</Tabs>
</Tabs>

View File

@@ -1,16 +1,15 @@
---
id: auth-signup
title: "auth.signUp()"
title: 'auth.signUp()'
slug: auth-signup
custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml
---
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
Creates a new user.
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -25,37 +24,21 @@ final user = res.data?.user;
final error = res.error;
```
</TabsPanel>
</Tabs>
## Notes
- By default, the user will need to verify their email address before logging in. If you would like to change this, you can disable "Email Confirmations" by going to Authentication -> Settings on [app.supabase.io](https://app.supabase.io)
- By default, the user will need to verify their email address before logging in. If you would like to change this, you can disable "Email Confirmations" by going to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- If "Email Confirmations" is turned on, a `user` is returned but `session` will be null
- If "Email Confirmations" is turned off, both a `user` and a `session` will be returned
- When the user confirms their email address, they will be redirected to localhost:3000 by default. To change this, you can go to Authentication -> Settings on [app.supabase.io](https://app.supabase.io)
- When the user confirms their email address, they will be redirected to localhost:3000 by default. To change this, you can go to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
## Examples
### Sign up.
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -70,11 +53,10 @@ final user = res.data?.user;
final error = res.error;
```
</TabsPanel>
</Tabs>
### Sign up with third-party providers.
If you are using Flutter, you can sign up with OAuth providers using the [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider) method available on `supabase_flutter`.
If you are using Flutter, you can sign up with OAuth providers using the [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider) method available on `supabase_flutter`.

View File

@@ -1,16 +1,15 @@
---
id: storage-from-getpublicurl
title: "from.getPublicUrl()"
title: 'from.getPublicUrl()'
slug: storage-from-getpublicurl
custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml
---
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
Retrieve URLs for assets in public buckets
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -27,37 +26,21 @@ final res = supabase
final publicURL = res.data;
```
</TabsPanel>
</Tabs>
## Notes
- The bucket needs to be set to public, either via [updateBucket()](/docs/reference/javascript/storage-updatebucket) or by going to Storage on [app.supabase.io](https://app.supabase.io), clicking the overflow menu on a bucket and choosing "Make public"
- The bucket needs to be set to public, either via [updateBucket()](/docs/reference/javascript/storage-updatebucket) or by going to Storage on [app.supabase.com](https://app.supabase.com), clicking the overflow menu on a bucket and choosing "Make public"
- Policy permissions required:
- `buckets` permissions: none
- `buckets` permissions: none
- `objects` permissions: none
## Examples
### Returns the URL for an asset in a public bucket
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -74,7 +57,6 @@ final res = supabase
final publicURL = res.data;
```
</TabsPanel>
</Tabs>
</Tabs>

View File

@@ -5,7 +5,15 @@ description: 'Supabase auth'
# Auth
<iframe width="560" height="315" src="https://www.youtube.com/embed/6ow_jW4epf8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/6ow_jW4epf8"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
></iframe>
## User Management
@@ -57,6 +65,7 @@ let { data, error } = await supabase
// console.log(data)
// => { id: 'd0714948', name: 'Jane' }
```
... you can simply define a rule on your database table, `auth.uid() = user_id`, and your request will return the rows which pass the rule, even when you remove the filter from your middleware:
```Javascript
@@ -68,7 +77,6 @@ let user = await supabase.from('users').select('user_id, name')
## How It Works
1. A user signs up. Supabase creates a new user in the `auth.users` table.
2. Supabase returns a new JWT, which contains the user's `UUID`.
3. Every request to your database also sends the JWT.
@@ -105,8 +113,6 @@ alter publication supabase_realtime add table posts;
```
## Next Steps
- Read more about Auth in the [Guides](https://supabase.com/docs/guides/auth/intro).
- Sign in: [app.supabase.io](https://app.supabase.io/)
- Sign in: [app.supabase.com](https://app.supabase.com/)

View File

@@ -11,12 +11,12 @@ import TabsPanel from '@theme/TabsPanel'
Setting up Email logins for your Supabase application.
- Add Email authenticator to your [Supabase Project](https://app.supabase.io)
- Add Email authenticator to your [Supabase Project](https://app.supabase.com)
- Add the login code to your application - [Javascript](https://github.com/supabase/supabase-js) | [Dart](https://github.com/supabase/supabase-dart)
## Add Email into your Supabase Project
- Go to your [Supabase Project Dashboard](https://app.supabase.io)
- Go to your [Supabase Project Dashboard](https://app.supabase.com)
- In the left sidebar, click the `Authentication` icon (near the top)
- Click `Settings` from the list to go to the `Authentication Settings` page
- Enter the final (hosted) URL of your app under `Site URL` (this is important)

View File

@@ -13,12 +13,12 @@ By default, if no password is provided, the user will be sent a "magic link" to
Setting up Magic Link logins for your Supabase application.
- Add Magic Link authenticator to your [Supabase Project](https://app.supabase.io)
- Add Magic Link authenticator to your [Supabase Project](https://app.supabase.com)
- Add the login code to your application - [Javascript](https://github.com/supabase/supabase-js) | [Dart](https://github.com/supabase/supabase-dart)
## Add Magic Link into your Supabase Project
- Go to your [Supabase Project Dashboard](https://app.supabase.io)
- Go to your [Supabase Project Dashboard](https://app.supabase.com)
- In the left sidebar, click the `Authentication` icon (near the top)
- Click `Settings` from the list to go to the `Authentication Settings` page
- Enter the final (hosted) URL of your app under `Site URL` (this is important)

View File

@@ -25,7 +25,7 @@ We'll cover:
What you'll need:
- A MessageBird account (sign up here: https://dashboard.messagebird.com/en/sign-up)
- A Supabase project (create one here: https://app.supabase.io)
- A Supabase project (create one here: https://app.supabase.com)
- A mobile phone capable of receiving SMS
## Steps
@@ -40,7 +40,7 @@ This is the number that will be receiving the SMS OTPs.
![Get your API Keys](/docs/img/guides/auth-messagebird/2.png)
Navigate to the [dashboard settings](https://dashboard.messagebird.com/en/settings/sms) to set the default originator. The messagebird originator is the name or number from which the message is sent.
Navigate to the [dashboard settings](https://dashboard.messagebird.com/en/settings/sms) to set the default originator. The messagebird originator is the name or number from which the message is sent.
For more information, you can refer to the messagebird article on choosing an originator [here](https://support.messagebird.com/hc/en-us/articles/115002628665-Choosing-an-originator)
![Set the default originator](/docs/img/guides/auth-messagebird/3.png)
@@ -50,7 +50,7 @@ You will need the following values to get started:
- Live API Key / Test API Key
- MessageBird originator
Now go to the Auth > Settings page in the Supabase dashboard (https://app.supabase.io/project/YOUR-PROJECT-REF/auth/settings).
Now go to the Auth > Settings page in the Supabase dashboard (https://app.supabase.com/project/YOUR-PROJECT-REF/auth/settings).
You should see an option to enable Phone Signup.
@@ -59,9 +59,10 @@ You should see an option to enable Phone Signup.
Toggle it on, and copy the 2 values over from the messagebird dashboard. Click save.
Note: If you use the Test API Key, the OTP will not be delivered to the mobile number specified but messagebird will log the response in the dashboard.
If the Live API Key is used instead, the OTP will be delivered and there will be a deduction in your free credits.
If the Live API Key is used instead, the OTP will be delivered and there will be a deduction in your free credits.
<!-- TODO: Add screenshot of UI -->
Plugin MessageBird credentials
Now the backend should be setup, we can proceed to add our client-side code!
@@ -70,7 +71,7 @@ Now the backend should be setup, we can proceed to add our client-side code!
The SMS message sent to a phone containing an OTP code can be customized. This is useful if you need to mention a brand name or display a website address.
Go to Auth > Templates page in the Supabase dashboard (https://app.supabase.io/project/YOUR-PROJECT-REF/auth/templates).
Go to Auth > Templates page in the Supabase dashboard (https://app.supabase.com/project/YOUR-PROJECT-REF/auth/templates).
Use the variable `.Code` in the template to display the code.
@@ -278,5 +279,5 @@ The user does not have a password therefore will need to sign in via this method
## Resources
- [MessageBird Signup](https://dashboard.messagebird.com/en/sign-up)
- [Supabase Dashboard](https://app.supabase.io)
- [Supabase Dashboard](https://app.supabase.com)
- [Supabase Row Level Security](/docs/guides/auth#row-level-security)

View File

@@ -25,13 +25,13 @@ We'll cover:
What you'll need:
- A twilio account (sign up here: https://www.twilio.com/try-twilio)
- A Supabase project (create one here: https://app.supabase.io)
- A Supabase project (create one here: https://app.supabase.com)
- A mobile phone capable of receiving SMS
## Video
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/akScoPO01bc"
@@ -69,7 +69,7 @@ You should now be able to see all three values you'll need to get started:
![All the credentials you'll need](/docs/img/guides/auth-twilio/6.png)
Now go to the Auth > Settings page in the Supabase dashboard (https://app.supabase.io/project/YOUR-PROJECT-REF/auth/settings).
Now go to the Auth > Settings page in the Supabase dashboard (https://app.supabase.com/project/YOUR-PROJECT-REF/auth/settings).
You should see an option to enable Phone Signup.
@@ -87,7 +87,7 @@ Now the backend should be setup, we can proceed to add our client-side code!
The SMS message sent to a phone containing an OTP code can be customized. This is useful if you need to mention a brand name or display a website address.
Go to Auth > Templates page in the Supabase dashboard (https://app.supabase.io/project/YOUR-PROJECT-REF/auth/templates).
Go to Auth > Templates page in the Supabase dashboard (https://app.supabase.com/project/YOUR-PROJECT-REF/auth/templates).
Use the variable `.Code` in the template to display the code.
@@ -295,5 +295,5 @@ The user does not have a password therefore will need to sign in via this method
## Resources
- [Twilio Signup](https://www.twilio.com/try-twilio)
- [Supabase Dashboard](https://app.supabase.io)
- [Supabase Dashboard](https://app.supabase.com)
- [Supabase Row Level Security](/docs/guides/auth#row-level-security)

View File

@@ -4,16 +4,13 @@ title: Client Libraries
description: 'Supabase provides client libraries in several languages.'
---
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
The [Supabase Client](/docs/reference/javascript/supabase-client) makes it simple for developers to build secure and scalable products.
The [Supabase Client](/docs/reference/javascript/supabase-client) makes it simple for developers to build secure and scalable products.
## Auth
Create new users using [`signUp()`](/docs/reference/javascript/auth-signup). By default, the user will need to verify their email address before logging in.<br/>
If confirmations are disabled the response will contain an access token and also a confirmed_at value, otherwise it will just contain a confirmation_sent_at attribute.
@@ -31,7 +28,6 @@ const { error, data } = await supabase.auth.signUp({
})
```
</TabsPanel>
<TabsPanel id="py" label="py">
@@ -48,7 +44,6 @@ user = supabase.auth.sign_up(
)
```
</TabsPanel>
<TabsPanel id="dart" label="dart">
@@ -70,8 +65,6 @@ void main() async {
</Tabs>
Existing users can log in using [`signIn()`](/docs/reference/javascript/auth-signin).
<Tabs
@@ -84,11 +77,10 @@ Existing users can log in using [`signIn()`](/docs/reference/javascript/auth-sig
```js
const { error, data } = await supabase.auth.signIn({
email: 'example@email.com',
password: 'example-password'
password: 'example-password',
})
```
</TabsPanel>
<TabsPanel id="py" label="py">
@@ -105,7 +97,6 @@ user = supabase.auth.sign_in(
)
```
</TabsPanel>
<TabsPanel id="dart" label="dart">
@@ -127,7 +118,6 @@ void main() async {
</Tabs>
If there is an email, but no password passed to [`signIn()`](/docs/reference/javascript/auth-signin), the user will receive a magic link.
<Tabs
@@ -139,11 +129,10 @@ If there is an email, but no password passed to [`signIn()`](/docs/reference/jav
```js
const { error, data } = await supabase.auth.signIn({
email: 'example@email.com'
email: 'example@email.com',
})
```
</TabsPanel>
<TabsPanel id="py" label="py">
@@ -159,7 +148,6 @@ user = supabase.auth.sign_in(
)
```
</TabsPanel>
<TabsPanel id="dart" label="dart">
@@ -181,10 +169,8 @@ void main() async {
</Tabs>
Third party logins are also handled through [`signIn()`](/docs/reference/javascript/auth-signin).
<Tabs
groupId="libraries"
defaultActiveId="js"
@@ -195,11 +181,10 @@ Third party logins are also handled through [`signIn()`](/docs/reference/javascr
```js
const { user, error } = await supabase.auth.signIn({
// provider can be 'github', 'google', 'gitlab', or 'bitbucket'
provider: 'github'
provider: 'github',
})
```
</TabsPanel>
<TabsPanel id="py" label="py">
@@ -207,7 +192,6 @@ const { user, error } = await supabase.auth.signIn({
# Not yet implemented
```
</TabsPanel>
<TabsPanel id="dart" label="dart">
@@ -232,7 +216,6 @@ void main() async {
Since Postgres is a Relational database, the client makes it simple to query tables and fetch related data in one round-trip, using [`select()`](/docs/reference/javascript/select).
<Tabs
groupId="libraries"
defaultActiveId="js"
@@ -241,9 +224,7 @@ Since Postgres is a Relational database, the client makes it simple to query tab
<TabsPanel id="js" label="js">
```js
const { data, error } = await supabase
.from('countries')
.select(`
const { data, error } = await supabase.from('countries').select(`
name,
cities (
name
@@ -251,7 +232,6 @@ const { data, error } = await supabase
`)
```
</TabsPanel>
<TabsPanel id="py" label="py">
@@ -266,7 +246,6 @@ supabase: Client = create_client(url, key)
data = supabase.table('countries').select('name').execute()
```
</TabsPanel>
<TabsPanel id="dart" label="dart">
@@ -289,10 +268,8 @@ void main() async {
</Tabs>
You can do advanced [filtering](/docs/reference/javascript/using-filters) to extract only the data that you need.
<Tabs
groupId="libraries"
defaultActiveId="js"
@@ -308,7 +285,6 @@ const { data, error } = await supabase
.limit(10)
```
</TabsPanel>
<TabsPanel id="py" label="py">
@@ -318,7 +294,6 @@ data = supabase.table('cities').select('name, country_id').eq('name', 'Germany')
assert len(data.get("data", [])) > 0
```
</TabsPanel>
<TabsPanel id="dart" label="dart">
@@ -343,11 +318,8 @@ void main() async {
</Tabs>
You can create data easily using [`insert()`](/docs/reference/javascript/insert).
<Tabs
groupId="libraries"
defaultActiveId="js"
@@ -356,15 +328,12 @@ You can create data easily using [`insert()`](/docs/reference/javascript/insert)
<TabsPanel id="js" label="js">
```js
const { data, error } = await supabase
.from('cities')
.insert([
{ name: 'The Shire', country_id: 554 },
{ name: 'Rohan', country_id: 555 },
])
const { data, error } = await supabase.from('cities').insert([
{ name: 'The Shire', country_id: 554 },
{ name: 'Rohan', country_id: 555 },
])
```
</TabsPanel>
<TabsPanel id="py" label="py">
@@ -373,7 +342,7 @@ data = supabase.table('cities').insert({'name': 'Gotham', 'country_id': 556 }).e
# assert if insert response is a success
assert data.get("status_code") in (200, 201)
# bulk insert
# bulk insert
data = supabase.table('cities').insert([
{'name': 'Gotham', 'country_id': 556 },
{'name': 'The Shire', 'country_id': 557 }
@@ -381,7 +350,6 @@ data = supabase.table('cities').insert([
```
</TabsPanel>
<TabsPanel id="dart" label="dart">
@@ -407,12 +375,10 @@ void main() async {
</Tabs>
## Realtime Changes
The Supabase client makes it simple to listen to realtime database changes, using [`subscribe()`](/docs/reference/javascript/subscribe).
<Tabs
groupId="libraries"
defaultActiveId="js"
@@ -423,13 +389,12 @@ The Supabase client makes it simple to listen to realtime database changes, usin
```js
const mySubscription = supabase
.from('countries')
.on('*', payload => {
.on('*', (payload) => {
console.log('Change received!', payload)
})
.subscribe()
```
</TabsPanel>
<TabsPanel id="py" label="py">
@@ -437,7 +402,6 @@ const mySubscription = supabase
# Not yet implemented
```
</TabsPanel>
<TabsPanel id="dart" label="dart">
@@ -464,10 +428,8 @@ void main() async {
</Tabs>
You can even [listen to Row Level changes](/docs/reference/javascript/subscribe#listening-to-row-level-changes).
<Tabs
groupId="libraries"
defaultActiveId="js"
@@ -482,7 +444,6 @@ const mySubscription = supabase
.subscribe()
```
</TabsPanel>
<TabsPanel id="py" label="py">
@@ -490,7 +451,6 @@ const mySubscription = supabase
# Not yet implemented
```
</TabsPanel>
<TabsPanel id="dart" label="dart">
@@ -517,9 +477,7 @@ void main() async {
</Tabs>
## Next steps
- View the [Client Docs](/docs/reference/javascript/supabase-client)
- Sign in: [app.supabase.io](https://app.supabase.io)
- Sign in: [app.supabase.com](https://app.supabase.com)

View File

@@ -15,7 +15,7 @@ You don't have to be a database expert to start using Supabase. Our table view m
![Table view](https://supabase.com/docs/assets/images/table-view-827aa3e2958fda01517f0a47474827b0.png)
### Relationships
### Relationships
Dig into the relationships within your data.
@@ -23,8 +23,8 @@ Dig into the relationships within your data.
<source src="/videos/relational-drilldown-zoom.mp4" type="video/mp4" playsInline />
</video>
### Clone tables
You can duplicate your tables, just like you would inside a spreadsheet.
<video width="99%" playsinline controls>
@@ -32,6 +32,7 @@ You can duplicate your tables, just like you would inside a spreadsheet.
</video>
### The SQL Editor
Supabase comes with a SQL Editor. You can also save your favorite queries to run later!
<video width="99%" playsinline controls>
@@ -47,8 +48,8 @@ Supabase comes with a SQL Editor. You can also save your favorite queries to run
Database backups do NOT include objects stored via the Storage API, as the database only includes metadata about these objects. Restoring an old backup will not restore objects that have been deleted since then.
### Extensions
To expand the functionality of your Postgres database, you can use extensions. You can enable Postgres extensions with the click of a button within the Supabase dashboard.
<video width="99%" playsinline controls>
@@ -68,12 +69,12 @@ You can manage the realtime system, simply by [updating](https://supabase.com/do
For example to enable realtime only for individual tables:
```sql
begin;
begin;
-- remove the realtime publication
drop publication if exists supabase_realtime;
drop publication if exists supabase_realtime;
-- re-create the publication but don't enable it for any tables
create publication supabase_realtime;
create publication supabase_realtime;
commit;
-- add a table to the publication
@@ -82,13 +83,13 @@ alter publication supabase_realtime add table products;
-- add other tables to the publication
alter publication supabase_realtime add table posts;
```
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`:
```sql
alter table your_table replica identity full;
```
### Migrating between projects#
If you have an existing Supabase Project and you want to migrate it into a new (fresh) Project, you can simply follow these steps:
@@ -100,6 +101,7 @@ If you have an existing Supabase Project and you want to migrate it into a new (
**Migrate the database**
First we want to grab the database structure only:
```bash
pg_dump \
-h db.PROJECT_REF.supabase.co \
@@ -119,8 +121,8 @@ psql \
-U postgres \
< supabase_schema.sql
```
You may see some errors - the restore will attempt to drop any tables if they are present, and if they aren't present then an error will be displayed. These errors are informative only and nothing to worry about.
You may see some errors - the restore will attempt to drop any tables if they are present, and if they aren't present then an error will be displayed. These errors are informative only and nothing to worry about.
**(Optionally) Migrate the data**
@@ -135,7 +137,9 @@ pg_dump \
-n auth \
> supabase_data.sql
```
This command creates a file on your computer called supabase_data.sql. We can use this file to restore the data in our new database:
```bash
psql \
-h db.NEW_PROJECT_REF.supabase.co \
@@ -152,7 +156,7 @@ If you forget your password, you can reset it from the Dashboard SQL editor:
For example:
```sql
alter user postgres
alter user postgres
with password 'new_password';
```
@@ -160,7 +164,6 @@ Read more in [Database Configuration](https://supabase.com/docs/guides/database/
###Changing the timezone of your server.
Your database is initialized with the UTC timezone. We recommend keeping it this way, as it is helpful for time calculations. If, however, you want to update the timezone, you can do so using any of the [database timezones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
For example:
@@ -168,9 +171,10 @@ For example:
```sql
alter database postgres set timezone to 'America/New_York';
```
Read more in [Database Configuration](https://supabase.com/docs/guides/database/managing-timezones).
## Next steps
- Read more about [Postgres](https://supabase.com/docs/postgres/server/about)
- Sign in: [app.supabase.io](https://app.supabase.io/)
- Read more about [Postgres](https://supabase.com/docs/postgres/server/about)
- Sign in: [app.supabase.com](https://app.supabase.com/)

View File

@@ -34,7 +34,7 @@ cp .env.example .env
In particular, these are required:
- `POSTGRES_PASSWORD`: the password for the `postgres` role
- `POSTGRES_PASSWORD`: the password for the `postgres` role
- `JWT_SECRET`: used by PostgREST and GoTrue, among others
- `SITE_URL`: the base URL of your site
- `SMTP_*`: mail server credentials
@@ -45,14 +45,14 @@ Use your `JWT_SECRET` to generate a `anon` and `service` API keys using the [JWT
Replace the values in these files:
- `docker-compose.yml`:
- `docker-compose.yml`:
- `ANON_KEY` - replace with an `anon` key
- `SERVICE_KEY` - replace with a `service` key
- `volumes/kong.yml`
- `anon` - replace with an `anon` key
- `service_role` - replace with a `service` key
### Start
### Start
You can now start Supabase:
@@ -60,11 +60,10 @@ You can now start Supabase:
docker-compose up
```
Your database will be persisted in `volumes/db/data`, and your storage objects in `volumes/storage`.
Your database will be persisted in `volumes/db/data`, and your storage objects in `volumes/storage`.
Try out the examples in `supabase/examples` to verify if it works correctly!
## Configuration
To keep the setup simple, we made some choices that may not be optimal for production:
@@ -84,8 +83,7 @@ See the following guides to deploy Docker Compose setup using your preferred too
- [AWS Fargate](https://aws.amazon.com/blogs/containers/deploy-applications-on-amazon-ecs-using-docker-compose/)
- [Using Kompose for Kubernetes](https://kubernetes.io/docs/tasks/configure-pod-container/translate-compose-kubernetes/)
## Next steps
- Got a question? [Ask here](https://github.com/supabase/supabase/discussions).
- Sign in: [app.supabase.io](https://app.supabase.io)
- Sign in: [app.supabase.com](https://app.supabase.com)

View File

@@ -9,35 +9,33 @@ import JwtGenerator from '@site/src/components/JwtGenerator'
There are several ways to use Supabase:
- [Supabase Cloud](https://app.supabase.io): you don't need to deploy anything. We will manage and scale your infrastructure.
- [Supabase Cloud](https://app.supabase.com): you don't need to deploy anything. We will manage and scale your infrastructure.
- [Docker](/docs/guides/hosting/docker): deploy to your own infrastructure.
- Kubernetes: coming soon.
#### Before you begin
The self-hosted version of Supabase does not include a UI yet.
We are working on this in stages, starting with our [UI library](https://github.com/supabase/ui) and with a [WIP PR here](https://github.com/supabase/supabase/pull/2281).
The self-hosted version of Supabase does not include a UI yet.
We are working on this in stages, starting with our [UI library](https://github.com/supabase/ui) and with a [WIP PR here](https://github.com/supabase/supabase/pull/2281).
[[more context](https://github.com/supabase/supabase/discussions/1001#discussioncomment-558696)]
In the meantime, here are some suggestions for working with your Postgres Database:
- `pgadmin`: https://www.pgadmin.org
- `dbeaver`: https://dbeaver.com
- `pgadmin`: https://www.pgadmin.org
- `dbeaver`: https://dbeaver.com
- `BeeKeeper`: https://beekeeperstudio.io
- `HeidiSQL`: https://heidisql.com
- `Table Plus`: https://www.tableplus.io
## Architecture
Supabase is a combination of open source tools, each specifically chosen for Enterprise-readiness.
Supabase is a combination of open source tools, each specifically chosen for Enterprise-readiness.
If the tools and communities already exist, with an MIT, Apache 2, or equivalent open license, we will use and support that tool.
If the tool doesn't exist, we build and open source it ourselves.
If the tools and communities already exist, with an MIT, Apache 2, or equivalent open license, we will use and support that tool.
If the tool doesn't exist, we build and open source it ourselves.
![Supabase Architecture](/docs/img/supabase-architecture.png)
- [PostgreSQL](https://www.postgresql.org/) is an object-relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance.
- [Realtime](https://github.com/supabase/realtime) is an Elixir server that allows you to listen to PostgreSQL inserts, updates, and deletes using websockets. Supabase listens to Postgres' built-in replication functionality, converts the replication byte stream into JSON, then broadcasts the JSON over websockets.
- [PostgREST](http://postgrest.org/) is a web server that turns your PostgreSQL database directly into a RESTful API
@@ -46,7 +44,6 @@ If the tool doesn't exist, we build and open source it ourselves.
- [GoTrue](https://github.com/netlify/gotrue) is an SWT based API for managing users and issuing SWT tokens.
- [Kong](https://github.com/Kong/kong) is a cloud-native API gateway.
## Configuration
Each system has a number of configuration options which can be found in the relevant product documentation.
@@ -65,11 +62,10 @@ The "middleware" is everything except Postgres, and it should work with any Post
### Database Extensions
Supabase requires some Postgres extensions to be enabled by default for the API and Auth system to work. You can find the extensions inside the
Supabase requires some Postgres extensions to be enabled by default for the API and Auth system to work. You can find the extensions inside the
[schema initialization script](https://github.com/supabase/supabase/blob/master/docker/volumes/db/init/00-initial-schema.sql).
We recommend installing all extensions into an `extensions` schema. This will keep your API clean,
We recommend installing all extensions into an `extensions` schema. This will keep your API clean,
since all tables in the `public` schema are exposed via the API.
```sql
@@ -83,20 +79,18 @@ create extension if not exists pgjwt with schema extensions;
For UUID functions, required for PostgreSQL <13.
##### `pgcrypto` and `pgjwt`
For working with JWT and Auth functions.
### Database Roles
Supabase creates several default roles in your Postgres database. To restore defaults at any time you can run the commands inside the
Supabase creates several default roles in your Postgres database. To restore defaults at any time you can run the commands inside the
[schema initialization script](https://github.com/supabase/supabase/blob/master/docker/volumes/db/init/00-initial-schema.sql).
##### `postgres`
The default PostgreSQL role. This has admin privileges.
The default PostgreSQL role. This has admin privileges.
##### `anon`
@@ -104,7 +98,7 @@ For "anonymous access". This is the role which the API (PostgREST) will use when
##### `authenticator`
A special role for the API (PostgREST). It has very limited access, and is used to validate a JWT and then
A special role for the API (PostgREST). It has very limited access, and is used to validate a JWT and then
"change into" another role determined by the JWT verification.
##### `authenticated`
@@ -129,22 +123,22 @@ For running commands via the Supabase UI.
##### `supabase_admin`
Supabase Administrative role for maintaining your database.
Supabase Administrative role for maintaining your database.
## API Keys
## API Keys
The API Gateway (Kong) uses JWT to authenticate access through to the database. The JWT should correspond to a relevant Postgres Role,
The API Gateway (Kong) uses JWT to authenticate access through to the database. The JWT should correspond to a relevant Postgres Role,
and Supabase is designed to work with 2 roles: an `ANON_KEY` for unauthenticated access and a `SERVICE_KEY` for elevated access.
Use this tool to generate keys:
<JwtGenerator />
## Managing your secrets
## Managing your secrets
Many components inside Supabase use secure secrets and passwords. These are listed in the self-hosting
[env file](https://github.com/supabase/supabase/blob/master/docker/.env.example), but we strongly recommend using a
secrets manager when deploying to production. Plain text files like dotenv lead to accidental costly leaks.
[env file](https://github.com/supabase/supabase/blob/master/docker/.env.example), but we strongly recommend using a
secrets manager when deploying to production. Plain text files like dotenv lead to accidental costly leaks.
Some suggested systems include:

View File

@@ -4,10 +4,9 @@ title: Supabase Platform
description: Getting started with the Supabase platform.
---
Supabase is a hosted platform which makes it very simple to get started without needing to manage any infrastructure.
Visit [app.supabase.io](https://app.supabase.io) and sign in to start creating projects.
Visit [app.supabase.com](https://app.supabase.com) and sign in to start creating projects.
## Organizations
@@ -18,7 +17,7 @@ Organizations are a way to group your projects. Every Organization can be config
You can invite your Team members into your Organizations so that you can collaborate on projects.
<video width="99%" muted playsInline controls="true">
<source src="/docs/videos/invite-team.mp4" type="video/mp4" muted playsInline />
<source src="/docs/videos/invite-team.mp4" type="video/mp4" muted playsInline />
</video>
## Projects
@@ -26,10 +25,10 @@ You can invite your Team members into your Organizations so that you can collabo
Each project on Supabase comes with these features:
- A dedicated Postgres database. [Learn more](/docs/guides/database)
- Auto-generated APIs.
- Auto-generated APIs.
- User management. [Learn more](/docs/guides/auth)
- Storage. [Learn more](/docs/guides/storage)
## Next Steps
- Sign in to [app.supabase.io](https://app.supabase.io)
- Sign in to [app.supabase.com](https://app.supabase.com)

View File

@@ -4,25 +4,25 @@ title: Local Development
description: How to use Supabase on your local development machine.
---
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
Supabase provides a CLI so that you can develop your application locally, rather than connecting to a live project.
## Before you begin
If you're using the CLI, please record your steps! You can help us improve by adding missing details and fixing errors.
If you're using the CLI, please record your steps! You can help us improve by adding missing details and fixing errors.
Our CLI is still under heavy development, and is missing some features:
- The self-hosted version of Supabase does not include a UI yet.
We are working on this in stages, starting with our [UI library](https://github.com/supabase/ui)
([more context](https://github.com/supabase/supabase/discussions/1001#discussioncomment-558696)).
We are working on this in stages, starting with our [UI library](https://github.com/supabase/ui)
([more context](https://github.com/supabase/supabase/discussions/1001#discussioncomment-558696)).
In the meantime, here are some suggested tools for interacting with your Postgres Database:
- `pgadmin`: https://www.pgadmin.org
- `dbeaver`: https://dbeaver.com
- `pgadmin`: https://www.pgadmin.org
- `dbeaver`: https://dbeaver.com
- `BeeKeeper`: https://beekeeperstudio.io
- `HeidiSQL`: https://heidisql.com
- `Table Plus`: https://www.tableplus.io
@@ -30,6 +30,7 @@ In the meantime, here are some suggested tools for interacting with your Postgre
## Prerequisites
You will need to have these in your environment:
- Git
- Docker (make sure the daemon is up and running)
- Supabase CLI (instructions [here](https://github.com/supabase/cli))
@@ -62,7 +63,6 @@ service_role key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoic2VydmljZV9yb
#### Accessing Services Directly
<Tabs
defaultActiveId="Postgres"
values={[
@@ -76,7 +76,7 @@ values={[
postgresql://postgres:postgres@localhost:5432/postgres
```
The local Postgres instance can be accessed through [`psql`](https://www.postgresql.org/docs/current/app-psql.html)
The local Postgres instance can be accessed through [`psql`](https://www.postgresql.org/docs/current/app-psql.html)
or any other Postgres client, such as [pgadmin](https://www.pgadmin.org/).
For example:
@@ -93,8 +93,8 @@ psql 'postgresql://postgres:postgres@localhost:5432/postgres'
http://localhost:54321
```
All of the services are accessible through the API Gateway [Kong](https://github.com/Kong/kong)).
If you are accessing these services without the client libraries, you may need to pass the client keys as an `Authorization` header.
All of the services are accessible through the API Gateway [Kong](https://github.com/Kong/kong)).
If you are accessing these services without the client libraries, you may need to pass the client keys as an `Authorization` header.
You can learn more about these JWT headers in our [Resources](/docs/learn/auth-deep-dive/auth-deep-dive-jwts).
```sh
@@ -108,14 +108,12 @@ http://localhost:54321/v1/storage/v1/ # Storage
http://localhost:54321/v1/auth/v1/ # Auth (GoTrue)
```
</TabsPanel>
</Tabs>
## Example application
Now that we've learned how to install and start Supabase locally, let's see how you can use it with a frontend application.
Now that we've learned how to install and start Supabase locally, let's see how you can use it with a frontend application.
This quick-start guide will show you, how you can configure a React app which uses the Supabase stack.
```bash
@@ -125,8 +123,8 @@ npx create-react-app react-demo --use-npm
# move into the new folder
cd react-demo
# set up Supabase
supabase init
# set up Supabase
supabase init
# Save the install supabase-js library
npm install --save @supabase/supabase-js
@@ -169,4 +167,4 @@ You can also use the CLI to manage your migrations. Follow the the tour [here](h
- Got a question? [Ask here](https://github.com/supabase/supabase/discussions).
- CLI repository: [GitHub](https://github.com/supabase/cli).
- Sign in: [app.supabase.io](https://app.supabase.io)
- Sign in: [app.supabase.com](https://app.supabase.com)

View File

@@ -25,7 +25,6 @@ Buckets are distinct containers for files and folders. You can think of them lik
This is a quick guide that shows the basic functionality of Supabase Storage. Find a full [example application in GitHub](https://github.com/supabase/supabase/edit/master/examples/nextjs-ts-user-management), which you can deploy yourself.
<a href="https://vercel.com/new/git/external?repository-url=https%3A%2F%2Fgithub.com%2Fsupabase%2Fsupabase%2Ftree%2Fmaster%2Fexamples%2Fnextjs-ts-user-management&project-name=supabase-user-management&repository-name=supabase-user-management&demo-title=Supabase%20User%20Management&demo-description=An%20example%20web%20app%20using%20Supabase%20and%20Next.js&demo-url=https%3A%2F%2Fsupabase-nextjs-ts-user-management.vercel.app&demo-image=https%3A%2F%2Fi.imgur.com%2FZ3HkQqe.png&integration-ids=oac_jUduyjQgOyzev1fjrW83NYOv&external-id=nextjs-user-management">
<img src="https://vercel.com/button" alt="Deploy with Vercel" />
</a>
@@ -41,6 +40,7 @@ TODO: Get tabs to render - @supabase/ui Tabs component fails to render)
[Reference](https://pub.dev/documentation/storage_client/latest/storage_client/SupabaseStorageClient/createBucket.html)
### Upload a file
You can upload a file from the Dashboard, or within a browser using our JS libraries.
<video width="99%" playsinline controls>
@@ -48,6 +48,7 @@ You can upload a file from the Dashboard, or within a browser using our JS libra
</video>
### Download a file
You can download a file from the Dashboard, or within a browser using our JS libraries.
<video width="99%" playsinline controls>
@@ -66,7 +67,7 @@ To restrict access to your files you can use either the Dashboard or SQL.
Supabase Storage is configured with database SQL helper functions which you can use in your database queries and policies.
<hr/>
<hr />
`storage.filename()`
@@ -129,7 +130,9 @@ create policy "Public Access"
on storage.objects for select
using ( bucket_id = 'public' );
```
#### Allow logged-in access to a bucket
```sql
-- 1. Allow logged-in access to any files in the "restricted" bucket
create policy "Restricted Access"
@@ -148,12 +151,15 @@ create policy "Individual user Access"
on storage.objects for select
using ( auth.uid() = owner );
```
### Tips
#### Go Easy
Supabase Storage is in Beta. If you're experiencing any issues, let us know on our [GitHub](https://github.com/supabase/supabase/discussions) and we will fix it as fast as we can.
## Next steps
- Got a question? Ask here.
- Read more about storage in our blog post.
- Sign in: app.supabase.io
- Sign in: app.supabase.com

View File

@@ -40,7 +40,7 @@ and then creating a "schema" inside the database.
### Create a project
1. Go to [app.supabase.io](https://app.supabase.io).
1. Go to [app.supabase.com](https://app.supabase.com).
1. Click on "New Project".
1. Enter your project details.
1. Wait for the new database to launch.
@@ -259,7 +259,7 @@ import { SupabaseService } from './supabase.service'
@Component({
selector: 'app-auth',
template: `
<div class="row flex flex-center">
<div class="row flex-center flex">
<form class="col-6 form-widget">
<h1 class="header">Supabase + Angular</h1>
<p class="description">Sign in via magic link with your email below</p>
@@ -328,7 +328,7 @@ import { Session } from '@supabase/supabase-js'
<div>
<button
class="button block primary"
class="button primary block"
(click)="updateProfile(username.value, website.value)"
[disabled]="loading"
>
@@ -539,4 +539,4 @@ template: `
At this stage you have a fully functional application!
- Got a question? [Ask here](https://github.com/supabase/supabase/discussions).
- Sign in: [app.supabase.io](https://app.supabase.io)
- Sign in: [app.supabase.com](https://app.supabase.com)

View File

@@ -6,7 +6,6 @@ description: Learn how to use Supabase in your Flutter App.
# Quickstart: Flutter
## Intro
This example provides the steps to build a simple user management app (from scratch!) using Supabase and Flutter. It includes:
@@ -32,7 +31,7 @@ and then creating a "schema" inside the database.
### Create a project
1. Go to [app.supabase.io](https://app.supabase.io).
1. Go to [app.supabase.com](https://app.supabase.com).
1. Click on "New Project".
1. Enter your project details.
1. Wait for the new database to launch.
@@ -906,4 +905,4 @@ Congratulations, that is it! You have now built a fully functional user manageme
At this stage you have a fully functional application!
- Got a question? [Ask here](https://github.com/supabase/supabase/discussions).
- Sign in: [app.supabase.io](https://app.supabase.io)
- Sign in: [app.supabase.com](https://app.supabase.com)

View File

@@ -51,7 +51,7 @@ and then creating a "schema" inside the database.
### Create a project
1. Go to [app.supabase.io](https://app.supabase.io).
1. Go to [app.supabase.com](https://app.supabase.com).
1. Click on "New Project".
1. Enter your project details.
1. Wait for the new database to launch.
@@ -222,7 +222,7 @@ export default function Auth() {
}
return (
<div className="row flex flex-center">
<div className="row flex-center flex">
<div className="col-6 form-widget">
<h1 className="header">Supabase + Next.js</h1>
<p className="description">Sign in via magic link with your email below</p>
@@ -354,7 +354,7 @@ export default function Account({ session }) {
<div>
<button
className="button block primary"
className="button primary block"
onClick={() => updateProfile({ username, website, avatar_url })}
disabled={loading}
>
@@ -537,4 +537,4 @@ return (
At this stage you have a fully functional application!
- Got a question? [Ask here](https://github.com/supabase/supabase/discussions).
- Sign in: [app.supabase.io](https://app.supabase.io)
- Sign in: [app.supabase.com](https://app.supabase.com)

View File

@@ -48,7 +48,7 @@ and then creating a "schema" inside the database.
### Create a project
1. Go to [app.supabase.io](https://app.supabase.io).
1. Go to [app.supabase.com](https://app.supabase.com).
1. Click on "New Project".
1. Enter your project details.
1. Wait for the new database to launch.
@@ -230,7 +230,7 @@ export default function Auth() {
}
return (
<div className="row flex flex-center">
<div className="row flex-center flex">
<div className="col-6 form-widget">
<h1 className="header">Supabase + React</h1>
<p className="description">Sign in via magic link with your email below</p>
@@ -362,7 +362,7 @@ export default function Account({ session }) {
<div>
<button
className="button block primary"
className="button primary block"
onClick={() => updateProfile({ username, website, avatar_url })}
disabled={loading}
>
@@ -544,4 +544,4 @@ return (
At this stage you have a fully functional application!
- Got a question? [Ask here](https://github.com/supabase/supabase/discussions).
- Sign in: [app.supabase.io](https://app.supabase.io)
- Sign in: [app.supabase.com](https://app.supabase.com)

View File

@@ -98,7 +98,7 @@ So be sure to have a terminal at the ready and in your project directory.
### Create a project
1. Go to [app.supabase.io](https://app.supabase.io).
1. Go to [app.supabase.com](https://app.supabase.com).
1. Click on "New Project".
1. Enter your project details.
1. Wait for the new database to launch.
@@ -411,7 +411,7 @@ const Auth = () => {
}
return (
<div className="row flex flex-center">
<div className="row flex-center flex">
<div className="col-6 form-widget">
<h1 className="header">Supabase + RedwoodJS</h1>
<p className="description">Sign in via magic link with your email below</p>
@@ -533,7 +533,7 @@ const Account = () => {
}
return (
<div className="row flex flex-center">
<div className="row flex-center flex">
<div className="col-6 form-widget">
<h1 className="header">Supabase + RedwoodJS</h1>
<p className="description">Your profile</p>
@@ -563,7 +563,7 @@ const Account = () => {
<div>
<button
className="button block primary"
className="button primary block"
onClick={() => updateProfile({ username, website, avatar_url })}
disabled={loading}
>
@@ -768,6 +768,6 @@ return (
At this stage you have a fully functional application!
- Got a question? [Ask here](https://github.com/supabase/supabase/discussions).
- Sign in: [app.supabase.io](https://app.supabase.io)
- Sign in: [app.supabase.com](https://app.supabase.com)
- Learn more about [RedwoodJS](https://redwoodjs.com)
- Visit the [RedwoodJS Discourse Community](https://community.redwoodjs.com)

View File

@@ -34,7 +34,7 @@ and then creating a "schema" inside the database.
### Create a project
1. Go to [app.supabase.io](https://app.supabase.io).
1. Go to [app.supabase.com](https://app.supabase.com).
1. Click on "New Project".
1. Enter your project details.
1. Wait for the new database to launch.
@@ -242,7 +242,7 @@ Let's set up a Svelte component to manage logins and sign ups. We'll use Magic L
}
</script>
<form class="row flex flex-center" on:submit|preventDefault="{handleLogin}">
<form class="row flex-center flex" on:submit|preventDefault="{handleLogin}">
<div class="col-6 form-widget">
<h1 class="header">Supabase + Svelte</h1>
<p class="description">Sign in via magic link with your email below</p>
@@ -522,4 +522,4 @@ And then we can add the widget to the Account page:
At this stage you have a fully functional application!
- Got a question? [Ask here](https://github.com/supabase/supabase/discussions).
- Sign in: [app.supabase.io](https://app.supabase.io)
- Sign in: [app.supabase.com](https://app.supabase.com)

View File

@@ -31,7 +31,7 @@ and then creating a "schema" inside the database.
### Create a project
1. Go to [app.supabase.io](https://app.supabase.io).
1. Go to [app.supabase.com](https://app.supabase.com).
1. Click on "New Project".
1. Enter your project details.
1. Wait for the new database to launch.
@@ -197,7 +197,7 @@ Let's set up a Vue component to manage logins and sign ups. We'll use Magic Link
```html title="/src/components/Auth.vue"
<template>
<form class="row flex flex-center" @submit.prevent="handleLogin">
<form class="row flex-center flex" @submit.prevent="handleLogin">
<div class="col-6 form-widget">
<h1 class="header">Supabase + Vue 3</h1>
<p class="description">Sign in via magic link with your email below</p>
@@ -284,7 +284,7 @@ Let's create a new component for that called `Profile.vue`.
<div>
<input
type="submit"
class="button block primary"
class="button primary block"
:value="loading ? 'Loading ...' : 'Update'"
:disabled="loading"
/>
@@ -567,4 +567,4 @@ And then we can add the widget to the Account page:
At this stage you have a fully functional application!
- Got a question? [Ask here](https://github.com/supabase/supabase/discussions).
- Sign in: [app.supabase.io](https://app.supabase.io)
- Sign in: [app.supabase.com](https://app.supabase.com)

View File

@@ -3,7 +3,6 @@ title: Introduction
description: Introduction to Supabase
---
# Introduction
Supabase is an open source Firebase alternative.
@@ -19,7 +18,7 @@ It provides all the backend services you need to build a product. You can use it
## Getting Started
Visit [app.supabase.io](https://app.supabase.io) to get started with the hosted platform or visit the self-hosting docs to learn how to host Supabase yourself.
Visit [app.supabase.com](https://app.supabase.com) to get started with the hosted platform or visit the self-hosting docs to learn how to host Supabase yourself.
Supabase is just Postgres, which makes it compatible with a large number of tools and frameworks.
@@ -35,6 +34,7 @@ Supabase is just Postgres, which makes it compatible with a large number of tool
</LinkCardsWrapper>
## How to use these docs
The documentation is divided into 3 sections.
<LinkCardsWrapper>
@@ -43,6 +43,3 @@ The documentation is divided into 3 sections.
<LinkCard title="Overview" description="A summary of the tools and how to get started" />
<LinkCard title="Overview" description="A summary of the tools and how to get started" />
</LinkCardsWrapper>

View File

@@ -1,12 +1,12 @@
---
id: auth-signin
title: "signIn()"
title: 'signIn()'
slug: auth-signin
custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/supabase.yml
---
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
Log in an existing user, or login via a third-party provider.
@@ -24,14 +24,12 @@ const { user, session, error } = await supabase.auth.signIn({
})
```
</TabsPanel>
</Tabs>
## Parameters
<ul className="method-list-group">
<li className="method-list-item">
@@ -48,13 +46,12 @@ const { user, session, error } = await supabase.auth.signIn({
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
</li>
<li className="method-list-item">
<h4 className="method-list-item-label">
<span className="method-list-item-label-name">
@@ -69,7 +66,7 @@ No description provided.
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
@@ -90,13 +87,12 @@ No description provided.
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
</li>
<li className="method-list-item">
<h4 className="method-list-item-label">
<span className="method-list-item-label-name">
@@ -111,7 +107,7 @@ No description provided.
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
@@ -123,29 +119,17 @@ No description provided.
</ul>
## Notes
- A user can sign up either via email or OAuth.
- If you provide `email` without a `password`, the user will be sent a magic link.
- The magic link's destination URL is determined by the SITE_URL config variable. To change this, you can go to Authentication -> Settings on [app.supabase.io](https://app.supabase.io)
- The magic link's destination URL is determined by the SITE_URL config variable. To change this, you can go to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- Specifying a `provider` will open the browser to the relevant login page.
## Examples
### Sign in with email.
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -160,7 +144,6 @@ const { user, session, error } = await supabase.auth.signIn({
})
```
</TabsPanel>
</Tabs>
@@ -178,11 +161,10 @@ If no password is provided, the user will be sent a "magic link" to their email
```js
const { user, session, error } = await supabase.auth.signIn({
email: 'example@email.com'
email: 'example@email.com',
})
```
</TabsPanel>
</Tabs>
@@ -201,21 +183,19 @@ Supabase supports OAuth logins.
```js
const { user, session, error } = await supabase.auth.signIn({
// provider can be 'github', 'google', 'gitlab', or 'bitbucket'
provider: 'github'
provider: 'github',
})
```
</TabsPanel>
</Tabs>
### Sign in with redirect.
Sometimes you want to control where the user is redirected to after they are logged in. Supabase supports this for
Sometimes you want to control where the user is redirected to after they are logged in. Supabase supports this for
any URL path on your website (the base domain must be the same as the domain in your Auth settings).
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -224,14 +204,16 @@ any URL path on your website (the base domain must be the same as the domain in
<TabsPanel id="js" label="js">
```js
const { user, session, error } = await supabase.auth.signIn({
provider: 'github'
}, {
redirectTo: 'https://example.com/welcome'
})
const { user, session, error } = await supabase.auth.signIn(
{
provider: 'github',
},
{
redirectTo: 'https://example.com/welcome',
}
)
```
</TabsPanel>
</Tabs>
@@ -241,7 +223,6 @@ const { user, session, error } = await supabase.auth.signIn({
If you need additional data from an OAuth provider, you can include a space-separated list of scopes in your request to get back an OAuth provider token.
You may also need to specify the scopes in the provider's OAuth app settings, depending on the provider.
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -250,15 +231,17 @@ You may also need to specify the scopes in the provider's OAuth app settings, de
<TabsPanel id="js" label="js">
```js
const { user, session, error } = await supabase.auth.signIn({
provider: 'github'
}, {
scopes: 'repo gist notifications'
})
const { user, session, error } = await supabase.auth.signIn(
{
provider: 'github',
},
{
scopes: 'repo gist notifications',
}
)
const oAuthToken = session.provider_token // use to access provider API
```
</TabsPanel>
</Tabs>
@@ -267,7 +250,6 @@ const oAuthToken = session.provider_token // use to access provider API
If you are completing a sign up or login in a React Native app you can pass the refresh token obtained from the provider to obtain a session.
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -277,21 +259,20 @@ If you are completing a sign up or login in a React Native app you can pass the
```js
// An example using Expo's `AuthSession`
const redirectUri = AuthSession.makeRedirectUri({ useProxy: false });
const provider = 'google';
const redirectUri = AuthSession.makeRedirectUri({ useProxy: false })
const provider = 'google'
AuthSession.startAsync({
authUrl: `https://MYSUPABASEAPP.supabase.co/auth/v1/authorize?provider=${provider}&redirect_to=${redirectUri}`,
returnUrl: redirectUri,
}).then(async (response: any) => {
if (!response) return;
if (!response) return
const { user, session, error } = await supabase.auth.signIn({
refreshToken: response.params?.refresh_token,
});
});
})
})
```
</TabsPanel>
</Tabs>
</Tabs>

View File

@@ -1,12 +1,12 @@
---
id: auth-signup
title: "signUp()"
title: 'signUp()'
slug: auth-signup
custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/supabase.yml
---
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
Creates a new user.
@@ -24,14 +24,12 @@ const { user, session, error } = await supabase.auth.signUp({
})
```
</TabsPanel>
</Tabs>
## Parameters
<ul className="method-list-group">
<li className="method-list-item">
@@ -48,13 +46,12 @@ const { user, session, error } = await supabase.auth.signUp({
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
</li>
<li className="method-list-item">
<h4 className="method-list-item-label">
<span className="method-list-item-label-name">
@@ -69,7 +66,7 @@ No description provided.
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
@@ -90,13 +87,12 @@ No description provided.
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
</li>
<li className="method-list-item">
<h4 className="method-list-item-label">
<span className="method-list-item-label-name">
@@ -111,7 +107,7 @@ No description provided.
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
@@ -123,33 +119,21 @@ No description provided.
</ul>
## Notes
- By default, the user will need to verify their email address before logging in. If you would like to change this, you can disable "Email Confirmations" by going to Authentication -> Settings on [app.supabase.io](https://app.supabase.io)
- By default, the user will need to verify their email address before logging in. If you would like to change this, you can disable "Email Confirmations" by going to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- If "Email Confirmations" is turned on, a `user` is returned but `session` will be null
- If "Email Confirmations" is turned off, both a `user` and a `session` will be returned
- When the user confirms their email address, they will be redirected to localhost:3000 by default. To change this, you can go to Authentication -> Settings on [app.supabase.io](https://app.supabase.io)
- When the user confirms their email address, they will be redirected to localhost:3000 by default. To change this, you can go to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- If signUp() is called for an existing confirmed user:
- If "Enable email confirmations" is enabled on the "Authentication" -> "Settings" page, an obfuscated / fake user object will be returned.
- If "Enable email confirmations" is disabled, an error with a message "User already registered" will be returned.
- If "Enable email confirmations" is enabled on the "Authentication" -> "Settings" page, an obfuscated / fake user object will be returned.
- If "Enable email confirmations" is disabled, an error with a message "User already registered" will be returned.
- To check if a user already exists, refer to getUser().
## Examples
### Sign up.
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -164,15 +148,12 @@ const { user, session, error } = await supabase.auth.signUp({
})
```
</TabsPanel>
</Tabs>
### Sign up with additional user meta data.
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -187,19 +168,18 @@ const { user, session, error } = await supabase.auth.signUp(
password: 'example-password',
},
{
data: {
first_name: 'John',
data: {
first_name: 'John',
age: 27,
}
},
}
)
```
</TabsPanel>
</Tabs>
### Sign up with third-party providers.
You can sign up with OAuth providers using the [`signIn()`](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers) method.
You can sign up with OAuth providers using the [`signIn()`](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers) method.

View File

@@ -1,12 +1,12 @@
---
id: storage-from-getpublicurl
title: "from.getPublicUrl()"
title: 'from.getPublicUrl()'
slug: storage-from-getpublicurl
custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/supabase.yml
---
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
Retrieve URLs for assets in public buckets
@@ -18,20 +18,17 @@ Retrieve URLs for assets in public buckets
<TabsPanel id="js" label="js">
```js
const { publicURL, error } = supabase
.storage
const { publicURL, error } = supabase.storage
.from('public-bucket')
.getPublicUrl('folder/avatar1.png')
```
</TabsPanel>
</Tabs>
## Parameters
<ul className="method-list-group">
<li className="method-list-item">
@@ -56,29 +53,17 @@ The file path to be downloaded, including the path and file name. For example `f
</ul>
## Notes
- The bucket needs to be set to public, either via [updateBucket()](/docs/reference/javascript/storage-updatebucket) or by going to Storage on [app.supabase.io](https://app.supabase.io), clicking the overflow menu on a bucket and choosing "Make public"
- The bucket needs to be set to public, either via [updateBucket()](/docs/reference/javascript/storage-updatebucket) or by going to Storage on [app.supabase.com](https://app.supabase.com), clicking the overflow menu on a bucket and choosing "Make public"
- Policy permissions required:
- `buckets` permissions: none
- `buckets` permissions: none
- `objects` permissions: none
## Examples
### Returns the URL for an asset in a public bucket
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -87,13 +72,11 @@ The file path to be downloaded, including the path and file name. For example `f
<TabsPanel id="js" label="js">
```js
const { publicURL, error } = supabase
.storage
const { publicURL, error } = supabase.storage
.from('public-bucket')
.getPublicUrl('folder/avatar1.png')
```
</TabsPanel>
</Tabs>
</Tabs>

View File

@@ -1,16 +1,15 @@
---
id: auth-signin
title: "auth.signIn()"
title: 'auth.signIn()'
slug: auth-signin
custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml
---
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
Log in an existing user, or login via a third-party provider.
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -25,38 +24,22 @@ final user = res.data?.user;
final error = res.error;
```
</TabsPanel>
</Tabs>
## Notes
- A user can sign up via email, phone number.
- If you provide `email` without a `password`, the user will be sent a magic link.
- The magic link's destination URL is determined by the SITE_URL config variable. To change this, you can go to Authentication -> Settings on [app.supabase.io](https://app.supabase.io)
- Similarly, if you provide `phone` without a `password`, the user will be sent a one time password.
- The magic link's destination URL is determined by the SITE_URL config variable. To change this, you can go to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- Similarly, if you provide `phone` without a `password`, the user will be sent a one time password.
- If you are looking to sign users in with OAuth in Flutter apps, go to [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider).
## Examples
### Sign in with email.
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -71,7 +54,6 @@ final user = res.data?.user;
final error = res.error;
```
</TabsPanel>
</Tabs>
@@ -93,17 +75,15 @@ final res = await supabase.auth.signIn(email: 'example@email.com');
final error = res.error;
```
</TabsPanel>
</Tabs>
### Get OAuth sign in URL.
Passing provider parameter to `signIn()` will return a URL to sign your user in via OAuth.
Passing provider parameter to `signIn()` will return a URL to sign your user in via OAuth.
If you are looking to sign in a user via OAuth on Flutter app, go to [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider).
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -118,7 +98,6 @@ final url = res.data?.url;
final error = res.error;
```
</TabsPanel>
</Tabs>
</Tabs>

View File

@@ -1,16 +1,15 @@
---
id: auth-signup
title: "auth.signUp()"
title: 'auth.signUp()'
slug: auth-signup
custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml
---
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
Creates a new user.
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -25,37 +24,21 @@ final user = res.data?.user;
final error = res.error;
```
</TabsPanel>
</Tabs>
## Notes
- By default, the user will need to verify their email address before logging in. If you would like to change this, you can disable "Email Confirmations" by going to Authentication -> Settings on [app.supabase.io](https://app.supabase.io)
- By default, the user will need to verify their email address before logging in. If you would like to change this, you can disable "Email Confirmations" by going to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- If "Email Confirmations" is turned on, a `user` is returned but `session` will be null
- If "Email Confirmations" is turned off, both a `user` and a `session` will be returned
- When the user confirms their email address, they will be redirected to localhost:3000 by default. To change this, you can go to Authentication -> Settings on [app.supabase.io](https://app.supabase.io)
- When the user confirms their email address, they will be redirected to localhost:3000 by default. To change this, you can go to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
## Examples
### Sign up.
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -70,11 +53,10 @@ final user = res.data?.user;
final error = res.error;
```
</TabsPanel>
</Tabs>
### Sign up with third-party providers.
If you are using Flutter, you can sign up with OAuth providers using the [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider) method available on `supabase_flutter`.
If you are using Flutter, you can sign up with OAuth providers using the [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider) method available on `supabase_flutter`.

View File

@@ -1,16 +1,15 @@
---
id: storage-from-getpublicurl
title: "from.getPublicUrl()"
title: 'from.getPublicUrl()'
slug: storage-from-getpublicurl
custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml
---
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
Retrieve URLs for assets in public buckets
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -27,37 +26,21 @@ final res = supabase
final publicURL = res.data;
```
</TabsPanel>
</Tabs>
## Notes
- The bucket needs to be set to public, either via [updateBucket()](/docs/reference/javascript/storage-updatebucket) or by going to Storage on [app.supabase.io](https://app.supabase.io), clicking the overflow menu on a bucket and choosing "Make public"
- The bucket needs to be set to public, either via [updateBucket()](/docs/reference/javascript/storage-updatebucket) or by going to Storage on [app.supabase.com](https://app.supabase.com), clicking the overflow menu on a bucket and choosing "Make public"
- Policy permissions required:
- `buckets` permissions: none
- `buckets` permissions: none
- `objects` permissions: none
## Examples
### Returns the URL for an asset in a public bucket
<Tabs
defaultActiveId="dart"
groupId="reference/dart"
@@ -74,7 +57,6 @@ final res = supabase
final publicURL = res.data;
```
</TabsPanel>
</Tabs>
</Tabs>

View File

@@ -1,12 +1,12 @@
---
id: auth-signin
title: "signIn()"
title: 'signIn()'
slug: auth-signin
custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/supabase.yml
---
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
Log in an existing user, or login via a third-party provider.
@@ -24,14 +24,12 @@ const { user, session, error } = await supabase.auth.signIn({
})
```
</TabsPanel>
</Tabs>
## Parameters
<ul className="method-list-group">
<li className="method-list-item">
@@ -48,13 +46,12 @@ const { user, session, error } = await supabase.auth.signIn({
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
</li>
<li className="method-list-item">
<h4 className="method-list-item-label">
<span className="method-list-item-label-name">
@@ -69,7 +66,7 @@ No description provided.
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
@@ -90,13 +87,12 @@ No description provided.
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
</li>
<li className="method-list-item">
<h4 className="method-list-item-label">
<span className="method-list-item-label-name">
@@ -111,7 +107,7 @@ No description provided.
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
@@ -123,29 +119,17 @@ No description provided.
</ul>
## Notes
- A user can sign up either via email or OAuth.
- If you provide `email` without a `password`, the user will be sent a magic link.
- The magic link's destination URL is determined by the SITE_URL config variable. To change this, you can go to Authentication -> Settings on [app.supabase.io](https://app.supabase.io)
- The magic link's destination URL is determined by the SITE_URL config variable. To change this, you can go to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- Specifying a `provider` will open the browser to the relevant login page.
## Examples
### Sign in with email.
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -160,7 +144,6 @@ const { user, session, error } = await supabase.auth.signIn({
})
```
</TabsPanel>
</Tabs>
@@ -178,11 +161,10 @@ If no password is provided, the user will be sent a "magic link" to their email
```js
const { user, session, error } = await supabase.auth.signIn({
email: 'example@email.com'
email: 'example@email.com',
})
```
</TabsPanel>
</Tabs>
@@ -201,21 +183,19 @@ Supabase supports OAuth logins.
```js
const { user, session, error } = await supabase.auth.signIn({
// provider can be 'github', 'google', 'gitlab', or 'bitbucket'
provider: 'github'
provider: 'github',
})
```
</TabsPanel>
</Tabs>
### Sign in with redirect.
Sometimes you want to control where the user is redirected to after they are logged in. Supabase supports this for
Sometimes you want to control where the user is redirected to after they are logged in. Supabase supports this for
any URL path on your website (the base domain must be the same as the domain in your Auth settings).
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -224,14 +204,16 @@ any URL path on your website (the base domain must be the same as the domain in
<TabsPanel id="js" label="js">
```js
const { user, session, error } = await supabase.auth.signIn({
provider: 'github'
}, {
redirectTo: 'https://example.com/welcome'
})
const { user, session, error } = await supabase.auth.signIn(
{
provider: 'github',
},
{
redirectTo: 'https://example.com/welcome',
}
)
```
</TabsPanel>
</Tabs>
@@ -241,7 +223,6 @@ const { user, session, error } = await supabase.auth.signIn({
If you need additional data from an OAuth provider, you can include a space-separated list of scopes in your request to get back an OAuth provider token.
You may also need to specify the scopes in the provider's OAuth app settings, depending on the provider.
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -250,15 +231,17 @@ You may also need to specify the scopes in the provider's OAuth app settings, de
<TabsPanel id="js" label="js">
```js
const { user, session, error } = await supabase.auth.signIn({
provider: 'github'
}, {
scopes: 'repo gist notifications'
})
const { user, session, error } = await supabase.auth.signIn(
{
provider: 'github',
},
{
scopes: 'repo gist notifications',
}
)
const oAuthToken = session.provider_token // use to access provider API
```
</TabsPanel>
</Tabs>
@@ -267,7 +250,6 @@ const oAuthToken = session.provider_token // use to access provider API
If you are completing a sign up or login in a React Native app you can pass the refresh token obtained from the provider to obtain a session.
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -277,21 +259,20 @@ If you are completing a sign up or login in a React Native app you can pass the
```js
// An example using Expo's `AuthSession`
const redirectUri = AuthSession.makeRedirectUri({ useProxy: false });
const provider = 'google';
const redirectUri = AuthSession.makeRedirectUri({ useProxy: false })
const provider = 'google'
AuthSession.startAsync({
authUrl: `https://MYSUPABASEAPP.supabase.co/auth/v1/authorize?provider=${provider}&redirect_to=${redirectUri}`,
returnUrl: redirectUri,
}).then(async (response: any) => {
if (!response) return;
if (!response) return
const { user, session, error } = await supabase.auth.signIn({
refreshToken: response.params?.refresh_token,
});
});
})
})
```
</TabsPanel>
</Tabs>
</Tabs>

View File

@@ -1,12 +1,12 @@
---
id: auth-signup
title: "signUp()"
title: 'signUp()'
slug: auth-signup
custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/supabase.yml
---
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
Creates a new user.
@@ -24,14 +24,12 @@ const { user, session, error } = await supabase.auth.signUp({
})
```
</TabsPanel>
</Tabs>
## Parameters
<ul className="method-list-group">
<li className="method-list-item">
@@ -48,13 +46,12 @@ const { user, session, error } = await supabase.auth.signUp({
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
</li>
<li className="method-list-item">
<h4 className="method-list-item-label">
<span className="method-list-item-label-name">
@@ -69,7 +66,7 @@ No description provided.
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
@@ -90,13 +87,12 @@ No description provided.
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
</li>
<li className="method-list-item">
<h4 className="method-list-item-label">
<span className="method-list-item-label-name">
@@ -111,7 +107,7 @@ No description provided.
</h4>
<div class="method-list-item-description">
No description provided.
No description provided.
</div>
@@ -123,33 +119,21 @@ No description provided.
</ul>
## Notes
- By default, the user will need to verify their email address before logging in. If you would like to change this, you can disable "Email Confirmations" by going to Authentication -> Settings on [app.supabase.io](https://app.supabase.io)
- By default, the user will need to verify their email address before logging in. If you would like to change this, you can disable "Email Confirmations" by going to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- If "Email Confirmations" is turned on, a `user` is returned but `session` will be null
- If "Email Confirmations" is turned off, both a `user` and a `session` will be returned
- When the user confirms their email address, they will be redirected to localhost:3000 by default. To change this, you can go to Authentication -> Settings on [app.supabase.io](https://app.supabase.io)
- When the user confirms their email address, they will be redirected to localhost:3000 by default. To change this, you can go to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- If signUp() is called for an existing confirmed user:
- If "Enable email confirmations" is enabled on the "Authentication" -> "Settings" page, an obfuscated / fake user object will be returned.
- If "Enable email confirmations" is disabled, an error with a message "User already registered" will be returned.
- If "Enable email confirmations" is enabled on the "Authentication" -> "Settings" page, an obfuscated / fake user object will be returned.
- If "Enable email confirmations" is disabled, an error with a message "User already registered" will be returned.
- To check if a user already exists, refer to getUser().
## Examples
### Sign up.
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -164,15 +148,12 @@ const { user, session, error } = await supabase.auth.signUp({
})
```
</TabsPanel>
</Tabs>
### Sign up with additional user meta data.
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -187,19 +168,18 @@ const { user, session, error } = await supabase.auth.signUp(
password: 'example-password',
},
{
data: {
first_name: 'John',
data: {
first_name: 'John',
age: 27,
}
},
}
)
```
</TabsPanel>
</Tabs>
### Sign up with third-party providers.
You can sign up with OAuth providers using the [`signIn()`](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers) method.
You can sign up with OAuth providers using the [`signIn()`](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers) method.

View File

@@ -1,12 +1,12 @@
---
id: storage-from-getpublicurl
title: "from.getPublicUrl()"
title: 'from.getPublicUrl()'
slug: storage-from-getpublicurl
custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/supabase.yml
---
import Tabs from '@theme/Tabs';
import TabsPanel from '@theme/TabsPanel';
import Tabs from '@theme/Tabs'
import TabsPanel from '@theme/TabsPanel'
Retrieve URLs for assets in public buckets
@@ -18,20 +18,17 @@ Retrieve URLs for assets in public buckets
<TabsPanel id="js" label="js">
```js
const { publicURL, error } = supabase
.storage
const { publicURL, error } = supabase.storage
.from('public-bucket')
.getPublicUrl('folder/avatar1.png')
```
</TabsPanel>
</Tabs>
## Parameters
<ul className="method-list-group">
<li className="method-list-item">
@@ -56,29 +53,17 @@ The file path to be downloaded, including the path and file name. For example `f
</ul>
## Notes
- The bucket needs to be set to public, either via [updateBucket()](/docs/reference/javascript/storage-updatebucket) or by going to Storage on [app.supabase.io](https://app.supabase.io), clicking the overflow menu on a bucket and choosing "Make public"
- The bucket needs to be set to public, either via [updateBucket()](/docs/reference/javascript/storage-updatebucket) or by going to Storage on [app.supabase.com](https://app.supabase.com), clicking the overflow menu on a bucket and choosing "Make public"
- Policy permissions required:
- `buckets` permissions: none
- `buckets` permissions: none
- `objects` permissions: none
## Examples
### Returns the URL for an asset in a public bucket
<Tabs
defaultActiveId="js"
groupId="reference/supabase-js"
@@ -87,13 +72,11 @@ The file path to be downloaded, including the path and file name. For example `f
<TabsPanel id="js" label="js">
```js
const { publicURL, error } = supabase
.storage
const { publicURL, error } = supabase.storage
.from('public-bucket')
.getPublicUrl('folder/avatar1.png')
```
</TabsPanel>
</Tabs>
</Tabs>

View File

@@ -11,7 +11,7 @@ tags:
date: '06-01-2020'
---
Now in [Supabase](https://app.supabase.io):
Now in [Supabase](https://app.supabase.com):
- Set up Postgres in less than 2 minutes
- Auto-generated APIs! (they are a bit flaky, go easy)
@@ -58,6 +58,6 @@ Send realtime database changes to other systems, like queues or webhooks (Slack
## Follow us
Start using Supabase today: [app.supabase.io](https://app.supabase.io)
Start using Supabase today: [app.supabase.com](https://app.supabase.com)
Make sure to star us on github! [github.com/supabase/supabase](https://github.com/supabase/supabase)

View File

@@ -57,6 +57,6 @@ This one is still very unstable, but we wanted to ship it anyway. It's a little
## Follow us
Start using Supabase today: [app.supabase.io](https://app.supabase.io)
Start using Supabase today: [app.supabase.com](https://app.supabase.com)
Make sure to star us on github! [github.com/supabase/supabase](https://github.com/supabase/supabase)

View File

@@ -95,7 +95,7 @@ We have a number of small improvements:
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Become a [sponsor](https://github.com/sponsors/supabase)

View File

@@ -53,7 +53,7 @@ We have since migrated our middleware to multiple ECS clusters, globally load-ba
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.
We serve our app ([app.supabase.com](https://app.supabase.com)) 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.
## The Bad

View File

@@ -75,7 +75,7 @@ We have a number of small improvements:
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Become a [sponsor](https://github.com/sponsors/supabase)

View File

@@ -88,6 +88,6 @@ Supabase has a culture of shipping early and often. Our Auth release is another
### Get started
Supabase Auth is ready for you to start using today, free of charge: [app.supabase.io](https://app.supabase.io)
Supabase Auth is ready for you to start using today, free of charge: [app.supabase.com](https://app.supabase.com)
To see the full power of our auth system, watch [this demo](https://youtu.be/2oqIZW5S-lQ) where I deploy a secure, real-time slack clone to Vercel in less than 3 minutes.

View File

@@ -84,7 +84,7 @@ Our focus now is to move from Alpha to Beta. This involves stabilising our Auth
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Become a [sponsor](https://github.com/sponsors/supabase)

View File

@@ -92,7 +92,7 @@ Our focus now is to move from Alpha to Beta and we'll be improving stability, re
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io/)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com/)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Become a [sponsor](https://github.com/sponsors/supabase)

View File

@@ -113,7 +113,7 @@ To summarise the steps:
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io/)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com/)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Become a [sponsor](https://github.com/sponsors/supabase)

View File

@@ -21,7 +21,7 @@ We're now 8 months into building Supabase. We're focused on performance, stabili
Watch a full demo:
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/1gNDMMsUPI0"
@@ -80,7 +80,7 @@ Our focus is still moving from Alpha to Beta and we'll be improving stability, r
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io/)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com/)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Become a [sponsor](https://github.com/sponsors/supabase)

View File

@@ -21,7 +21,7 @@ We've been building for 9 months now, and we're getting even closer to Beta.
Watch a full demo:
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/unC_de7iytA"
@@ -77,7 +77,7 @@ Look out for a big announcement on December 3rd. We'll also be presenting in the
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io/)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com/)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Become a [sponsor](https://github.com/sponsors/supabase)

View File

@@ -20,7 +20,7 @@ After 10 hectic months of building, Supabase is now in Beta.
Watch a full demo:
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/ofSm4BJkZ1g"
@@ -92,7 +92,7 @@ We also have something exciting planned with Vercel and Stripe ... [stay tuned](
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io/)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com/)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Become a [sponsor](https://github.com/sponsors/supabase)

View File

@@ -22,7 +22,7 @@ New year, new features. We've been busy at Supabase during January and our commu
Watch a full demo:
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/DlybOLANG4s"
@@ -124,7 +124,7 @@ We're ramping up to "Launch week" at the end of Q1, where we will be giving you
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io/)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com/)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Subscribe to our [YouTube channel](https://www.youtube.com/c/supabase)

View File

@@ -153,6 +153,6 @@ WHERE first_name LIKE "S%";
If you can reason about most of the topics in this post then you'll be in a very strong position to impress with your answers to PostgreSQL interview questions. As with all programming topics however, the real learning starts when you put these things into practice. At Supabase we offer a very very fast (the fastest?) way to spin up a PostgreSQL database and start querying it, and our browser based SQL editor is getting more powerful every day.
[Get started on Supabase for free here](https://app.supabase.io)
[Get started on Supabase for free here](https://app.supabase.com)
Thanks Steve Chavez for providing all the good bits of this post :)

View File

@@ -21,7 +21,7 @@ Supabase is an open source Firebase alternative. We've now been building for one
Watch a full demo:
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/h-ses99G45g"
@@ -104,7 +104,7 @@ Waiting for Supabase Storage? Here's a sneak peek for the upcoming Launch Week a
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io/)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com/)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Subscribe to our [YouTube channel](https://www.youtube.com/c/supabase)

View File

@@ -211,4 +211,4 @@ If you're familiar with `C`, you could also help `@pramsey` to implement async f
There are plenty of ways to run cron jobs these days. You can trigger them from your local machine. You can install them on a VPS. You can schedule Serverless functions. You can use a paid service. You can use GitHub Actions.
Is Postgres the best place to put your cron jobs? `¯\_(ツ)_/¯`. Postgres databases are free on Supabase and since it takes only one minute to [get started](https://app.supabase.io/), why not make your next cron server a Postgres database?
Is Postgres the best place to put your cron jobs? `¯\_(ツ)_/¯`. Postgres databases are free on Supabase and since it takes only one minute to [get started](https://app.supabase.com/), why not make your next cron server a Postgres database?

View File

@@ -22,7 +22,7 @@ They support a ton of different languages and execution environments and even re
As a Replit user, if you want to access larger amounts of data direct from your repl, or if you fancy accessing some super-powerful query tools, at some point you may want to start interacting with a relational database. Supabase is a good fit here; just like Replit, you don't need to worry about servers, and hosting, you can just click a few buttons and get a fully featured relational database which you can start communicating with directly from javacript, using supabase-js.
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/lQ5iIxaYduI"
@@ -132,4 +132,4 @@ We look forward to showing off some more Supabase + Replit examples.
You can find my example repl here: [https://repl.it/@awalias/supabase-test#index.js](https://repl.it/@awalias/supabase-test#index.js)
Supabase has a free tier, head over to [https://app.supabase.io](https://app.supabase.io) to get started.
Supabase has a free tier, head over to [https://app.supabase.com](https://app.supabase.com) to get started.

View File

@@ -77,7 +77,7 @@ In the next few days, you will see your usage appear in the dashboard with an up
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).
Sign up for the Supabase Beta [here](https://app.supabase.com).
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.

View File

@@ -160,4 +160,4 @@ You may be itching to get started tinkering around with our new Supabase storage
- 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](/docs/reference/javascript/supabase-client).
Take it for a spin on our [dashboard](http://app.supabase.io/) and let us know what you think!
Take it for a spin on our [dashboard](https://app.supabase.com/) and let us know what you think!

View File

@@ -224,4 +224,4 @@ Head over to the [Self Hosting Docs](/docs/guides/self-hosting) for a more compl
If you require any assistance feel free to reach out in our [github discussions](https://github.com/supabase/supabase/discussions) or at support@supabase.io.
Check out what else we've [launched this week](/blog/2021/03/25/launch-week), contribute to the [CLI repo](https://github.com/supabase/cli), or go here for the [hosted version](https://app.supabase.io).
Check out what else we've [launched this week](/blog/2021/03/25/launch-week), contribute to the [CLI repo](https://github.com/supabase/cli), or go here for the [hosted version](https://app.supabase.com).

View File

@@ -92,7 +92,7 @@ This is the most granular option. Connections are returned to the pool after eve
## What's next?
Try out connection pooling now with a new project in the [dashboard.](http://app.supabase.io) For now, we do not have any plans to port this over to older projects.
Try out connection pooling now with a new project in the [dashboard.](https://app.supabase.com) For now, we do not have any plans to port this over to older projects.
Eventually, we will expose more PgBouncer settings to the UI such as `Pool Size`. At the moment it is set to `15`.

View File

@@ -19,7 +19,7 @@ Launch week, Storage, Supabase CLI, Connection Pooling, Supabase UI, and Pricing
Watch a full demo:
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/TtLxxaYE1rA"
@@ -115,7 +115,7 @@ For this we are working on our own [Workflow engine](/blog/2021/04/02/supabase-
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io/)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com/)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Subscribe to our [YouTube channel](https://www.youtube.com/c/supabase)

View File

@@ -20,7 +20,7 @@ Check out what we were working on below, as well as some incredible Community co
Watch a full demo:
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/uWJmUTCFdak"
@@ -38,7 +38,7 @@ We're a developer tool, which means that Dark Mode is [extremely popular](https:
While Dark mode is great, for some people it's not an option. Dark Mode is difficult to use for developers with astigmatisms,
or even just working in brightly-lit environments.
So today we're shipping Light Mode. Access it in the settings of your [Dashboard](https://app.supabase.io).
So today we're shipping Light Mode. Access it in the settings of your [Dashboard](https://app.supabase.com).
<video width="99%" autoPlay="autoplay" muted playsInline controls={true}>
<source src="/images/blog/april-2021/light-mode.mp4" type="video/mp4" muted playsInline />
@@ -124,7 +124,7 @@ $$ language plv8;
Fireship reviewed Supabase last week, and despite being a (self-proclaimed) Firebase fan-boy, the review was very impartial.
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/WiwfiVdfRIc"
@@ -170,7 +170,7 @@ We're also working on our [Workflows engine](/blog/2021/04/02/supabase-workflows
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io/)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com/)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Subscribe to our [YouTube channel](https://www.youtube.com/c/supabase)

View File

@@ -19,7 +19,7 @@ Apple & Twitter Logins, Supabase Grid, Go & Swift Libraries. Lots of great stuff
Watch a full demo:
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/qETcl3SUfzU"
@@ -88,7 +88,7 @@ We started a weekly 1-hour live stream where we build in public.
- [Build in Public 002](https://twitter.com/p_phiri/status/1397815806990372865?s=20): `maybeSingle()` and "React + Supabase" Tutorial
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/p561ogKZ63o"
@@ -124,7 +124,7 @@ We're planning another Launch Week at the end of July. We'll probably have a qui
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io/)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com/)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Subscribe to our [YouTube channel](https://www.youtube.com/c/supabase)

View File

@@ -20,7 +20,7 @@ Supabase is gearing up for another Launch Week on July the 26th. Until then, her
Watch a full demo of this month's releases
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/m3yRPNyYolk"
@@ -113,7 +113,7 @@ We run a weekly 1-hour live stream where we build in public.
- [Build in Public 007](https://youtu.be/R4gJhX_JFTo): Supabase Studio - API Docs
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/LHYrqBb4q9I"
@@ -164,7 +164,7 @@ Let's goooooo.
### Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io/)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com/)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Subscribe to our [YouTube channel](https://www.youtube.com/c/supabase)

View File

@@ -119,4 +119,4 @@ Each offering will be available for both the `x86` and `arm` architectures.
## Try PostgreSQL 13
Try the new features of PostgreSQL 13.3 today by creating a [new project](https://app.supabase.io/) on Supabase.
Try the new features of PostgreSQL 13.3 today by creating a [new project](https://app.supabase.com/) on Supabase.

View File

@@ -166,4 +166,4 @@ We have a few production applications using Supabase Storage. Wataru is using St
We're planning a Content Delivery Network for faster downloads, as well as basic transformation and optimization support for media files (like resizing, etc). We will continue our Kaizen on smaller improvements like allowing configurable upload limits and improving service stability and scalability.
Anything else you want to see or can help implement in Storage? Reach out on our [Discord channel](https://discord.supabase.com/) and give Storage a try by [creating a project](https://app.supabase.io/) on Supabase!
Anything else you want to see or can help implement in Storage? Reach out on our [Discord channel](https://discord.supabase.com/) and give Storage a try by [creating a project](https://app.supabase.com/) on Supabase!

View File

@@ -55,7 +55,7 @@ Check out the [documentation](/docs/guides/auth/auth-twilio) to get started with
or watch the [Youtube guide](https://youtu.be/akScoPO01bc).
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/akScoPO01bc"
@@ -102,4 +102,4 @@ The next major item on the list is MFA (Multi-Factor Authentication) - which inc
Find out how Mobbin is using Supabase Auth to [manage 200,000 users](/blog/2021/07/28/mobbin-supabase-200000-users).
Anything else you want to see or can help implement in Auth? Reach out on
[Discord](https://discord.supabase.com/) and give Auth a try by [creating a project](https://app.supabase.io/) on Supabase!
[Discord](https://discord.supabase.com/) and give Auth a try by [creating a project](https://app.supabase.com/) on Supabase!

View File

@@ -122,4 +122,4 @@ Where to begin?
- Longer time periods: view historical data going back several months.
- Interactive widgets: view-only reports are fine, but we wouldn't be a Postgres company if we didn't allow you to write your own SQL queries.
Any other metrics you want to see in your projects? Reach out on our [Discord channel](https://discord.supabase.com/) and give Supabase a try by [creating a project](https://app.supabase.io/).
Any other metrics you want to see in your projects? Reach out on our [Discord channel](https://discord.supabase.com/) and give Supabase a try by [creating a project](https://app.supabase.com/).

View File

@@ -244,7 +244,7 @@ This is only the beginning! First we'll thoroughly test it and make a stable rel
## Get started today
Function Hooks is enabled today on all [new projects](https://app.supabase.io). Find it under Database > Alpha Preview > Function Hooks.
Function Hooks is enabled today on all [new projects](https://app.supabase.com). Find it under Database > Alpha Preview > Function Hooks.
![Enable hooks](/images/blog/functions-updates/enable-hooks.png)

View File

@@ -20,7 +20,7 @@ July ended with our second "Launch Week", where we shipped something every day f
Watch a full demo of this month's releases.
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/Vj5fPA-vjfw"
@@ -135,7 +135,7 @@ Security, stability, performance ... and Functions.
## Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io/)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com/)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Subscribe to our [YouTube channel](https://www.youtube.com/c/supabase)

View File

@@ -20,7 +20,7 @@ We've raised $30M and shipped a bunch of features. Let's dive into what's been h
Watch a recap of this month's release.
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/YYpTh2DAvho"
@@ -90,7 +90,7 @@ RLS can be a bit foreign for developers getting started with Postgres.
This video by [@\_dijonmusters](https://twitter.com/_dijonmusters) demystifies it. If you find the video a useful medium for learning, consider [subscribing to our channel](https://www.youtube.com/c/supabase).
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/Ow_Uzedfohk"
@@ -158,7 +158,7 @@ By the time we're done, Supabase will be production-ready for all use cases.
## Get started
- Start using Supabase today: [app.supabase.io](https://app.supabase.io/)
- Start using Supabase today: [app.supabase.com](https://app.supabase.com/)
- Make sure to [star us on GitHub](https://github.com/supabase/supabase)
- Follow us [on Twitter](https://twitter.com/supabase)
- Subscribe to our [YouTube channel](https://www.youtube.com/c/supabase)

View File

@@ -67,7 +67,7 @@ We've revamped the Auth docs - The docs are now broken down into [Authentication
Low Code demo, Using Supabase with [Clutch.io](http://clutch.io/) - [@\_dijonmusters](https://twitter.com/_dijonmusters) ran a [session at General Assembly](https://www.youtube.com/watch?t=642&v=5fsKMTeBKKY) showing how to use these two tools together to create apps using a low code approach.
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/5fsKMTeBKKY"
@@ -124,7 +124,7 @@ We're warming up for another Launch Week! Last time was "[Launch Week II: the SQ
## Get started
- Start using Supabase today: **[app.supabase.io](https://app.supabase.io/)**
- Start using Supabase today: **[app.supabase.com](https://app.supabase.com/)**
- Make sure to **[star us on GitHub](https://github.com/supabase/supabase)**
- Follow us **[on Twitter](https://twitter.com/supabase)**
- Subscribe to our **[YouTube channel](https://www.youtube.com/c/supabase)**

View File

@@ -74,4 +74,4 @@ Replenysh clients include brands with global recognition and millions of custome
## Supabase help Replenysh continue to scale
Supabase turbo-charged Replenysh's development time with a seamless end-user mobile login experience. They are ready to help major brands engage with their users through participation in the circular economy. With Supabase, the team knows they have a slick auth experience, reduced DevOps overhead, and can continue to scale with Postgres. You can test out the Supabase developer experience today by [starting a new project on the free tier!.](https://app.supabase.io/)
Supabase turbo-charged Replenysh's development time with a seamless end-user mobile login experience. They are ready to help major brands engage with their users through participation in the circular economy. With Supabase, the team knows they have a slick auth experience, reduced DevOps overhead, and can continue to scale with Postgres. You can test out the Supabase developer experience today by [starting a new project on the free tier!.](https://app.supabase.com/)

View File

@@ -263,7 +263,7 @@ If you want to help us build the future of cloud-native Postgres, join us:
## Get started
- Start using Supabase today: **[app.supabase.io](https://app.supabase.io/)**
- Start using Supabase today: **[app.supabase.com](https://app.supabase.com/)**
- Make sure to **[star us on GitHub](https://github.com/supabase/supabase)**
- Follow us **[on Twitter](https://twitter.com/supabase)**
- Subscribe to our **[YouTube channel](https://www.youtube.com/c/supabase)**

View File

@@ -20,7 +20,7 @@ We released three new Auth providers, multi-schema support, and we're gearing up
Watch a recap of this month's release.
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/yL5WbAKAKjE"
@@ -63,7 +63,7 @@ We have a TON of new guides, with videos too.
Learn about PostgreSQL Functions. [Docs](https://supabase.com/docs/guides/database/functions).
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/MJZCCpCYEqk"
@@ -77,7 +77,7 @@ Learn about PostgreSQL Functions. [Docs](https://supabase.com/docs/guides/databa
Learn about all the exciting features of Auth within Supabase. [Docs](https://supabase.com/docs/guides/auth/intro).
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/6ow_jW4epf8"
@@ -91,7 +91,7 @@ Learn about all the exciting features of Auth within Supabase. [Docs](https://su
Learn more about the power of PostgREST for RESTful APIs. [Docs](https://supabase.com/docs/guides/api#restful-api).
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/rPAJJFdtPw0"
@@ -118,7 +118,7 @@ There was a lot of activity this month.
Supabase attended the Jamstack conf. Watch us catch up with Matt, the cofounder of Netlify (minute 8).
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/phC14xfwvjc"
@@ -132,7 +132,7 @@ Supabase attended the Jamstack conf. Watch us catch up with Matt, the cofounder
And [Jon](https://twitter.com/_dijonmusters) made a guest appearance at this year's amazing [Next.js Conf](https://nextjs.org/conf).
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/GpXEMB1pDRE"
@@ -173,7 +173,7 @@ Now we're going even bigger with the third installment: `Launch Week III: The Tr
## Get started
- Start using Supabase today: **[app.supabase.io](https://app.supabase.io/)**
- Start using Supabase today: **[app.supabase.com](https://app.supabase.com/)**
- Make sure to **[star us on GitHub](https://github.com/supabase/supabase)**
- Follow us **[on Twitter](https://twitter.com/supabase)**
- Subscribe to our **[YouTube channel](https://www.youtube.com/c/supabase)**

View File

@@ -114,6 +114,6 @@ In some ways, running Supabase is like launching many startups at the same time,
Running an accelerator model may also be why we've had success [hiring so many other founders](https://about.supabase.com/careers/founders). We're able to give a high degree of autonomy to individuals when it comes to managing projects and initiatives. If this kind of work environment sounds interesting to you, we have tons of [open roles](https://about.supabase.com/careers). We've already hired people who joined because they "couldn't stand to watch another Launch Week from the sidelines" and team members often quote experiencing their first Launch Week as one of the highlights of their Supabase journey so far. It clearly has benefits that extend beyond just growth and user activation.
Make sure you follow us on [Twitter](https://twitter.com/supabase), join our [Discord](https://discord.supabase.com), or [sign up for Supabase](https://app.supabase.io) in order to keep up to date on all things Supabase.
Make sure you follow us on [Twitter](https://twitter.com/supabase), join our [Discord](https://discord.supabase.com), or [sign up for Supabase](https://app.supabase.com) in order to keep up to date on all things Supabase.
Supabase is the Open Source Firebase Alternative.

View File

@@ -97,7 +97,7 @@ select *
from sensor_range;
```
``` hideCopy
```hideCopy
| `reading_id` | `metric_desc` | `metric_level` | `metric_ts` |
|--------------|---------------|----------------|-----------------------------------------------------------------------------|
| 1 | Temperature | high | {[2021-11-01 6:00, 2021-11-01 10:00],[2021-11-05 14:00, 2021-11-05 20:00]} |
@@ -163,4 +163,4 @@ Indeed, there's a lot more to explore in the latest PostgreSQL, and we've barely
There's no better way to experience some of these features than by trying them out for yourself.
You can check out these new features within your Supabase project without having to perform a local installation.
Explore the [Supabase dashboard now](https://app.supabase.io) and get started with your new project.
Explore the [Supabase dashboard now](https://app.supabase.com) and get started with your new project.

View File

@@ -19,53 +19,51 @@ Here's all the awesome stuff that got shipped during Launch Week...
## Supabase Studio
We [open sourced the Dashboard](/blog/2021/11/30/supabase-studio) - it's now included in Self-Hosting, and the community are now able to contribute,
We [open sourced the Dashboard](/blog/2021/11/30/supabase-studio) - it's now included in Self-Hosting, and the community are now able to contribute,
which is going to help us move even faster! Expect many more updates to the dashboard over the coming weeks and months! [Read the code for yourself.](https://github.com/supabase/supabase/tree/master/studio)
![Supabase Studio](/images/blog/2021-nov/studio.jpg)
## We acquired Logflare
We were early Logflare users, and found it to be one of the most impressive products we'd ever used. So impressive in fact, that we wanted to offer it's capabilities to our entire user base.
We were early Logflare users, and found it to be one of the most impressive products we'd ever used. So impressive in fact, that we wanted to offer it's capabilities to our entire user base.
You'll now find fully searchable Supabase API and database logs within the dashboard, and we're also in the process of open sourcing the codebase. [Read more about the acquisition](/blog/2021/12/02/supabase-acquires-logflare).
![We acquired Logflare](/images/blog/2021-nov/logflare.png)
## Realtime Row Level Security
[Security rules now work for Realtime](/blog/2021/12/01/realtime-row-level-security-in-postgresql).
[Security rules now work for Realtime](/blog/2021/12/01/realtime-row-level-security-in-postgresql).
All of your row level security policies now work with the realtime API, so you can limit streams and subscriptions on a per user basis (or any configuration you want!).
![Realtime Row Level Security](/images/blog/2021-nov/realtime.png)
## GraphQL is coming to Supabase
We heard you! And built a Postgres extension for [querying your database with GraphQL](/blog/2021/12/03/pg-graphql).
We heard you! And built a Postgres extension for [querying your database with GraphQL](/blog/2021/12/03/pg-graphql).
This means that each GraphQL request is resolved by a single SQL statement and hits the theoretical minimum achievable network IO overhead of any GraphQL to SQL resolver.
![GraphQL is coming to Supabase](/images/blog/2021-nov/graphql.png)
## Supabase now runs on PostgreSQL 14
One of the most exciting things to happen in databases this year was the release of PG 14.
One of the most exciting things to happen in databases this year was the release of PG 14.
Which is now the default database used on our hosted platform. Read more here about [why we're so excited about it](/blog/2021/11/28/whats-new-in-postgres-14).
![Supabase now runs on PostgreSQL 14](/images/blog/2021-nov/pg14.png)
## PostgREST 9.0
## PostgREST 9.0
PostgREST is the tool we use to introspect your schema and make your database available over a RESTful API.
We also sponsor and help maintain this amazing open source project. Version 9.0 was just released and has also been rolled out to all new and existing Supabase projects on our hosted platform.
PostgREST is the tool we use to introspect your schema and make your database available over a RESTful API.
We also sponsor and help maintain this amazing open source project. Version 9.0 was just released and has also been rolled out to all new and existing Supabase projects on our hosted platform.
[Check out the blog post](/blog/2021/11/28/postgrest-9) by Steve Chavez, the maintainer of PostgREST.
![PostgREST 9.0 ](/images/blog/2021-nov/postgrest9.png)
## Building a SaaS?
## Building a SaaS?
We have [a course for that](https://egghead.io/courses/build-a-saas-product-with-next-js-supabase-and-stripe-61f2bc20).
You'll learn how to combine Next.js, Stripe, and Supabase to launch your business in no time at all.
We have [a course for that](https://egghead.io/courses/build-a-saas-product-with-next-js-supabase-and-stripe-61f2bc20).
You'll learn how to combine Next.js, Stripe, and Supabase to launch your business in no time at all.
It's honestly mind blowing how quickly you can get products out the door with this stack. Oh and it's free.
![Building a SaaS? ](/images/blog/2021-nov/course.jpg)
@@ -83,7 +81,7 @@ supabase monthly growth
![How we Launch](/images/blog/2021-nov/supabase-universe.jpg)
## Community
## Community
### Highlights
@@ -103,7 +101,6 @@ Supabase is [now on TikTok](https://www.tiktok.com/@supabase.com?) - Watch us sh
![GitHub](/images/blog/2021-nov/tiktok.png)
### GitHub
We hit 25K stars!! [github.com/supabase/supabase](http://github.com/supabase/supabase)
@@ -112,8 +109,8 @@ We hit 25K stars!! [github.com/supabase/supabase](http://github.com/supabase/sup
## Get started
- Start using Supabase today: **[app.supabase.io](https://app.supabase.io/)**
- Start using Supabase today: **[app.supabase.com](https://app.supabase.com/)**
- Make sure to **[star us on GitHub](https://github.com/supabase/supabase)**
- Follow us **[on Twitter](https://twitter.com/supabase)**
- Subscribe to our **[YouTube channel](https://www.youtube.com/c/supabase)**
- Become a **[sponsor](https://github.com/sponsors/supabase)**
- Become a **[sponsor](https://github.com/sponsors/supabase)**

View File

@@ -17,7 +17,7 @@ Happy 2022. We're looking forward to a year of shipping product and helping our
Here's a bunch of stuff we shipped throughout December...
## Hackathon Winners
## Hackathon Winners
We had a ton of awesome projects [submitted for our Holiday Hackdays](/blog/2021/12/17/holiday-hackdays-winners-2021), all of the submissions are open source so come and check out the code for some of our top picks!
@@ -25,20 +25,20 @@ We had a ton of awesome projects [submitted for our Holiday Hackdays](/blog/2021
## New crypto extension - pg_crypto
We just added pg_sodium as an extension inside all postgres instances.
Which means you can easily do encryption, decryption, hashing, and cryptographic signing from within your postgres functions and queries.
Enable it from the Database > Extensions tab in the [Supabase Dashboard](https://app.supabase.io).
We just added pg_sodium as an extension inside all postgres instances.
Which means you can easily do encryption, decryption, hashing, and cryptographic signing from within your postgres functions and queries.
Enable it from the Database > Extensions tab in the [Supabase Dashboard](https://app.supabase.com).
[![pg sodium support](/images/blog/2021-dec/pgsodium.png)](https://app.supabase.io)
[![pg sodium support](/images/blog/2021-dec/pgsodium.png)](https://app.supabase.com)
## PostgreSQL Videos
## PostgreSQL Videos
### Call Postgres functions from JavaScript with RPC
Jon Meyers walks you through how to write more complex queries and logic in your database, and invoke it via the API.
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/I6nnp9AINJk"
@@ -47,12 +47,12 @@ Jon Meyers walks you through how to write more complex queries and logic in your
allowFullScreen
></iframe>
### Call any API using PostgreSQL functions
### Call any API using PostgreSQL functions
We recently added the ability to call any external HTTP endpoint from your postgres functions. Jon shows you how!
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/rARgrELRCwY"
@@ -61,12 +61,12 @@ We recently added the ability to call any external HTTP endpoint from your postg
allowFullScreen
></iframe>
### Create PostgreSQL Functions with Supabase
### Create PostgreSQL Functions with Supabase
Triggers allow you to execute SQL in response to any table changes. Learn how to write PostgreSQL triggers with Jon!
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/MJZCCpCYEqk"
@@ -90,7 +90,7 @@ There was a lot of activity this month.
Let Jason and Jon show you how to build an app with Next.js and Supabase on top of Netlify!
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/8vqY1KT4TLU"
@@ -109,7 +109,17 @@ Divjoy announced their [Supabase Integration](https://divjoy.com/?database=supab
[n8n](https://n8n.io/) added a Supabase node.
<blockquote class="twitter-tweet" data-theme="dark"><p lang="en" dir="ltr">We released n8n@0.158.0 with new nodes for <a href="https://twitter.com/supabase?ref_src=twsrc%5Etfw">@supabase</a>, <a href="https://twitter.com/syncromsp?ref_src=twsrc%5Etfw">@syncromsp</a>, and <a href="https://twitter.com/Microsoft?ref_src=twsrc%5Etfw">@Microsoft</a> Graph Security. We also made improvements to existing nodes ✨ <a href="https://t.co/IdeUe4eWBK">pic.twitter.com/IdeUe4eWBK</a></p>&mdash; n8n.io (@n8n_io) <a href="https://twitter.com/n8n_io/status/1480502781320572931?ref_src=twsrc%5Etfw">January 10, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" data-theme="dark">
<p lang="en" dir="ltr">
We released n8n@0.158.0 with new nodes for{' '}
<a href="https://twitter.com/supabase?ref_src=twsrc%5Etfw">@supabase</a>,{' '}
<a href="https://twitter.com/syncromsp?ref_src=twsrc%5Etfw">@syncromsp</a>, and{' '}
<a href="https://twitter.com/Microsoft?ref_src=twsrc%5Etfw">@Microsoft</a> Graph Security. We
also made improvements to existing nodes ✨{' '}
<a href="https://t.co/IdeUe4eWBK">pic.twitter.com/IdeUe4eWBK</a>
</p>
&mdash; n8n.io (@n8n_io) <a href="https://twitter.com/n8n_io/status/1480502781320572931?ref_src=twsrc%5Etfw">January 10, 2022</a>
</blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>{' '}
### Python Upgrades
@@ -121,9 +131,14 @@ See the full list of [community supported libs](https://github.com/supabase-comm
### Twitter
We're having a 24/7*365 meme-fest on [Twitter](https://twitter.com/supabase)
We're having a 24/7\*365 meme-fest on [Twitter](https://twitter.com/supabase)
<blockquote class="twitter-tweet" data-theme="dark"><p lang="en" dir="ltr">invest in good relationships <a href="https://t.co/bGiBE7FRFQ">pic.twitter.com/bGiBE7FRFQ</a></p>&mdash; Supabase (@supabase) <a href="https://twitter.com/supabase/status/1475876907212316678?ref_src=twsrc%5Etfw">December 28, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" data-theme="dark">
<p lang="en" dir="ltr">
invest in good relationships <a href="https://t.co/bGiBE7FRFQ">pic.twitter.com/bGiBE7FRFQ</a>
</p>
&mdash; Supabase (@supabase) <a href="https://twitter.com/supabase/status/1475876907212316678?ref_src=twsrc%5Etfw">December 28, 2021</a>
</blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>{' '}
### TikTok
@@ -149,7 +164,7 @@ Check out some of our other community stats in our latest [Series A Blog Post](/
## Get started
- Start using Supabase today: **[app.supabase.io](https://app.supabase.io/)**
- Start using Supabase today: **[app.supabase.com](https://app.supabase.com/)**
- Make sure to **[star us on GitHub](https://github.com/supabase/supabase)**
- Follow us **[on Twitter](https://twitter.com/supabase)**
- Subscribe to our **[YouTube channel](https://www.youtube.com/c/supabase)**

View File

@@ -109,7 +109,7 @@ There's no stopping [Jon Meyers](https://jonmeyers.io/videos)! Hes back with
You'll learn how to listen to _any_ database change, then send those changes [in a payload](https://supabase.com/blog/2021/07/30/supabase-functions-updates#hook-payload) via HTTP request.
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/codAs9-NeHM"
@@ -120,10 +120,9 @@ You'll learn how to listen to _any_ database change, then send those changes [in
## Set your own support ticket priority
As with any platform, there can be the occasional glitch.
As with any platform, there can be the occasional glitch.
The Supabase Dashboard includes a dedicated support form that goes straight to our support inbox. This support form includes your project information and,
The Supabase Dashboard includes a dedicated support form that goes straight to our support inbox. This support form includes your project information and,
since we all want to see your issues solved, we thought it would make sense that _you_ could set the priority of your support tickets.
This change has drastically improved response times for urgent support tickets.
@@ -142,7 +141,7 @@ Are you maintaining multiple environments? Snaplet helps you copy a production d
Check out the [Supabase clone environments](https://docs.snaplet.dev/tutorials/supabase-clone-environments) tutorial on the Snaplet docs.
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/oPtMMhdhEP4"
@@ -156,7 +155,7 @@ Check out the [Supabase clone environments](https://docs.snaplet.dev/tutorials/s
Retool has put together a brilliant 10 minute admin panel setup using Supabase with Retool.
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/AgB2-CSrnoI"
@@ -170,7 +169,7 @@ Retool has put together a brilliant 10 minute admin panel setup using Supabase w
Jason Lengstorf caught up with our very own [Jon Meyers](https://jonmeyers.io/) on his awesome show, [Learn with Jason](https://www.youtube.com/watch?v=8vqY1KT4TLU), to talk about building an app [with Supabase and NextJS](https://supabase.com/docs/guides/with-nextjs).
<iframe
className="w-full video-with-border"
className="video-with-border w-full"
width="640"
height="385"
src="https://www.youtube-nocookie.com/embed/8vqY1KT4TLU"
@@ -189,7 +188,7 @@ Jason Lengstorf caught up with our very own [Jon Meyers](https://jonmeyers.io/)
One of Supabases key tools that allow a lot of our functionality has had some updates.
- `pg_listen` was removed in favor of PostgRESTs built-in schema reloading.
- `pg_listen` was removed in favor of PostgRESTs built-in schema reloading.
- PostgREST database connection pool size gets scaled with instance size for better performance for certain workload shapes.
## Coming Next: Launch Week IV
@@ -200,7 +199,7 @@ Of course, we cant tell you what will happen (perhaps because we dont know
## Get started
- Start using Supabase today: **[app.supabase.io](https://app.supabase.io/)**
- Start using Supabase today: **[app.supabase.com](https://app.supabase.com/)**
- Make sure to **[star us on GitHub](https://github.com/supabase/supabase)**
- Follow us **[on Twitter](https://twitter.com/supabase)**
- Subscribe to our **[YouTube channel](https://www.youtube.com/c/supabase)**

View File

@@ -124,48 +124,32 @@ Some features are too good to limit to large customers, so today we're introduci
### Spend caps
<video width="99%" autoPlay="autoplay" muted playsInline controls={true}>
<source
src="/videos/blog/launch-week-4/spend-caps.mp4"
type="video/mp4"
muted
playsInline
/>
<source src="/videos/blog/launch-week-4/spend-caps.mp4" type="video/mp4" muted playsInline />
</video>
To simplify pricing, we've merged the “Pro” and “Pay as you go” tiers and introduced monthly spend caps to avoid nasty billing surprises.
To simplify pricing, we've merged the “Pro” and “Pay as you go” tiers and introduced monthly spend caps to avoid nasty billing surprises.
These changes are to keep Supabase pricing [predictable, transparent, and developer friendly](/blog/2021/03/29/pricing).
When you upgrade to the Pro Tier, spend caps are turned on by default, limiting your per-project costs to $25 per month.
When you upgrade to the Pro Tier, spend caps are turned on by default, limiting your per-project costs to $25 per month.
We're also retaining our soft limits while we manage the transition to granular spend-caps, so your service will continue to run even if your usage exceeds $25 (we'll contact you directly when you go over the limit). Right now there is a global project spend-cap, and in the future you'll have full control with configurable spend-caps on a “per-feature” basis.
### Database Add-ons
<video width="99%" autoPlay="autoplay" muted playsInline controls={true}>
<source
src="/videos/blog/launch-week-4/database-addons.mp4"
type="video/mp4"
muted
playsInline
/>
<source src="/videos/blog/launch-week-4/database-addons.mp4" type="video/mp4" muted playsInline />
</video>
Today we're releasing self-serve Database Add-ons.
What do you do when your project hits production and your userbase is sky-rocketing?
What do you do when your project hits production and your userbase is sky-rocketing?
Many developers have been asking to scale their projects on-demand. Database Add-ons give everyone this control.
Today, Database Add-ons are available for a small set of customers. We will progressively release this for everyone by the end of next week (Friday 8th April).
### New Log Explorer
<video width="99%" autoPlay="autoplay" muted playsInline controls={true}>
<source
src="/videos/blog/launch-week-4/logexplorer.mp4"
type="video/mp4"
muted
playsInline
/>
<source src="/videos/blog/launch-week-4/logexplorer.mp4" type="video/mp4" muted playsInline />
</video>
Today we're releasing a brand new [Log Explorer](/docs/guides/platform/logs) in the Supabase Dashboard.
@@ -174,8 +158,8 @@ And if you're new to SQL, we have plenty of templates included.
This is just one of the exciting features we are releasing through our [Logflare acquisition](/blog/2021/12/02/supabase-acquires-logflare).
Log history is available to every Supabase project:
- Free Tier: 7 days of log history
- Pro Tier: 30 days of log history
- Free Tier: 7 days of log history
- Pro Tier: 30 days of log history
- Enterprise Tier: 90 days of log history
### Elixir Livebooks
@@ -189,16 +173,18 @@ For example, Supabase is popular with web3 projects where traffic can be very un
When [sound.xyz](http://sound.xyz) dropped [an NFT with Snoop](https://www.sound.xyz/snoopdogg/death-row-mix-vol-1), we customized their pooler to handle significant load.
Their database handled over 9,000 simultaneously connections from Vercel's serverless API.
<Quote
img="vignesh-sound.jpeg"
caption="Vignesh - CTO @ sound.xyz"
>
<p>In our MVP, we started with a serverless stack to simplify DevOps. Supabase made it dead simple to get PgBouncer and Postgres running so we could focus on the product.</p>
<Quote img="vignesh-sound.jpeg" caption="Vignesh - CTO @ sound.xyz">
<p>
As we started hitting scale, they've been crucial to supporting our drops. When Snoop Dogg debuted on Sound, Supabase was able to help us provision our data store to handle the load.
In our MVP, we started with a serverless stack to simplify DevOps. Supabase made it dead simple
to get PgBouncer and Postgres running so we could focus on the product.
</p>
<p>
As we rearchitect our backend stack towards scaled microservices, we can be confident that managing Postgres won't be a bottleneck.
As we started hitting scale, they've been crucial to supporting our drops. When Snoop Dogg
debuted on Sound, Supabase was able to help us provision our data store to handle the load.
</p>
<p>
As we rearchitect our backend stack towards scaled microservices, we can be confident that
managing Postgres won't be a bottleneck.
</p>
<p>
Supabase takes out the mental effort from our back-end infrastructure so we can focus on our
@@ -274,5 +260,5 @@ saved to disk for increased performance. These views update periodically at a ca
## Next steps
Get started today with all of our Enterprise Features on [app.supabase.io](https://app.supabase.io), or [contact the Supabase Enterprise team](/contact/enterprise)
Get started today with all of our Enterprise Features on [app.supabase.com](https://app.supabase.com), or [contact the Supabase Enterprise team](/contact/enterprise)
if you want to access our Enterprise features.

View File

@@ -12,7 +12,7 @@ toc_depth: 3
Definitely our most feature-packed month so far. Here's a ton of stuff we shipped throughout March...
## Functions
## Functions
The one we've all been waiting for. You can now [deploy Javascript & Typescript functions](/blog/2022/03/31/supabase-edge-functions) to Supabase. You can develop and test locally, link a project, and deploy globally to the edge in a matter of seconds!
@@ -20,11 +20,11 @@ The one we've all been waiting for. You can now [deploy Javascript & Typescript
## GraphQL
You can now [query your Supabase database with GraphQL](/blog/2022/03/29/graphql-now-available). We built this as a postgres extension, so it's portable, open source, and solves some of the problems that exist in other GraphQL implementations.
You can now [query your Supabase database with GraphQL](/blog/2022/03/29/graphql-now-available). We built this as a postgres extension, so it's portable, open source, and solves some of the problems that exist in other GraphQL implementations.
[![graphql](/images/blog/2022-march/graphql.jpg)](/blog/2022/03/29/graphql-now-available)
## Realtime
## Realtime
Supabase Realtime [now supports multiplayer and presence](/blog/2022/04/01/supabase-realtime-with-multiplayer-features), so you can build collaborative applications like Figma and Google Docs with Supabase. Come and have some fun on our demo application.
@@ -56,13 +56,14 @@ We're now an official [GitHub secret scanning partner](/blog/2022/03/28/communit
## Supabrew - Never Code Thirsty
For April Fools - [we announced a non-alcoholic](/blog/2022/04/01/supabrew), light, and refreshing brew. Perfect for coding late into the night. We're pushing the boundaries of Developer Experience.
For April Fools - [we announced a non-alcoholic](/blog/2022/04/01/supabrew), light, and refreshing brew. Perfect for coding late into the night. We're pushing the boundaries of Developer Experience.
[![supabrew](/images/blog/2022-march/supabrew.png)](/blog/2022/04/01/supabrew)
## Video Highlights
Relive all the action from Launch Week 4:
- [Community Day Live Stream](https://www.youtube.com/watch?v=D0gIgjozOzc) on YouTube
- [GraphQL Announcement Live Stream](https://www.youtube.com/watch?v=fApxu_U_hdw) on YouTube
- [Enterprise Announcements Live Stream](https://www.youtube.com/watch?v=UZrl1cwzTDg) on YouTube
@@ -79,7 +80,7 @@ We're Hiring - for a ton of new roles across engineering, marketing, and HR. We
## Twitter
We're having a 24/7*365 meme-fest on [Twitter](https://twitter.com/supabase). Come join us.
We're having a 24/7\*365 meme-fest on [Twitter](https://twitter.com/supabase). Come join us.
[![supabase twitter](/images/blog/2022-march/twitter.png)](https://twitter.com/supabase)
@@ -101,7 +102,7 @@ We hit 30K stars!!: [github.com/supabase/supabase](http://github.com/supabase/su
## Get started
- Start using Supabase today: **[app.supabase.io](https://app.supabase.io/)**
- Start using Supabase today: **[app.supabase.com](https://app.supabase.com/)**
- Make sure to **[star us on GitHub](https://github.com/supabase/supabase)**
- Follow us **[on Twitter](https://twitter.com/supabase)**
- Subscribe to our **[YouTube channel](https://www.youtube.com/c/supabase)**

View File

@@ -81,7 +81,10 @@ function AuthPage() {
<Space size={8} direction="vertical">
<div>
<Space size={3} direction="vertical">
<img src="https://app.supabase.io/img/supabase-dark.svg" width="96" />
<img
src="https://app.supabase.com/img/supabase-dark.svg"
width="96"
/>
<h3>{companyName}</h3>
</Space>
</div>

View File

@@ -16,7 +16,7 @@ const CTABanner = (props: any) => {
</h2>
</div>
<div className="col-span-12 mt-4">
<a href="https://app.supabase.io/">
<a href="https://app.supabase.com/">
<Button size="medium" className="text-white">
Start your project
</Button>

View File

@@ -39,7 +39,7 @@ const Hero = () => {
</div>
</div>
<div className="flex items-center gap-2">
<Link href="https://app.supabase.io" as="https://app.supabase.io" passHref>
<Link href="https://app.supabase.com" as="https://app.supabase.com" passHref>
<Button as="a" size="small" className="text-white">
Start your project
</Button>
@@ -53,7 +53,7 @@ const Hero = () => {
<div className="flex flex-col gap-4">
<small className="small text-xs">backed by</small>
<div className="w-full sm:max-w-lg lg:ml-0">
<div className="flex flex-wrap sm:flex-nowrap items-center justify-start gap-y-8">
<div className="flex flex-wrap items-center justify-start gap-y-8 sm:flex-nowrap">
<img
className="h-8 pr-5 sm:h-8 md:pr-10"
src={`${basePath}/images/logos/yc--grey.png`}

View File

@@ -270,14 +270,14 @@ const Nav = () => {
Star us on GitHub
</Button>
<Link href="https://app.supabase.io/">
<Link href="https://app.supabase.com/">
<a>
<Button type="default" className="hidden lg:block">
Sign in
</Button>
</a>
</Link>
<Link href="https://app.supabase.io/">
<Link href="https://app.supabase.com/">
<a>
<Button className="hidden text-white lg:block">Start your project</Button>
</a>
@@ -328,7 +328,7 @@ const Nav = () => {
{/* </div> */}
<div className="mt-6 mb-12">
<div className="space-y-1 pt-2 pb-4">
<Link href="https://app.supabase.io/">
<Link href="https://app.supabase.com/">
<a className="text-scale-900 block pl-3 pr-4 text-base font-medium dark:text-white">
Sign in
</a>

View File

@@ -43,7 +43,7 @@ const ProductHeader = (props: Types) => (
})}
</div>
<div className="flex flex-row md:flex-row md:items-center">
<Link href="https://app.supabase.io/" as="https://app.supabase.io/">
<Link href="https://app.supabase.com/" as="https://app.supabase.com/">
<a>
<Button size="medium" className="text-white">
Start a project

View File

@@ -119,7 +119,7 @@ export default function IndexPage() {
<p className="p">{priceDescription}</p>
</div>
<p className="p">{description}</p>
<Link href="https://app.supabase.io" passHref>
<Link href="https://app.supabase.com" passHref>
<Button as="a" size="medium" block>
Get started
</Button>
@@ -506,7 +506,7 @@ export default function IndexPage() {
<p className="p text-sm">Perfect for hobby projects and experiments</p>
<Link href="https://app.supabase.io" as="https://app.supabase.io">
<Link href="https://app.supabase.com" as="https://app.supabase.com">
<a>
<Button size="medium" type="default">
Get Started
@@ -525,7 +525,7 @@ export default function IndexPage() {
Everything you need to scale your project into production
</p>
<Link href="https://app.supabase.io" as="https://app.supabase.io">
<Link href="https://app.supabase.com" as="https://app.supabase.com">
<a>
<Button size="medium" type="default">
Get Started
@@ -584,7 +584,7 @@ export default function IndexPage() {
</th>
<td className="px-6 pt-5">
<Link href="https://app.supabase.io" as="https://app.supabase.io">
<Link href="https://app.supabase.com" as="https://app.supabase.com">
<a>
<Button size="medium" type="default" block>
Get started
@@ -594,7 +594,7 @@ export default function IndexPage() {
</td>
<td className="px-6 pt-5">
<Link href="https://app.supabase.io" as="https://app.supabase.io">
<Link href="https://app.supabase.com" as="https://app.supabase.com">
<a>
<Button size="medium" type="default" block>
Get started

View File

@@ -41,7 +41,7 @@ const Index = () => {
return (
<>
<div>
<img src="https://app.supabase.io/img/supabase-dark.svg" width="96" />
<img src="https://app.supabase.com/img/supabase-dark.svg" width="96" />
<h2>
Supabase Auth <br />
with NextJS SSR

View File

@@ -10,7 +10,7 @@ Authentication using `signInWithEmail` handling redirectTo.
cp .env.example .env
```
2. Go to https://app.supabase.io/project/{PROJECT}/api?page=auth to find your secrets
2. Go to https://app.supabase.com/project/{PROJECT}/api?page=auth to find your secrets
3. Add your `SUPABASE_URL` and `SUPABASE_SERVICE_ROLE` in `.env`
```env

View File

@@ -34,7 +34,7 @@ Note: when testing locally, the select dropdown doesn't have any effect, and inv
## Deploy
- Generate access token and log in to CLI
- Navigate to https://app.supabase.io/account/tokens
- Navigate to https://app.supabase.com/account/tokens
- Click "Generate New Token"
- Copy newly created token
- Run `supabase login`
@@ -54,7 +54,7 @@ This example includes a create-react-app in the [`./app/`](./app/) directory whi
- `cd app`
- `cp .env.example .env`
- Fill in your env vars from https://app.supabase.io/project/_/settings/api
- Fill in your env vars from https://app.supabase.com/project/_/settings/api
- `npm install`
- `npm start`

View File

@@ -1,3 +1,3 @@
# Get these from your Dashboard: https://app.supabase.io/project/_/settings/api
# Get these from your Dashboard: https://app.supabase.com/project/_/settings/api
REACT_APP_SUPABASE_URL=
REACT_APP_SUPABASE_ANON_KEY=

View File

@@ -6,7 +6,7 @@ This is a full-stack Slack clone example using:
- Next.js.
- [Supabase.js](https://supabase.com/docs/library/getting-started) for user management and realtime data syncing.
- Backend:
- [app.supabase.io](https://app.supabase.io/): hosted Postgres database with restful API for usage with Supabase.js.
- [app.supabase.com](https://app.supabase.com/): hosted Postgres database with restful API for usage with Supabase.js.
## Demo
@@ -19,7 +19,7 @@ This is a full-stack Slack clone example using:
### 1. Create new project
Sign up to Supabase - [https://app.supabase.io](https://app.supabase.io) and create a new project. Wait for your database to start.
Sign up to Supabase - [https://app.supabase.com](https://app.supabase.com) and create a new project. Wait for your database to start.
### 2. Run "Slack Clone" Quickstart
@@ -39,7 +39,7 @@ The `anon` key is your client-side API key. It allows "anonymous access" to your
### 4. Deploy the Next.js client
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/git/external?repository-url=https%3A%2F%2Fgithub.com%2Fsupabase%2Fsupabase%2Ftree%2Fmaster%2Fexamples%2slack-clone%2Fnextjs-slack-clone&env=NEXT_PUBLIC_SUPABASE_URL,NEXT_PUBLIC_SUPABASE_KEY&envDescription=Find%20the%20Supabase%20URL%20and%20key%20in%20the%20your%20auto-generated%20docs%20at%20app.supabase.io&project-name=supabase-slack-clone&repo-name=supabase-slack-clone)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/git/external?repository-url=https%3A%2F%2Fgithub.com%2Fsupabase%2Fsupabase%2Ftree%2Fmaster%2Fexamples%2slack-clone%2Fnextjs-slack-clone&env=NEXT_PUBLIC_SUPABASE_URL,NEXT_PUBLIC_SUPABASE_KEY&envDescription=Find%20the%20Supabase%20URL%20and%20key%20in%20the%20your%20auto-generated%20docs%20at%20app.supabase.com&project-name=supabase-slack-clone&repo-name=supabase-slack-clone)
Here, we recommend forking this repo so you can deploy through Vercel by clicking the button above. When you click the button, replace the repo URL with your fork's URL.
@@ -49,7 +49,7 @@ You will be asked for a `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_KEY
![Change auth settings](https://user-images.githubusercontent.com/1811651/101840012-39be3800-3af8-11eb-8c32-73f2fae6299e.png)
On [app.supabase.io](https://app.supabase.io), you can go to Authentication -> Settings to change your auth settings for your project if necessary. Here, you can change the site URL, which is used for determining where to redirect users after they confirm their email addresses or attempt to use a magic link to log in.
On [app.supabase.com](https://app.supabase.com), you can go to Authentication -> Settings to change your auth settings for your project if necessary. Here, you can change the site URL, which is used for determining where to redirect users after they confirm their email addresses or attempt to use a magic link to log in.
Here, you can also enable external oauth providers, such as Google and GitHub.

View File

@@ -4,13 +4,13 @@
- [Angular](https://angular.io)
- [Supabase.js](https://supabase.com/docs/library/getting-started) for user management and realtime data syncing.
- Backend:
- [app.supabase.io](https://app.supabase.io/): hosted Postgres database with restful API for usage with Supabase.js.
- [app.supabase.com](https://app.supabase.com/): hosted Postgres database with restful API for usage with Supabase.js.
## Deploy your own
### 1. Create new project
Sign up to Supabase - [https://app.supabase.io](https://app.supabase.io) and create a new project. Wait for your database to start.
Sign up to Supabase - [https://app.supabase.com](https://app.supabase.com) and create a new project. Wait for your database to start.
### 2. Run "Todo List" Quickstart
@@ -42,7 +42,7 @@ run `ng serve`
### 5. Deploy the Angular client
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/git/external?repository-url=https%3A%2F%2Fgithub.com%2Fsupabase%2Fsupabase%2Ftree%2Fmaster%2Fexamples%2todo-list%2Fangular-todo-list&env=ANGULAR_APP_SUPABASE_URL,ANGULAR_APP_SUPABASE_KEY&envDescription=Find%20the%20Supabase%20URL%20and%20key%20in%20the%20your%20auto-generated%20docs%20at%20app.supabase.io&project-name=supabase-todo-list&repo-name=supabase-todo-list)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/git/external?repository-url=https%3A%2F%2Fgithub.com%2Fsupabase%2Fsupabase%2Ftree%2Fmaster%2Fexamples%2todo-list%2Fangular-todo-list&env=ANGULAR_APP_SUPABASE_URL,ANGULAR_APP_SUPABASE_KEY&envDescription=Find%20the%20Supabase%20URL%20and%20key%20in%20the%20your%20auto-generated%20docs%20at%20app.supabase.com&project-name=supabase-todo-list&repo-name=supabase-todo-list)
Here, we recommend forking this repo so you can deploy through Vercel by clicking the button above. When you click the button, replace the repo URL with your fork's URL.
@@ -52,7 +52,7 @@ You will be asked for a `ANGULAR_APP_SUPABASE_URL` and `ANGULAR_APP_SUPABASE_KEY
![Change auth settings](https://user-images.githubusercontent.com/1811651/101840012-39be3800-3af8-11eb-8c32-73f2fae6299e.png)
On [app.supabase.io](https://app.supabase.io), you can go to Authentication -> Settings to change your auth settings for your project if necessary. Here, you can change the site URL, which is used for determining where to redirect users after they confirm their email addresses or attempt to use a magic link to log in.
On [app.supabase.com](https://app.supabase.com), you can go to Authentication -> Settings to change your auth settings for your project if necessary. Here, you can change the site URL, which is used for determining where to redirect users after they confirm their email addresses or attempt to use a magic link to log in.
Here, you can also enable external oauth providers, such as Google and GitHub.

View File

@@ -8,7 +8,7 @@
### 1. Create new project
Sign up to Supabase - [https://app.supabase.io](https://app.supabase.io) and create a new project. Wait for your database to start.
Sign up to Supabase - [https://app.supabase.com](https://app.supabase.com) and create a new project. Wait for your database to start.
### 2. Run "Todo List" Quickstart

View File

@@ -5,7 +5,7 @@
- [Tailwind](https://tailwindcss.com/) for styling and layout.
- [Supabase.js](https://supabase.com/docs/library/getting-started) for user management and realtime data syncing.
- Backend:
- [app.supabase.io](https://app.supabase.io/): hosted Postgres database with restful API for usage with Supabase.js.
- [app.supabase.com](https://app.supabase.com/): hosted Postgres database with restful API for usage with Supabase.js.
## Demo
@@ -21,7 +21,7 @@ The Vercel deployment will guide you through creating a Supabase account and pro
### 1. Create new project
Sign up to Supabase - [https://app.supabase.io](https://app.supabase.io) and create a new project. Wait for your database to start.
Sign up to Supabase - [https://app.supabase.com](https://app.supabase.com) and create a new project. Wait for your database to start.
### 2. Run "Todo List" Quickstart

View File

@@ -11,7 +11,7 @@
### 1. Create new project
Sign up to Supabase - [https://app.supabase.io](https://app.supabase.io) and create a new project. Wait for your database to start.
Sign up to Supabase - [https://app.supabase.com](https://app.supabase.com) and create a new project. Wait for your database to start.
### 2. Run "Todo List" Quickstart

View File

@@ -11,7 +11,7 @@
### 1. Create new project
Sign up to Supabase - [https://app.supabase.io](https://app.supabase.io) and create a new project. Wait for your database to start.
Sign up to Supabase - [https://app.supabase.com](https://app.supabase.com) and create a new project. Wait for your database to start.
### 2. Run "Todo List" Quickstart

View File

@@ -5,7 +5,7 @@
- [Tailwind](https://tailwindcss.com/) for styling and layout.
- [Supabase.js](https://supabase.com/docs/library/getting-started) for user management and realtime data syncing.
- Backend:
- [app.supabase.io/](https://app.supabase.io/): hosted Postgres database with restful API for usage with Supabase.js.
- [app.supabase.com/](https://app.supabase.com/): hosted Postgres database with restful API for usage with Supabase.js.
## Demo
@@ -19,7 +19,7 @@
### 1. Create new project
Sign up to Supabase - [https://app.supabase.io](https://app.supabase.io) and create a new project. Wait for your database to start.
Sign up to Supabase - [https://app.supabase.com](https://app.supabase.com) and create a new project. Wait for your database to start.
### 2. Run "Todo List" Quickstart

View File

@@ -4,7 +4,7 @@
### 1. Create new project
Sign up to Supabase - [https://app.supabase.io](https://app.supabase.io) and create a new project. Wait for your database to start.
Sign up to Supabase - [https://app.supabase.com](https://app.supabase.com) and create a new project. Wait for your database to start.
## 2. configure .env
@@ -44,7 +44,7 @@ EOF
### 7. Deploy the SvelteJS client
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/git/external?repository-url=https%3A%2F%2Fgithub.com%2Fsupabase%2Fsupabase%2Ftree%2Fmaster%2Fexamples%2todo-list%2Fsveltejs-todo&env=SNOWPACK_PUBLIC_SUPABASE_URL,SNOWPACK_PUBLIC_SUPABASE_KEY&envDescription=Find%20the%20Supabase%20URL%20and%20key%20in%20the%20your%20auto-generated%20docs%20at%20app.supabase.io&project-name=supabase-sveltejs-todo&repo-name=supabase-sveltejs-todo)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/git/external?repository-url=https%3A%2F%2Fgithub.com%2Fsupabase%2Fsupabase%2Ftree%2Fmaster%2Fexamples%2todo-list%2Fsveltejs-todo&env=SNOWPACK_PUBLIC_SUPABASE_URL,SNOWPACK_PUBLIC_SUPABASE_KEY&envDescription=Find%20the%20Supabase%20URL%20and%20key%20in%20the%20your%20auto-generated%20docs%20at%20app.supabase.com&project-name=supabase-sveltejs-todo&repo-name=supabase-sveltejs-todo)
You will be asked for a `SNOWPACK__PUBLIC_SUPABASE_URL` and `SNOWPACK__PUBLIC_SUPABASE_KEY`. Use the API URL and `anon` key from [step 2](#2.-configure-.env).

View File

@@ -4,13 +4,13 @@
- Vue 3, TypeScript
- [Supabase.js](https://supabase.com/docs/library/getting-started) for user management and realtime data syncing.
- Backend:
- [app.supabase.io](https://app.supabase.io/): hosted Postgres database with restful API for usage with Supabase.js.
- [app.supabase.com](https://app.supabase.com/): hosted Postgres database with restful API for usage with Supabase.js.
## Deploy your own
### 1. Create new project
Sign up to Supabase - [https://app.supabase.io](https://app.supabase.io) and create a new project. Wait for your database to start.
Sign up to Supabase - [https://app.supabase.com](https://app.supabase.com) and create a new project. Wait for your database to start.
### 2. Run "Todo List" Quickstart
@@ -28,7 +28,7 @@ The `anon` key is your client-side API key. It allows "anonymous access" to your
### 4. Deploy the Vue.js client
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/git/external?repository-url=https://github.com/supabase/supabase/tree/master/examples/todo-list/vue3-ts-todo-list&env=VUE_APP_SUPABASE_URL,VUE_APP_SUPABASE_KEY&envDescription=Find%20the%20Supabase%20URL%20and%20key%20in%20the%20your%20auto-generated%20docs%20at%20app.supabase.io&project-name=supabase-todo-list&repo-name=supabase-todo-list)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/git/external?repository-url=https://github.com/supabase/supabase/tree/master/examples/todo-list/vue3-ts-todo-list&env=VUE_APP_SUPABASE_URL,VUE_APP_SUPABASE_KEY&envDescription=Find%20the%20Supabase%20URL%20and%20key%20in%20the%20your%20auto-generated%20docs%20at%20app.supabase.com&project-name=supabase-todo-list&repo-name=supabase-todo-list)
Here, we recommend forking this repo so you can deploy through Vercel by clicking the button above. When you click the button, replace the repo URL with your fork's URL.
@@ -38,7 +38,7 @@ You will be asked for a `VUE_APP_SUPABASE_URL` and `VUE_APP_SUPABASE_KEY`. Use t
![Change auth settings](https://user-images.githubusercontent.com/1811651/101840012-39be3800-3af8-11eb-8c32-73f2fae6299e.png)
On [app.supabase.io](https://app.supabase.io), you can go to Authentication -> Settings to change your auth settings for your project if necessary. Here, you can change the site URL, which is used for determining where to redirect users after they confirm their email addresses or attempt to use a magic link to log in.
On [app.supabase.com](https://app.supabase.com), you can go to Authentication -> Settings to change your auth settings for your project if necessary. Here, you can change the site URL, which is used for determining where to redirect users after they confirm their email addresses or attempt to use a magic link to log in.
Here, you can also enable external oauth providers, such as Google and GitHub.

View File

@@ -8,7 +8,7 @@
### 1. Create new project
Sign up to Supabase - [https://app.supabase.io](https://app.supabase.io) and create a new project. Wait for your database to start.
Sign up to Supabase - [https://app.supabase.com](https://app.supabase.com) and create a new project. Wait for your database to start.
### 2. Run "User Management Starter" Quickstart

View File

@@ -8,13 +8,13 @@ This example will set you up for a very common situation: users can sign up with
- [Flutter SDK](https://flutter.dev/) - Google's UI toolkit for crafting beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.
- [supabase_flutter](https://pub.dev/packages/supabase_flutter) for user management and image storage uploading.
- Backend:
- [app.supabase.io](https://app.supabase.io/): hosted Postgres database with restful API for usage with supabase_flutter.
- [app.supabase.com](https://app.supabase.com/): hosted Postgres database with restful API for usage with supabase_flutter.
## Build from scratch
### 1. Create new project
Sign up to Supabase - [https://app.supabase.io](https://app.supabase.io) and create a new project. Wait for your database to start.
Sign up to Supabase - [https://app.supabase.com](https://app.supabase.com) and create a new project. Wait for your database to start.
### 2. Run "User Management" Quickstart

Some files were not shown because too many files have changed in this diff Show More