--- 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 -