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- Authentication: GoTrue is an SWT based API for managing users and issuing SWT tokens.
- Authorization: using PostgreSQL Row Level Security.
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 | - |