// Import Swiper styles import 'swiper/css' import { NextSeo } from 'next-seo' import dynamic from 'next/dynamic' import NextImage from 'next/image' import Link from 'next/link' import { useRouter } from 'next/router' import { useState } from 'react' import { Swiper, SwiperSlide } from 'swiper/react' import { Badge, Button, Image, Tabs } from 'ui' // data import ApiExamplesData from 'data/products/database/api-examples' import ExtensionsExamplesData from 'data/products/database/extensions-examples' import SqlViewCarouselData from 'data/products/database/sql-view-carousel.json' import TableViewCarouselData from 'data/products/database/table-view-carousel.json' import MainProducts from '~/data/MainProducts' import HighlightsCards from '~/data/products/database/highlight-cards' import { ArrowUpRight, X } from 'lucide-react' import { PRODUCT_NAMES } from 'shared-data/products' import { TweetCard } from 'ui-patterns/TweetCard' import ProductsNav from '~/components/Products/ProductsNav' import ProductHeader from '~/components/Sections/ProductHeader' import { ETLVisual } from '~/data/products/database/etl-visual' const NewFeatureCard = dynamic(() => import('~/components/NewFeatureCard')) const ImageCarousel = dynamic(() => import('~/components/Carousels/ImageCarousel')) 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')) const APISection = dynamic(() => import('~/components/Sections/APISection')) const GithubExamples = dynamic(() => import('~/components/Sections/GithubExamples')) function Database() { // base path for images const { basePath } = useRouter() const [dashboardSwiper, setDashboardSwiper] = useState(undefined) const [dashboardSwiperActiveIndex, setDashboardSwiperActiveIndex] = useState(0) function handleDashboardSwiperNav(e: number) { setDashboardSwiperActiveIndex(e) // @ts-ignore dashboardSwiper.slideTo(e) } const meta_title = 'Database | Open source SQL Database' const meta_description = 'With supabase’s APIs and easy to use dashboard, it makes designing relational databases easy.' return ( <> It’s just Postgres
(without the hassle) , ]} subheader={[ 'Every Supabase project is a dedicated Postgres database, trusted by millions of developers.', "Postgres is one of the world's most scalable databases.", ]} image={[ database header, ]} documentation_url={'/docs/guides/database'} />

Just Postgres

Every Supabase project is a dedicated Postgres database.

100% portable. Bring your existing Postgres database, or migrate away at any time.

Secure by default

Leveraging Postgres's proven Row Level Security.

Integrated with JWT authentication which controls exactly what your users can access.

Realtime enabled

Data-change listeners over websockets.

Subscribe and react to database changes, milliseconds after they happen.

), }} /> {/* ÷ */}

Easy to use dashboard

The simplicity of a Table Editor, or the power of a SQL editor. Your choice.

handleDashboardSwiperNav(Number(e))} type="underlined" tabBarStyle={{ marginBottom: 0, // borderBottom: '1px solid #dedede', }} // block >
, ]} /> , ]} />

Supabase ETL

Stream your Postgres data to external systems.

Automatically replicate your database changes to external data warehouses and analytics platforms in real-time, without pipelines.

{/* TODO: Add ETL illustration */}
We introspect your database and provide instant APIs. Focus on building your product, while Supabase handles the CRUD.

, ]} footer={[

Available libraries:

Javascript Flutter Python C# Kotlin Swift
, ]} documentation_link={'/docs/guides/database'} />

Extend your database

Supabase works natively with Postgres extensions.

Choose from a huge collection of Postgres extensions, enabled with a single click.

) } export default Database