diff --git a/apps/docs/pages/guides/auth/quickstarts/react.mdx b/apps/docs/pages/guides/auth/quickstarts/react.mdx
index 3dfdc081c80..8a852e454fd 100644
--- a/apps/docs/pages/guides/auth/quickstarts/react.mdx
+++ b/apps/docs/pages/guides/auth/quickstarts/react.mdx
@@ -58,7 +58,7 @@ export const meta = {
```bash Terminal
- cd my-app && npm install @supabase/supabase-js @supabase/auth-ui-react
+ cd my-app && npm install @supabase/supabase-js @supabase/auth-ui-react @supabase/auth-ui-shared
```
diff --git a/apps/docs/pages/guides/auth/social-login/auth-google.mdx b/apps/docs/pages/guides/auth/social-login/auth-google.mdx
index a4d2728207b..b066163eefb 100644
--- a/apps/docs/pages/guides/auth/social-login/auth-google.mdx
+++ b/apps/docs/pages/guides/auth/social-login/auth-google.mdx
@@ -289,6 +289,34 @@ async function handleSignInWithGoogle(response) {
Use of nonce is recommended, though optional. Make sure each nonce is generated randomly and available both in the `data-nonce` attribute as well as in the `handleSignInWithGoogle` callback function; otherwise the ID token will not be accepted.
+### Important Note on Nonce Validation
+
+Supabase Auth expects the nonce in Google's ID token to be hashed (specifically with SHA-256 and represented as a hexadecimal string).
+
+To succeed with nonce validation, you will need to provide a hashed version of the nonce to Google and the non-hashed version to the `signInWithIdToken` method.
+
+The following code snippet provides an example of how to create both versions in a web application:
+
+```js
+// Adapted from https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#converting_a_digest_to_a_hex_string
+
+import crypto from 'crypto'
+
+// ...
+
+const nonce = crypto.randomBytes(16).toString('base64') // Generate a random nonce
+const encoder = new TextEncoder()
+const encodedNonce = encoder.encode(nonce) // Encode the nonce
+const hash = await crypto.subtle.digest('SHA-256', encodedNonce) // Hash it with SHA-256
+const bytes = new Uint8Array(hash)
+const hashedNonce = Array.from(bytes)
+ .map((b) => b.toString(16).padStart(2, '0')) // Convert the hash to a hexadecimal string
+ .join('')
+
+// Use 'hashedNonce' when making the authentication request to Google
+// Use 'nonce' when invoking the supabase.auth.signInWithIdToken() method
+```
+
### Configuration [#configuration-personalized-sign-in-button]
1. Obtain OAuth credentials for your Google Cloud project in the [Credentials](https://console.developers.google.com/apis/credentials) page of the console. When creating a new credential, choose _Web application_. As you're using the Google sign in button, you should configure the _Authorized JavaScript origins_ and _Authorized redirect URIs_ to the website where the buttons appear. You should not use your Supabase project domain name. For this use case, the client secret provided is not needed and can be ignored.
diff --git a/apps/docs/pages/guides/cli/getting-started.mdx b/apps/docs/pages/guides/cli/getting-started.mdx
index dd01d4ffcf7..91d69bfe7f9 100644
--- a/apps/docs/pages/guides/cli/getting-started.mdx
+++ b/apps/docs/pages/guides/cli/getting-started.mdx
@@ -161,7 +161,7 @@ The CLI provides a number of commands to help you develop your project locally a
- [Project](/docs/reference/cli/supabase-projects) and [Organization](/docs/reference/cli/supabase-orgs) management
- [Database management](/docs/reference/cli/supabase-db)
- [Database migrations](/docs/reference/cli/supabase-migration) and [Database Branching](/docs/reference/cli/supabase-branches)
-- [Database debugigng tools](/docs/reference/cli/supabase-inspect-db-calls)
+- [Database debugging tools](/docs/reference/cli/supabase-inspect-db-calls)
- [Edge Function management](/docs/reference/cli/supabase-functions)
- [Auth management](/docs/reference/cli/supabase-functions)
- [Types Generators](/docs/reference/cli/supabase-gen)
diff --git a/apps/docs/pages/guides/database/testing.mdx b/apps/docs/pages/guides/database/testing.mdx
index 1ff2d912d66..7db3ed93dd6 100644
--- a/apps/docs/pages/guides/database/testing.mdx
+++ b/apps/docs/pages/guides/database/testing.mdx
@@ -63,8 +63,9 @@ Files=1, Tests=1, 1 wallclock secs ( 0.01 usr 0.00 sys + 0.04 cusr 0.02 csys
Result: PASS
```
-## More resource
+## More resources
+- [Testing RLS policies](/docs/guides/auth/row-level-security#testing-policies)
- [pgTAP extension](/docs/guides/database/extensions/pgtap)
- Official [pgTAP documentation](https://pgtap.org/)
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-nextjs.mdx b/apps/docs/pages/guides/getting-started/tutorials/with-nextjs.mdx
index 4bf3351ce31..a771e0f5571 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-nextjs.mdx
+++ b/apps/docs/pages/guides/getting-started/tutorials/with-nextjs.mdx
@@ -333,7 +333,7 @@ export async function GET(req: NextRequest) {
### Sign out
-Let's create an route handler to handle the signout from the server side.
+Let's create a route handler to handle the signout from the server side.
`staging` -> `prod`).
- As your database to grows, we strongly recommend moving to [Point-in-Time Recovery](/docs/guides/platform/backups#point-in-time-recovery). This is safer and has less impact on your database performance during maintenance windows.
diff --git a/apps/docs/pages/guides/platform/migrating-and-upgrading-projects.mdx b/apps/docs/pages/guides/platform/migrating-and-upgrading-projects.mdx
index 6472e628044..f425d5d260d 100644
--- a/apps/docs/pages/guides/platform/migrating-and-upgrading-projects.mdx
+++ b/apps/docs/pages/guides/platform/migrating-and-upgrading-projects.mdx
@@ -42,7 +42,7 @@ Migrating projects can be achieved using the Supabase CLI. This is particularly
```bash
supabase db dump --db-url "$OLD_DB_URL" -f roles.sql --role-only
supabase db dump --db-url "$OLD_DB_URL" -f schema.sql
-supabase db dump --db-url "$OLD_DB_URL" -f data.sql --data-only
+supabase db dump --db-url "$OLD_DB_URL" -f data.sql --use-copy --data-only
```
### Restore to your new project
diff --git a/apps/docs/pages/guides/self-hosting/analytics/config.mdx b/apps/docs/pages/guides/self-hosting/analytics/config.mdx
index 8267f6a913e..97dc3bf3a97 100644
--- a/apps/docs/pages/guides/self-hosting/analytics/config.mdx
+++ b/apps/docs/pages/guides/self-hosting/analytics/config.mdx
@@ -1,18 +1,19 @@
import Layout from '~/layouts/DefaultGuideLayout'
import { getAnalyticsConfigV0 } from '~/lib/mdx/getConfig'
import Param from '~/components/Params'
-
-export const spec = getAnalyticsConfigV0()
+import { serialize } from 'next-mdx-remote/serialize'
+import components from '~/components'
+import { MDXRemote } from 'next-mdx-remote'
export const meta = {
title: 'Analytics Self-hosting Config',
description: 'How to configure and deploy Supabase Analytics.',
}
-
- {spec.parameters.filter(param => param.tags.includes(tag.id)).map((param) => {
+ {props.spec.parameters.filter(param => param.tags.includes(tag.id)).map((param) => {
return
})}
@@ -36,3 +37,14 @@ export const meta = {
export const Page = ({ children }) =>
export default Page
+
+export const getStaticProps = async () => {
+ const spec = getStorageConfigV0()
+ const descriptionSource = await serialize(spec.info.description)
+ return {
+ props: {
+ descriptionSource,
+ spec,
+ },
+ }
+}
diff --git a/apps/www/.env b/apps/www/.env
index 44e4b28a40c..6db5b58d782 100644
--- a/apps/www/.env
+++ b/apps/www/.env
@@ -12,4 +12,4 @@ NEXT_PUBLIC_REFERENCE_DOCS_URL="https://localhost:3010"
NEXT_PUBLIC_LW_STARTED=true
NEXT_PUBLIC_SITE_ORIGIN=http://localhost:3000
NEXT_PUBLIC_SUPABASE_URL=https://obuldanrptloktxcffvn.supabase.co
-NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9idWxkYW5ycHRsb2t0eGNmZnZuIiwicm9sZSI6ImFub24iLCJpYXQiOjE2Njk3MjcwMTIsImV4cCI6MTk4NTMwMzAxMn0.SZLqryz_-stF8dgzeVXmzZWPOqdOrBwqJROlFES8v3I
\ No newline at end of file
+NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9idWxkYW5ycHRsb2t0eGNmZnZuIiwicm9sZSI6ImFub24iLCJpYXQiOjE2OTIyNjkzMjYsImV4cCI6MjAwNzg0NTMyNn0.1S6qpBbHtEmGuMsIx5UOhRiFd4YbVv-yLTrLk6tVGmM
\ No newline at end of file
diff --git a/apps/www/_blog/2023-02-03-openai-embeddings-postgres-vector.mdx b/apps/www/_blog/2023-02-03-openai-embeddings-postgres-vector.mdx
index d9899ee5152..506720ad48c 100644
--- a/apps/www/_blog/2023-02-03-openai-embeddings-postgres-vector.mdx
+++ b/apps/www/_blog/2023-02-03-openai-embeddings-postgres-vector.mdx
@@ -265,7 +265,7 @@ import 'https://deno.land/x/xhr@0.2.1/mod.ts'
import { createClient } from 'https://esm.sh/@supabase/supabase-js@2.5.0'
import GPT3Tokenizer from 'https://esm.sh/gpt3-tokenizer@1.1.5'
import { Configuration, OpenAIApi } from 'https://esm.sh/openai@3.1.0'
-import { stripIndent } from 'https://esm.sh/common-tags@1.8.2'
+import { oneLine, stripIndent } from 'https://esm.sh/common-tags@1.8.2'
import { supabaseClient } from './lib/supabase'
export const corsHeaders = {
diff --git a/apps/www/_customers/berriai.mdx b/apps/www/_customers/berriai.mdx
index 4f6cc7e97d0..34031d9a18f 100644
--- a/apps/www/_customers/berriai.mdx
+++ b/apps/www/_customers/berriai.mdx
@@ -1,8 +1,8 @@
---
name: Berri AI
-title: Berri AI Boosts Productivity by Migrating from AWS RDS to Supabase with pgvector
+title: Berri AI boosts productivity by migrating from AWS RDS to Supabase Vector
# Use meta_title to add a custom meta title. Otherwise it defaults to '{name} | Supabase Customer Stories':
-# meta_title:
+meta_title: Berri AI boosts productivity by migrating from AWS RDS to Supabase Vector
description: Learn how Berri AI overcame challenges with self-hosting their vector database on AWS RDS and successfully migrated to Supabase.
# Use meta_description to add a custom meta description. Otherwise it defaults to {description}:
meta_description: Learn how Berri AI overcame challenges with self-hosting their vector database on AWS RDS and successfully migrated to Supabase.
@@ -42,29 +42,31 @@ Initially, Berri AI attempted to develop with AWS RDS to reduce latency and gain
## Why they chose Supabase:
-Berri AI migrated their vector database from AWS RDS to Supabase for several compelling reasons.
+Berri AI migrated their vector database from AWS RDS to Supabase for several compelling reasons:
-1. **Community:** After considering alternatives like pgvector, Pinecone, and Chroma, they prioritized a solution with a strong and accessible community, along with managed infrastructure.
+1. **Community:** After considering alternatives like Pinecone and Chroma, they prioritized a solution with a strong and accessible community, along with [managed infrastructure](https://supabase.com/docs/guides/platform).
2. **Fewer services to manage:** Since they were already utilizing Supabase for other purposes, it made sense for Berri AI to consolidate their systems and avoid the complexities of self-hosting. One of the major pain points they faced with their previous setup was managing connection pools and handling errors with the Postgres database hosted on AWS. This involved writing extensive code and dealing with rollbacks, with each database update function requiring 40-50 lines of code. Supabase simplified this process significantly by condensing it to just one line of code, eliminating the burdens of managing dependencies and handling new errors. This significantly improved their update velocity, which had a huge impact on their productivity.
3. **Better tooling:** Berri AI experienced frustration with pg_admin. Supabase's user-friendly interface offered a seamless and efficient way to manage and read tables, eliminating the need for pg_admin and providing a simple alternative. This streamlined their workflow and saved valuable time and effort. The accessibility of Supabase's client SDKs and intuitive interface played a crucial role in their decision as well. Team members who were not database experts found it easy to navigate and make changes, reducing reliance on specialized expertise and improving their overall workflow.
4. **Simplicity:** Supabase provides the ability to add new columns in a no-code manner, which provided flexibility and agility in responding to evolving requirements. This feature empowered the team to make on-the-fly adjustments and meet their immediate needs effectively.
-5. **Flexibility:** Berri AI also appreciated Supabase's flexibility in allowing them to choose their preferred embedding method, as it was not tied to a specific embedding model. This ensured compatibility and adaptability for their specific use case.
+5. **Flexibility:** Berri AI also appreciated Supabase's flexibility in allowing them to choose their [preferred embedding method](https://supabase.com/docs/guides/ai/quickstarts/generate-text-embeddings), as it was not tied to a specific embedding model. This ensured compatibility and adaptability for their specific use case.
-The integration of pgvector on Supabase, which facilitated efficient storage and retrieval of vectors, proved to be a significant advantage for Berri AI's operations.
+The migration to [Supabase Vector](https://supabase.com/vector), which facilitated efficient storage and retrieval of vectors, proved to be a significant advantage for Berri AI's operations.
- Switching to Supabase was a game-changer for us. The faster view times allowed me to quickly
- access and debug data, enhancing my ability to analyze individual customer issues. The no-code
- option to add new columns on the fly was fantastic, enabling us to adapt swiftly.
+ Switching to Supabase Vector was a game-changer for us. The faster view times allowed me to
+ quickly access and debug data, enhancing my ability to analyze individual customer issues. The
+ no-code option to add new columns on the fly was fantastic, enabling us to adapt swiftly.
## What They Built
Berri AI built a platform that enables developers to create and manage custom ChatGPT instances for each individual user, integrating seamlessly with their unique data.
+
+
With Berri AI, businesses can rapidly scale the power of ChatGPT to cater to the needs of every user. The platform provides an out-of-the-box solution for managing a fleet of ChatGPT instances, offering businesses the ability to deliver personalized responses to user queries. This includes answering specific questions related to order status, monthly revenue, or generating personalized learning experiences in the education technology (EdTech) sector, such as summarizing lecture slides or generating practice questions from textbooks.
-The platform's integration with Supabase and pgvector empowers businesses to unlock the full potential of ChatGPT and deliver customized solutions for a wide range of use cases.
+The platform's integration with Supabase empowers businesses to unlock the full potential of ChatGPT and deliver customized solutions for a wide range of use cases.
With Supabase, my life has become much easier. Previously, managing connection pools and dealing
@@ -77,12 +79,14 @@ The platform's integration with Supabase and pgvector empowers businesses to unl
## The Results
-Berri AI achieved significant improvements in their operations by choosing Supabase with pgvector. They experienced streamlined database management, increased update velocity, and improved efficiency in accessing and debugging data. The user-friendly interface and flexibility of Supabase empowered non-experts within the team and facilitated agile adaptations to changing requirements. Overall, this decision transformed their workflow, enhancing productivity and positioning Berri AI for continued success and growth.
+Berri AI achieved significant improvements in their operations by choosing Supabase Vector. They experienced streamlined database management, increased update velocity, and improved efficiency in accessing and debugging data. The user-friendly interface and flexibility of Supabase empowered non-experts within the team and facilitated agile adaptations to changing requirements. Overall, this decision transformed their workflow, enhancing productivity and positioning Berri AI for continued success and growth.
+
+To learn more about how Supabas Vector can help you store vector embeddings at scale and build AI apps with ease, [reach out to us](https://forms.supabase.com/enterprise).
## Tech stack
-- Supabase
- Zeet
- AWS
- OpenAI
- Hugging Face
+- Supabase
diff --git a/apps/www/_customers/happyteams.mdx b/apps/www/_customers/happyteams.mdx
index 78f713bd753..4ccd74a9f62 100644
--- a/apps/www/_customers/happyteams.mdx
+++ b/apps/www/_customers/happyteams.mdx
@@ -2,7 +2,7 @@
name: HappyTeams
title: HappyTeams unlocks better performance and reduces cost with Supabase.
# Use meta_title to add a custom meta title. Otherwise it defaults to '{name} | Supabase Customer Stories':
-# meta_title:
+meta_title: HappyTeams unlocks better performance and reduces cost with Supabase.
description: How a bootstrapped startup migrated from Heroku to Supabase in 30 minutes and never looked back.
# Use meta_description to add a custom meta description. Otherwise it defaults to {description}:
meta_description: How a bootstrapped startup migrated from Heroku to Supabase in 30 minutes and never looked back.
@@ -32,11 +32,11 @@ about: HappyTeams is a purpose-built solution that empowers management to unlock
> Finding a painless and hands-free database experience to support growth
-[HappyTeams](https://happyteams.io/) is a growing startup with an ambitious vision. The company is bootstrapped, so technical resources are scarce. Devs need to do more with less. This means staying laser-focused on delivering features, rather than database timeouts or performance issues.
+HappyTeams is a growing startup with an ambitious vision. The company is bootstrapped, so technical resources are scarce. Devs need to do more with less. This means staying laser-focused on delivering features, rather than database timeouts or performance issues.
The company launched its app on Heroku Postgres. But one year in, they were experiencing scaling issues. They needed to handle thousands of users while also shipping new features and building out integrations. Issues with database slowness and concurrent connections were holding them back.
-Michael Dever, the founder and CTO of HappyTeams, realized it was time for a change. A large overhaul of the app in early 2022 presented the opportunity to do so: "When you're in that first sprint of building a product, you're kind of locked with that first database decision you make. When we did a rebuild, it was time to look at something like Supabase."
+Michael Dever, founder and CTO of HappyTeams, realized it was time for a change. A large overhaul of the app in early 2022 presented the opportunity to do so: "When you're in that first sprint of building a product, you're kind of locked with that first database decision you make. When we did a rebuild, it was time to look at something like Supabase."

@@ -58,7 +58,7 @@ There were four main factors that led HappyTeams to switch from Heroku Postgres
## Supabase provides a fast and reliable production database
-After a 30 minute migration, HappyTeams can iterate quickly, add new features, and improve their product based on customer feedback
+After a 30-minute migration, HappyTeams can iterate quickly, add new features, and improve their product based on customer feedback
Once they made the decision, migrating from Heroku to Supabase was simple. HappyTeams completed their database migration in less than an hour using pg_dump and pg_restore.
@@ -74,3 +74,5 @@ Thanks to Supabase's ease of use and reliability, HappyTeams can iterate quickly
When we needed to add a comments feature to our app, we could get it done in just two days.
Supabase is really like a dream come true for a developer.
+
+Supabase is one of the best free alternatives to Heroku Postgres. Migrate your Heroku Postgres database to Supabase with this [guide](https://supabase.com/docs/guides/resources/migrating-to-supabase/heroku).
diff --git a/apps/www/_customers/markprompt.mdx b/apps/www/_customers/markprompt.mdx
index 49808e441ca..d5679d27b8f 100644
--- a/apps/www/_customers/markprompt.mdx
+++ b/apps/www/_customers/markprompt.mdx
@@ -1,7 +1,7 @@
---
-title: Markprompt and Supabase - GDPR-Compliant AI Chatbots for Docs and Websites.
+title: Markprompt and Supabase - GDPR-compliant AI chatbots for docs and websites.
name: Markprompt
-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 database and authentication solutions.
+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.
author: paul_copplestone
author_title: Supabase
author_url: https://github.com/kiwicopple
@@ -33,18 +33,18 @@ Markprompt is an AI-powered chatbot platform that simplifies the process of find
## The Challenge
-When developing the platform, Markprompt considered GDPR compliance crucial as it enabled them to handle user data responsibly, maintain data privacy, and foster trust and confidence among their customers. As a result, the choice of a robust database and authentication solution became vital in ensuring adherence to GDPR requirements.
+When developing the platform, Markprompt considered GDPR compliance crucial as it enabled them to handle user data responsibly, maintain data privacy, and foster trust and confidence among their customers. As a result, the choice of a robust vector database and authentication solution became vital in ensuring adherence to GDPR requirements.
-Markprompt has successfully indexed over half a million sections of content, with a steady influx of 10,000 - 50,000 new sections daily. This emphasizes the significance of their vector database solution in terms of reliability and scalability.
+Markprompt has successfully indexed over half a million sections of content, with a steady influx of 10,000 - 50,000 new sections daily. This emphasizes the significance of [Supabase Vector](https://supabase.com/vector) in terms of reliability and scalability.
We decided to use Supabase over other specialized vector databases because it enabled us to be
GDPR compliant from day one with little effort.
-## Why they chose Supabase:
+## Why they chose Supabase
-By utilizing a trusted solution like Supabase for their database and authentication needs, Markprompt can implement access controls, user consent management, and audit trails, which are essential elements for GDPR compliance. This ensures that personal data is handled with care, protected from unauthorized access, and enables Markprompt to meet the strict data protection standards set forth by the GDPR.
+By utilizing a trusted solution like Supabase for their vector database and authentication needs, Markprompt can implement access controls, user consent management, and audit trails, which are essential elements for GDPR compliance. This ensures that personal data is handled with care, protected from unauthorized access, and enables Markprompt to meet the strict data protection standards set forth by the GDPR.
Markprompt were also impressed with the ease of use and scalability of Supabase. The platform allowed them to focus on building their product, knowing that they had a powerful and reliable database solution backing them up.
@@ -55,7 +55,7 @@ Markprompt were also impressed with the ease of use and scalability of Supabase.
## What They Built
-Markprompt is a set of API endpoints that allow you to train your content and create a prompt to ask questions to it, for instance for a docs site. Markprompt also designed a user-friendly web dashboard that simplifies content training, synchronization with GitHub repos or websites, access key management, and provides insights into user query statistics. Furthermore, Markprompt's UI components, available as React and Web Components, allow integration of prompts at all touch points of a company, from public websites to internal knowledge bases with just a few lines of code.
+Markprompt is a set of API endpoints that allow you to train your content and create a prompt to ask questions to it, for instance for a docs site. Markprompt also designed a user-friendly web dashboard that simplifies content training, synchronization with GitHub repos or websites, access key management, and provides insights into user query statistics. Furthermore, Markprompt's UI components, available as React and Web Components, allow the integration of prompts at all touch points of a company, from public websites to internal knowledge bases with just a few lines of code.
Like Supabase, Markprompt is an open-source platform, allowing customers the freedom to host the dashboard and model backend on their own premises. Markprompt warmly welcomes contributions from the community, fostering collaboration and continuous improvement of the platform to meet the evolving needs of developers and technical users.
@@ -66,16 +66,18 @@ Like Supabase, Markprompt is an open-source platform, allowing customers the fre
## The Results
-Choosing Supabase as their database and authentication solution empowered Markprompt to focus on developing innovative AI-powered solutions without compromising data security or impeding scalability. The seamless integration between Supabase and pgvector enabled them to meet the increasing demands of their expanding user base while upholding stringent GDPR requirements. Consequently, companies gain trust and confidence in the platform, solidifying its reputation as a robust enterprise offering.
+Choosing Supabase as their vector database and authentication solution empowered Markprompt to focus on developing innovative AI-powered solutions without compromising data security or impeding scalability. The seamless integration between Supabase and pgvector enabled them to meet the increasing demands of their expanding user base while upholding stringent GDPR requirements. Consequently, companies gain trust and confidence in the platform, solidifying its reputation as a robust enterprise offering.
+
+To learn more about how Supabase Vector can help you store vector embeddings at scale and build GDPR-compliant apps, [reach out to us](https://forms.supabase.com/enterprise).
## Tech stack
-- Next.js - framework
-- Vercel - hosting
-- Typescript - language
-- Tailwind - CSS
-- Upstash - Redis and rate limiting
-- Supabase - database and auth
-- Stripe - payments
-- Plain - support chat
-- Fathom - analytics
+- Next.js
+- Vercel
+- Typescript
+- Tailwind
+- Upstash
+- Supabase
+- Stripe
+- Plain
+- Fathom
diff --git a/apps/www/_customers/mendableai.mdx b/apps/www/_customers/mendableai.mdx
index 44d70141b7e..73d2523387b 100644
--- a/apps/www/_customers/mendableai.mdx
+++ b/apps/www/_customers/mendableai.mdx
@@ -1,11 +1,11 @@
---
name: Mendable
-title: Mendable switches from Pinecone to Supabase for PostgreSQL vector embeddings.
+title: Mendable switches from Pinecone to Supabase Vector for PostgreSQL vector embeddings.
# Use meta_title to add a custom meta title. Otherwise it defaults to '{name} | Supabase Customer Stories':
-# meta_title:
-description: How Mendable boosts efficiency and accuracy of chat powered search for documentation using Supabase with pgvector.
+# meta_title: Mendable switches from Pinecone to Supabase Vector for PostgreSQL vector embeddings.
+description: How Mendable boosts efficiency and accuracy of chat powered search for documentation using Supabase Vector.
# Use meta_description to add a custom meta description. Otherwise it defaults to {description}:
-meta_description: How Mendable boosts efficiency and accuracy of chat powered search for documentation using Supabase with pgvector.
+meta_description: How Mendable boosts efficiency and accuracy of chat powered search for documentation using Supabase Vector.
author: paul_copplestone
author_title: Supabase
author_url: https://github.com/kiwicopple
@@ -32,11 +32,11 @@ about: Mendable is Chat Powered Search for Documentation.
## The Challenge
-Mendable was experiencing tremendous success, growing Weekly Active Users nearly 300% since March. They needed a tool to store and search through large amounts of vector data to improve the efficiency and accuracy of their similarity search operations. They tried Faiss, Weaviate, and Pinecone, but found them to be expensive and not very intuitive, especially when it came to storing metadata along with the vectors.
+Mendable was experiencing tremendous success, growing Weekly Active Users by nearly 300% since March. They needed a tool to store and search through large amounts of vector data to improve the efficiency and accuracy of their similarity search operations. They tried Faiss, Weaviate, and Pinecone, but found them to be expensive and not very intuitive, especially when it came to storing metadata along with the vectors.
## Why they chose Supabase
-Mendable discovered that Supabase supports [pgvector](https://supabase.com/docs/guides/database/extensions/pgvector) and found it to be a simple and cost-effective solution. They were impressed with the open source nature of Supabase, as well as its ability to store metadata alongside the vectors. They also appreciated the intuitive interface and ease of use.
+Mendable lear that Supabase supports [pgvector](https://supabase.com/docs/guides/database/extensions/pgvector) and found it to be a simple and cost-effective solution. They were impressed with the open source nature of Supabase, as well as its ability to store metadata alongside the vectors. They also appreciated the intuitive interface and ease of use.
We tried other vector databases - we tried Faiss, we tried Weaviate, we tried Pinecone. We found
@@ -48,16 +48,24 @@ Mendable discovered that Supabase supports [pgvector](https://supabase.com/docs/
Using [Supabase Vector](https://supabase.com/vector), Mendable was able to build a more efficient and accurate search function for their AI chatbot. By storing vector data alongside metadata in Supabase, Mendable was able to quickly and easily search through their customers documentation to find the most relevant responses to queries. They found that Supabase's solution was just as performant as dedicated vector databases, but without the high cost.
+
+
## The Results
-Thanks to Supabase and pgvector, Mendable was able to significantly improve the efficiency and accuracy of their Chat Powered Search for Documentation. They were able to build faster and more cost-effectively using Supabase’s open source stack.
+Thanks to Supabase Vector, Mendable was able to significantly improve the efficiency and accuracy of their Chat Powered Search for Documentation. They were able to build faster and more cost-effectively using Supabase’s open source stack.
We looked at the alternatives and chose Supabase because it’s open source, it’s simpler, and, for
- all the ways we need use it, Supabase has been just as performant - if not more performant - than
- the other vector databases.
+ all the ways we need to use it, Supabase has been just as performant - if not more performant -
+ than the other vector databases.
+To learn more about how Supabase Vector can help you store vector embeddings at scale and build AI apps with ease, [reach out to us](https://forms.supabase.com/enterprise).
+
## Tech stack
-Mendable's tech stack includes React, Next.js, Express, Vercel, and Supabase.
+- React
+- Vercel
+- Next.js
+- Express
+- Supabase
diff --git a/apps/www/components/LaunchWeek/7/LaunchSection/TicketBrickWall.tsx b/apps/www/components/LaunchWeek/7/LaunchSection/TicketBrickWall.tsx
index ea7922d61f4..aadbdc5ca35 100644
--- a/apps/www/components/LaunchWeek/7/LaunchSection/TicketBrickWall.tsx
+++ b/apps/www/components/LaunchWeek/7/LaunchSection/TicketBrickWall.tsx
@@ -35,7 +35,7 @@ export default function TicketBrickWall({ users }: Props) {
{isMobile && }