Files
supabase/apps/reference/docs/about.md
2022-08-01 13:43:55 +02:00

12 KiB

id, slug, sidebar_label, sidebar_position
id slug sidebar_label sidebar_position
about / About 2

Reference Documentation

This section of the docs provides technical descriptions of the products and how to use them.

There are two main sections:

  • Supabase Reference Docs - describes to use the tools with integrated integrated libraries.
  • Tools Reference Docs - describes to use the tools with modular libraries.

Modularity

Supabase is modular. While it may seem like a single tool, it is actually a suite of tools that are composed on top of a PostgreSQL database. This offers several advantages:

  • Each tool scales independently.
  • Each tool can be self-hosted.
  • Developers can disable tools which are not required.
  • Each tool is focused on a single task to minimize complexity.

This is a similar approach to any Enterprise-grade system with an additional focus on modularity: while some companies might cut-corners, Supabase makes modularity a priority.

Architecture

  • Database
    • PostgreSQL is an object-relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance.
    • Coonection Pooling: PgBouncer is a lightweight connection pooler for PostgreSQL.
    • postgres-meta is a RESTful API for managing your Postgres, allowing you to fetch tables, add roles, and run queries, etc.
  • Auth
  • APIs
    • Websockets: Realtime is an Elixir server that allows you to listen to PostgreSQL inserts, updates, and deletes using websockets. Realtime polls Postgres' built-in replication functionality for database changes, converts changes to JSON, then broadcasts the JSON over websockets to authorized clients.
    • REST: PostgREST is a web server that turns your PostgreSQL database directly into a RESTful API
    • GraphQL: pg_graphql adds GraphQL support to your PostgreSQL database.
    • Edge Functions: Deno is a modern and secure runtime for JavaScript, TypeScript, and WebAssembly.
    • Reverse Proxy: Kong is a cloud-native API gateway.
  • File Storage
    • Storage provides a RESTful interface for managing Files stored in S3, using Postgres to manage permissions.

Open source

Each part of the Supabase ecosystem is open source. Wherever possible, we support existing tools rather than developing from scratch.

We choose tools which are OSI Compliant, with a strong bias towards MIT, Apache 2.0, and PostgreSQL licenses. Everything we open source is licensed with one of these 3 licenses:

  • MIT for client libraries
  • Apache 2.0 for API servers
  • PostgreSQL for any Postgres-related tooling

Client Libraries

Supabase provides client libraries for building your products. Our approach for client libraries is modular. Each sub-library is a standalone implementation for a single system.

For example, our supabase-js library is a wrapper around five smaller libraries:

  • postgrest-js (REST API)
  • gotrue-js (Authentication)
  • storage-js (File Storage)
  • realtime-js (Websockets)
  • functions-js (Edge Functions)

Community

Supabase officially supports the Javascript libraries, and all other libraries are community-maintained. This is one way that we try to support and foster an open source ecosystem.

Supabase Tool: PostgREST GoTrue Realtime Storage Edge Functions
JavaScript (TypeScript) supabase-js postgrest-js gotrue-js realtime-js storage-js functions-js
Dart supabase-dart postgrest-dart gotrue-dart realtime-dart storage-dart functions-dart
Flutter supabase-flutter - - - - -
Community
C# supabase-csharp postgrest-csharp gotrue-csharp realtime-csharp storage-csharp -
Go - postgrest-go - - storage-go -
Java - - gotrue-java - - -
Kotlin - postgrest-kt gotrue-kt - - -
Python supabase-py postgrest-py gotrue-py realtime-py storage-py -
Ruby supabase-rb postgrest-rb - - - -
Rust - postgrest-rs - - - -
Swift supabase-swift postgrest-swift gotrue-swift realtime-swift storage-swift -