diff --git a/LICENSE b/LICENSE index 16fc02b5e4d..4a283904229 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2020 Supabase + Copyright 2021 Supabase Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 53d6fd7c08d..78197b5920e 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -154,5 +154,5 @@ services: environment: POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - - ./volumes/db/data:/var/lib/postgresql/data + # - ./volumes/db/data:/var/lib/postgresql/data - ./volumes/db/init:/docker-entrypoint-initdb.d diff --git a/studio/components/interfaces/Home/Landing.tsx b/studio/components/interfaces/Home/Landing.tsx index ec00c7236b0..f1a9986f9fe 100644 --- a/studio/components/interfaces/Home/Landing.tsx +++ b/studio/components/interfaces/Home/Landing.tsx @@ -4,9 +4,8 @@ import Head from 'next/head' import { observer } from 'mobx-react-lite' import { Button, IconGitHub, Typography } from '@supabase/ui' -import { API_URL } from 'lib/constants' import { useStore } from 'hooks' -import { auth, GOTRUE_ENABLED } from 'lib/gotrue' +import { auth } from 'lib/gotrue' const Landing = () => { const { ui } = useStore() @@ -55,13 +54,9 @@ const Landing = () => { type="success" className="ml-8 font-medium hover:text-gray-300 focus:outline-none focus:text-gray-300 transition duration-150 ease-in-out" > - {GOTRUE_ENABLED ? ( - - ) : ( - Sign In - )} + @@ -78,15 +73,9 @@ const Landing = () => {

