From 69ce2d800475a6aa3b1a9ecfe046ba29ba1d6fd2 Mon Sep 17 00:00:00 2001 From: Francesco Sansalvadore Date: Tue, 10 Jun 2025 12:40:55 +0200 Subject: [PATCH] update www content (#36191) change positioning --- README.md | 2 +- apps/docs/app/contributing/content.mdx | 2 +- apps/docs/app/layout.tsx | 2 +- apps/docs/public/favicon/manifest.json | 2 +- apps/studio/public/favicon/manifest.json | 2 +- apps/ui-library/public/favicon/manifest.json | 2 +- .../_alternatives/supabase-vs-firebase.mdx | 4 +- apps/www/components/CustomerStories/index.tsx | 4 +- .../www/components/Enterprise/SingleQuote.tsx | 43 --------------- apps/www/components/Hero/Hero.tsx | 2 +- apps/www/components/Sections/SingleQuote.tsx | 52 +++++++++++++++++++ apps/www/data/home/content.tsx | 2 +- .../products/database/extensions-examples.js | 2 +- apps/www/data/tweets/Tweets.json | 18 ------- apps/www/pages/_app.tsx | 2 +- apps/www/pages/auth.tsx | 22 ++++++++ apps/www/pages/beta.tsx | 2 +- apps/www/pages/blog.tsx | 2 +- apps/www/pages/careers.tsx | 2 +- apps/www/pages/database.tsx | 37 ++++++++++--- apps/www/pages/edge-functions.tsx | 22 ++++++++ apps/www/pages/enterprise.tsx | 2 +- apps/www/pages/realtime.tsx | 40 +++++++++++--- apps/www/pages/solutions/switch-from-neon.tsx | 2 +- apps/www/pages/storage.tsx | 34 ++++++++++-- apps/www/public/favicon/manifest.json | 2 +- package.json | 2 +- 27 files changed, 210 insertions(+), 100 deletions(-) delete mode 100644 apps/www/components/Enterprise/SingleQuote.tsx create mode 100644 apps/www/components/Sections/SingleQuote.tsx diff --git a/README.md b/README.md index 2d77008776..e74a9fd281 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ # Supabase -[Supabase](https://supabase.com) is an open source Firebase alternative. We're building the features of Firebase using enterprise-grade open source tools. +[Supabase](https://supabase.com) is the Postgres development platform. We're building the features of Firebase using enterprise-grade open source tools. - [x] Hosted Postgres Database. [Docs](https://supabase.com/docs/guides/database) - [x] Authentication and Authorization. [Docs](https://supabase.com/docs/guides/auth) diff --git a/apps/docs/app/contributing/content.mdx b/apps/docs/app/contributing/content.mdx index 221952b059..d56648eb1f 100644 --- a/apps/docs/app/contributing/content.mdx +++ b/apps/docs/app/contributing/content.mdx @@ -472,7 +472,7 @@ void main() async { The InfoTooltip component is used to add more context to a word or phrase via tooltip. ```mdx -Supabase +Supabase ``` ## Partials diff --git a/apps/docs/app/layout.tsx b/apps/docs/app/layout.tsx index 1074889fa2..5f4042a381 100644 --- a/apps/docs/app/layout.tsx +++ b/apps/docs/app/layout.tsx @@ -16,7 +16,7 @@ const metadata: Metadata = { applicationName: 'Supabase Docs', title: 'Supabase Docs', description: - 'Supabase is an open source Firebase alternative providing all the backend features you need to build a product.', + 'Supabase is the Postgres development platform providing all the backend features you need to build a product.', metadataBase: new URL('https://supabase.com'), icons: genFaviconData(BASE_PATH), robots: { diff --git a/apps/docs/public/favicon/manifest.json b/apps/docs/public/favicon/manifest.json index 4efcf18e2e..b3de4e47ba 100644 --- a/apps/docs/public/favicon/manifest.json +++ b/apps/docs/public/favicon/manifest.json @@ -1,7 +1,7 @@ { "name": "Supabase", "short_name": "Supabase", - "description": "The open source Firebase alternative.", + "description": "The Postgres Development Platform.", "display": "standalone", "theme_color": "#1C1C1C", "background_color": "#1C1C1C", diff --git a/apps/studio/public/favicon/manifest.json b/apps/studio/public/favicon/manifest.json index 4efcf18e2e..b3de4e47ba 100644 --- a/apps/studio/public/favicon/manifest.json +++ b/apps/studio/public/favicon/manifest.json @@ -1,7 +1,7 @@ { "name": "Supabase", "short_name": "Supabase", - "description": "The open source Firebase alternative.", + "description": "The Postgres Development Platform.", "display": "standalone", "theme_color": "#1C1C1C", "background_color": "#1C1C1C", diff --git a/apps/ui-library/public/favicon/manifest.json b/apps/ui-library/public/favicon/manifest.json index 4efcf18e2e..b3de4e47ba 100644 --- a/apps/ui-library/public/favicon/manifest.json +++ b/apps/ui-library/public/favicon/manifest.json @@ -1,7 +1,7 @@ { "name": "Supabase", "short_name": "Supabase", - "description": "The open source Firebase alternative.", + "description": "The Postgres Development Platform.", "display": "standalone", "theme_color": "#1C1C1C", "background_color": "#1C1C1C", diff --git a/apps/www/_alternatives/supabase-vs-firebase.mdx b/apps/www/_alternatives/supabase-vs-firebase.mdx index 2ed8ec1883..3bb86c83e1 100644 --- a/apps/www/_alternatives/supabase-vs-firebase.mdx +++ b/apps/www/_alternatives/supabase-vs-firebase.mdx @@ -1,6 +1,6 @@ --- title: Supabase vs Firebase -description: Supabase is an Open Source Firebase Alternative with a SQL based Database, Auth, and Cloud Functions +description: Supabase is the Postgres development platform with a SQL based Database, Auth, and Cloud Functions author: ant_wilson tags: - comparison @@ -18,7 +18,7 @@ Firebase also offers other things that web developers find useful like an auth s ## What is Supabase? -Supabase is an open source firebase alternative, but instead of being built around a document-based datastore, Supabase offers a relational database management system called PostgreSQL. This comes with a few advantages: +Supabase is the Postgres development platform. Instead of being built around a document-based datastore, Supabase offers a relational database management system called PostgreSQL. This comes with a few advantages: - Itโ€™s open source, so there is zero lock in. - You can query it with SQL, a proven and powerful query language. diff --git a/apps/www/components/CustomerStories/index.tsx b/apps/www/components/CustomerStories/index.tsx index c28ed8e150..6dbc535caf 100644 --- a/apps/www/components/CustomerStories/index.tsx +++ b/apps/www/components/CustomerStories/index.tsx @@ -21,8 +21,8 @@ const CustomerStories = () => (
= ({ id: sectionId, quote, className }) => { - return ( - - {quote.text} -
- {quote.logo &&
{quote.logo}
} - {quote.author} - {quote.role} - {quote.avatar && ( - -
{quote.avatar}
- - )} -
-
- ) -} - -export default SingleQuote diff --git a/apps/www/components/Hero/Hero.tsx b/apps/www/components/Hero/Hero.tsx index 18dd713e64..bacfc87799 100644 --- a/apps/www/components/Hero/Hero.tsx +++ b/apps/www/components/Hero/Hero.tsx @@ -27,7 +27,7 @@ const Hero = () => { Scale to millions

- Supabase is an open source Firebase alternative.{' '} + Supabase is the Postgres development platform.{' '}
Start your project with a Postgres database, Authentication, instant APIs, Edge Functions, Realtime subscriptions, Storage, and Vector embeddings. diff --git a/apps/www/components/Sections/SingleQuote.tsx b/apps/www/components/Sections/SingleQuote.tsx new file mode 100644 index 0000000000..39524471c4 --- /dev/null +++ b/apps/www/components/Sections/SingleQuote.tsx @@ -0,0 +1,52 @@ +import Link from 'next/link' +import React, { FC } from 'react' +import { cn } from 'ui' + +import SectionContainer from '~/components/Layouts/SectionContainer' + +interface Props { + id: string + quote: Quote + className?: string +} + +type Quote = { + text: string + author: string + logo?: string | JSX.Element + role: string + avatar?: string | JSX.Element + link?: string +} + +const SingleQuote: FC = ({ id: sectionId, quote, className }) => { + const MaybeLink = ({ children, href }: { children: React.ReactNode; href?: string }) => { + if (href) { + return ( + + {children} + + ) + } + return children + } + + return ( + + {quote.text} + +

+ {quote.logo &&
{quote.logo}
} + {quote.author} + {quote.role} + {quote.avatar &&
{quote.avatar}
} +
+ +
+ ) +} + +export default SingleQuote diff --git a/apps/www/data/home/content.tsx b/apps/www/data/home/content.tsx index 4b67dc9d4e..91b022596c 100644 --- a/apps/www/data/home/content.tsx +++ b/apps/www/data/home/content.tsx @@ -16,7 +16,7 @@ export default { ), subheading: ( <> - Supabase is an open source Firebase alternative.
+ Supabase is the Postgres development platform.
Start your project with a Postgres database, Authentication, instant APIs, Edge Functions, Realtime subscriptions, Storage, and Vector embeddings. diff --git a/apps/www/data/products/database/extensions-examples.js b/apps/www/data/products/database/extensions-examples.js index b974eeb111..e35602844b 100644 --- a/apps/www/data/products/database/extensions-examples.js +++ b/apps/www/data/products/database/extensions-examples.js @@ -16,7 +16,7 @@ AND city.name = 'Gotham'; }, { lang: 'sql', - title: 'Crypto', + title: 'Cryptographic', code: `-- This can be run in the SQL editor psql CREATE EXTENSION pgcrypto; diff --git a/apps/www/data/tweets/Tweets.json b/apps/www/data/tweets/Tweets.json index 3d37e6ed84..e678bf7e23 100644 --- a/apps/www/data/tweets/Tweets.json +++ b/apps/www/data/tweets/Tweets.json @@ -107,12 +107,6 @@ "handle": "nasiscoe", "img_url": "/images/twitter-profiles/nc2Ms5hH_400x400.jpg" }, - { - "text": "I'm trying @supabase, Firebase alternative that uses PostgreSQL (and you can use GraphQL too) in the cloud. It's incredible ๐Ÿ˜", - "url": "https://twitter.com/JP__Gallegos/status/1365699468109242374", - "handle": "JP__Gallegos", - "img_url": "/images/twitter-profiles/1PH2mt6v_400x400.jpg" - }, { "text": "Check out this amazing product @supabase. A must give try #newidea #opportunity", "url": "https://twitter.com/digitaldaswani/status/1364447219642814464", @@ -161,12 +155,6 @@ "handle": "Elsolo244", "img_url": "/images/twitter-profiles/v6citnk33y2wpeyzrq05_400x400.jpeg" }, - { - "text": "Honestly Supabase is such a killer Firebase alternative.", - "url": "https://twitter.com/XPCheese/status/1360229397735895043", - "handle": "XPCheese", - "img_url": "/images/twitter-profiles/eYP6YXr7_400x400.jpg" - }, { "text": "I think you'll love @supabase :-) Open-source, PostgreSQL-based & zero magic.", "url": "https://twitter.com/zippoxer/status/1360021315852328961", @@ -238,11 +226,5 @@ "url": "https://twitter.com/jasonbarone/status/1356765411832922115?s=20", "handle": "jasonbarone", "img_url": "/images/twitter-profiles/6zCnwpvi_400x400.jpg" - }, - { - "text": "I just learned about @supabase and im in love ๐Ÿ˜ Supabase is an open source Firebase alternative! EarListen (& react) to database changes ๐Ÿ’ Manage users & permissions ๐Ÿ”ง Simple UI for database interaction", - "url": "https://twitter.com/0xBanana/status/1373677301905362948", - "handle": "0xBanana", - "img_url": "/images/twitter-profiles/pgHIGqZ0_400x400.jpg" } ] diff --git a/apps/www/pages/_app.tsx b/apps/www/pages/_app.tsx index 982d272174..deeb335606 100644 --- a/apps/www/pages/_app.tsx +++ b/apps/www/pages/_app.tsx @@ -32,7 +32,7 @@ export default function App({ Component, pageProps }: AppProps) { useThemeSandbox() - const site_title = `${APP_NAME} | The Open Source Firebase Alternative` + const site_title = `${APP_NAME} | The Postgres Development Platform.` const { basePath } = useRouter() const isDarkLaunchWeek = useDarkLaunchWeeks() diff --git a/apps/www/pages/auth.tsx b/apps/www/pages/auth.tsx index 22ef21e7a3..f1a2a9c4e9 100644 --- a/apps/www/pages/auth.tsx +++ b/apps/www/pages/auth.tsx @@ -22,6 +22,7 @@ import AuthProviders from '~/data/auth.json' const SplitCodeBlockCarousel = dynamic( () => import('~/components/Carousels/SplitCodeBlockCarousel') ) +const SingleQuote = dynamic(() => import('~/components/Sections/SingleQuote')) const CTABanner = dynamic(() => import('~/components/CTABanner')) const FeatureColumn = dynamic(() => import('~/components/FeatureColumn')) const APISection = dynamic(() => import('~/components/Sections/APISection')) @@ -150,6 +151,27 @@ function AuthPage() {
+ + ), + }} + /> + { >
-

Supabase is an open source Firebase alternative.

+

Supabase is the Postgres development platform.

Today, we're moving to Beta

diff --git a/apps/www/pages/blog.tsx b/apps/www/pages/blog.tsx index 7b23c2ff15..430b2922b4 100644 --- a/apps/www/pages/blog.tsx +++ b/apps/www/pages/blog.tsx @@ -24,7 +24,7 @@ function Blog(props: any) { const isList = view === 'list' const router = useRouter() - const meta_title = 'Supabase Blog: Open Source Firebase alternative Blog' + const meta_title = 'Supabase Blog: the Postgres development platform' const meta_description = 'Get all your Supabase News on the Supabase blog.' return ( diff --git a/apps/www/pages/careers.tsx b/apps/www/pages/careers.tsx index ddd928c532..f7ad937b33 100644 --- a/apps/www/pages/careers.tsx +++ b/apps/www/pages/careers.tsx @@ -176,7 +176,7 @@ const CareerPage: NextPage = ({ jobs, placeholderJob, contribu What is Supabase

- Supabase is an open source Firebase alternative, built by developers for + Supabase is the Postgres development platform, built by developers for developers. Supabase adds auth, realtime, storage, restful APIs, and edge functions to Postgres without a single line of code. Supabase was born-remote. Having a globally distributed, open source company is our secret weapon to diff --git a/apps/www/pages/database.tsx b/apps/www/pages/database.tsx index 9b8a1b578b..b33273df52 100644 --- a/apps/www/pages/database.tsx +++ b/apps/www/pages/database.tsx @@ -30,6 +30,7 @@ const SplitCodeBlockCarousel = dynamic( () => import('~/components/Carousels/SplitCodeBlockCarousel') ) const FeatureColumn = dynamic(() => import('~/components/FeatureColumn')) +const SingleQuote = dynamic(() => import('~/components/Sections/SingleQuote')) const DefaultLayout = dynamic(() => import('~/components/Layouts/Default')) const SectionContainer = dynamic(() => import('~/components/Layouts/SectionContainer')) const ProductIcon = dynamic(() => import('~/components/ProductIcon')) @@ -76,13 +77,13 @@ function Database() { title={MainProducts['database'].name} h1={[ - Open Source SQL Database + Itโ€™s just Postgres
(without the hassle)
, ]} subheader={[ - 'Every Supabase project is a dedicated PostgreSQL database, trusted by millions of developers.', - "PostgreSQL is one of the world's most scalable databases.", + 'Every Supabase project is a dedicated Postgres database, trusted by millions of developers.', + "Postgres is one of the world's most scalable databases.", ]} image={[ postgresql icon

@@ -127,8 +128,8 @@ function Database() { -

Built-in Auth

-

Leveraging PostgreSQL's proven Row Level Security.

+

Secure by default

+

Leveraging Postgres's proven Row Level Security.

Integrated with JWT authentication which controls exactly what your users can access. @@ -150,7 +151,27 @@ function Database() { - + + ), + }} + /> + + @@ -225,7 +246,7 @@ function Database() { handle="@jim_bisenius" key="@jim_bisenius" img_url={`${basePath}/images/twitter-profiles/rLgwUZSB_400x400.jpg`} - quote="@MongoDB or @MySQL?!?! Please, let me introduce you to @supabase and the wonderful world of @PostgreSQL before it's too late!!" + quote="@MongoDB or @MySQL?!?! Please, let me introduce you to @supabase and the wonderful world of @Postgres before it's too late!!" />, ]} /> diff --git a/apps/www/pages/edge-functions.tsx b/apps/www/pages/edge-functions.tsx index 0bd3f68f6b..6142ff1197 100644 --- a/apps/www/pages/edge-functions.tsx +++ b/apps/www/pages/edge-functions.tsx @@ -12,11 +12,13 @@ import SectionContainer from '~/components/Layouts/SectionContainer' import ProductHeader from '~/components/Sections/ProductHeader2' import HighlightColumns from '~/components/Sections/HighlightColumns' import ProductsNav from '~/components/Products/ProductsNav' +import Image from 'next/image' const ExamplesCarousel = dynamic(() => import('~/components/Examples/ExamplesCarousel')) const GlobalPresenceSection = dynamic( () => import('~/components/Products/Functions/GlobalPresenceSection') ) +const SingleQuote = dynamic(() => import('~/components/Sections/SingleQuote')) const LocalDXGrid = dynamic(() => import('~/components/Products/Functions/LocalDXGrid')) const ProductsCta = dynamic(() => import('~/components/Sections/ProductsCta2')) const TimedAccordionPanels = dynamic(() => import('~/components/Sections/TimedAccordionPanels')) @@ -49,6 +51,26 @@ function EdgeFunctions() { {...pageData.heroSection} footer={} /> + + ), + }} + />

diff --git a/apps/www/pages/enterprise.tsx b/apps/www/pages/enterprise.tsx index 01462b0eaf..af3f3d73d6 100644 --- a/apps/www/pages/enterprise.tsx +++ b/apps/www/pages/enterprise.tsx @@ -12,7 +12,7 @@ const EnterpriseUseCases = dynamic(() => import('components/Enterprise/UseCases' const EnterprisePerformance = dynamic(() => import('components/Enterprise/Performance')) const EnterpriseSecurity = dynamic(() => import('components/Enterprise/Security')) const EnterpriseSupport = dynamic(() => import('components/Enterprise/Support')) -const EnterpriseQuote = dynamic(() => import('components/Enterprise/SingleQuote')) +const EnterpriseQuote = dynamic(() => import('~/components/Sections/SingleQuote')) const CTAForm = dynamic(() => import('components/Enterprise/CTAForm')) const Enterprise: NextPage = () => ( diff --git a/apps/www/pages/realtime.tsx b/apps/www/pages/realtime.tsx index 8a75a9618c..4cbebc7cd3 100644 --- a/apps/www/pages/realtime.tsx +++ b/apps/www/pages/realtime.tsx @@ -1,21 +1,27 @@ -import ApiExamples from 'data/products/realtime/api-examples' -import MainProducts from '~/data/MainProducts' +import 'swiper/css' +import RealtimeStyles from '~/styles/realtime.module.css' + +import dynamic from 'next/dynamic' import { NextSeo } from 'next-seo' import Link from 'next/link' import { useRouter } from 'next/router' -import { Button, Image } from 'ui' +import { Grid, Layers, Menu } from 'lucide-react' +import Image from 'next/image' + +import { Button } from 'ui' import CTABanner from '~/components/CTABanner' import DefaultLayout from '~/components/Layouts/Default' import SectionContainer from '~/components/Layouts/SectionContainer' import ProductsNav from '~/components/Products/ProductsNav' import APISection from '~/components/Sections/APISection' import ProductHeader from '~/components/Sections/ProductHeader' -import RealtimeStyles from '~/styles/realtime.module.css' import RealtimeShowcase from '~/components/Realtime/realtime-showcase' -import { Grid, Layers, Menu } from 'lucide-react' +import ApiExamples from 'data/products/realtime/api-examples' +import MainProducts from '~/data/MainProducts' import { PRODUCT_NAMES } from 'shared-data/products' -import 'swiper/css' + +const SingleQuote = dynamic(() => import('~/components/Sections/SingleQuote')) const Cursor = ({ className = '', color = 'none' }) => { return ( @@ -181,6 +187,28 @@ function RealtimePage() {
+ + + ), + }} + /> +

What you can build with Realtime

diff --git a/apps/www/pages/solutions/switch-from-neon.tsx b/apps/www/pages/solutions/switch-from-neon.tsx index 37e8d0c85a..c77e1a1f56 100644 --- a/apps/www/pages/solutions/switch-from-neon.tsx +++ b/apps/www/pages/solutions/switch-from-neon.tsx @@ -6,7 +6,7 @@ import Layout from '~/components/Layouts/Default' import content from '~/data/solutions/neon' const ProductHeader = dynamic(() => import('~/components/Sections/ProductHeader2')) -const SingleQuote = dynamic(() => import('~/components/Enterprise/SingleQuote')) +const SingleQuote = dynamic(() => import('~/components/Sections/SingleQuote')) const FeaturesSection = dynamic(() => import('~/components/Solutions/FeaturesSection')) const PlatformSection = dynamic(() => import('~/components/Solutions/PlatformSection')) const DXSection = dynamic(() => import('~/components/Solutions/DeveloperExperienceSection')) diff --git a/apps/www/pages/storage.tsx b/apps/www/pages/storage.tsx index 8b972b4ce0..e19726016a 100644 --- a/apps/www/pages/storage.tsx +++ b/apps/www/pages/storage.tsx @@ -9,16 +9,21 @@ import { useRouter } from 'next/router' import { PRODUCT_NAMES } from 'shared-data/products' import { Button, Image } from 'ui' import ImageCarousel from '~/components/Carousels/ImageCarousel' -import SplitCodeBlockCarousel from '~/components/Carousels/SplitCodeBlockCarousel' -import CTABanner from '~/components/CTABanner' -import ExampleCard from '~/components/ExampleCard' import FeatureColumn from '~/components/FeatureColumn' import DefaultLayout from '~/components/Layouts/Default' import SectionContainer from '~/components/Layouts/SectionContainer' import ProductIcon from '~/components/ProductIcon' import ProductsNav from '~/components/Products/ProductsNav' -import APISection from '~/components/Sections/APISection' import ProductHeader from '~/components/Sections/ProductHeader' +import dynamic from 'next/dynamic' + +const APISection = dynamic(() => import('~/components/Sections/APISection')) +const SingleQuote = dynamic(() => import('~/components/Sections/SingleQuote')) +const ExampleCard = dynamic(() => import('~/components/ExampleCard')) +const SplitCodeBlockCarousel = dynamic( + () => import('~/components/Carousels/SplitCodeBlockCarousel') +) +const CTABanner = dynamic(() => import('~/components/CTABanner')) function StoragePage() { // base path for images @@ -123,6 +128,27 @@ function StoragePage() {
+ + ), + }} + /> +

Sleek dashboard for managing your media

diff --git a/apps/www/public/favicon/manifest.json b/apps/www/public/favicon/manifest.json index 4efcf18e2e..abbce24df6 100644 --- a/apps/www/public/favicon/manifest.json +++ b/apps/www/public/favicon/manifest.json @@ -1,7 +1,7 @@ { "name": "Supabase", "short_name": "Supabase", - "description": "The open source Firebase alternative.", + "description": "The Postgres development platform.", "display": "standalone", "theme_color": "#1C1C1C", "background_color": "#1C1C1C", diff --git a/package.json b/package.json index 95c1737dd0..f7e280f61a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "supabase", - "description": "The open source Firebase alternative.", + "description": "The Postgres Development Platform.", "version": "0.0.0", "author": "Supabase, Inc.", "license": "Apache-2.0",