mirror of
https://github.com/supabase/supabase.git
synced 2026-10-17 07:09:07 +03:00
Merge branch 'master' into feat/compute-and-disk
This commit is contained in:
42 files changed
+476
-463
No files matched your search
@@ -17,6 +17,7 @@ export default async function ReferencePage({
|
||||
}: {
|
||||
params: { slug: Array<string> }
|
||||
}) {
|
||||
console.log("Generating reference page for '%o'", slug)
|
||||
if (!Object.keys(REFERENCES).includes(slug[0].replaceAll('-', '_'))) {
|
||||
notFound()
|
||||
}
|
||||
@@ -38,6 +39,7 @@ export default async function ReferencePage({
|
||||
|
||||
return <ClientSdkReferencePage sdkId={sdkId} libVersion={version} />
|
||||
} else if (isCliReference) {
|
||||
console.log('Returning CLI reference page: %o', parsedPath)
|
||||
return <CliReferencePage />
|
||||
} else if (isApiReference) {
|
||||
return <ApiReferencePage />
|
||||
|
||||
@@ -292,8 +292,9 @@ create function public.check_request()
|
||||
declare
|
||||
req_app_api_key text := current_setting('request.headers', true)::json->>'x-app-api-key';
|
||||
is_app_api_key_registered boolean;
|
||||
jwt_role text := current_setting('request.jwt.claims', true)::json->>'role';
|
||||
begin
|
||||
if current_role <> 'anon' then
|
||||
if jwt_role <> 'anon' then
|
||||
-- not `anon` role, allow the request to pass
|
||||
return;
|
||||
end if;
|
||||
@@ -302,7 +303,7 @@ begin
|
||||
true into is_app_api_key_registered
|
||||
from private.anon_api_keys
|
||||
where
|
||||
id = req_app_api_key
|
||||
id = req_app_api_key::uuid
|
||||
limit 1;
|
||||
|
||||
if is_app_api_key_registered is true then
|
||||
|
||||
@@ -844,7 +844,7 @@ app.get("/auth/confirm", async function (req, res) {
|
||||
<TabPanel id="js" label="JavaScript">
|
||||
|
||||
```js
|
||||
async function signUpNewUser() {
|
||||
async function resetPassword() {
|
||||
const { data, error } = await supabase.auth.resetPasswordForEmail(email)
|
||||
}
|
||||
```
|
||||
|
||||
@@ -85,6 +85,12 @@ CLI changes permanently overwrite default settings, so `reset all` and `set to d
|
||||
|
||||
</Admonition>
|
||||
|
||||
<Admonition type="danger">
|
||||
|
||||
In order to overwrite the default settings, you must have `Owner` or `Administrator` privileges within your organizations.
|
||||
|
||||
</Admonition>
|
||||
|
||||
#### CLI supported parameters
|
||||
|
||||
<Admonition type="tip">
|
||||
|
||||
@@ -38,7 +38,7 @@ There are several community-driven projects to help you deploy Supabase. We enco
|
||||
<div className="grid md:grid-cols-12 gap-4 not-prose">
|
||||
{community.map((x) => (
|
||||
<div className="md:col-span-6 xl:col-span-3" key={x.href}>
|
||||
<Link href="https://supabase.com/pricing" passHref>
|
||||
<Link href={x.href} passHref>
|
||||
<GlassPanel title={x.name}>{x.description}</GlassPanel>
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@@ -96,6 +96,7 @@ const referenceSections = new Map<string, Array<AbbrevApiReferenceSection>>()
|
||||
|
||||
export async function getReferenceSections(sdkId: string, version: string) {
|
||||
const key = `${sdkId}.${version}`
|
||||
console.log('Getting reference sections for %s', key)
|
||||
if (!referenceSections.has(key)) {
|
||||
const data = await readFile(
|
||||
join(process.cwd(), 'features/docs', `./generated/${sdkId}.${version}.sections.json`),
|
||||
@@ -105,13 +106,16 @@ export async function getReferenceSections(sdkId: string, version: string) {
|
||||
referenceSections.set(key, JSON.parse(data))
|
||||
}
|
||||
|
||||
return referenceSections.get(key)
|
||||
const result = referenceSections.get(key)
|
||||
console.log('Got reference sections for %s', key)
|
||||
return result
|
||||
}
|
||||
|
||||
const flatSections = new Map<string, Array<AbbrevApiReferenceSection>>()
|
||||
|
||||
export async function getFlattenedSections(sdkId: string, version: string) {
|
||||
const key = `${sdkId}.${version}`
|
||||
console.log('Getting flattened sections for %s', key)
|
||||
if (!flatSections.has(key)) {
|
||||
const data = await readFile(
|
||||
join(process.cwd(), 'features/docs', `./generated/${sdkId}.${version}.flat.json`),
|
||||
@@ -121,7 +125,9 @@ export async function getFlattenedSections(sdkId: string, version: string) {
|
||||
flatSections.set(key, JSON.parse(data))
|
||||
}
|
||||
|
||||
return flatSections.get(key)
|
||||
const result = flatSections.get(key)
|
||||
console.log('Got flattened sections for %s', key)
|
||||
return result
|
||||
}
|
||||
|
||||
const sectionsBySlug = new Map<string, Map<string, AbbrevApiReferenceSection>>()
|
||||
|
||||
@@ -28,10 +28,12 @@ export async function ReferenceNavigation({
|
||||
version,
|
||||
isLatestVersion,
|
||||
}: ReferenceNavigationProps) {
|
||||
console.log('[Enter] ReferenceNavigation')
|
||||
const navSections = await getReferenceSections(libraryId, version)
|
||||
|
||||
const basePath = `/reference/${libPath}${isLatestVersion ? '' : `/${version}`}`
|
||||
|
||||
console.log('[PreReturn] ReferenceNavigation')
|
||||
return (
|
||||
<ReferenceNavigationScrollHandler className="w-full flex flex-col pt-3 pb-5 gap-3">
|
||||
<div className="flex items-center gap-3">
|
||||
|
||||
@@ -44,9 +44,11 @@ type RefSectionsProps = {
|
||||
}
|
||||
|
||||
async function RefSections({ libraryId, version }: RefSectionsProps) {
|
||||
console.log('[Enter] RefSections')
|
||||
let flattenedSections = await getFlattenedSections(libraryId, version)
|
||||
flattenedSections = trimIntro(flattenedSections)
|
||||
|
||||
console.log('[PreReturn] RefSections')
|
||||
return (
|
||||
<MDXProviderReference>
|
||||
<div className="flex flex-col my-16 gap-16">
|
||||
|
||||
@@ -308,7 +308,7 @@ export const UsersV2 = () => {
|
||||
<DropdownMenu>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button icon={sortOrder === 'desc' ? <ArrowDown /> : <ArrowUp />}>
|
||||
Sorted by {sortColumn.replace('_', ' ')}
|
||||
Sorted by {sortColumn.replaceAll('_', ' ')}
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent className="w-44" align="start">
|
||||
@@ -322,6 +322,17 @@ export const UsersV2 = () => {
|
||||
</DropdownMenuRadioItem>
|
||||
</DropdownMenuSubContent>
|
||||
</DropdownMenuSub>
|
||||
<DropdownMenuSub>
|
||||
<DropdownMenuSubTrigger>Sort by last sign in at</DropdownMenuSubTrigger>
|
||||
<DropdownMenuSubContent>
|
||||
<DropdownMenuRadioItem value="last_sign_in_at:asc">
|
||||
Ascending
|
||||
</DropdownMenuRadioItem>
|
||||
<DropdownMenuRadioItem value="last_sign_in_at:desc">
|
||||
Descending
|
||||
</DropdownMenuRadioItem>
|
||||
</DropdownMenuSubContent>
|
||||
</DropdownMenuSub>
|
||||
<DropdownMenuSub>
|
||||
<DropdownMenuSubTrigger>Sort by email</DropdownMenuSubTrigger>
|
||||
<DropdownMenuSubContent>
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import { Sha256 } from '@aws-crypto/sha256-browser'
|
||||
import * as Sentry from '@sentry/nextjs'
|
||||
import { useRouter } from 'next/router'
|
||||
import { PropsWithChildren, useEffect, useRef } from 'react'
|
||||
import { toast } from 'sonner'
|
||||
import { PropsWithChildren, useEffect } from 'react'
|
||||
|
||||
import { useParams, useUser } from 'common'
|
||||
import { useSendGroupsIdentifyMutation } from 'data/telemetry/send-groups-identify-mutation'
|
||||
@@ -13,7 +12,7 @@ import { usePrevious } from 'hooks/deprecated'
|
||||
import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization'
|
||||
import { IS_PLATFORM, LOCAL_STORAGE_KEYS } from 'lib/constants'
|
||||
import { useAppStateSnapshot } from 'state/app-state'
|
||||
import { ConsentToast } from 'ui-patterns/ConsentToast'
|
||||
import { useConsent } from 'ui-patterns/ConsentToast'
|
||||
|
||||
const getAnonId = async (id: string) => {
|
||||
const hash = new Sha256()
|
||||
@@ -31,54 +30,21 @@ const PageTelemetry = ({ children }: PropsWithChildren<{}>) => {
|
||||
const snap = useAppStateSnapshot()
|
||||
const organization = useSelectedOrganization()
|
||||
|
||||
const consentToastId = useRef<string | number>()
|
||||
const { consentValue, hasAcceptedConsent } = useConsent()
|
||||
const previousPathname = usePrevious(router.pathname)
|
||||
|
||||
const consentFlag = LOCAL_STORAGE_KEYS.TELEMETRY_CONSENT
|
||||
|
||||
const consent = typeof window !== 'undefined' ? localStorage.getItem(consentFlag) : null
|
||||
const trackTelemetryPH = consent === 'true'
|
||||
|
||||
const trackTelemetryPH = consentValue === 'true'
|
||||
const { mutate: sendPage } = useSendPageMutation()
|
||||
const { mutateAsync: sendPageLeave } = useSendPageLeaveMutation()
|
||||
const { mutate: sendGroupsIdentify } = useSendGroupsIdentifyMutation()
|
||||
const { mutate: sendGroupsReset } = useSendGroupsResetMutation()
|
||||
|
||||
useEffect(() => {
|
||||
if (typeof window !== 'undefined') {
|
||||
const onAcceptConsent = () => {
|
||||
snap.setIsOptedInTelemetry(true)
|
||||
if (consentToastId.current) toast.dismiss(consentToastId.current)
|
||||
}
|
||||
|
||||
const onOptOut = () => {
|
||||
snap.setIsOptedInTelemetry(false)
|
||||
if (consentToastId.current) toast.dismiss(consentToastId.current)
|
||||
}
|
||||
|
||||
const hasAcknowledgedConsent = localStorage.getItem(LOCAL_STORAGE_KEYS.TELEMETRY_CONSENT)
|
||||
snap.setIsOptedInTelemetry(
|
||||
typeof hasAcknowledgedConsent === 'string'
|
||||
? hasAcknowledgedConsent === 'true'
|
||||
: hasAcknowledgedConsent
|
||||
)
|
||||
|
||||
if (IS_PLATFORM && hasAcknowledgedConsent === null) {
|
||||
setTimeout(() => {
|
||||
consentToastId.current = toast(
|
||||
<ConsentToast onAccept={onAcceptConsent} onOptOut={onOptOut} />,
|
||||
{
|
||||
id: 'consent-toast',
|
||||
position: 'bottom-right',
|
||||
duration: Infinity,
|
||||
}
|
||||
)
|
||||
}, 300)
|
||||
}
|
||||
if (consentValue !== null) {
|
||||
snap.setIsOptedInTelemetry(hasAcceptedConsent)
|
||||
}
|
||||
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [])
|
||||
}, [consentValue])
|
||||
|
||||
useEffect(() => {
|
||||
function handleRouteChange() {
|
||||
|
||||
@@ -13,7 +13,7 @@ export type UsersVariables = {
|
||||
keywords?: string
|
||||
filter?: Filter
|
||||
providers?: string[]
|
||||
sort?: 'created_at' | 'email' | 'phone'
|
||||
sort?: 'created_at' | 'email' | 'phone' | 'last_sign_in_at'
|
||||
order?: 'asc' | 'desc'
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import { useMutation, UseMutationOptions } from '@tanstack/react-query'
|
||||
import { components } from 'api-types'
|
||||
|
||||
import { isBrowser } from 'common'
|
||||
import { isBrowser, LOCAL_STORAGE_KEYS } from 'common'
|
||||
import { handleError, post } from 'data/fetchers'
|
||||
import { LOCAL_STORAGE_KEYS } from 'lib/constants'
|
||||
import { useRouter } from 'next/router'
|
||||
import type { ResponseError } from 'types'
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { useMutation, UseMutationOptions } from '@tanstack/react-query'
|
||||
|
||||
import { components } from 'api-types'
|
||||
import { LOCAL_STORAGE_KEYS } from 'common'
|
||||
import { handleError, post } from 'data/fetchers'
|
||||
import { LOCAL_STORAGE_KEYS } from 'lib/constants'
|
||||
import type { ResponseError } from 'types'
|
||||
|
||||
export type SendGroupsIdentifyVariables = components['schemas']['TelemetryGroupsIdentityBody']
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { useMutation, UseMutationOptions } from '@tanstack/react-query'
|
||||
|
||||
import { components } from 'api-types'
|
||||
import { LOCAL_STORAGE_KEYS } from 'common'
|
||||
import { handleError, post } from 'data/fetchers'
|
||||
import { LOCAL_STORAGE_KEYS } from 'lib/constants'
|
||||
import type { ResponseError } from 'types'
|
||||
|
||||
export type SendGroupsResetVariables = components['schemas']['TelemetryGroupsResetBody']
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { useMutation, UseMutationOptions } from '@tanstack/react-query'
|
||||
|
||||
import { components } from 'api-types'
|
||||
import { LOCAL_STORAGE_KEYS } from 'common'
|
||||
import { handleError, post } from 'data/fetchers'
|
||||
import { Profile } from 'data/profile/types'
|
||||
import { LOCAL_STORAGE_KEYS } from 'lib/constants'
|
||||
import type { ResponseError } from 'types'
|
||||
|
||||
type SendIdentify = components['schemas']['TelemetryIdentifyBodyV2']
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { useMutation, UseMutationOptions } from '@tanstack/react-query'
|
||||
import { components } from 'api-types'
|
||||
|
||||
import { LOCAL_STORAGE_KEYS } from 'common'
|
||||
import { handleError, post } from 'data/fetchers'
|
||||
import { LOCAL_STORAGE_KEYS } from 'lib/constants'
|
||||
import { useRouter } from 'next/router'
|
||||
import type { ResponseError } from 'types'
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import { useMutation, UseMutationOptions } from '@tanstack/react-query'
|
||||
|
||||
import { components } from 'api-types'
|
||||
import { isBrowser } from 'common'
|
||||
import { isBrowser, LOCAL_STORAGE_KEYS } from 'common'
|
||||
import { handleError, post } from 'data/fetchers'
|
||||
import { LOCAL_STORAGE_KEYS } from 'lib/constants'
|
||||
import { useRouter } from 'next/router'
|
||||
import type { ResponseError } from 'types'
|
||||
|
||||
|
||||
@@ -29,7 +29,6 @@ export const USAGE_APPROACHING_THRESHOLD = 0.75
|
||||
|
||||
export const LOCAL_STORAGE_KEYS = {
|
||||
RECENTLY_VISITED_ORGANIZATION: 'supabase-organization',
|
||||
TELEMETRY_CONSENT: 'supabase-consent-ph',
|
||||
|
||||
UI_PREVIEW_NAVIGATION_LAYOUT: 'supabase-ui-preview-nav-layout',
|
||||
UI_PREVIEW_API_SIDE_PANEL: 'supabase-ui-api-side-panel',
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { LOCAL_STORAGE_KEYS } from 'lib/constants'
|
||||
import { LOCAL_STORAGE_KEYS as COMMON_LOCAL_STORAGE_KEYS } from 'common'
|
||||
|
||||
const LOCAL_STORAGE_KEYS_ALLOWLIST = [
|
||||
'graphiql:theme',
|
||||
@@ -6,7 +7,7 @@ const LOCAL_STORAGE_KEYS_ALLOWLIST = [
|
||||
'supabaseDarkMode',
|
||||
'supabase.dashboard.auth.debug',
|
||||
'supabase.dashboard.auth.navigatorLock.disabled',
|
||||
LOCAL_STORAGE_KEYS.TELEMETRY_CONSENT,
|
||||
COMMON_LOCAL_STORAGE_KEYS.TELEMETRY_CONSENT,
|
||||
LOCAL_STORAGE_KEYS.UI_PREVIEW_API_SIDE_PANEL,
|
||||
LOCAL_STORAGE_KEYS.UI_PREVIEW_NAVIGATION_LAYOUT,
|
||||
LOCAL_STORAGE_KEYS.UI_PREVIEW_CLS,
|
||||
|
||||
@@ -106,6 +106,14 @@ function CustomApp({ Component, pageProps }: AppPropsWithLayout) {
|
||||
[supabase]
|
||||
)
|
||||
|
||||
const TelemetryContainer = useMemo(
|
||||
// eslint-disable-next-line react/display-name
|
||||
() => (props: any) => {
|
||||
return IS_PLATFORM ? <PageTelemetry>{props.children}</PageTelemetry> : <>{props.children}</>
|
||||
},
|
||||
[]
|
||||
)
|
||||
|
||||
const errorBoundaryHandler = (error: Error, info: ErrorInfo) => {
|
||||
Sentry.withScope(function (scope) {
|
||||
scope.setTag('globalErrorBoundary', true)
|
||||
@@ -131,7 +139,7 @@ function CustomApp({ Component, pageProps }: AppPropsWithLayout) {
|
||||
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
|
||||
</Head>
|
||||
<MetaFaviconsPagesRouter applicationName="Supabase Studio" />
|
||||
<PageTelemetry>
|
||||
<TelemetryContainer>
|
||||
<TooltipProvider>
|
||||
<RouteValidationWrapper>
|
||||
<ThemeProvider
|
||||
@@ -157,7 +165,7 @@ function CustomApp({ Component, pageProps }: AppPropsWithLayout) {
|
||||
</ThemeProvider>
|
||||
</RouteValidationWrapper>
|
||||
</TooltipProvider>
|
||||
</PageTelemetry>
|
||||
</TelemetryContainer>
|
||||
|
||||
{!isTestEnv && <HCaptchaLoadedStore />}
|
||||
{!isTestEnv && <ReactQueryDevtools initialIsOpen={false} position="bottom-right" />}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { proxy, snapshot, useSnapshot } from 'valtio'
|
||||
|
||||
import { SupportedAssistantEntities } from 'components/ui/AIAssistantPanel/AIAssistant.types'
|
||||
import { LOCAL_STORAGE_KEYS } from 'lib/constants'
|
||||
import { proxy, snapshot, useSnapshot } from 'valtio'
|
||||
import { LOCAL_STORAGE_KEYS as COMMON_LOCAL_STORAGE_KEYS } from 'common'
|
||||
|
||||
const EMPTY_DASHBOARD_HISTORY: {
|
||||
sql?: string
|
||||
@@ -56,7 +58,7 @@ export const appState = proxy({
|
||||
setIsOptedInTelemetry: (value: boolean | null) => {
|
||||
appState.isOptedInTelemetry = value === null ? false : value
|
||||
if (typeof window !== 'undefined' && value !== null) {
|
||||
localStorage.setItem(LOCAL_STORAGE_KEYS.TELEMETRY_CONSENT, value.toString())
|
||||
localStorage.setItem(COMMON_LOCAL_STORAGE_KEYS.TELEMETRY_CONSENT, value.toString())
|
||||
}
|
||||
},
|
||||
showEnableBranchingModal: false,
|
||||
|
||||
+11
-7
@@ -22,7 +22,10 @@ const generateRssItem = (post: any): string => {
|
||||
const encodedTitle = xmlEncode(post.title)
|
||||
const encodedPath = xmlEncode(post.path)
|
||||
const encodedDescription = xmlEncode(post.description)
|
||||
const formattedDate = dayjs(post.date).utc().format('ddd, DD MMM YYYY HH:mm:ss [GMT]')
|
||||
const formattedDate = dayjs(post.date)
|
||||
.utcOffset(0, true)
|
||||
.startOf('day')
|
||||
.format('ddd, DD MMM YYYY HH:mm:ss [-7 GMT]')
|
||||
|
||||
return `<item>
|
||||
<guid>https://supabase.com${encodedPath}</guid>
|
||||
@@ -39,6 +42,11 @@ const generateRssItem = (post: any): string => {
|
||||
export const generateRss = (posts: any[], authorID?: string): string => {
|
||||
const authorInfo = authors.find((item) => item.author_id === authorID)
|
||||
|
||||
const formattedDate = dayjs(posts[0].date)
|
||||
.utcOffset(0, true)
|
||||
.startOf('day')
|
||||
.format('ddd, DD MMM YYYY HH:mm:ss [-7 GMT]')
|
||||
|
||||
if (authorID) {
|
||||
return `
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
@@ -47,9 +55,7 @@ export const generateRss = (posts: any[], authorID?: string): string => {
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from ${authorInfo?.author} at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>${dayjs(posts[0].date)
|
||||
.utc()
|
||||
.format('ddd, DD MMM YYYY HH:mm:ss [GMT]')}</lastBuildDate>
|
||||
<lastBuildDate>${formattedDate}</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-${authorID}-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
${posts.map(generateRssItem).join('')}
|
||||
</channel>
|
||||
@@ -63,9 +69,7 @@ export const generateRss = (posts: any[], authorID?: string): string => {
|
||||
<link>https://supabase.com</link>
|
||||
<description>Latest news from Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>${dayjs(posts[0].date)
|
||||
.utc()
|
||||
.format('ddd, DD MMM YYYY HH:mm:ss [GMT]')}</lastBuildDate>
|
||||
<lastBuildDate>${formattedDate}</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/rss.xml" rel="self" type="application/rss+xml"/>
|
||||
${posts.map(generateRssItem).join('')}
|
||||
</channel>
|
||||
|
||||
@@ -5,133 +5,133 @@
|
||||
<link>https://supabase.com</link>
|
||||
<description>Latest news from Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Mon, 30 Sep 2024 22:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Tue, 01 Oct 2024 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/humata</guid>
|
||||
<title>Humata Scales with Supabase: Achieving 4X Cost Savings and Enhanced Performance</title>
|
||||
<link>https://supabase.com/customers/humata</link>
|
||||
<description>By partnering with Supabase, Humata achieved a 4X reduction in vector database costs, streamlined their development, and consolidated their data so they could scale seamlessly.</description>
|
||||
<pubDate>Mon, 30 Sep 2024 22:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 01 Oct 2024 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/maergo</guid>
|
||||
<title>Maergo's Express Delivery: How Supabase Helped Achieve Scalability, Speed, and Cost Saving</title>
|
||||
<link>https://supabase.com/customers/maergo</link>
|
||||
<description>Discover how Maergo, a nationwide expedited parcel delivery service, reduced its codebase by 90%, decreased deployment times to just seconds, and achieved unprecedented scalability with Supabase.</description>
|
||||
<pubDate>Tue, 11 Jun 2024 22:00:00 GMT</pubDate>
|
||||
<pubDate>Wed, 12 Jun 2024 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/tinloof</guid>
|
||||
<title>Streamlining Success: How Tinloof Scaled Seamlessly with Supabase</title>
|
||||
<link>https://supabase.com/customers/tinloof</link>
|
||||
<description>Discover Tinloof, how a full-stack development agency, managed and scaled backend services using Supabase, without having to dedicate resources to infrastructure management.</description>
|
||||
<pubDate>Mon, 03 Jun 2024 22:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 04 Jun 2024 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/voypost</guid>
|
||||
<title>Voypost uses Supabase’s strong relational model to overcome NoSQL challenges</title>
|
||||
<link>https://supabase.com/customers/voypost</link>
|
||||
<description>Learn how Voypost leveraged Supabase to avoid NoSQL workarounds, enhance scalability, and deliver a superior user experience for Inkly, an intelligent contract negotiation platform.</description>
|
||||
<pubDate>Mon, 03 Jun 2024 22:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 04 Jun 2024 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/shotgun</guid>
|
||||
<title>Supabase migration delivers an 83% reduction in data infrastructure costs for Shotgun</title>
|
||||
<link>https://supabase.com/customers/shotgun</link>
|
||||
<description>Discover how Shotgun, an event ticketing platform with over 3 million users, reduced costs and consolidated systems through migration to Supabase.</description>
|
||||
<pubDate>Wed, 29 Nov 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 30 Nov 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/next-door-lending</guid>
|
||||
<title>How Next Door Lending leveraged Supabase to become a top 10 mortgage broker</title>
|
||||
<link>https://supabase.com/customers/next-door-lending</link>
|
||||
<description>Discover how Supabase empowered NextDoorLending to move quickly and scale as required, leading to their surpassing other mortgage brokers and expanding their business.</description>
|
||||
<pubDate>Tue, 07 Nov 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Wed, 08 Nov 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/good-tape</guid>
|
||||
<title>Good Tape migrates to Supabase managed Postgres and Authentication and achieves database efficiency and a 60% cost reduction.</title>
|
||||
<link>https://supabase.com/customers/good-tape</link>
|
||||
<description>Explore how Good Tape achieved remarkable database efficiency and reduced costs by 60% through their successful migration to Supabase's managed services.</description>
|
||||
<pubDate>Mon, 30 Oct 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 31 Oct 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/pebblely</guid>
|
||||
<title>Scaling securely: one million users in 7 months with Supabase Auth</title>
|
||||
<link>https://supabase.com/customers/pebblely</link>
|
||||
<description>Learn how Pebblely, an AI image generation company, used Supabase Auth to handle Single Sign On for their rapidly growing user base.</description>
|
||||
<pubDate>Thu, 28 Sep 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 29 Sep 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/chatbase</guid>
|
||||
<title>Bootstrapped founder builds an AI app with Supabase and scales to $1M in 5 months</title>
|
||||
<link>https://supabase.com/customers/chatbase</link>
|
||||
<description>How Yasser leveraged Supabase to build Chatbase and became one of the most successful single-founder AI products.</description>
|
||||
<pubDate>Tue, 05 Sep 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Wed, 06 Sep 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/quivr</guid>
|
||||
<title>Quivr launch 5,000 Vector databases on Supabase.</title>
|
||||
<link>https://supabase.com/customers/quivr</link>
|
||||
<description>Learn how one of the most popular Generative AI projects uses Supabase as their Vector Store.</description>
|
||||
<pubDate>Mon, 04 Sep 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 05 Sep 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/berriai</guid>
|
||||
<title>Berri AI boosts productivity by migrating from AWS RDS to Supabase Vector</title>
|
||||
<link>https://supabase.com/customers/berriai</link>
|
||||
<description>Learn how Berri AI overcame challenges with self-hosting their vector database on AWS RDS and successfully migrated to Supabase.</description>
|
||||
<pubDate>Mon, 05 Jun 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 06 Jun 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/markprompt</guid>
|
||||
<title>Markprompt and Supabase - GDPR-compliant AI chatbots for docs and websites.</title>
|
||||
<link>https://supabase.com/customers/markprompt</link>
|
||||
<description>AI-powered chatbot platform, Markprompt, empowers developers to deliver efficient and GDPR-compliant prompt experiences on top of their content, by leveraging Supabase's secure and privacy-focused vector database and authentication solutions.</description>
|
||||
<pubDate>Tue, 16 May 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Wed, 17 May 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/mendableai</guid>
|
||||
<title>Mendable switches from Pinecone to Supabase Vector for PostgreSQL vector embeddings.</title>
|
||||
<link>https://supabase.com/customers/mendableai</link>
|
||||
<description>How Mendable boosts efficiency and accuracy of chat powered search for documentation using Supabase Vector.</description>
|
||||
<pubDate>Thu, 04 May 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 05 May 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/happyteams</guid>
|
||||
<title>HappyTeams unlocks better performance and reduces cost with Supabase.</title>
|
||||
<link>https://supabase.com/customers/happyteams</link>
|
||||
<description>How a bootstrapped startup migrated from Heroku to Supabase in 30 minutes and never looked back.</description>
|
||||
<pubDate>Wed, 15 Feb 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 16 Feb 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/epsilon3</guid>
|
||||
<title>Epsilon3 digitize paper-based procedures in the space industry using telemetry data, simplifying testing and operations.</title>
|
||||
<link>https://supabase.com/customers/epsilon3</link>
|
||||
<description>Epsilon3 uses Supabase to help teams execute secure and reliable operations in an industry where project spend runs into the billions.</description>
|
||||
<pubDate>Mon, 13 Feb 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 14 Feb 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/mobbin</guid>
|
||||
<title>How Mobbin migrated 200,000 users from Firebase for a better authentication experience.</title>
|
||||
<link>https://supabase.com/customers/mobbin</link>
|
||||
<description>Mobbin helps over 200,000 creators globally search and view the latest design patterns from well-known apps.</description>
|
||||
<pubDate>Mon, 13 Feb 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 14 Feb 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/replenysh</guid>
|
||||
<title>Replenysh uses Supabase to implement OTP in less than 24 hours.</title>
|
||||
<link>https://supabase.com/customers/replenysh</link>
|
||||
<description>With Supabase, Replenysh gets a slick auth experience, reduces DevOps overhead, and continues to scale with Postgres.</description>
|
||||
<pubDate>Mon, 13 Feb 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 14 Feb 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/xendit</guid>
|
||||
<title>Xendit use Supabase and create a full solution shipped to production in less than one week.</title>
|
||||
<link>https://supabase.com/customers/xendit</link>
|
||||
<description>As a payment processor, Xendit are responsible for verifying that all transactions are legal.</description>
|
||||
<pubDate>Mon, 13 Feb 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 14 Feb 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,35 +5,35 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Angelico de los Reyes at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Thu, 15 Dec 2022 23:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Fri, 16 Dec 2022 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-angelico_de_los_reyes-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-point-in-time-recovery</guid>
|
||||
<title>Point in Time Recovery is now available for Pro projects</title>
|
||||
<link>https://supabase.com/blog/postgres-point-in-time-recovery</link>
|
||||
<description>We're making PITR available for more projects, with a new Dashboard UI that makes it simple to use.</description>
|
||||
<pubDate>Thu, 15 Dec 2022 23:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 16 Dec 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/continuous-postgresql-backup-walg</guid>
|
||||
<title>Continuous PostgreSQL Backups using WAL-G</title>
|
||||
<link>https://supabase.com/blog/continuous-postgresql-backup-walg</link>
|
||||
<description>Have you ever wanted to restore your database's state to a particular moment in time? This post explains how, using WAL-G.</description>
|
||||
<pubDate>Sat, 01 Aug 2020 22:00:00 GMT</pubDate>
|
||||
<pubDate>Sun, 02 Aug 2020 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgresql-templates</guid>
|
||||
<title>What are PostgreSQL Templates?</title>
|
||||
<link>https://supabase.com/blog/postgresql-templates</link>
|
||||
<description>What are PostgreSQL templates and what are they used for?</description>
|
||||
<pubDate>Wed, 08 Jul 2020 22:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 09 Jul 2020 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgresql-physical-logical-backups</guid>
|
||||
<title>Physical vs Logical Backups in PostgreSQL</title>
|
||||
<link>https://supabase.com/blog/postgresql-physical-logical-backups</link>
|
||||
<description>What are physical and logical backups in Postgres?</description>
|
||||
<pubDate>Mon, 06 Jul 2020 22:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 07 Jul 2020 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Ant Wilson at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Fri, 26 Feb 2021 23:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Sat, 27 Feb 2021 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-ant_wilson-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/cracking-postgres-interview</guid>
|
||||
<title>Cracking PostgreSQL Interview Questions</title>
|
||||
<link>https://supabase.com/blog/cracking-postgres-interview</link>
|
||||
<description>Understand the top PostgreSQL Interview Questions</description>
|
||||
<pubDate>Fri, 26 Feb 2021 23:00:00 GMT</pubDate>
|
||||
<pubDate>Sat, 27 Feb 2021 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Bo Lu at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Wed, 13 Dec 2023 23:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Thu, 14 Dec 2023 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-bo_lu-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/supabase-wrappers-v02</guid>
|
||||
<title>Supabase Wrappers v0.2: Query Pushdown & Remote Subqueries</title>
|
||||
<link>https://supabase.com/blog/supabase-wrappers-v02</link>
|
||||
<description>Supabase Wrappers v0.2 brings more Wrappers, query pushdown, remote subquery, and more</description>
|
||||
<pubDate>Wed, 13 Dec 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 14 Dec 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,21 +5,21 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Mark Burggraf at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Wed, 23 Nov 2022 23:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Thu, 24 Nov 2022 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-burggraf-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/sql-or-nosql-both-with-postgresql</guid>
|
||||
<title>SQL or NoSQL? Why not use both (with PostgreSQL)?</title>
|
||||
<link>https://supabase.com/blog/sql-or-nosql-both-with-postgresql</link>
|
||||
<description>How to turn Postgres into an easy-to-use NoSQL database that retains all the power of SQL</description>
|
||||
<pubDate>Wed, 23 Nov 2022 23:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 24 Nov 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-wasm</guid>
|
||||
<title>Postgres WASM by Snaplet and Supabase</title>
|
||||
<link>https://supabase.com/blog/postgres-wasm</link>
|
||||
<description>We're open sourcing postgres-wasm, a PostgresQL server that runs inside a browser, with our friends at Snaplet.</description>
|
||||
<pubDate>Sun, 02 Oct 2022 22:00:00 GMT</pubDate>
|
||||
<pubDate>Mon, 03 Oct 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,21 +5,21 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Egor Romanov at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Wed, 02 Aug 2023 22:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Thu, 03 Aug 2023 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-egor_romanov-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/fewer-dimensions-are-better-pgvector</guid>
|
||||
<title>pgvector: Fewer dimensions are better</title>
|
||||
<link>https://supabase.com/blog/fewer-dimensions-are-better-pgvector</link>
|
||||
<description>Increase performance in pgvector by using embedding vectors with fewer dimensions</description>
|
||||
<pubDate>Wed, 02 Aug 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 03 Aug 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/pgvector-performance</guid>
|
||||
<title>pgvector 0.4.0 performance</title>
|
||||
<link>https://supabase.com/blog/pgvector-performance</link>
|
||||
<description>There's been a lot of talk about pgvector performance lately, so we took some datasets and pushed pgvector to the limits to find out its strengths and limitations.</description>
|
||||
<pubDate>Wed, 12 Jul 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 13 Jul 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Filipe Cabaço at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Mon, 08 Jan 2024 23:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Tue, 09 Jan 2024 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-filipe-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/elixir-clustering-using-postgres</guid>
|
||||
<title>Elixir clustering using Postgres</title>
|
||||
<link>https://supabase.com/blog/elixir-clustering-using-postgres</link>
|
||||
<description>Learn about our approach to connecting multiple nodes in Elixir using Postgres</description>
|
||||
<pubDate>Mon, 08 Jan 2024 23:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 09 Jan 2024 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,28 +5,28 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Greg Richardson at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Tue, 05 Sep 2023 22:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Wed, 06 Sep 2023 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-gregnr-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/increase-performance-pgvector-hnsw</guid>
|
||||
<title>pgvector v0.5.0: Faster semantic search with HNSW indexes</title>
|
||||
<link>https://supabase.com/blog/increase-performance-pgvector-hnsw</link>
|
||||
<description>Increase performance in pgvector using HNSW indexes</description>
|
||||
<pubDate>Tue, 05 Sep 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Wed, 06 Sep 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/fewer-dimensions-are-better-pgvector</guid>
|
||||
<title>pgvector: Fewer dimensions are better</title>
|
||||
<link>https://supabase.com/blog/fewer-dimensions-are-better-pgvector</link>
|
||||
<description>Increase performance in pgvector by using embedding vectors with fewer dimensions</description>
|
||||
<pubDate>Wed, 02 Aug 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 03 Aug 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/openai-embeddings-postgres-vector</guid>
|
||||
<title>Storing OpenAI embeddings in Postgres with pgvector</title>
|
||||
<link>https://supabase.com/blog/openai-embeddings-postgres-vector</link>
|
||||
<description>An example of how to build an AI-powered search engine using OpenAI's embeddings and PostgreSQL.</description>
|
||||
<pubDate>Sun, 05 Feb 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Mon, 06 Feb 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Michel Pelletier at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Thu, 15 Dec 2022 23:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Fri, 16 Dec 2022 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-michel-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/vault-now-in-beta</guid>
|
||||
<title>Supabase Vault is now in Beta</title>
|
||||
<link>https://supabase.com/blog/vault-now-in-beta</link>
|
||||
<description>A Postgres extension to store encrypted secrets and encrypt data.</description>
|
||||
<pubDate>Thu, 15 Dec 2022 23:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 16 Dec 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,63 +5,63 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Oliver Rice at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Tue, 12 Dec 2023 23:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Wed, 13 Dec 2023 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-oli_rice-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgrest-12</guid>
|
||||
<title>PostgREST 12</title>
|
||||
<link>https://supabase.com/blog/postgrest-12</link>
|
||||
<description>PostgREST 12 is out and we take a look at some of the major new features like JWT Caching and Aggregate Functions</description>
|
||||
<pubDate>Tue, 12 Dec 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Wed, 13 Dec 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/pg-graphql-postgres-functions</guid>
|
||||
<title>pg_graphql: Postgres functions now supported</title>
|
||||
<link>https://supabase.com/blog/pg-graphql-postgres-functions</link>
|
||||
<description>pg_graphql now supports the most requested feature: Postgres functions a.k.a. User Defined Functions (UDFs)</description>
|
||||
<pubDate>Mon, 11 Dec 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 12 Dec 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/fewer-dimensions-are-better-pgvector</guid>
|
||||
<title>pgvector: Fewer dimensions are better</title>
|
||||
<link>https://supabase.com/blog/fewer-dimensions-are-better-pgvector</link>
|
||||
<description>Increase performance in pgvector by using embedding vectors with fewer dimensions</description>
|
||||
<pubDate>Wed, 02 Aug 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 03 Aug 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/whats-new-in-pg-graphql-v1-2</guid>
|
||||
<title>What's New in pg_graphql v1.2</title>
|
||||
<link>https://supabase.com/blog/whats-new-in-pg-graphql-v1-2</link>
|
||||
<description>New Features in the v1.2 release of pg_graphql</description>
|
||||
<pubDate>Thu, 20 Apr 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 21 Apr 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/type-constraints-in-65-lines-of-sql</guid>
|
||||
<title>Type Constraints in 65 lines of SQL</title>
|
||||
<link>https://supabase.com/blog/type-constraints-in-65-lines-of-sql</link>
|
||||
<description>Creating validated data types in Postgres</description>
|
||||
<pubDate>Thu, 16 Feb 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 17 Feb 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/pg-graphql-v1</guid>
|
||||
<title>pg_graphql v1.0</title>
|
||||
<link>https://supabase.com/blog/pg-graphql-v1</link>
|
||||
<description>Announcing the v1.0 release of pg_graphql</description>
|
||||
<pubDate>Thu, 15 Dec 2022 23:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 16 Dec 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/pg-jsonschema-a-postgres-extension-for-json-validation</guid>
|
||||
<title>pg_jsonschema: JSON Schema support for Postgres</title>
|
||||
<link>https://supabase.com/blog/pg-jsonschema-a-postgres-extension-for-json-validation</link>
|
||||
<description>Today we're releasing pg_jsonschema, a Postgres extension for JSON validation.</description>
|
||||
<pubDate>Thu, 18 Aug 2022 22:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 19 Aug 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-audit</guid>
|
||||
<title>Postgres Auditing in 150 lines of SQL</title>
|
||||
<link>https://supabase.com/blog/postgres-audit</link>
|
||||
<description>PostgreSQL has a robust set of features which we can leverage to create a generic auditing solution in 150 lines of SQL.</description>
|
||||
<pubDate>Mon, 07 Mar 2022 23:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 08 Mar 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,42 +5,42 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Paul Copplestone at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Sun, 30 Apr 2023 22:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Mon, 01 May 2023 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-paul_copplestone-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-pluggable-strorage</guid>
|
||||
<title>Next steps for Postgres pluggable storage</title>
|
||||
<link>https://supabase.com/blog/postgres-pluggable-strorage</link>
|
||||
<description>Exploring history of Postgres pluggable storage and the possibility of landing it in the Postgres core.</description>
|
||||
<pubDate>Sun, 30 Apr 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Mon, 01 May 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-crdt</guid>
|
||||
<title>pg_crdt - an experimental CRDT extension for Postgres</title>
|
||||
<link>https://supabase.com/blog/postgres-crdt</link>
|
||||
<description>Embedding Yjs and Automerge into Postgres for collaborative applications.</description>
|
||||
<pubDate>Fri, 09 Dec 2022 23:00:00 GMT</pubDate>
|
||||
<pubDate>Sat, 10 Dec 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/partial-postgresql-data-dumps-with-rls</guid>
|
||||
<title>Partial data dumps using Postgres Row Level Security</title>
|
||||
<link>https://supabase.com/blog/partial-postgresql-data-dumps-with-rls</link>
|
||||
<description>Using RLS to create seed files for local PostgreSQL testing.</description>
|
||||
<pubDate>Mon, 27 Jun 2022 22:00:00 GMT</pubDate>
|
||||
<pubDate>Tue, 28 Jun 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-as-a-cron-server</guid>
|
||||
<title>Postgres as a CRON Server</title>
|
||||
<link>https://supabase.com/blog/postgres-as-a-cron-server</link>
|
||||
<description>Running repetitive tasks with your Postgres database.</description>
|
||||
<pubDate>Thu, 04 Mar 2021 23:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 05 Mar 2021 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgresql-views</guid>
|
||||
<title>Postgres Views</title>
|
||||
<link>https://supabase.com/blog/postgresql-views</link>
|
||||
<description>Creating and using a view in PostgreSQL.</description>
|
||||
<pubDate>Tue, 17 Nov 2020 23:00:00 GMT</pubDate>
|
||||
<pubDate>Wed, 18 Nov 2020 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,42 +5,42 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Pavel Borisov at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Wed, 01 May 2024 22:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Thu, 02 May 2024 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-pavel-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/pgvector-0-7-0</guid>
|
||||
<title>What's new in pgvector v0.7.0</title>
|
||||
<link>https://supabase.com/blog/pgvector-0-7-0</link>
|
||||
<description>Exploring new features in pgvector v0.7.0</description>
|
||||
<pubDate>Wed, 01 May 2024 22:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 02 May 2024 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-bloat</guid>
|
||||
<title>Postgres Bloat Minimization</title>
|
||||
<link>https://supabase.com/blog/postgres-bloat</link>
|
||||
<description>Understanding and minimizing Postgres table bloat</description>
|
||||
<pubDate>Thu, 25 Apr 2024 22:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 26 Apr 2024 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/pgvector-performance</guid>
|
||||
<title>pgvector 0.4.0 performance</title>
|
||||
<link>https://supabase.com/blog/pgvector-performance</link>
|
||||
<description>There's been a lot of talk about pgvector performance lately, so we took some datasets and pushed pgvector to the limits to find out its strengths and limitations.</description>
|
||||
<pubDate>Wed, 12 Jul 2023 22:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 13 Jul 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/new-in-postgres-15</guid>
|
||||
<title>What's new in Postgres 15?</title>
|
||||
<link>https://supabase.com/blog/new-in-postgres-15</link>
|
||||
<description>Describes the release of Postgres 15, new features and reasons to use it</description>
|
||||
<pubDate>Thu, 15 Dec 2022 23:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 16 Dec 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgresql-commitfest</guid>
|
||||
<title>What is PostgreSQL commitfest and how to contribute</title>
|
||||
<link>https://supabase.com/blog/postgresql-commitfest</link>
|
||||
<description>A time-tested method for contributing to the core Postgres code</description>
|
||||
<pubDate>Wed, 26 Oct 2022 22:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 27 Oct 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Philipp Steinrötter at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Thu, 07 Dec 2023 23:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Fri, 08 Dec 2023 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-philipp-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-language-server-implementing-parser</guid>
|
||||
<title>Postgres Language Server: implementing the Parser</title>
|
||||
<link>https://supabase.com/blog/postgres-language-server-implementing-parser</link>
|
||||
<description>A detailed analysis of our iterations to implement a Parser for Postgres</description>
|
||||
<pubDate>Thu, 07 Dec 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 08 Dec 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,21 +5,21 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Raminder Singh at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Wed, 10 Apr 2024 22:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Thu, 11 Apr 2024 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-raminder_singh-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-roles-and-privileges</guid>
|
||||
<title>Postgres Roles and Privileges</title>
|
||||
<link>https://supabase.com/blog/postgres-roles-and-privileges</link>
|
||||
<description>A guide to Postgres roles and privileges</description>
|
||||
<pubDate>Wed, 10 Apr 2024 22:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 11 Apr 2024 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/how-pg-graphql-works</guid>
|
||||
<title>How pg_graphql works</title>
|
||||
<link>https://supabase.com/blog/how-pg-graphql-works</link>
|
||||
<description>An insight into the internals of GraphQL in Postgres using pg_graphql, and how you can contribute.</description>
|
||||
<pubDate>Tue, 23 Jan 2024 23:00:00 GMT</pubDate>
|
||||
<pubDate>Wed, 24 Jan 2024 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Stanislav Muzhyk at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Tue, 12 Dec 2023 23:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Wed, 13 Dec 2023 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-stas-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/supavisor-postgres-connection-pooler</guid>
|
||||
<title>Supavisor 1.0: a scalable connection pooler for Postgres</title>
|
||||
<link>https://supabase.com/blog/supavisor-postgres-connection-pooler</link>
|
||||
<description>Supavisor is now used across all projects, providing a scalable and cloud-native Postgres connection pooler that can handle millions of connections</description>
|
||||
<pubDate>Tue, 12 Dec 2023 23:00:00 GMT</pubDate>
|
||||
<pubDate>Wed, 13 Dec 2023 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,21 +5,21 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Steve Chavez at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Thu, 15 Dec 2022 23:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Fri, 16 Dec 2022 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-steve_chavez-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgrest-11-prerelease</guid>
|
||||
<title>PostgREST 11 pre-release</title>
|
||||
<link>https://supabase.com/blog/postgrest-11-prerelease</link>
|
||||
<description>Describes new features of PostgREST 11 pre-release</description>
|
||||
<pubDate>Thu, 15 Dec 2022 23:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 16 Dec 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/roles-postgres-hooks</guid>
|
||||
<title>Protecting reserved roles with PostgreSQL Hooks</title>
|
||||
<link>https://supabase.com/blog/roles-postgres-hooks</link>
|
||||
<description>Using Postgres Hooks to protect functionality in your Postgres database.</description>
|
||||
<pubDate>Thu, 01 Jul 2021 22:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 02 Jul 2021 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -5,28 +5,28 @@
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Victor at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Thu, 13 Oct 2022 22:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Fri, 14 Oct 2022 00:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-victor-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-full-text-search-vs-the-rest</guid>
|
||||
<title>Postgres Full Text Search vs the rest</title>
|
||||
<link>https://supabase.com/blog/postgres-full-text-search-vs-the-rest</link>
|
||||
<description>Comparing one of the most popular Postgres features against alternatives</description>
|
||||
<pubDate>Thu, 13 Oct 2022 22:00:00 GMT</pubDate>
|
||||
<pubDate>Fri, 14 Oct 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/choosing-a-postgres-primary-key</guid>
|
||||
<title>Choosing a Postgres Primary Key</title>
|
||||
<link>https://supabase.com/blog/choosing-a-postgres-primary-key</link>
|
||||
<description>Turns out the question of which identifier to use as a Primary Key is complicated -- we're going to dive into some of the complexity and inherent trade-offs, and figure things out</description>
|
||||
<pubDate>Wed, 07 Sep 2022 22:00:00 GMT</pubDate>
|
||||
<pubDate>Thu, 08 Sep 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/seen-by-in-postgresql</guid>
|
||||
<title>Implementing "seen by" functionality with Postgres</title>
|
||||
<link>https://supabase.com/blog/seen-by-in-postgresql</link>
|
||||
<description>Different approaches for tracking visitor counts with PostgreSQL.</description>
|
||||
<pubDate>Sun, 17 Jul 2022 22:00:00 GMT</pubDate>
|
||||
<pubDate>Mon, 18 Jul 2022 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
|
||||
+302
-309
File diff suppressed because it is too large.
Load diff
@@ -217,7 +217,7 @@
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/launch-week/6</loc>
|
||||
<loc>https://supabase.com/launch-week/8</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.5</priority>
|
||||
</url>
|
||||
@@ -229,7 +229,7 @@
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/launch-week/8</loc>
|
||||
<loc>https://supabase.com/launch-week/6</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.5</priority>
|
||||
</url>
|
||||
@@ -241,13 +241,13 @@
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/partners/integrations</loc>
|
||||
<loc>https://supabase.com/partners/experts</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.5</priority>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/partners/experts</loc>
|
||||
<loc>https://supabase.com/partners/integrations</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.5</priority>
|
||||
</url>
|
||||
|
||||
@@ -30,15 +30,27 @@ export const ConsentToast = ({ onAccept = noop, onOptOut = noop }: ConsentToastP
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
href="https://supabase.com/privacy#8-cookies-and-similar-technologies-used-on-our-european-services"
|
||||
className="underline underline-offset-2 decoration-foreground-lighter hover:decoration-foreground-light transition-all"
|
||||
className="hidden sm:inline underline underline-offset-2 decoration-foreground-lighter hover:decoration-foreground-light transition-all"
|
||||
>
|
||||
Learn more
|
||||
</a>{' '}
|
||||
<PrivacySettings className="inline sm:hidden underline text-light">
|
||||
</p>
|
||||
<div className="flex items-center justify-start gap-x-2 sm:hidden">
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
href="https://supabase.com/privacy#8-cookies-and-similar-technologies-used-on-our-european-services"
|
||||
className="underline underline-offset-2 text-foreground-light hover:decoration-foreground-light transition-all"
|
||||
>
|
||||
Learn more
|
||||
</a>
|
||||
<span className="text-foreground-lighter text-xs">•</span>
|
||||
<PrivacySettings className="underline underline-offset-2 inline text-light">
|
||||
Privacy settings
|
||||
</PrivacySettings>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center space-x-2">
|
||||
<Button
|
||||
type="default"
|
||||
|
||||
Reference in new issue
Block a user