- {GOTRUE_ENABLED ? ( - - ) : ( - - - - )} + +
+ + + + setShowResetDbPass(false)} + onConfirm={() => confirmResetDbPass()} + > +
+ + } + /> +
+
+ + ) +} + const DownloadCertificate: FC = ({ createdAt }) => { // instances before 3 : 08 pm sgt 29th April don't have certs installed if (new Date(createdAt) < new Date('2021-04-30')) return null @@ -142,10 +251,10 @@ const DownloadCertificate: FC = ({ createdAt }) => { return ( -
+
SSL Connection -
+

Use this cert when connecting to your database to prevent snooping and @@ -154,13 +263,15 @@ const DownloadCertificate: FC = ({ createdAt }) => {

- +
@@ -168,6 +279,9 @@ const DownloadCertificate: FC = ({ createdAt }) => { } const GeneralSettings: FC = ({ projectRef }) => { + const { ui } = useStore() + const isOwner = ui.selectedOrganization?.is_owner + const { data, error }: any = useSWR(`${API_URL}/props/project/${projectRef}/settings`, get) if (data?.error || error) { @@ -264,6 +378,7 @@ const GeneralSettings: FC = ({ projectRef }) => { + {isOwner && }
diff --git a/studio/pages/project/[ref]/settings/logs/[type].tsx b/studio/pages/project/[ref]/settings/logs/[type].tsx index 5300d2f976d..d60a83f83b5 100644 --- a/studio/pages/project/[ref]/settings/logs/[type].tsx +++ b/studio/pages/project/[ref]/settings/logs/[type].tsx @@ -3,7 +3,7 @@ import React, { useEffect, useRef, useState } from 'react' import { NextPage } from 'next' import { useRouter } from 'next/router' import { observer } from 'mobx-react-lite' -import { Typography, IconLoader, IconAlertCircle, IconRewind, Button } from '@supabase/ui' +import { Typography, IconLoader, IconAlertCircle, IconRewind, Button, IconInfo } from '@supabase/ui' import { withAuth } from 'hooks' import { get } from 'lib/common/fetch' @@ -23,6 +23,7 @@ import { uuidv4 } from 'lib/helpers' import useSWRInfinite from 'swr/infinite' import { isUndefined } from 'lodash' import Flag from 'components/ui/Flag/Flag' +import { useFlag } from 'hooks' /** * Acts as a container component for the entire log display @@ -30,6 +31,7 @@ import Flag from 'components/ui/Flag/Flag' * */ export const LogPage: NextPage = () => { + const logsCustomSql = useFlag('logsCustomSql') const router = useRouter() const { ref, type } = router.query @@ -40,11 +42,13 @@ export const LogPage: NextPage = () => { const [params, setParams] = useState({ type: '', search_query: '', + sql: '', where: '', timestamp_start: '', timestamp_end: '', }) const title = `Logs - ${LOG_TYPE_LABEL_MAPPING[type as string]}` + const isSelectQuery = logsCustomSql && editorValue.toLowerCase().includes('select') ? true : false useEffect(() => { setParams({ ...params, type: type as string }) @@ -124,15 +128,24 @@ export const LogPage: NextPage = () => { const onSelectTemplate = (template: LogTemplate) => { setMode(template.mode) if (template.mode === 'simple') { - setParams((prev) => ({ ...prev, search_query: template.searchString, where: '' })) + setParams((prev) => ({ ...prev, search_query: template.searchString, sql: '', where: '' })) } else { setEditorValue(template.searchString) - setParams((prev) => ({ ...prev, where: template.searchString, search_query: '' })) + setParams((prev) => ({ + ...prev, + where: isSelectQuery ? '' : template.searchString, + sql: isSelectQuery ? template.searchString : '', + search_query: '', + })) setEditorId(uuidv4()) } } const handleEditorSubmit = () => { - setParams((prev) => ({ ...prev, where: editorValue })) + setParams((prev) => ({ + ...prev, + where: isSelectQuery ? '' : editorValue, + sql: isSelectQuery ? editorValue : '', + })) } const handleSearch = (v: string) => { setParams((prev) => ({ ...prev, search_query: v || '' })) @@ -163,21 +176,35 @@ export const LogPage: NextPage = () => { onInputRun={handleRefresh} />
-
- {editorValue && ( - + )} + - )} - +
)} @@ -201,16 +228,18 @@ export const LogPage: NextPage = () => { {/* Footer section of log ui, appears below table */}
- - - + {!isSelectQuery && ( + + + + )}
diff --git a/studio/pages/vercel/setupProject.tsx b/studio/pages/vercel/setupProject.tsx index cbf63928e64..867e48b269c 100644 --- a/studio/pages/vercel/setupProject.tsx +++ b/studio/pages/vercel/setupProject.tsx @@ -9,6 +9,7 @@ import { Dictionary } from '@supabase/grid' import { useStore } from 'hooks' import { post } from 'lib/common/fetch' +import { passwordStrength } from 'lib/helpers' import { PROVIDERS, REGIONS, @@ -22,8 +23,9 @@ import { fetchVercelProject, prepareVercelEvns, } from 'components/to-be-cleaned/Integration/Vercel.utils' -import Loading from 'components/ui/Loading' import VercelIntegrationLayout from 'components/layouts/VercelIntegrationLayout' +import Loading from 'components/ui/Loading' +import PasswordStrengthBar from 'components/ui/PasswordStrengthBar' const PASSWORD_STRENGTH = { 0: "That's terrible.", @@ -165,6 +167,7 @@ const CreateProject = observer(() => { const delayedCheckPasswordStrength = useRef( debounce((value: string) => checkPasswordStrength(value), 300) ).current + const canSubmit = projectName != '' && passwordStrengthScore >= DEFAULT_MINIMUM_PASSWORD_STRENGTH && @@ -189,22 +192,9 @@ const CreateProject = observer(() => { } async function checkPasswordStrength(value: string) { - let passwordStrength = '' - if (value && value !== '') { - const response = await post(`${API_URL}/profile/password-check`, { password: value }) - if (!response.error) { - const { result } = response - const score = (PASSWORD_STRENGTH as any)[result.score] - const warning = result.feedback.warning ? `${result.feedback.warning}.` : '' - const suggestions = result.feedback?.suggestions - ? result.feedback.suggestions.join(' ') - : '' - passwordStrength = `${score} ${warning} ${suggestions}` - setPasswordStrengthScore(result.score) - } - } - - setPasswordStrengthMessage(passwordStrength) + const { message, strength } = await passwordStrength(value) + setPasswordStrengthScore(strength) + setPasswordStrengthMessage(message) } async function createSupabaseProject(dbSql: string) { @@ -294,7 +284,7 @@ const CreateProject = observer(() => { -
+
{ placeholder="· · · · · · · · · · · · ·" className="shadow-sm focus:ring-green-500 focus:border-green-500 block w-full sm:text-sm border-gray-300 rounded-md" /> - {passwordStrengthMessage && ( - -

{passwordStrengthMessage}

-
- )} - {passwordStrengthScore >= 0 && passwordStrengthScore < DEFAULT_MINIMUM_PASSWORD_STRENGTH && ( - -

You need a stronger password

-
- )} +
diff --git a/studio/tests/pages/projects/LogTable.test.js b/studio/tests/pages/projects/LogTable.test.js index 0bdcefa489d..02b4a52d681 100644 --- a/studio/tests/pages/projects/LogTable.test.js +++ b/studio/tests/pages/projects/LogTable.test.js @@ -1,14 +1,20 @@ import LogTable from 'components/interfaces/Settings/Logs/LogTable' import { render, fireEvent, waitFor, screen } from '@testing-library/react' test('can display log data', async () => { - render() + render( + + ) await waitFor(() => screen.getByText(/happened/)) const row = screen.getByText(/happened/) @@ -17,17 +23,35 @@ test('can display log data', async () => { await waitFor(() => screen.getByText(/something_value/)) }) -test ("dedupes log lines with exact id", async ()=>{ - render() +test('dedupes log lines with exact id', async () => { + // chronological mode requires 4 columns + render( + + ) // should only have one element, this line will fail if there are >1 element await waitFor(() => screen.getByText(/happened/)) -}) \ No newline at end of file +}) + +test('can display custom columns and headers based on data input', async () => { + render() + await waitFor(() => screen.getByText(/some_header/)) + await waitFor(() => screen.getByText(/some_data/)) + await waitFor(() => screen.getByText(/kinda/)) + await waitFor(() => screen.getByText(/123456/)) +}) diff --git a/studio/tests/pages/projects/logs.test.js b/studio/tests/pages/projects/logs.test.js index bb9107a467e..c98b3fd856d 100644 --- a/studio/tests/pages/projects/logs.test.js +++ b/studio/tests/pages/projects/logs.test.js @@ -31,6 +31,9 @@ useMonaco.mockImplementation((v) => v) jest.mock('components/ui/Flag/Flag') import Flag from 'components/ui/Flag/Flag' Flag.mockImplementation(({ children }) => <>{children}) +jest.mock('hooks') +import { useFlag } from 'hooks' +useFlag.mockReturnValue(true) import { SWRConfig } from 'swr' jest.mock('pages/project/[ref]/settings/logs/[type]') @@ -202,6 +205,60 @@ test('where clause will trigger a log refresh', async () => { await waitFor(() => screen.getByText(/happened/)) }) +test('custom sql querying', async () => { + get.mockImplementation((url) => { + if (url.includes('sql=') && url.includes('select')) { + return { + data: [ + { + my_count: 12345, + }, + ], + } + } + return { data: [] } + }) + const { container } = render() + let editor = container.querySelector('.monaco-editor') + expect(editor).toBeFalsy() + // TODO: abstract this out into a toggle selection helper + const toggle = getToggleByText(/via query/) + expect(toggle).toBeTruthy() + userEvent.click(toggle) + + // type into the query editor + await waitFor(() => { + editor = container.querySelector('.monaco-editor') + expect(editor).toBeTruthy() + }) + editor = container.querySelector('.monaco-editor') + userEvent.type(editor, 'select count(*) as my_count from edge_logs') + // should show sandbox warning alert + await waitFor(() => screen.getByText(/restricted to a 7 day querying window/)) + + // should trigger query + userEvent.click(screen.getByText('Run')) + await waitFor( + () => { + expect(get).toHaveBeenCalledWith(expect.stringContaining('sql=')) + expect(get).toHaveBeenCalledWith(expect.stringContaining('select')) + expect(get).toHaveBeenCalledWith(expect.stringContaining('edge_logs')) + expect(get).not.toHaveBeenCalledWith(expect.stringContaining('where')) + }, + { timeout: 1000 } + ) + + await waitFor(() => screen.getByText(/my_count/)) //column header + await waitFor(() => screen.getByText(/12345/)) // row value + + // clicking on the row value should not show log selection panel + userEvent.click(screen.getByText(/12345/)) + await waitFor(() => expect(() => screen.getByText(/Metadata/)).toThrow()) + + // should not see chronological features + await waitFor(() => screen.queryByText(/Load older/)) //column header +}) + test('load older btn will fetch older logs', async () => { get.mockImplementation((url) => { if (url.includes('count')) { diff --git a/web/docs/guides/auth/auth-apple.mdx b/web/docs/guides/auth/auth-apple.mdx index bf6955dbe6e..4c29a3e3f11 100644 --- a/web/docs/guides/auth/auth-apple.mdx +++ b/web/docs/guides/auth/auth-apple.mdx @@ -17,7 +17,7 @@ Apple OAuth consists of six broad steps: - Obtaining a `Services Id` - this will serve as the `client_id`. - Obtaining a `secret key` that will be used to get our `client_secret`. - Generating the `client_secret` using the `secret key`. -- Add your `client id` and `client secret` keys to your [Supabase Project](https://supabase.com). +- Add your `client id` and `client secret` keys to your [Supabase Project](https://app.supabase.io). - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js). ## Steps @@ -64,7 +64,7 @@ The next step requires a callback URL, which looks like this: `https://.supabase.co/auth/v1/callback` -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - Click on the `Settings` icon at the bottom of the left sidebar. - Click on `API` in the list. - Under Config / URL you'll find your API URL, you can click `Copy` to copy it to the clipboard. @@ -170,7 +170,7 @@ puts token ### Add your OAuth credentials to Supabase -- Go to your [Supabase Dashboard](https://supabase.com). +- Go to your [Supabase Dashboard](https://app.supabase.io). - 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). diff --git a/web/docs/guides/auth/auth-bitbucket.mdx b/web/docs/guides/auth/auth-bitbucket.mdx index 5d59e92cc3a..7959269a5e6 100644 --- a/web/docs/guides/auth/auth-bitbucket.mdx +++ b/web/docs/guides/auth/auth-bitbucket.mdx @@ -14,7 +14,7 @@ To enable Bitbucket Auth for your project, you need to set up a BitBucket OAuth Setting up Bitbucket logins for your application consists of 3 parts: - Create and configure a Bitbucket OAuth Consumer on [Bitbucket](https://bitbucket.org) -- Add your Bitbucket OAuth Consumer keys to your [Supabase Project](https://supabase.com) +- Add your Bitbucket OAuth Consumer keys to your [Supabase Project](https://app.supabase.io) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) ## Steps @@ -32,7 +32,7 @@ The next step requires a callback URL, which looks like this: `https://.supabase.co/auth/v1/callback` -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - Click on the `Settings` icon at the bottom of the left sidebar. - Click on `API` in the list. - Under Config / URL you'll find your API URL, you can click `Copy` to copy it to the clipboard. @@ -59,7 +59,7 @@ The next step requires a callback URL, which looks like this: ### Add your Bitbucket credentials into your Supabase Project -- Go to your [Supabase Project Dashboard](https://supabase.com) +- Go to your [Supabase Project Dashboard](https://app.supabase.io) - 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) diff --git a/web/docs/guides/auth/auth-discord.mdx b/web/docs/guides/auth/auth-discord.mdx index 70f66b7b9ab..84660b3f731 100644 --- a/web/docs/guides/auth/auth-discord.mdx +++ b/web/docs/guides/auth/auth-discord.mdx @@ -14,7 +14,7 @@ To enable Discord Auth for your project, you need to set up a Discord Applicatio Setting up Discord logins for your application consists of 3 parts: - Create and configure a Discord Application [Discord Developer Portal](https://discord.com/developers) -- Add your Discord OAuth Consumer keys to your [Supabase Project](https://supabase.com) +- Add your Discord OAuth Consumer keys to your [Supabase Project](https://app.supabase.io) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) ## Steps @@ -36,7 +36,7 @@ In the next step you require a callback URL, which looks like this: `https://.supabase.co/auth/v1/callback` -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - Click on the `Settings` icon at the bottom of the left sidebar. - Click on `API` in the list. - Under Config / URL you'll find your API URL, you can click `Copy` to copy it to the clipboard. @@ -58,7 +58,7 @@ In the next step you require a callback URL, which looks like this: ### Add your Discord credentials into your Supabase Project -- Go to your [Supabase Project Dashboard](https://supabase.com) +- Go to your [Supabase Project Dashboard](https://app.supabase.io) - 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) diff --git a/web/docs/guides/auth/auth-facebook.mdx b/web/docs/guides/auth/auth-facebook.mdx index a9b2afd9ef5..c7fc632ae1b 100644 --- a/web/docs/guides/auth/auth-facebook.mdx +++ b/web/docs/guides/auth/auth-facebook.mdx @@ -14,7 +14,7 @@ To enable Facebook Auth for your project, you need to set up a Facebook OAuth ap Setting up Facebook logins for your application consists of 3 parts: - Create and configure a Facebook Application on the [Facebook Developers Site](https://developers.facebook.com) -- Add your Facebook keys to your [Supabase Project](https://supabase.com) +- Add your Facebook keys to your [Supabase Project](https://app.supabase.io) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) ## Steps @@ -40,7 +40,7 @@ The next step requires a callback URI, which looks like this: `https://.supabase.co/auth/v1/callback` -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - Click on the `Settings` icon at the bottom of the left sidebar. - Click on `API` in the list. - Under Config / URL you'll find your API URL, you can click `Copy` to copy it to the clipboard. @@ -76,7 +76,7 @@ You can read more about access levels [here](https://developers.facebook.com/doc ### Enter your Facebook App ID and Secret into your Supabase Project -- Go to your [Supabase Project Dashboard](https://supabase.com) +- Go to your [Supabase Project Dashboard](https://app.supabase.io) - 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) diff --git a/web/docs/guides/auth/auth-github.mdx b/web/docs/guides/auth/auth-github.mdx index 4a8a1c83870..b20f747f700 100644 --- a/web/docs/guides/auth/auth-github.mdx +++ b/web/docs/guides/auth/auth-github.mdx @@ -14,7 +14,7 @@ To enable GitHub Auth for your project, you need to set up a GitHub OAuth applic Setting up GitHub logins for your application consists of 3 parts: - Create and configure a GitHub OAuth App on [GitHub](https://github.com) -- Add your GitHub OAuth keys to your [Supabase Project](https://supabase.com) +- Add your GitHub OAuth keys to your [Supabase Project](https://app.supabase.io) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) ## Steps @@ -41,7 +41,7 @@ The next step requires a callback URL, which looks like this: `https://.supabase.co/auth/v1/callback` -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - Click on the `Settings` icon at the bottom of the left sidebar. - Click on `API` in the list. - Under Config / URL you'll find your API URL, you can click `Copy` to copy it to the clipboard. @@ -69,7 +69,7 @@ Copy your new OAuth credentials ### Enter your GitHub credentials into your Supabase Project -- Go to your [Supabase Project Dashboard](https://supabase.com) +- Go to your [Supabase Project Dashboard](https://app.supabase.io) - 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) diff --git a/web/docs/guides/auth/auth-gitlab.mdx b/web/docs/guides/auth/auth-gitlab.mdx index d1e56153a1f..f18051366b9 100644 --- a/web/docs/guides/auth/auth-gitlab.mdx +++ b/web/docs/guides/auth/auth-gitlab.mdx @@ -14,7 +14,7 @@ To enable GitLab Auth for your project, you need to set up a GitLab OAuth applic Setting up GitLab logins for your application consists of 3 parts: - Create and configure a GitLab Application on [GitLab](https://gitlab.com) -- Add your GitLab Application keys to your [Supabase Project](https://supabase.com) +- Add your GitLab Application keys to your [Supabase Project](https://app.supabase.io) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) ## Steps @@ -32,7 +32,7 @@ The next step requires a callback URL, which looks like this: `https://.supabase.co/auth/v1/callback` -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - Click on the `Settings` icon at the bottom of the left sidebar. - Click on `API` in the list. - Under Config / URL you'll find your API URL, you can click `Copy` to copy it to the clipboard. @@ -56,7 +56,7 @@ The next step requires a callback URL, which looks like this: ### Add your GitLab credentials into your Supabase Project -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - 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). diff --git a/web/docs/guides/auth/auth-google.mdx b/web/docs/guides/auth/auth-google.mdx index 65bd42dd5fa..3e7c0d68400 100644 --- a/web/docs/guides/auth/auth-google.mdx +++ b/web/docs/guides/auth/auth-google.mdx @@ -14,7 +14,7 @@ To enable Google Auth for your project, you need to set up a Google OAuth applic Setting up Google logins for your application consists of 3 parts: - Create and configure a Google Project on the [Google Cloud Platform Console](https://console.cloud.google.com/home/dashboard) -- Add your Google OAuth keys to your [Supabase Project](https://supabase.com) +- Add your Google OAuth keys to your [Supabase Project](https://app.supabase.io) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) ## Steps @@ -55,7 +55,7 @@ The next step requires a callback URL, which looks like this: `https://.supabase.co/auth/v1/callback` -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - Click on the `Settings` icon at the bottom of the left sidebar. - Click on `API` in the list. - Under Config / URL you'll find your API URL, you can click `Copy` to copy it to the clipboard. @@ -84,7 +84,7 @@ Copy your new OAuth credentials ### Enter your Google credentials into your Supabase Project -- Go to your [Supabase Project Dashboard](https://supabase.com) +- Go to your [Supabase Project Dashboard](https://app.supabase.io) - 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) diff --git a/web/docs/guides/auth/auth-slack.mdx b/web/docs/guides/auth/auth-slack.mdx index cc2a2acab15..5350262dd4b 100644 --- a/web/docs/guides/auth/auth-slack.mdx +++ b/web/docs/guides/auth/auth-slack.mdx @@ -14,7 +14,7 @@ To enable Slack Auth for your project, you need to set up a Slack OAuth applicat Setting up Slack logins for your application consists of 3 parts: - Create and configure a Slack Project and App on the [Slack Developer Dashboard](https://api.slack.com/apps). -- Add your Slack `API Key` and `API Secret Key` to your [Supabase Project](https://supabase.com). +- Add your Slack `API Key` and `API Secret Key` to your [Supabase Project](https://app.supabase.io). - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js). ## Steps @@ -32,7 +32,7 @@ The next step requires a callback URL, which looks like this: `https://.supabase.co/auth/v1/callback` -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - Click on the `Settings` icon at the bottom of the left sidebar. - Click on `API` in the list. - Under Config / URL you'll find your API URL, you can click `Copy` to copy it to the clipboard. @@ -68,7 +68,7 @@ Under `Redirect URLs`: ### Enter your Slack credentials into your Supabase Project -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - 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). diff --git a/web/docs/guides/auth/auth-spotify.mdx b/web/docs/guides/auth/auth-spotify.mdx index f0982817004..b98422b2e1e 100644 --- a/web/docs/guides/auth/auth-spotify.mdx +++ b/web/docs/guides/auth/auth-spotify.mdx @@ -14,7 +14,7 @@ To enable Spotify Auth for your project, you need to set up a Spotify OAuth appl Setting up Spotify logins for your application consists of 3 parts: - Create and configure a Spotify Project and App on the [Spotify Developer Dashboard](https://developer.spotify.com/dashboard/). -- Add your Spotify `API Key` and `API Secret Key` to your [Supabase Project](https://supabase.com). +- Add your Spotify `API Key` and `API Secret Key` to your [Supabase Project](https://app.supabase.io). - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js). ## Steps @@ -32,7 +32,7 @@ The next step requires a callback URL, which looks like this: `https://.supabase.co/auth/v1/callback` -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - Click on the `Settings` icon at the bottom of the left sidebar. - Click on `API` in the list. - Under Config / URL you'll find your API URL, you can click `Copy` to copy it to the clipboard. @@ -63,7 +63,7 @@ Under `Redirect URIs`: ### Enter your Spotify credentials into your Supabase Project -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - 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). diff --git a/web/docs/guides/auth/auth-twitch.mdx b/web/docs/guides/auth/auth-twitch.mdx index d45cc056c19..d395957500f 100644 --- a/web/docs/guides/auth/auth-twitch.mdx +++ b/web/docs/guides/auth/auth-twitch.mdx @@ -14,7 +14,7 @@ To enable Twitch Auth for your project, you need to set up a Twitch Application Setting up Twitch logins for your application consists of 3 parts: - Create and configure a Twitch Application [Twitch Developer Console](https://dev.twitch.tv/console) -- Add your Twitch OAuth Consumer keys to your [Supabase Project](https://supabase.com) +- Add your Twitch OAuth Consumer keys to your [Supabase Project](https://app.supabase.io) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) ## Steps @@ -37,7 +37,7 @@ In the next step you require a callback URL, which looks like this: `https://.supabase.co/auth/v1/callback` -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - Click on the `Settings` icon at the bottom of the left sidebar. - Click on `API` in the list. - Under Config / URL you'll find your API URL, you can click `Copy` to copy it to the clipboard. @@ -74,7 +74,7 @@ In the next step you require a callback URL, which looks like this: ### Add your Twitch credentials into your Supabase Project -- Go to your [Supabase Project Dashboard](https://supabase.com) +- Go to your [Supabase Project Dashboard](https://app.supabase.io) - 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) diff --git a/web/docs/guides/auth/auth-twitter.mdx b/web/docs/guides/auth/auth-twitter.mdx index 1db02aa52a3..ebf95d5d155 100644 --- a/web/docs/guides/auth/auth-twitter.mdx +++ b/web/docs/guides/auth/auth-twitter.mdx @@ -14,7 +14,7 @@ To enable Twitter Auth for your project, you need to set up a Twitter OAuth appl Setting up Twitter logins for your application consists of 3 parts: - Create and configure a Twitter Project and App on the [Twitter Developer Dashboard](https://developer.twitter.com/en/portal/dashboard). -- Add your Twitter `API Key` and `API Secret Key` to your [Supabase Project](https://supabase.com). +- Add your Twitter `API Key` and `API Secret Key` to your [Supabase Project](https://app.supabase.io). - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js). ## Steps @@ -32,7 +32,7 @@ The next step requires a callback URL, which looks like this: `https://.supabase.co/auth/v1/callback` -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - Click on the `Settings` icon at the bottom of the left sidebar. - Click on `API` in the list. - Under Config / URL you'll find your API URL, you can click `Copy` to copy it to the clipboard. @@ -64,7 +64,7 @@ The next step requires a callback URL, which looks like this: ### Enter your Twitter credentials into your Supabase Project -- Go to your [Supabase Project Dashboard](https://supabase.com). +- Go to your [Supabase Project Dashboard](https://app.supabase.io). - 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). diff --git a/www/pages/pricing/index.tsx b/www/pages/pricing/index.tsx index eddbe017055..e6b33d3515b 100644 --- a/www/pages/pricing/index.tsx +++ b/www/pages/pricing/index.tsx @@ -392,6 +392,22 @@ export default function IndexPage() {
Frequently asked questions + + Can't find the answer to your question, ask someone in the community either on our + Discord or Github. + + + + + + + + + + +
{pricingFaq.map((faq) => {