supabase-community / supabase-kt

A Kotlin Multiplatform Client for Supabase.
https://supabase.com/docs/reference/kotlin/introduction
MIT License
327 stars 33 forks source link
android auth authentication community compose compose-multiplatform jetpack-compose kotlin kotlin-android kotlin-js kotlin-multiplatform kotlin-native postgres supabase

supabase-kt

A Kotlin Multiplatform Client for Supabase.

For information about supported Kotlin targets, see the corresponding module README.

Migrating from version 1.4.X to 2.0.0

Note: WASM build available: 2.4.2-wasm0

Kotlin https://img.shields.io/badge/ktor-2.3.11-blue slack

Links

Documentation

Getting started with Android and Supabase [Video]

Quickstart

Tutorial: Build a Product Management Android App with Jetpack Compose

Dokka documentation for the latest version

Troubleshooting

Installation

Add one or more modules to your project

Available modules: gotrue-kt, postgrest-kt, functions-kt, storage-kt, realtime-kt, apollo-graphql, compose-auth, compose-auth-ui, coil-integration, imageloader-integration

dependencies {
    implementation("io.github.jan-tennert.supabase:[module]:VERSION")
}

If you use multiple modules, you can use the bom dependency to get the correct versions for all modules:

implementation(platform("io.github.jan-tennert.supabase:bom:VERSION"))
implementation("io.github.jan-tennert.supabase:[module]")

Add a Ktor Client Engine to each of your Kotlin targets

You can find a list of available engines here. If you plan to use the Realtime dependency, make sure to check if the engine supports WebSockets. See the Ktor docs for more information.

implementation("io.ktor:ktor-client-[engine]:VERSION")
Multiplatform Example For targets: `jvm`, `android`, `js`, `ios` ```kotlin val commonMain by getting { dependencies { //supabase modules } } val jvmMain by getting { dependencies { implementation("io.ktor:ktor-client-cio:KTOR_VERSION") } } val androidMain by getting { dependsOn(jvmMain) } val jsMain by getting { dependencies { implementation("io.ktor:ktor-client-js:KTOR_VERSION") } } val iosMain by getting { dependencies { implementation("io.ktor:ktor-client-darwin:KTOR_VERSION") } } ```

Note: It is recommended to use the same Ktor version as supabase-kt:

https://img.shields.io/badge/ktor-2.3.11-blue

Main Modules

Authentication

Database/Postgrest

Storage

Realtime

Functions (Edge Functions)

Plugins

Apollo GraphQL integration - Creates an Apollo GraphQL Client for interacting with the Supabase API.

Compose Auth - Provides easy Native Google & Apple Auth for Compose Multiplatform targets.

Compose Auth UI - Provides UI Components for Compose Multiplatform.

Coil Integration - Provides a Coil Integration for displaying images stored in Supabase Storage.

Compose-ImageLoader Integration - Provides a Compose ImageLoader Integration for displaying images stored in Supabase Storage.

Samples

Need help?

Videos

Contribution

How to contribute

  1. Fork the repository
  2. Create a branch
  3. Make your changes
  4. Submit a pull request with your new branch

Credits