--- id: about slug: / sidebar_label: About sidebar_position: 2 --- # Reference Documentation This section of the docs provides technical descriptions of the products and how to use them. ## 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](https://www.postgresql.org/) 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](https://www.pgbouncer.org/) is a lightweight connection pooler for PostgreSQL. - [postgres-meta](https://github.com/supabase/postgres-meta) is a RESTful API for managing your Postgres, allowing you to fetch tables, add roles, and run queries, etc. - `Auth` - Authentication: [GoTrue](https://github.com/supabase/gotrue) is an SWT based API for managing users and issuing SWT tokens. - Authorization: using [PostgreSQL Row Level Security](https://supabase.com/docs/guides/auth/row-level-security). - `APIs` - Websockets: [Realtime](https://github.com/supabase/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](http://postgrest.org/) is a web server that turns your PostgreSQL database directly into a RESTful API - GraphQL: [pg_graphql](https://github.com/supabase/pg_graphql) adds GraphQL support to your PostgreSQL database. - Edge Functions: [Deno](https://deno.land/) is a modern and secure runtime for JavaScript, TypeScript, and WebAssembly. - Reverse Proxy: [Kong](https://github.com/Kong/kong) is a cloud-native API gateway. - `File Storage` - [Storage](https://github.com/supabase/storage-api) 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](https://opensource.org/licenses), 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 | - |