Repository: supabase-community/supabase-kt
Pull request #732 (2024-09-18 15:25:06)

Rename GoTrue to Auth
## What kind of change does this PR introduce?

Bug fix, feature, docs update, ...

## What is the current behavior?

Please link any relevant issues here.

## What is the new behavior?

Feel free to include screenshots if it includes visual changes.

## Additional context

Add any other context or screenshots.



Patch:
diff --git a/.github/labeler.yml b/.github/labeler.yml
index f596b56f..09f5ba21 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -16,7 +16,7 @@ postgrest:
 
 auth:
   - changed-files:
-      - any-glob-to-any-file: GoTrue/src/**
+      - any-glob-to-any-file: Auth/src/**
 
 storage:
   - changed-files:
diff --git a/Auth/README.md b/Auth/README.md
new file mode 100644
index 00000000..b6dcd812
--- /dev/null
+++ b/Auth/README.md
@@ -0,0 +1,70 @@
+# Supabase-kt Auth
+
+**Only available for versions 3.0.0 and above. For versions below 3.0.0, checkout the [old README](/GoTrue)**
+
+Extends Supabase-kt with a multiplatform Auth client.
+
+Supported targets:
+
+| Target | **JVM** | **Android** | **JS** | **Wasm** | **Apple** | **Windows** | **Linux** |
+|--------|---------|-------------|--------|----------|-----------|-------------|-----------|
+| Status | ✅       | ✅           | ✅      | ✅        | ☑️*       | ☑️          | ☑️        |
+
+> ☑️ = No built-in OAuth support. Linux has no support for persistent session storage.
+
+\* **iOS and macOS are fully supported**
+
+<details>
+
+<summary>In-depth Kotlin targets</summary>
+
+**JS**: Browser, NodeJS
+
+**Wasm**: wasm-js
+
+**Apple:**
+
+- iOS: iosArm64, iosSimulatorArm64, iosX64
+
+- tvOS: tvosArm64, tvosX64, tvosSimulatorArm64
+
+- watchOS: watchosArm64, watchosX64, watchosSimulatorArm64
+
+- MacOS: macosX64, macosArm64
+
+**Windows**: mingwX64
+
+**Linux**: linuxX64
+
+</details>
+
+# Installation
+
+Newest version: [![](https://img.shields.io/github/release/supabase-community/supabase-kt?label=)](https://github.com/supabase-community/supabase-kt/releases)
+
+```kotlin
+dependencies {
+    implementation("io.github.jan-tennert.supabase:auth-kt:VERSION")
+}
+```
+
+Install the plugin in your SupabaseClient. See the [documentation](https://supabase.com/docs/reference/kotlin/initializing) for more information
+
+```kotlin
+val supabase = createSupabaseClient(
+    supabaseUrl = "https://id.supabase.co",
+    supabaseKey = "apikey"
+) {
+
+    //...
+
+    install(Auth) {
+        // settings
+    }
+
+}
+```
+
+# Usage
+
+See [Auth documentation](https://supabase.com/docs/reference/kotlin/auth-signup) for usage
diff --git a/GoTrue/build.gradle.kts b/Auth/build.gradle.kts
similarity index 100%
rename from GoTrue/build.gradle.kts
rename to Auth/build.gradle.kts
diff --git a/GoTrue/src/androidMain/AndroidManifest.xml b/Auth/src/androidMain/AndroidManifest.xml
similarity index 84%
rename from GoTrue/src/androidMain/AndroidManifest.xml
rename to Auth/src/androidMain/AndroidManifest.xml
index bc8472a0..088c82e2 100644
--- a/GoTrue/src/androidMain/AndroidManifest.xml
+++ b/Auth/src/androidMain/AndroidManifest.xml
@@ -9,7 +9,7 @@
                 android:exported="false"
                 tools:node="merge">
             <meta-data
-                    android:name="io.github.jan.supabase.gotrue.SupabaseInitializer"
+                    android:name="io.github.jan.supabase.auth.SupabaseInitializer"
                     android:value="androidx.startup" />
         </provider>
     </application>
diff --git a/GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/Android.kt b/Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/Android.kt
similarity index 95%
rename from GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/Android.kt
rename to Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/Android.kt
index 004e0b72..c1378f8a 100644
--- a/GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/Android.kt
+++ b/Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/Android.kt
@@ -1,11 +1,11 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import android.content.Intent
 import android.net.Uri
 import androidx.browser.customtabs.CustomTabsIntent
 import io.github.jan.supabase.SupabaseClient
 import io.github.jan.supabase.annotations.SupabaseInternal
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.user.UserSession
 import kotlinx.coroutines.launch
 
 internal fun openUrl(uri: Uri, action: ExternalAuthAction) {
diff --git a/GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt b/Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
similarity index 94%
rename from GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
rename to Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
index 2d11fd69..53e8534f 100644
--- a/GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
+++ b/Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
@@ -1,7 +1,7 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import androidx.browser.customtabs.CustomTabsIntent
-import io.github.jan.supabase.gotrue.providers.ExternalAuthConfig
+import io.github.jan.supabase.auth.providers.ExternalAuthConfig
 import io.github.jan.supabase.plugins.CustomSerializationConfig
 
 /**
diff --git a/GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.android.kt b/Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.android.kt
similarity index 70%
rename from GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.android.kt
rename to Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.android.kt
index 9ddc4717..2c8887fe 100644
--- a/GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.android.kt
+++ b/Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.android.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 
diff --git a/GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/Utils.android.kt b/Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/Utils.android.kt
similarity index 84%
rename from GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/Utils.android.kt
rename to Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/Utils.android.kt
index 0a1b89cd..fa42ca94 100644
--- a/GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/Utils.android.kt
+++ b/Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/Utils.android.kt
@@ -1,9 +1,9 @@
 @file:Suppress("RedundantSuspendModifier")
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import android.net.Uri
 import io.github.jan.supabase.SupabaseClient
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.user.UserSession
 
 internal actual suspend fun SupabaseClient.openExternalUrl(url: String) {
     openUrl(Uri.parse(url), auth.config.defaultExternalAuthAction)
diff --git a/Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt b/Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
new file mode 100644
index 00000000..267e6bf6
--- /dev/null
+++ b/Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
@@ -0,0 +1,6 @@
+package io.github.jan.supabase.auth.providers
+
+/**
+ * Configuration for external authentication providers like Google, Twitter, etc.
+ */
+actual class ExternalAuthConfig: ExternalAuthConfigDefaults()
\ No newline at end of file
diff --git a/GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt b/Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
similarity index 98%
rename from GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
rename to Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
index e14b0c8d..458a00b3 100644
--- a/GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
+++ b/Auth/src/androidMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import android.content.Context
 import androidx.lifecycle.DefaultLifecycleObserver
diff --git a/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/Apple.kt b/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/Apple.kt
similarity index 94%
rename from GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/Apple.kt
rename to Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/Apple.kt
index 063aad94..c83e19a4 100644
--- a/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/Apple.kt
+++ b/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/Apple.kt
@@ -1,7 +1,7 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.SupabaseClient
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.user.UserSession
 import io.github.jan.supabase.logging.d
 import kotlinx.coroutines.launch
 import platform.Foundation.NSURL
diff --git a/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.apple.kt b/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.apple.kt
similarity index 70%
rename from GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.apple.kt
rename to Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.apple.kt
index 9ddc4717..2c8887fe 100644
--- a/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.apple.kt
+++ b/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.apple.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 
diff --git a/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/Utils.apple.kt b/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/Utils.apple.kt
similarity index 66%
rename from GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/Utils.apple.kt
rename to Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/Utils.apple.kt
index af0b81ec..38015ada 100644
--- a/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/Utils.apple.kt
+++ b/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/Utils.apple.kt
@@ -1,7 +1,7 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.SupabaseClient
-import io.github.jan.supabase.gotrue.providers.openUrl
+import io.github.jan.supabase.auth.providers.openUrl
 import platform.Foundation.NSURL
 
 internal actual suspend fun SupabaseClient.openExternalUrl(url: String) {
diff --git a/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt b/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
new file mode 100644
index 00000000..267e6bf6
--- /dev/null
+++ b/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
@@ -0,0 +1,6 @@
+package io.github.jan.supabase.auth.providers
+
+/**
+ * Configuration for external authentication providers like Google, Twitter, etc.
+ */
+actual class ExternalAuthConfig: ExternalAuthConfigDefaults()
\ No newline at end of file
diff --git a/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/providers/OAuthProvider.kt b/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/providers/OAuthProvider.kt
new file mode 100644
index 00000000..a6f9c142
--- /dev/null
+++ b/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/providers/OAuthProvider.kt
@@ -0,0 +1,5 @@
+package io.github.jan.supabase.auth.providers
+
+import platform.Foundation.NSURL
+
+internal expect fun openUrl(url: NSURL)
\ No newline at end of file
diff --git a/GoTrue/src/jvmMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt b/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
similarity index 50%
rename from GoTrue/src/jvmMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
rename to Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
index 95b10631..a1b15555 100644
--- a/GoTrue/src/jvmMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
+++ b/Auth/src/appleMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AccessToken.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AccessToken.kt
similarity index 92%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AccessToken.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AccessToken.kt
index 0a3a4a53..ed2a5e6c 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AccessToken.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AccessToken.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.SupabaseClient
 import io.github.jan.supabase.annotations.SupabaseInternal
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/Auth.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/Auth.kt
similarity index 96%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/Auth.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/Auth.kt
index 3ed62db8..fcca38ce 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/Auth.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/Auth.kt
@@ -1,22 +1,22 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.SupabaseClient
+import io.github.jan.supabase.auth.admin.AdminApi
+import io.github.jan.supabase.auth.exception.AuthRestException
+import io.github.jan.supabase.auth.exception.AuthWeakPasswordException
+import io.github.jan.supabase.auth.mfa.MfaApi
+import io.github.jan.supabase.auth.providers.AuthProvider
+import io.github.jan.supabase.auth.providers.ExternalAuthConfigDefaults
+import io.github.jan.supabase.auth.providers.Google
+import io.github.jan.supabase.auth.providers.OAuthProvider
+import io.github.jan.supabase.auth.providers.builtin.Email
+import io.github.jan.supabase.auth.providers.builtin.Phone
+import io.github.jan.supabase.auth.providers.builtin.SSO
+import io.github.jan.supabase.auth.user.UserInfo
+import io.github.jan.supabase.auth.user.UserSession
+import io.github.jan.supabase.auth.user.UserUpdateBuilder
 import io.github.jan.supabase.exceptions.HttpRequestException
 import io.github.jan.supabase.exceptions.RestException
-import io.github.jan.supabase.gotrue.admin.AdminApi
-import io.github.jan.supabase.gotrue.exception.AuthRestException
-import io.github.jan.supabase.gotrue.exception.AuthWeakPasswordException
-import io.github.jan.supabase.gotrue.mfa.MfaApi
-import io.github.jan.supabase.gotrue.providers.AuthProvider
-import io.github.jan.supabase.gotrue.providers.ExternalAuthConfigDefaults
-import io.github.jan.supabase.gotrue.providers.Google
-import io.github.jan.supabase.gotrue.providers.OAuthProvider
-import io.github.jan.supabase.gotrue.providers.builtin.Email
-import io.github.jan.supabase.gotrue.providers.builtin.Phone
-import io.github.jan.supabase.gotrue.providers.builtin.SSO
-import io.github.jan.supabase.gotrue.user.UserInfo
-import io.github.jan.supabase.gotrue.user.UserSession
-import io.github.jan.supabase.gotrue.user.UserUpdateBuilder
 import io.github.jan.supabase.logging.SupabaseLogger
 import io.github.jan.supabase.logging.e
 import io.github.jan.supabase.plugins.CustomSerializationPlugin
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
similarity index 99%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
index 6527da5e..f0b3c6b6 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.SupabaseClientBuilder
 import io.github.jan.supabase.SupabaseSerializer
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AuthExtensions.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AuthExtensions.kt
similarity index 94%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AuthExtensions.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AuthExtensions.kt
index 91f89af5..fb589bd7 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AuthExtensions.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AuthExtensions.kt
@@ -1,7 +1,7 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
+import io.github.jan.supabase.auth.user.UserSession
 import io.github.jan.supabase.encodeToJsonElement
-import io.github.jan.supabase.gotrue.user.UserSession
 import io.github.jan.supabase.logging.d
 import kotlinx.serialization.json.jsonObject
 
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AuthImpl.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AuthImpl.kt
similarity index 95%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AuthImpl.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AuthImpl.kt
index 71c77e60..06365eb2 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AuthImpl.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AuthImpl.kt
@@ -1,28 +1,28 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.SupabaseClient
 import io.github.jan.supabase.annotations.SupabaseExperimental
 import io.github.jan.supabase.annotations.SupabaseInternal
+import io.github.jan.supabase.auth.admin.AdminApi
+import io.github.jan.supabase.auth.admin.AdminApiImpl
+import io.github.jan.supabase.auth.exception.AuthRestException
+import io.github.jan.supabase.auth.exception.AuthSessionMissingException
+import io.github.jan.supabase.auth.exception.AuthWeakPasswordException
+import io.github.jan.supabase.auth.mfa.MfaApi
+import io.github.jan.supabase.auth.mfa.MfaApiImpl
+import io.github.jan.supabase.auth.providers.AuthProvider
+import io.github.jan.supabase.auth.providers.ExternalAuthConfigDefaults
+import io.github.jan.supabase.auth.providers.OAuthProvider
+import io.github.jan.supabase.auth.providers.builtin.OTP
+import io.github.jan.supabase.auth.providers.builtin.SSO
+import io.github.jan.supabase.auth.user.UserInfo
+import io.github.jan.supabase.auth.user.UserSession
+import io.github.jan.supabase.auth.user.UserUpdateBuilder
 import io.github.jan.supabase.bodyOrNull
 import io.github.jan.supabase.exceptions.BadRequestRestException
 import io.github.jan.supabase.exceptions.RestException
 import io.github.jan.supabase.exceptions.UnauthorizedRestException
 import io.github.jan.supabase.exceptions.UnknownRestException
-import io.github.jan.supabase.gotrue.admin.AdminApi
-import io.github.jan.supabase.gotrue.admin.AdminApiImpl
-import io.github.jan.supabase.gotrue.exception.AuthRestException
-import io.github.jan.supabase.gotrue.exception.AuthSessionMissingException
-import io.github.jan.supabase.gotrue.exception.AuthWeakPasswordException
-import io.github.jan.supabase.gotrue.mfa.MfaApi
-import io.github.jan.supabase.gotrue.mfa.MfaApiImpl
-import io.github.jan.supabase.gotrue.providers.AuthProvider
-import io.github.jan.supabase.gotrue.providers.ExternalAuthConfigDefaults
-import io.github.jan.supabase.gotrue.providers.OAuthProvider
-import io.github.jan.supabase.gotrue.providers.builtin.OTP
-import io.github.jan.supabase.gotrue.providers.builtin.SSO
-import io.github.jan.supabase.gotrue.user.UserInfo
-import io.github.jan.supabase.gotrue.user.UserSession
-import io.github.jan.supabase.gotrue.user.UserUpdateBuilder
 import io.github.jan.supabase.logging.d
 import io.github.jan.supabase.logging.e
 import io.github.jan.supabase.logging.i
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AuthenticatedSupabaseApi.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AuthenticatedSupabaseApi.kt
similarity index 98%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AuthenticatedSupabaseApi.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AuthenticatedSupabaseApi.kt
index 424afc34..aca2fd11 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/AuthenticatedSupabaseApi.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/AuthenticatedSupabaseApi.kt
@@ -1,5 +1,5 @@
 @file:Suppress("UndocumentedPublicClass", "UndocumentedPublicFunction")
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.SupabaseClient
 import io.github.jan.supabase.annotations.SupabaseInternal
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/CodeVerifierCache.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/CodeVerifierCache.kt
similarity index 96%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/CodeVerifierCache.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/CodeVerifierCache.kt
index 8f1d3227..8a1cbff6 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/CodeVerifierCache.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/CodeVerifierCache.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import kotlinx.atomicfu.AtomicRef
 import kotlinx.atomicfu.atomic
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/GoTrueErrorResponse.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/GoTrueErrorResponse.kt
similarity index 98%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/GoTrueErrorResponse.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/GoTrueErrorResponse.kt
index 101d8034..83d8381d 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/GoTrueErrorResponse.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/GoTrueErrorResponse.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import kotlinx.serialization.KSerializer
 import kotlinx.serialization.Serializable
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/JsonUtils.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/JsonUtils.kt
similarity index 92%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/JsonUtils.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/JsonUtils.kt
index 588c84a3..82a4b12d 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/JsonUtils.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/JsonUtils.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import kotlinx.serialization.json.JsonObjectBuilder
 import kotlinx.serialization.json.put
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/OtpType.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/OtpType.kt
similarity index 97%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/OtpType.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/OtpType.kt
index 5104e2b7..dbda5b06 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/OtpType.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/OtpType.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 /**
  * OTPs (One Time Passwords) are used to authenticate users via email or phone.
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/PKCE.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/PKCE.kt
similarity index 95%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/PKCE.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/PKCE.kt
index 3ef700bd..76b138fb 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/PKCE.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/PKCE.kt
@@ -1,5 +1,5 @@
 @file:Suppress("MatchingDeclarationName")
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import korlibs.crypto.SHA256
 import korlibs.crypto.SecureRandom
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/PostgrestFilterDSL.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/PostgrestFilterDSL.kt
similarity index 67%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/PostgrestFilterDSL.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/PostgrestFilterDSL.kt
index 8f40ed9c..98135283 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/PostgrestFilterDSL.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/PostgrestFilterDSL.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 /**
  * Used to mark Postgrest filter DSL functions
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.kt
similarity index 87%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.kt
index 40b794ce..80ac1c1d 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/SessionManager.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/SessionManager.kt
similarity index 90%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/SessionManager.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/SessionManager.kt
index 74354385..14703dcc 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/SessionManager.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/SessionManager.kt
@@ -1,6 +1,6 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.user.UserSession
 import kotlinx.atomicfu.AtomicRef
 import kotlinx.atomicfu.atomic
 
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/SessionStatus.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/SessionStatus.kt
similarity index 95%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/SessionStatus.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/SessionStatus.kt
index 0e2e2dd6..73e04f6d 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/SessionStatus.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/SessionStatus.kt
@@ -1,7 +1,7 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
-import io.github.jan.supabase.gotrue.providers.AuthProvider
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.providers.AuthProvider
+import io.github.jan.supabase.auth.user.UserSession
 
 /**
  * Represents the status of the current session in [Auth]
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/SignOutScope.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/SignOutScope.kt
similarity index 92%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/SignOutScope.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/SignOutScope.kt
index c1cca8f1..5992199e 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/SignOutScope.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/SignOutScope.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 /**
  * Represents the scope of a sign-out action.
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/Utils.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/Utils.kt
similarity index 92%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/Utils.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/Utils.kt
index 803e1997..bb3f4ce3 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/Utils.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/Utils.kt
@@ -1,8 +1,8 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.SupabaseClient
 import io.github.jan.supabase.annotations.SupabaseInternal
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.user.UserSession
 import io.github.jan.supabase.logging.d
 import io.ktor.client.request.HttpRequestBuilder
 import kotlinx.coroutines.launch
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/admin/AdminApi.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/admin/AdminApi.kt
similarity index 95%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/admin/AdminApi.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/admin/AdminApi.kt
index 6b7d946e..0eb69881 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/admin/AdminApi.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/admin/AdminApi.kt
@@ -1,11 +1,11 @@
-package io.github.jan.supabase.gotrue.admin
+package io.github.jan.supabase.auth.admin
 
 import io.github.jan.supabase.annotations.SupabaseInternal
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.AuthImpl
-import io.github.jan.supabase.gotrue.SignOutScope
-import io.github.jan.supabase.gotrue.user.UserInfo
-import io.github.jan.supabase.gotrue.user.UserMfaFactor
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.AuthImpl
+import io.github.jan.supabase.auth.SignOutScope
+import io.github.jan.supabase.auth.user.UserInfo
+import io.github.jan.supabase.auth.user.UserMfaFactor
 import io.github.jan.supabase.putJsonObject
 import io.github.jan.supabase.safeBody
 import io.github.jan.supabase.supabaseJson
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/admin/AdminUserBuilder.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/admin/AdminUserBuilder.kt
similarity index 98%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/admin/AdminUserBuilder.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/admin/AdminUserBuilder.kt
index df16e581..d7e1b981 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/admin/AdminUserBuilder.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/admin/AdminUserBuilder.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.admin
+package io.github.jan.supabase.auth.admin
 
 import kotlinx.serialization.KSerializer
 import kotlinx.serialization.Serializable
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/admin/AdminUserUpdateBuilder.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/admin/AdminUserUpdateBuilder.kt
similarity index 97%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/admin/AdminUserUpdateBuilder.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/admin/AdminUserUpdateBuilder.kt
index b227c195..e15152ef 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/admin/AdminUserUpdateBuilder.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/admin/AdminUserUpdateBuilder.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.admin
+package io.github.jan.supabase.auth.admin
 
 import kotlinx.serialization.SerialName
 import kotlinx.serialization.Serializable
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/admin/LinkType.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/admin/LinkType.kt
similarity index 98%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/admin/LinkType.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/admin/LinkType.kt
index d37fda7d..843c67e5 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/admin/LinkType.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/admin/LinkType.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.admin
+package io.github.jan.supabase.auth.admin
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 import kotlinx.serialization.SerialName
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/exception/AuthErrorCode.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/exception/AuthErrorCode.kt
similarity index 98%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/exception/AuthErrorCode.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/exception/AuthErrorCode.kt
index 48187d10..7d309768 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/exception/AuthErrorCode.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/exception/AuthErrorCode.kt
@@ -1,5 +1,5 @@
 @file:Suppress("UndocumentedPublicProperty")
-package io.github.jan.supabase.gotrue.exception
+package io.github.jan.supabase.auth.exception
 
 /**
  * Enum class for error codes returned by the Auth API.
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/exception/AuthRestException.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/exception/AuthRestException.kt
similarity index 94%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/exception/AuthRestException.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/exception/AuthRestException.kt
index 6dbd18a9..f5c123a1 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/exception/AuthRestException.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/exception/AuthRestException.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.exception
+package io.github.jan.supabase.auth.exception
 
 import io.github.jan.supabase.exceptions.RestException
 
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/exception/AuthSessionMissingException.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/exception/AuthSessionMissingException.kt
similarity index 87%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/exception/AuthSessionMissingException.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/exception/AuthSessionMissingException.kt
index 74379c06..f5a180f1 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/exception/AuthSessionMissingException.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/exception/AuthSessionMissingException.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.exception
+package io.github.jan.supabase.auth.exception
 
 /**
  * Exception thrown when a session is not found.
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/exception/AuthWeakPasswordException.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/exception/AuthWeakPasswordException.kt
similarity index 90%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/exception/AuthWeakPasswordException.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/exception/AuthWeakPasswordException.kt
index 9b5b2e4c..d9d1a6dc 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/exception/AuthWeakPasswordException.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/exception/AuthWeakPasswordException.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.exception
+package io.github.jan.supabase.auth.exception
 
 /**
  * Exception thrown on sign-up if the password is too weak
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/AuthenticatorAssuranceLevel.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/AuthenticatorAssuranceLevel.kt
similarity index 96%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/AuthenticatorAssuranceLevel.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/AuthenticatorAssuranceLevel.kt
index d223a8ce..2dff23a4 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/AuthenticatorAssuranceLevel.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/AuthenticatorAssuranceLevel.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.mfa
+package io.github.jan.supabase.auth.mfa
 
 /**
  * The assurance level of a session
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/FactorType.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/FactorType.kt
similarity index 98%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/FactorType.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/FactorType.kt
index 93bcd11b..c5b7072b 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/FactorType.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/FactorType.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.mfa
+package io.github.jan.supabase.auth.mfa
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 import io.github.jan.supabase.supabaseJson
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/MfaApi.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/MfaApi.kt
similarity index 96%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/MfaApi.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/MfaApi.kt
index 22b2fc9a..73e2bdd2 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/MfaApi.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/MfaApi.kt
@@ -1,11 +1,11 @@
-package io.github.jan.supabase.gotrue.mfa
-
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.AuthImpl
-import io.github.jan.supabase.gotrue.SessionStatus
-import io.github.jan.supabase.gotrue.providers.builtin.Phone
-import io.github.jan.supabase.gotrue.user.UserMfaFactor
-import io.github.jan.supabase.gotrue.user.UserSession
+package io.github.jan.supabase.auth.mfa
+
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.AuthImpl
+import io.github.jan.supabase.auth.SessionStatus
+import io.github.jan.supabase.auth.providers.builtin.Phone
+import io.github.jan.supabase.auth.user.UserMfaFactor
+import io.github.jan.supabase.auth.user.UserSession
 import io.github.jan.supabase.putJsonObject
 import io.github.jan.supabase.safeBody
 import io.ktor.client.call.body
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/MfaChallenge.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/MfaChallenge.kt
similarity index 93%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/MfaChallenge.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/MfaChallenge.kt
index e72739ad..15128f8f 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/MfaChallenge.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/MfaChallenge.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.mfa
+package io.github.jan.supabase.auth.mfa
 
 import kotlinx.datetime.Instant
 import kotlinx.serialization.SerialName
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/MfaFactor.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/MfaFactor.kt
similarity index 86%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/MfaFactor.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/MfaFactor.kt
index f9c5c52c..d1d66998 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/MfaFactor.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/MfaFactor.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.mfa
+package io.github.jan.supabase.auth.mfa
 
 /**
  * Represents an enrolled MFA Factor
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/MfaStatus.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/MfaStatus.kt
similarity index 89%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/MfaStatus.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/MfaStatus.kt
index 0b89a6df..f92bfcdd 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/mfa/MfaStatus.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/mfa/MfaStatus.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.mfa
+package io.github.jan.supabase.auth.mfa
 
 /**
  * Represents the MFA status of a user.
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/AuthProvider.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/AuthProvider.kt
similarity index 91%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/AuthProvider.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/AuthProvider.kt
index 881a7641..f5346858 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/AuthProvider.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/AuthProvider.kt
@@ -1,7 +1,7 @@
-package io.github.jan.supabase.gotrue.providers
+package io.github.jan.supabase.auth.providers
 
 import io.github.jan.supabase.SupabaseClient
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.user.UserSession
 
 /**
  * An authentication provider
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
similarity index 87%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
index 7fffe5f2..d25fb73e 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
@@ -1,6 +1,6 @@
-package io.github.jan.supabase.gotrue.providers
+package io.github.jan.supabase.auth.providers
 
-import io.github.jan.supabase.gotrue.Auth
+import io.github.jan.supabase.auth.Auth
 
 /**
  * Configuration for external authentication providers like Google, Twitter, etc.
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/IDTokenProvider.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/IDTokenProvider.kt
similarity index 94%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/IDTokenProvider.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/IDTokenProvider.kt
index a15eebb5..6dd56a25 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/IDTokenProvider.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/IDTokenProvider.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.providers
+package io.github.jan.supabase.auth.providers
 
 import kotlinx.serialization.KSerializer
 import kotlinx.serialization.Serializable
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/OAuthProvider.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/OAuthProvider.kt
similarity index 86%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/OAuthProvider.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/OAuthProvider.kt
index 1b8a1f84..f50d0f7f 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/OAuthProvider.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/OAuthProvider.kt
@@ -1,9 +1,9 @@
-package io.github.jan.supabase.gotrue.providers
+package io.github.jan.supabase.auth.providers
 
 import io.github.jan.supabase.SupabaseClient
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.startExternalAuth
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.startExternalAuth
+import io.github.jan.supabase.auth.user.UserSession
 
 /**
  * Represents an OAuth provider.
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/Providers.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/Providers.kt
similarity index 97%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/Providers.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/Providers.kt
index 54f19f1b..698532e3 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/Providers.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/Providers.kt
@@ -1,5 +1,5 @@
 @file:Suppress("UndocumentedPublicClass")
-package io.github.jan.supabase.gotrue.providers
+package io.github.jan.supabase.auth.providers
 
 data object Google : IDTokenProvider() {
 
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/CaptchaTokenSerializer.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/CaptchaTokenSerializer.kt
similarity index 95%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/CaptchaTokenSerializer.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/CaptchaTokenSerializer.kt
index b6eca4b6..d5e6014d 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/CaptchaTokenSerializer.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/CaptchaTokenSerializer.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.providers.builtin
+package io.github.jan.supabase.auth.providers.builtin
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 import kotlinx.serialization.KSerializer
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/DefaultAuthProvider.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/DefaultAuthProvider.kt
similarity index 86%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/DefaultAuthProvider.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/DefaultAuthProvider.kt
index 7dff8128..b328cb29 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/DefaultAuthProvider.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/DefaultAuthProvider.kt
@@ -1,17 +1,17 @@
-package io.github.jan.supabase.gotrue.providers.builtin
+package io.github.jan.supabase.auth.providers.builtin
 
 import io.github.jan.supabase.SupabaseClient
 import io.github.jan.supabase.annotations.SupabaseExperimental
 import io.github.jan.supabase.annotations.SupabaseInternal
-import io.github.jan.supabase.gotrue.AuthImpl
-import io.github.jan.supabase.gotrue.FlowType
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.generateCodeChallenge
-import io.github.jan.supabase.gotrue.generateCodeVerifier
-import io.github.jan.supabase.gotrue.providers.AuthProvider
-import io.github.jan.supabase.gotrue.putCodeChallenge
-import io.github.jan.supabase.gotrue.redirectTo
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.AuthImpl
+import io.github.jan.supabase.auth.FlowType
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.generateCodeChallenge
+import io.github.jan.supabase.auth.generateCodeVerifier
+import io.github.jan.supabase.auth.providers.AuthProvider
+import io.github.jan.supabase.auth.putCodeChallenge
+import io.github.jan.supabase.auth.redirectTo
+import io.github.jan.supabase.auth.user.UserSession
 import io.github.jan.supabase.putJsonObject
 import io.github.jan.supabase.supabaseJson
 import io.ktor.client.call.body
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/Email.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/Email.kt
similarity index 92%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/Email.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/Email.kt
index 8d217c89..5fb777aa 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/Email.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/Email.kt
@@ -1,7 +1,7 @@
-package io.github.jan.supabase.gotrue.providers.builtin
+package io.github.jan.supabase.auth.providers.builtin
 
+import io.github.jan.supabase.auth.user.UserInfo
 import io.github.jan.supabase.exceptions.SupabaseEncodingException
-import io.github.jan.supabase.gotrue.user.UserInfo
 import io.github.jan.supabase.supabaseJson
 import kotlinx.serialization.ExperimentalSerializationApi
 import kotlinx.serialization.MissingFieldException
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/IDToken.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/IDToken.kt
similarity index 86%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/IDToken.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/IDToken.kt
index 655158cd..877fd5a4 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/IDToken.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/IDToken.kt
@@ -1,12 +1,12 @@
-package io.github.jan.supabase.gotrue.providers.builtin
+package io.github.jan.supabase.auth.providers.builtin
 
+import io.github.jan.supabase.auth.providers.Apple
+import io.github.jan.supabase.auth.providers.Azure
+import io.github.jan.supabase.auth.providers.Facebook
+import io.github.jan.supabase.auth.providers.Google
+import io.github.jan.supabase.auth.providers.IDTokenProvider
+import io.github.jan.supabase.auth.user.UserInfo
 import io.github.jan.supabase.exceptions.SupabaseEncodingException
-import io.github.jan.supabase.gotrue.providers.Apple
-import io.github.jan.supabase.gotrue.providers.Azure
-import io.github.jan.supabase.gotrue.providers.Facebook
-import io.github.jan.supabase.gotrue.providers.Google
-import io.github.jan.supabase.gotrue.providers.IDTokenProvider
-import io.github.jan.supabase.gotrue.user.UserInfo
 import io.github.jan.supabase.supabaseJson
 import kotlinx.serialization.ExperimentalSerializationApi
 import kotlinx.serialization.MissingFieldException
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/OTP.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/OTP.kt
similarity index 87%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/OTP.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/OTP.kt
index 57753b51..3875f0d6 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/OTP.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/OTP.kt
@@ -1,16 +1,16 @@
-package io.github.jan.supabase.gotrue.providers.builtin
+package io.github.jan.supabase.auth.providers.builtin
 
 import io.github.jan.supabase.SupabaseClient
 import io.github.jan.supabase.SupabaseSerializer
+import io.github.jan.supabase.auth.AuthImpl
+import io.github.jan.supabase.auth.FlowType
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.generateCodeChallenge
+import io.github.jan.supabase.auth.generateCodeVerifier
+import io.github.jan.supabase.auth.providers.AuthProvider
+import io.github.jan.supabase.auth.putCaptchaToken
+import io.github.jan.supabase.auth.user.UserSession
 import io.github.jan.supabase.encodeToJsonElement
-import io.github.jan.supabase.gotrue.AuthImpl
-import io.github.jan.supabase.gotrue.FlowType
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.generateCodeChallenge
-import io.github.jan.supabase.gotrue.generateCodeVerifier
-import io.github.jan.supabase.gotrue.providers.AuthProvider
-import io.github.jan.supabase.gotrue.putCaptchaToken
-import io.github.jan.supabase.gotrue.user.UserSession
 import io.github.jan.supabase.putJsonObject
 import kotlinx.serialization.json.JsonObject
 import kotlinx.serialization.json.buildJsonObject
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/Phone.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/Phone.kt
similarity index 96%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/Phone.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/Phone.kt
index e8e6f798..0718dacb 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/Phone.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/Phone.kt
@@ -1,7 +1,7 @@
-package io.github.jan.supabase.gotrue.providers.builtin
+package io.github.jan.supabase.auth.providers.builtin
 
+import io.github.jan.supabase.auth.user.UserInfo
 import io.github.jan.supabase.exceptions.SupabaseEncodingException
-import io.github.jan.supabase.gotrue.user.UserInfo
 import io.github.jan.supabase.supabaseJson
 import kotlinx.serialization.ExperimentalSerializationApi
 import kotlinx.serialization.KSerializer
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/SSO.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/SSO.kt
similarity index 87%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/SSO.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/SSO.kt
index f4c4361a..783e75ce 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/providers/builtin/SSO.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/providers/builtin/SSO.kt
@@ -1,10 +1,10 @@
-package io.github.jan.supabase.gotrue.providers.builtin
+package io.github.jan.supabase.auth.providers.builtin
 
 import io.github.jan.supabase.SupabaseClient
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.providers.AuthProvider
-import io.github.jan.supabase.gotrue.startExternalAuth
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.providers.AuthProvider
+import io.github.jan.supabase.auth.startExternalAuth
+import io.github.jan.supabase.auth.user.UserSession
 import kotlinx.serialization.Serializable
 
 /**
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/user/Identity.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/user/Identity.kt
similarity index 94%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/user/Identity.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/user/Identity.kt
index d6f1d71b..46219e37 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/user/Identity.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/user/Identity.kt
@@ -1,5 +1,5 @@
 @file:Suppress("UndocumentedPublicClass", "UndocumentedPublicFunction", "UndocumentedPublicProperty")
-package io.github.jan.supabase.gotrue.user
+package io.github.jan.supabase.auth.user
 
 
 import kotlinx.serialization.SerialName
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/user/UserInfo.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/user/UserInfo.kt
similarity index 98%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/user/UserInfo.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/user/UserInfo.kt
index dca8f948..8bb59ed7 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/user/UserInfo.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/user/UserInfo.kt
@@ -1,5 +1,5 @@
 @file:Suppress("UndocumentedPublicClass", "UndocumentedPublicFunction", "UndocumentedPublicProperty")
-package io.github.jan.supabase.gotrue.user
+package io.github.jan.supabase.auth.user
 
 import kotlinx.datetime.Instant
 import kotlinx.serialization.SerialName
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/user/UserSession.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/user/UserSession.kt
similarity index 95%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/user/UserSession.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/user/UserSession.kt
index 33fb742f..12ef9f9e 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/user/UserSession.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/user/UserSession.kt
@@ -1,5 +1,5 @@
 @file:Suppress("UndocumentedPublicClass", "UndocumentedPublicFunction", "UndocumentedPublicProperty")
-package io.github.jan.supabase.gotrue.user
+package io.github.jan.supabase.auth.user
 
 import kotlinx.datetime.Clock
 import kotlinx.datetime.Instant
diff --git a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/user/UserUpdateBuilder.kt b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/user/UserUpdateBuilder.kt
similarity index 94%
rename from GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/user/UserUpdateBuilder.kt
rename to Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/user/UserUpdateBuilder.kt
index 07e484ac..a4fef6c7 100644
--- a/GoTrue/src/commonMain/kotlin/io/github/jan/supabase/gotrue/user/UserUpdateBuilder.kt
+++ b/Auth/src/commonMain/kotlin/io/github/jan/supabase/auth/user/UserUpdateBuilder.kt
@@ -1,8 +1,8 @@
-package io.github.jan.supabase.gotrue.user
+package io.github.jan.supabase.auth.user
 
 import io.github.jan.supabase.SupabaseSerializer
+import io.github.jan.supabase.auth.Auth
 import io.github.jan.supabase.encodeToJsonElement
-import io.github.jan.supabase.gotrue.Auth
 import io.github.jan.supabase.serializer.KotlinXSerializer
 import kotlinx.serialization.SerialName
 import kotlinx.serialization.Serializable
diff --git a/GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt b/Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
similarity index 93%
rename from GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
rename to Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
index 2a30aec7..5304677f 100644
--- a/GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
+++ b/Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
@@ -1,6 +1,6 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
-import io.github.jan.supabase.gotrue.server.HttpCallbackHtml
+import io.github.jan.supabase.auth.server.HttpCallbackHtml
 import io.github.jan.supabase.plugins.CustomSerializationConfig
 import kotlin.time.Duration
 import kotlin.time.Duration.Companion.minutes
diff --git a/GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/Utils.desktop.kt b/Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/Utils.desktop.kt
similarity index 79%
rename from GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/Utils.desktop.kt
rename to Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/Utils.desktop.kt
index 818987f8..2e052c0f 100644
--- a/GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/Utils.desktop.kt
+++ b/Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/Utils.desktop.kt
@@ -1,7 +1,7 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
-import io.github.jan.supabase.gotrue.server.createServer
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.server.createServer
+import io.github.jan.supabase.auth.user.UserSession
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.IO
 import kotlinx.coroutines.withContext
diff --git a/GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/server/HttpCallbackHtml.kt b/Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/server/HttpCallbackHtml.kt
similarity index 97%
rename from GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/server/HttpCallbackHtml.kt
rename to Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/server/HttpCallbackHtml.kt
index 0c44d57b..620cf256 100644
--- a/GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/server/HttpCallbackHtml.kt
+++ b/Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/server/HttpCallbackHtml.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.server
+package io.github.jan.supabase.auth.server
 
 internal object HttpCallbackHtml {
 
diff --git a/GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/server/HttpCallbackRoutes.kt b/Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/server/HttpCallbackRoutes.kt
similarity index 92%
rename from GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/server/HttpCallbackRoutes.kt
rename to Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/server/HttpCallbackRoutes.kt
index aa2b9747..45c5b657 100644
--- a/GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/server/HttpCallbackRoutes.kt
+++ b/Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/server/HttpCallbackRoutes.kt
@@ -1,7 +1,7 @@
-package io.github.jan.supabase.gotrue.server
+package io.github.jan.supabase.auth.server
 
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.user.UserSession
 import io.github.jan.supabase.logging.d
 import io.ktor.http.ContentType
 import io.ktor.http.HttpStatusCode
diff --git a/GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/server/HttpCallbackServer.kt b/Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/server/HttpCallbackServer.kt
similarity index 92%
rename from GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/server/HttpCallbackServer.kt
rename to Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/server/HttpCallbackServer.kt
index 1f00f12b..9b4facba 100644
--- a/GoTrue/src/desktopMain/kotlin/io/github/jan/supabase/gotrue/server/HttpCallbackServer.kt
+++ b/Auth/src/desktopMain/kotlin/io/github/jan/supabase/auth/server/HttpCallbackServer.kt
@@ -1,9 +1,9 @@
-package io.github.jan.supabase.gotrue.server
+package io.github.jan.supabase.auth.server
 
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.AuthImpl
-import io.github.jan.supabase.gotrue.openExternalUrl
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.AuthImpl
+import io.github.jan.supabase.auth.openExternalUrl
+import io.github.jan.supabase.auth.user.UserSession
 import io.github.jan.supabase.logging.d
 import io.ktor.http.ContentType
 import io.ktor.http.HttpStatusCode
diff --git a/GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt b/Auth/src/iosMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
similarity index 78%
rename from GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
rename to Auth/src/iosMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
index 23d7921f..b7229ecd 100644
--- a/GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
+++ b/Auth/src/iosMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.plugins.CustomSerializationConfig
 
diff --git a/GoTrue/src/iosMain/kotlin/io/github/jan/supabase/gotrue/providers/openUrl.kt b/Auth/src/iosMain/kotlin/io/github/jan/supabase/auth/providers/openUrl.kt
similarity index 81%
rename from GoTrue/src/iosMain/kotlin/io/github/jan/supabase/gotrue/providers/openUrl.kt
rename to Auth/src/iosMain/kotlin/io/github/jan/supabase/auth/providers/openUrl.kt
index b7fdaef8..123aa8a9 100644
--- a/GoTrue/src/iosMain/kotlin/io/github/jan/supabase/gotrue/providers/openUrl.kt
+++ b/Auth/src/iosMain/kotlin/io/github/jan/supabase/auth/providers/openUrl.kt
@@ -1,6 +1,6 @@
-package io.github.jan.supabase.gotrue.providers
+package io.github.jan.supabase.auth.providers
 
-import io.github.jan.supabase.gotrue.Auth
+import io.github.jan.supabase.auth.Auth
 import io.github.jan.supabase.logging.d
 import io.github.jan.supabase.logging.e
 import platform.Foundation.NSURL
diff --git a/GoTrue/src/iosMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt b/Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
similarity index 78%
rename from GoTrue/src/iosMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
rename to Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
index 23d7921f..b7229ecd 100644
--- a/GoTrue/src/iosMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
+++ b/Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.plugins.CustomSerializationConfig
 
diff --git a/GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.js.kt b/Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.js.kt
similarity index 73%
rename from GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.js.kt
rename to Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.js.kt
index 927ff28a..9243dbb8 100644
--- a/GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.js.kt
+++ b/Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.js.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 import kotlinx.browser.window
diff --git a/GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/Utils.js.kt b/Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/Utils.js.kt
similarity index 82%
rename from GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/Utils.js.kt
rename to Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/Utils.js.kt
index cec38b30..44cb623d 100644
--- a/GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/Utils.js.kt
+++ b/Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/Utils.js.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.SupabaseClient
 import kotlinx.browser.window
diff --git a/Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt b/Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
new file mode 100644
index 00000000..267e6bf6
--- /dev/null
+++ b/Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
@@ -0,0 +1,6 @@
+package io.github.jan.supabase.auth.providers
+
+/**
+ * Configuration for external authentication providers like Google, Twitter, etc.
+ */
+actual class ExternalAuthConfig: ExternalAuthConfigDefaults()
\ No newline at end of file
diff --git a/GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt b/Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
similarity index 97%
rename from GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
rename to Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
index 45aba1b1..f5eb65a3 100644
--- a/GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
+++ b/Auth/src/jsMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 import io.ktor.util.PlatformUtils.IS_BROWSER
diff --git a/GoTrue/src/jvmMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.jvm.kt b/Auth/src/jvmMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.jvm.kt
similarity index 76%
rename from GoTrue/src/jvmMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.jvm.kt
rename to Auth/src/jvmMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.jvm.kt
index 86b68e1e..4b039622 100644
--- a/GoTrue/src/jvmMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.jvm.kt
+++ b/Auth/src/jvmMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.jvm.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 
diff --git a/GoTrue/src/jvmMain/kotlin/io/github/jan/supabase/gotrue/Utils.jvm.kt b/Auth/src/jvmMain/kotlin/io/github/jan/supabase/auth/Utils.jvm.kt
similarity index 90%
rename from GoTrue/src/jvmMain/kotlin/io/github/jan/supabase/gotrue/Utils.jvm.kt
rename to Auth/src/jvmMain/kotlin/io/github/jan/supabase/auth/Utils.jvm.kt
index f5e3261c..a81e101d 100644
--- a/GoTrue/src/jvmMain/kotlin/io/github/jan/supabase/gotrue/Utils.jvm.kt
+++ b/Auth/src/jvmMain/kotlin/io/github/jan/supabase/auth/Utils.jvm.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.SupabaseClient
 import kotlinx.coroutines.Dispatchers
diff --git a/Auth/src/jvmMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt b/Auth/src/jvmMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
new file mode 100644
index 00000000..267e6bf6
--- /dev/null
+++ b/Auth/src/jvmMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
@@ -0,0 +1,6 @@
+package io.github.jan.supabase.auth.providers
+
+/**
+ * Configuration for external authentication providers like Google, Twitter, etc.
+ */
+actual class ExternalAuthConfig: ExternalAuthConfigDefaults()
\ No newline at end of file
diff --git a/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt b/Auth/src/jvmMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
similarity index 50%
rename from GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
rename to Auth/src/jvmMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
index 95b10631..a1b15555 100644
--- a/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
+++ b/Auth/src/jvmMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 
diff --git a/GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/SettingsUtil.kt b/Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/SettingsUtil.kt
similarity index 78%
rename from GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/SettingsUtil.kt
rename to Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/SettingsUtil.kt
index fde7e333..30573d80 100644
--- a/GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/SettingsUtil.kt
+++ b/Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/SettingsUtil.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 
diff --git a/GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/Utils.linux.kt b/Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/Utils.linux.kt
similarity index 82%
rename from GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/Utils.linux.kt
rename to Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/Utils.linux.kt
index 4580f900..6594987e 100644
--- a/GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/Utils.linux.kt
+++ b/Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/Utils.linux.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.SupabaseClient
 import platform.posix.system
diff --git a/GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/generateRedirectUrl.kt b/Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/generateRedirectUrl.kt
similarity index 76%
rename from GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/generateRedirectUrl.kt
rename to Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/generateRedirectUrl.kt
index 86b68e1e..4b039622 100644
--- a/GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/generateRedirectUrl.kt
+++ b/Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/generateRedirectUrl.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 
diff --git a/Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt b/Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
new file mode 100644
index 00000000..267e6bf6
--- /dev/null
+++ b/Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
@@ -0,0 +1,6 @@
+package io.github.jan.supabase.auth.providers
+
+/**
+ * Configuration for external authentication providers like Google, Twitter, etc.
+ */
+actual class ExternalAuthConfig: ExternalAuthConfigDefaults()
\ No newline at end of file
diff --git a/GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt b/Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
similarity index 86%
rename from GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
rename to Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
index d2068236..3d6b9dec 100644
--- a/GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
+++ b/Auth/src/linuxMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 import io.github.jan.supabase.logging.w
diff --git a/GoTrue/src/macosMain/kotlin/io/github/jan/supabase/gotrue/providers/openUrl.kt b/Auth/src/macosMain/kotlin/io/github/jan/supabase/auth/providers/openUrl.kt
similarity index 84%
rename from GoTrue/src/macosMain/kotlin/io/github/jan/supabase/gotrue/providers/openUrl.kt
rename to Auth/src/macosMain/kotlin/io/github/jan/supabase/auth/providers/openUrl.kt
index 96de97dd..3ff87b96 100644
--- a/GoTrue/src/macosMain/kotlin/io/github/jan/supabase/gotrue/providers/openUrl.kt
+++ b/Auth/src/macosMain/kotlin/io/github/jan/supabase/auth/providers/openUrl.kt
@@ -1,6 +1,6 @@
-package io.github.jan.supabase.gotrue.providers
+package io.github.jan.supabase.auth.providers
 
-import io.github.jan.supabase.gotrue.Auth
+import io.github.jan.supabase.auth.Auth
 import io.github.jan.supabase.logging.d
 import io.github.jan.supabase.logging.e
 import platform.AppKit.NSWorkspace
diff --git a/GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt b/Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
similarity index 73%
rename from GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
rename to Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
index ecd2559a..3d476bd2 100644
--- a/GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
+++ b/Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.plugins.CustomSerializationConfig
 
diff --git a/GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/Utils.mingw.kt b/Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/Utils.mingw.kt
similarity index 89%
rename from GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/Utils.mingw.kt
rename to Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/Utils.mingw.kt
index b741c818..1c197eb5 100644
--- a/GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/Utils.mingw.kt
+++ b/Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/Utils.mingw.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.SupabaseClient
 import kotlinx.cinterop.ExperimentalForeignApi
diff --git a/GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/generateRedirectUrl.kt b/Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/generateRedirectUrl.kt
similarity index 76%
rename from GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/generateRedirectUrl.kt
rename to Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/generateRedirectUrl.kt
index 86b68e1e..4b039622 100644
--- a/GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/generateRedirectUrl.kt
+++ b/Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/generateRedirectUrl.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 
diff --git a/GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt b/Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
similarity index 60%
rename from GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
rename to Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
index 55fea02d..990f4138 100644
--- a/GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
+++ b/Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.providers
+package io.github.jan.supabase.auth.providers
 
 /**
  * Configuration for external authentication providers like Google, Twitter, etc.
diff --git a/GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt b/Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
similarity index 86%
rename from GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
rename to Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
index eb7c34bf..61ef450f 100644
--- a/GoTrue/src/mingwMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
+++ b/Auth/src/mingwMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 import io.github.jan.supabase.logging.w
diff --git a/GoTrue/src/nonDesktopMain/kotlin/io/github/jan/supabase/gotrue/Utils.kt b/Auth/src/nonDesktopMain/kotlin/io/github/jan/supabase/auth/Utils.kt
similarity index 75%
rename from GoTrue/src/nonDesktopMain/kotlin/io/github/jan/supabase/gotrue/Utils.kt
rename to Auth/src/nonDesktopMain/kotlin/io/github/jan/supabase/auth/Utils.kt
index 7e68cf84..5f0b7caf 100644
--- a/GoTrue/src/nonDesktopMain/kotlin/io/github/jan/supabase/gotrue/Utils.kt
+++ b/Auth/src/nonDesktopMain/kotlin/io/github/jan/supabase/auth/Utils.kt
@@ -1,7 +1,7 @@
 @file:Suppress("RedundantSuspendModifier")
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.user.UserSession
 
 internal actual suspend fun Auth.startExternalAuth(
     redirectUrl: String?,
diff --git a/GoTrue/src/settingsMain/kotlin/io/github/jan/supabase/gotrue/SettingsCodeVerifierCache.kt b/Auth/src/settingsMain/kotlin/io/github/jan/supabase/auth/SettingsCodeVerifierCache.kt
similarity index 97%
rename from GoTrue/src/settingsMain/kotlin/io/github/jan/supabase/gotrue/SettingsCodeVerifierCache.kt
rename to Auth/src/settingsMain/kotlin/io/github/jan/supabase/auth/SettingsCodeVerifierCache.kt
index 875724d5..418bbac5 100644
--- a/GoTrue/src/settingsMain/kotlin/io/github/jan/supabase/gotrue/SettingsCodeVerifierCache.kt
+++ b/Auth/src/settingsMain/kotlin/io/github/jan/supabase/auth/SettingsCodeVerifierCache.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import com.russhwolf.settings.ExperimentalSettingsApi
 import com.russhwolf.settings.Settings
diff --git a/GoTrue/src/settingsMain/kotlin/io/github/jan/supabase/gotrue/SettingsSessionManager.kt b/Auth/src/settingsMain/kotlin/io/github/jan/supabase/auth/SettingsSessionManager.kt
similarity index 95%
rename from GoTrue/src/settingsMain/kotlin/io/github/jan/supabase/gotrue/SettingsSessionManager.kt
rename to Auth/src/settingsMain/kotlin/io/github/jan/supabase/auth/SettingsSessionManager.kt
index b36c9343..7d22aae9 100644
--- a/GoTrue/src/settingsMain/kotlin/io/github/jan/supabase/gotrue/SettingsSessionManager.kt
+++ b/Auth/src/settingsMain/kotlin/io/github/jan/supabase/auth/SettingsSessionManager.kt
@@ -1,9 +1,9 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import com.russhwolf.settings.ExperimentalSettingsApi
 import com.russhwolf.settings.Settings
 import com.russhwolf.settings.coroutines.toSuspendSettings
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.user.UserSession
 import io.github.jan.supabase.logging.e
 import kotlinx.serialization.encodeToString
 import kotlinx.serialization.json.Json
diff --git a/GoTrue/src/settingsMain/kotlin/io/github/jan/supabase/gotrue/SettingsUtil.kt b/Auth/src/settingsMain/kotlin/io/github/jan/supabase/auth/SettingsUtil.kt
similarity index 94%
rename from GoTrue/src/settingsMain/kotlin/io/github/jan/supabase/gotrue/SettingsUtil.kt
rename to Auth/src/settingsMain/kotlin/io/github/jan/supabase/auth/SettingsUtil.kt
index d27d661d..1b9d4b13 100644
--- a/GoTrue/src/settingsMain/kotlin/io/github/jan/supabase/gotrue/SettingsUtil.kt
+++ b/Auth/src/settingsMain/kotlin/io/github/jan/supabase/auth/SettingsUtil.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import com.russhwolf.settings.Settings
 import io.github.jan.supabase.annotations.SupabaseInternal
diff --git a/GoTrue/src/watchosMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt b/Auth/src/tvosMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
similarity index 78%
rename from GoTrue/src/watchosMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
rename to Auth/src/tvosMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
index 23d7921f..b7229ecd 100644
--- a/GoTrue/src/watchosMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
+++ b/Auth/src/tvosMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.plugins.CustomSerializationConfig
 
diff --git a/GoTrue/src/tvosMain/kotlin/io/github/jan/supabase/gotrue/providers/openUrl.kt b/Auth/src/tvosMain/kotlin/io/github/jan/supabase/auth/providers/openUrl.kt
similarity index 69%
rename from GoTrue/src/tvosMain/kotlin/io/github/jan/supabase/gotrue/providers/openUrl.kt
rename to Auth/src/tvosMain/kotlin/io/github/jan/supabase/auth/providers/openUrl.kt
index 989d6679..471b13d3 100644
--- a/GoTrue/src/tvosMain/kotlin/io/github/jan/supabase/gotrue/providers/openUrl.kt
+++ b/Auth/src/tvosMain/kotlin/io/github/jan/supabase/auth/providers/openUrl.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.providers
+package io.github.jan.supabase.auth.providers
 
 import platform.Foundation.NSURL
 
diff --git a/GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt b/Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
similarity index 78%
rename from GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
rename to Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
index 2c9c8b7f..9fd9994f 100644
--- a/GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
+++ b/Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.plugins.CustomSerializationConfig
 
diff --git a/GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.kt b/Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.kt
similarity index 76%
rename from GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.kt
rename to Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.kt
index 38514d93..1ad88fcf 100644
--- a/GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/RedirectUrl.kt
+++ b/Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/RedirectUrl.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 import kotlinx.browser.window
diff --git a/GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/Utils.wasmJs.kt b/Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/Utils.wasmJs.kt
similarity index 82%
rename from GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/Utils.wasmJs.kt
rename to Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/Utils.wasmJs.kt
index cec38b30..44cb623d 100644
--- a/GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/Utils.wasmJs.kt
+++ b/Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/Utils.wasmJs.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.SupabaseClient
 import kotlinx.browser.window
diff --git a/Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt b/Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
new file mode 100644
index 00000000..267e6bf6
--- /dev/null
+++ b/Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/providers/ExternalAuthConfig.kt
@@ -0,0 +1,6 @@
+package io.github.jan.supabase.auth.providers
+
+/**
+ * Configuration for external authentication providers like Google, Twitter, etc.
+ */
+actual class ExternalAuthConfig: ExternalAuthConfigDefaults()
\ No newline at end of file
diff --git a/GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt b/Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
similarity index 97%
rename from GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
rename to Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
index e45bee62..8137057b 100644
--- a/GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/setupPlatform.kt
+++ b/Auth/src/wasmJsMain/kotlin/io/github/jan/supabase/auth/setupPlatform.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.annotations.SupabaseInternal
 import io.ktor.util.PlatformUtils.IS_BROWSER
diff --git a/GoTrue/src/tvosMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt b/Auth/src/watchosMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
similarity index 78%
rename from GoTrue/src/tvosMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
rename to Auth/src/watchosMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
index 23d7921f..b7229ecd 100644
--- a/GoTrue/src/tvosMain/kotlin/io/github/jan/supabase/gotrue/AuthConfig.kt
+++ b/Auth/src/watchosMain/kotlin/io/github/jan/supabase/auth/AuthConfig.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue
+package io.github.jan.supabase.auth
 
 import io.github.jan.supabase.plugins.CustomSerializationConfig
 
diff --git a/GoTrue/src/watchosMain/kotlin/io/github/jan/supabase/gotrue/providers/openUrl.kt b/Auth/src/watchosMain/kotlin/io/github/jan/supabase/auth/providers/openUrl.kt
similarity index 70%
rename from GoTrue/src/watchosMain/kotlin/io/github/jan/supabase/gotrue/providers/openUrl.kt
rename to Auth/src/watchosMain/kotlin/io/github/jan/supabase/auth/providers/openUrl.kt
index f87562bc..d7e2f913 100644
--- a/GoTrue/src/watchosMain/kotlin/io/github/jan/supabase/gotrue/providers/openUrl.kt
+++ b/Auth/src/watchosMain/kotlin/io/github/jan/supabase/auth/providers/openUrl.kt
@@ -1,4 +1,4 @@
-package io.github.jan.supabase.gotrue.providers
+package io.github.jan.supabase.auth.providers
 
 import platform.Foundation.NSURL
 
diff --git a/Functions/build.gradle.kts b/Functions/build.gradle.kts
index a5837c36..324abd7f 100644
--- a/Functions/build.gradle.kts
+++ b/Functions/build.gradle.kts
@@ -15,7 +15,7 @@ kotlin {
     sourceSets {
         val commonMain by getting {
             dependencies {
-                addModules(SupabaseModule.GOTRUE, SupabaseModule.SUPABASE)
+                addModules(SupabaseModule.AUTH, SupabaseModule.SUPABASE)
             }
         }
         val commonTest by getting {
diff --git a/Functions/src/commonMain/kotlin/io/github/jan/supabase/functions/Functions.kt b/Functions/src/commonMain/kotlin/io/github/jan/supabase/functions/Functions.kt
index 5b6f8511..752f9f1f 100644
--- a/Functions/src/commonMain/kotlin/io/github/jan/supabase/functions/Functions.kt
+++ b/Functions/src/commonMain/kotlin/io/github/jan/supabase/functions/Functions.kt
@@ -3,13 +3,13 @@ package io.github.jan.supabase.functions
 import io.github.jan.supabase.SupabaseClient
 import io.github.jan.supabase.SupabaseSerializer
 import io.github.jan.supabase.annotations.SupabaseInternal
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.authenticatedSupabaseApi
 import io.github.jan.supabase.encode
 import io.github.jan.supabase.exceptions.BadRequestRestException
 import io.github.jan.supabase.exceptions.NotFoundRestException
 import io.github.jan.supabase.exceptions.RestException
 import io.github.jan.supabase.exceptions.UnauthorizedRestException
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.authenticatedSupabaseApi
 import io.github.jan.supabase.plugins.CustomSerializationConfig
 import io.github.jan.supabase.plugins.CustomSerializationPlugin
 import io.github.jan.supabase.plugins.MainConfig
diff --git a/GoTrue/README.md b/GoTrue/README.md
index 91fc42a9..aa2fddbe 100644
--- a/GoTrue/README.md
+++ b/GoTrue/README.md
@@ -1,6 +1,12 @@
+# Deprecation notice
+
+**Starting with version 3.0.0, the module is called `auth-kt`. Checkout the updated [README](/Auth)**.
+
+The `gotrue-kt` artifact will no longer be published after version 3.0.0.
+
 # Supabase-kt GoTrue
 
-Extends Supabase-kt with a multiplatform GoTrue client.
+Extends Supabase-kt with a multiplatform Auth client.
 
 Supported targets:
 
@@ -40,6 +46,8 @@ Supported targets:
 
 Newest version: [![](https://img.shields.io/github/release/supabase-community/supabase-kt?label=)](https://github.com/supabase-community/supabase-kt/releases)
 
+Versions above 3.0.0 are available under the `auth-kt` module.
+
 ```kotlin
 dependencies {
     implementation("io.github.jan-tennert.supabase:gotrue-kt:VERSION")
@@ -65,4 +73,4 @@ val supabase = createSupabaseClient(
 
 # Usage
 
-See [GoTrue documentation](https://supabase.com/docs/reference/kotlin/auth-signup) for usage
+See [Auth documentation](https://supabase.com/docs/reference/kotlin/auth-signup) for usage
diff --git a/GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt b/GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
deleted file mode 100644
index de8a14b3..00000000
--- a/GoTrue/src/androidMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package io.github.jan.supabase.gotrue.providers
-
-/**
- * Configuration for external authentication providers like Google, Twitter, etc.
- */
-actual class ExternalAuthConfig: ExternalAuthConfigDefaults()
\ No newline at end of file
diff --git a/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt b/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
deleted file mode 100644
index de8a14b3..00000000
--- a/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package io.github.jan.supabase.gotrue.providers
-
-/**
- * Configuration for external authentication providers like Google, Twitter, etc.
- */
-actual class ExternalAuthConfig: ExternalAuthConfigDefaults()
\ No newline at end of file
diff --git a/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/providers/OAuthProvider.kt b/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/providers/OAuthProvider.kt
deleted file mode 100644
index cabdc494..00000000
--- a/GoTrue/src/appleMain/kotlin/io/github/jan/supabase/gotrue/providers/OAuthProvider.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package io.github.jan.supabase.gotrue.providers
-
-import platform.Foundation.NSURL
-
-internal expect fun openUrl(url: NSURL)
\ No newline at end of file
diff --git a/GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt b/GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
deleted file mode 100644
index de8a14b3..00000000
--- a/GoTrue/src/jsMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package io.github.jan.supabase.gotrue.providers
-
-/**
- * Configuration for external authentication providers like Google, Twitter, etc.
- */
-actual class ExternalAuthConfig: ExternalAuthConfigDefaults()
\ No newline at end of file
diff --git a/GoTrue/src/jvmMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt b/GoTrue/src/jvmMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
deleted file mode 100644
index de8a14b3..00000000
--- a/GoTrue/src/jvmMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package io.github.jan.supabase.gotrue.providers
-
-/**
- * Configuration for external authentication providers like Google, Twitter, etc.
- */
-actual class ExternalAuthConfig: ExternalAuthConfigDefaults()
\ No newline at end of file
diff --git a/GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt b/GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
deleted file mode 100644
index de8a14b3..00000000
--- a/GoTrue/src/linuxMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package io.github.jan.supabase.gotrue.providers
-
-/**
- * Configuration for external authentication providers like Google, Twitter, etc.
- */
-actual class ExternalAuthConfig: ExternalAuthConfigDefaults()
\ No newline at end of file
diff --git a/GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt b/GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
deleted file mode 100644
index de8a14b3..00000000
--- a/GoTrue/src/wasmJsMain/kotlin/io/github/jan/supabase/gotrue/providers/ExternalAuthConfig.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package io.github.jan.supabase.gotrue.providers
-
-/**
- * Configuration for external authentication providers like Google, Twitter, etc.
- */
-actual class ExternalAuthConfig: ExternalAuthConfigDefaults()
\ No newline at end of file
diff --git a/Postgrest/build.gradle.kts b/Postgrest/build.gradle.kts
index 978d63f2..bdc496cb 100644
--- a/Postgrest/build.gradle.kts
+++ b/Postgrest/build.gradle.kts
@@ -16,7 +16,7 @@ kotlin {
     sourceSets {
         val commonMain by getting {
             dependencies {
-                addModules(SupabaseModule.GOTRUE)
+                addModules(SupabaseModule.AUTH)
                 api(libs.kotlin.reflect)
             }
         }
diff --git a/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/PostgrestImpl.kt b/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/PostgrestImpl.kt
index ceb0ef09..f4e80632 100644
--- a/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/PostgrestImpl.kt
+++ b/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/PostgrestImpl.kt
@@ -2,13 +2,13 @@ package io.github.jan.supabase.postgrest
 
 import io.github.jan.supabase.SupabaseClient
 import io.github.jan.supabase.annotations.SupabaseInternal
+import io.github.jan.supabase.auth.authenticatedSupabaseApi
 import io.github.jan.supabase.bodyOrNull
 import io.github.jan.supabase.exceptions.BadRequestRestException
 import io.github.jan.supabase.exceptions.NotFoundRestException
 import io.github.jan.supabase.exceptions.RestException
 import io.github.jan.supabase.exceptions.UnauthorizedRestException
 import io.github.jan.supabase.exceptions.UnknownRestException
-import io.github.jan.supabase.gotrue.authenticatedSupabaseApi
 import io.github.jan.supabase.postgrest.executor.RestRequestExecutor
 import io.github.jan.supabase.postgrest.query.PostgrestQueryBuilder
 import io.github.jan.supabase.postgrest.query.request.RpcRequestBuilder
diff --git a/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/PostgrestQueryBuilder.kt b/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/PostgrestQueryBuilder.kt
index aa62f252..7b06faa3 100644
--- a/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/PostgrestQueryBuilder.kt
+++ b/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/PostgrestQueryBuilder.kt
@@ -1,10 +1,10 @@
 @file:Suppress("UndocumentedPublicProperty")
 package io.github.jan.supabase.postgrest.query
 
+import io.github.jan.supabase.auth.PostgrestFilterDSL
 import io.github.jan.supabase.encodeToJsonElement
 import io.github.jan.supabase.exceptions.HttpRequestException
 import io.github.jan.supabase.exceptions.RestException
-import io.github.jan.supabase.gotrue.PostgrestFilterDSL
 import io.github.jan.supabase.postgrest.Postgrest
 import io.github.jan.supabase.postgrest.executor.RestRequestExecutor
 import io.github.jan.supabase.postgrest.mapToFirstValue
diff --git a/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/PostgrestRequestBuilder.kt b/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/PostgrestRequestBuilder.kt
index 716ee275..656d016c 100644
--- a/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/PostgrestRequestBuilder.kt
+++ b/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/PostgrestRequestBuilder.kt
@@ -2,7 +2,7 @@
 package io.github.jan.supabase.postgrest.query
 
 import io.github.jan.supabase.annotations.SupabaseExperimental
-import io.github.jan.supabase.gotrue.PostgrestFilterDSL
+import io.github.jan.supabase.auth.PostgrestFilterDSL
 import io.github.jan.supabase.postgrest.PropertyConversionMethod
 import io.github.jan.supabase.postgrest.query.filter.PostgrestFilterBuilder
 import io.github.jan.supabase.postgrest.result.PostgrestResult
diff --git a/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/filter/PostgrestFilterBuilder.kt b/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/filter/PostgrestFilterBuilder.kt
index 108ad8af..0021ce0f 100644
--- a/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/filter/PostgrestFilterBuilder.kt
+++ b/Postgrest/src/commonMain/kotlin/io/github/jan/supabase/postgrest/query/filter/PostgrestFilterBuilder.kt
@@ -1,7 +1,7 @@
 @file:Suppress("UndocumentedPublicProperty", "ConstructorParameterNaming")
 package io.github.jan.supabase.postgrest.query.filter
 
-import io.github.jan.supabase.gotrue.PostgrestFilterDSL
+import io.github.jan.supabase.auth.PostgrestFilterDSL
 import io.github.jan.supabase.postgrest.PropertyConversionMethod
 import kotlin.reflect.KProperty1
 
diff --git a/README.md b/README.md
index ad28e0f5..5919bf68 100644
--- a/README.md
+++ b/README.md
@@ -34,7 +34,7 @@ For information about supported Kotlin targets, see the corresponding module REA
 
 ### Add one or more modules to your project
 
-**Available modules**: `gotrue-kt`, `postgrest-kt`, `functions-kt`, 
+**Available modules**: `gotrue-kt`*, `postgrest-kt`, `functions-kt`, 
 `storage-kt`, `realtime-kt`, `apollo-graphql`, `compose-auth`, 
 `compose-auth-ui`, `coil-integration`, `coil3-integration`, `imageloader-integration`
 
@@ -44,6 +44,8 @@ dependencies {
 }
 ```
 
+\* After version 3.0.0, the module will be called `auth-kt`.
+
 If you use multiple modules, you can use the bom dependency to get the correct versions for all
 modules:
 
@@ -104,7 +106,7 @@ __For versions below 3.0.0:__
 
 ## Main Modules
 
-- [Authentication](/GoTrue)
+- [Authentication](/GoTrue) <!-- Will be renamed after the version 3.0.0 comes out -->
 - [Database/Postgrest](/Postgrest)
 - [Storage](/Storage)
 - [Realtime](/Realtime)
diff --git a/Realtime/build.gradle.kts b/Realtime/build.gradle.kts
index ecfef9ab..075fff6d 100644
--- a/Realtime/build.gradle.kts
+++ b/Realtime/build.gradle.kts
@@ -16,7 +16,7 @@ kotlin {
     sourceSets {
         val commonMain by getting {
             dependencies {
-                addModules(SupabaseModule.GOTRUE)
+                addModules(SupabaseModule.AUTH)
                 api(project(":postgrest-kt"))
                 api(libs.ktor.client.websockets)
             }
diff --git a/Realtime/src/commonMain/kotlin/io/github/jan/supabase/realtime/RealtimeChannelImpl.kt b/Realtime/src/commonMain/kotlin/io/github/jan/supabase/realtime/RealtimeChannelImpl.kt
index 0aede7fd..27bdca12 100644
--- a/Realtime/src/commonMain/kotlin/io/github/jan/supabase/realtime/RealtimeChannelImpl.kt
+++ b/Realtime/src/commonMain/kotlin/io/github/jan/supabase/realtime/RealtimeChannelImpl.kt
@@ -1,8 +1,8 @@
 package io.github.jan.supabase.realtime
 
 import io.github.jan.supabase.annotations.SupabaseInternal
+import io.github.jan.supabase.auth.resolveAccessToken
 import io.github.jan.supabase.collections.AtomicMutableList
-import io.github.jan.supabase.gotrue.resolveAccessToken
 import io.github.jan.supabase.logging.d
 import io.github.jan.supabase.logging.e
 import io.github.jan.supabase.putJsonObject
diff --git a/Realtime/src/commonMain/kotlin/io/github/jan/supabase/realtime/RealtimeImpl.kt b/Realtime/src/commonMain/kotlin/io/github/jan/supabase/realtime/RealtimeImpl.kt
index 3acb9011..816d362a 100644
--- a/Realtime/src/commonMain/kotlin/io/github/jan/supabase/realtime/RealtimeImpl.kt
+++ b/Realtime/src/commonMain/kotlin/io/github/jan/supabase/realtime/RealtimeImpl.kt
@@ -2,12 +2,12 @@ package io.github.jan.supabase.realtime
 
 import io.github.jan.supabase.SupabaseClient
 import io.github.jan.supabase.annotations.SupabaseInternal
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.SessionStatus
 import io.github.jan.supabase.buildUrl
 import io.github.jan.supabase.collections.AtomicMutableMap
 import io.github.jan.supabase.exceptions.RestException
 import io.github.jan.supabase.exceptions.UnknownRestException
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.SessionStatus
 import io.github.jan.supabase.logging.d
 import io.github.jan.supabase.logging.e
 import io.github.jan.supabase.logging.i
diff --git a/Storage/build.gradle.kts b/Storage/build.gradle.kts
index f609bd2e..af6f3087 100644
--- a/Storage/build.gradle.kts
+++ b/Storage/build.gradle.kts
@@ -22,7 +22,7 @@ kotlin {
     sourceSets {
         val commonMain by getting {
             dependencies {
-                addModules(SupabaseModule.GOTRUE)
+                addModules(SupabaseModule.AUTH)
             }
         }
         val commonTest by getting {
diff --git a/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/BucketApi.kt b/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/BucketApi.kt
index f9f94399..5003106c 100644
--- a/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/BucketApi.kt
+++ b/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/BucketApi.kt
@@ -1,9 +1,9 @@
 package io.github.jan.supabase.storage
 
 import io.github.jan.supabase.SupabaseClient
+import io.github.jan.supabase.auth.resolveAccessToken
 import io.github.jan.supabase.exceptions.HttpRequestException
 import io.github.jan.supabase.exceptions.RestException
-import io.github.jan.supabase.gotrue.resolveAccessToken
 import io.github.jan.supabase.storage.resumable.ResumableClient
 import io.ktor.client.plugins.HttpRequestTimeoutException
 import io.ktor.utils.io.ByteReadChannel
diff --git a/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/Storage.kt b/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/Storage.kt
index 8e106f4d..53bb5a24 100644
--- a/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/Storage.kt
+++ b/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/Storage.kt
@@ -3,6 +3,7 @@ package io.github.jan.supabase.storage
 import io.github.jan.supabase.SupabaseClient
 import io.github.jan.supabase.SupabaseSerializer
 import io.github.jan.supabase.annotations.SupabaseInternal
+import io.github.jan.supabase.auth.authenticatedSupabaseApi
 import io.github.jan.supabase.bodyOrNull
 import io.github.jan.supabase.collections.AtomicMutableMap
 import io.github.jan.supabase.exceptions.BadRequestRestException
@@ -11,7 +12,6 @@ import io.github.jan.supabase.exceptions.NotFoundRestException
 import io.github.jan.supabase.exceptions.RestException
 import io.github.jan.supabase.exceptions.UnauthorizedRestException
 import io.github.jan.supabase.exceptions.UnknownRestException
-import io.github.jan.supabase.gotrue.authenticatedSupabaseApi
 import io.github.jan.supabase.logging.SupabaseLogger
 import io.github.jan.supabase.logging.w
 import io.github.jan.supabase.plugins.CustomSerializationConfig
diff --git a/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/resumable/ResumableClient.kt b/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/resumable/ResumableClient.kt
index 8b533bf8..3e4a616b 100644
--- a/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/resumable/ResumableClient.kt
+++ b/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/resumable/ResumableClient.kt
@@ -3,7 +3,7 @@
 package io.github.jan.supabase.storage.resumable
 
 import io.github.jan.supabase.annotations.SupabaseInternal
-import io.github.jan.supabase.gotrue.Auth
+import io.github.jan.supabase.auth.Auth
 import io.github.jan.supabase.logging.d
 import io.github.jan.supabase.storage.BucketApi
 import io.github.jan.supabase.storage.Storage
diff --git a/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/resumable/ResumableUpload.kt b/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/resumable/ResumableUpload.kt
index c189453f..fb761c98 100644
--- a/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/resumable/ResumableUpload.kt
+++ b/Storage/src/commonMain/kotlin/io/github/jan/supabase/storage/resumable/ResumableUpload.kt
@@ -1,7 +1,7 @@
 package io.github.jan.supabase.storage.resumable
 
 import io.github.jan.supabase.annotations.SupabaseInternal
-import io.github.jan.supabase.gotrue.Auth
+import io.github.jan.supabase.auth.Auth
 import io.github.jan.supabase.logging.d
 import io.github.jan.supabase.logging.e
 import io.github.jan.supabase.logging.w
diff --git a/Supabase/README.md b/Supabase/README.md
index 25cf36c1..af076ae1 100644
--- a/Supabase/README.md
+++ b/Supabase/README.md
@@ -57,7 +57,7 @@ val supabase = createSupabaseClient(
     defaultLogLevel = LogLevel.DEBUG
     
     //Install a plugin
-    install(Auth) //from gotrue-kt
+    install(Auth) //from auth-kt
 
 }
 
diff --git a/Supabase/src/commonMain/kotlin/io/github/jan/supabase/SupabaseClient.kt b/Supabase/src/commonMain/kotlin/io/github/jan/supabase/SupabaseClient.kt
index c7917343..4d5a97d2 100644
--- a/Supabase/src/commonMain/kotlin/io/github/jan/supabase/SupabaseClient.kt
+++ b/Supabase/src/commonMain/kotlin/io/github/jan/supabase/SupabaseClient.kt
@@ -14,7 +14,7 @@ import io.ktor.client.engine.HttpClientEngine
 /**
  * The main class to interact with Supabase.
  *
- * To add functionality, add plugins like **GoTrue** or **Functions** within the [SupabaseClientBuilder]
+ * To add functionality, add plugins like **Auth** or **Functions** within the [SupabaseClientBuilder]
  */
 sealed interface SupabaseClient {
 
diff --git a/Supabase/src/commonMain/kotlin/io/github/jan/supabase/plugins/MainPlugin.kt b/Supabase/src/commonMain/kotlin/io/github/jan/supabase/plugins/MainPlugin.kt
index 7657147b..8a8a3e1b 100644
--- a/Supabase/src/commonMain/kotlin/io/github/jan/supabase/plugins/MainPlugin.kt
+++ b/Supabase/src/commonMain/kotlin/io/github/jan/supabase/plugins/MainPlugin.kt
@@ -18,7 +18,7 @@ open class MainConfig {
     var customUrl: String? = null
 
     /**
-     * The jwt token used for this module. If null, the client will use the token from GoTrue's current session
+     * The jwt token used for this module. If null, the client will use the token from Auth's current session
      */
     var jwtToken: String? = null
 
diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md
index 76caef3d..2214c4ba 100644
--- a/TROUBLESHOOTING.md
+++ b/TROUBLESHOOTING.md
@@ -77,7 +77,7 @@ Not all Ktor client [engines](https://ktor.io/docs/http-client-engines.html#limi
 
 ### Auth
 
-<details><summary>GoTrue#sessionStatus doesn't change when signing up</summary>
+<details><summary>Auth#sessionStatus doesn't change when signing up</summary>
 
 If you don't have auto confirm enabled, your user has to confirm their email/phone number before they can sign in. Once they confirm, the session status will change.
 On Android and iOS, you can use deeplinking to automatically sign-in when the user clicks on the confirmation link.
diff --git a/buildSrc/src/main/kotlin/Dokka.kt b/buildSrc/src/main/kotlin/Dokka.kt
index d31a3e2d..65ade563 100644
--- a/buildSrc/src/main/kotlin/Dokka.kt
+++ b/buildSrc/src/main/kotlin/Dokka.kt
@@ -7,8 +7,9 @@ fun Project.applyDokkaWithConfiguration() {
         dokkaSourceSets.configureEach {
             sourceLink {
                 val name = when(moduleName.get()) {
+                    "supabase-kt" -> "Supabase"
                     "functions-kt" -> "Functions"
-                    "gotrue-kt" -> "GoTrue"
+                    "auth-kt" -> "Auth"
                     "postgrest-kt" -> "Postgrest"
                     "realtime-kt" -> "Realtime"
                     "storage-kt" -> "Storage"
@@ -16,6 +17,7 @@ fun Project.applyDokkaWithConfiguration() {
                     "compose-auth" -> "plugins/ComposeAuth"
                     "compose-auth-ui" -> "plugins/ComposeAuthUI"
                     "coil-integration" -> "plugins/CoilIntegration"
+                    "coil3-integration" -> "plugins/Coil3Integration"
                     "imageloader-integration" -> "plugins/ImageLoaderIntegration"
                     "serializer-moshi" -> "serializers/Moshi"
                     "serializer-jackson" -> "serializers/Jackson"
diff --git a/buildSrc/src/main/kotlin/Modules.kt b/buildSrc/src/main/kotlin/Modules.kt
index 0cdea329..4cf5bdc5 100644
--- a/buildSrc/src/main/kotlin/Modules.kt
+++ b/buildSrc/src/main/kotlin/Modules.kt
@@ -4,7 +4,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler
 
 enum class SupabaseModule(val module: String) {
     SUPABASE("supabase-kt"),
-    GOTRUE("gotrue-kt"),
+    AUTH("auth-kt"),
     STORAGE("storage-kt"),
     REALTIME("realtime-kt"),
     FUNCTIONS("functions-kt"),
diff --git a/demos/android-login/README.md b/demos/android-login/README.md
index 62457ce7..b26e76ff 100644
--- a/demos/android-login/README.md
+++ b/demos/android-login/README.md
@@ -6,7 +6,7 @@ This is a demo of an android app using Google OneTap/Native Sign-In & WebView fo
 
 **Available platforms:** Android
 
-**Modules used:** GoTrue
+**Modules used:** Auth
 
 https://user-images.githubusercontent.com/26686035/235766941-6a62c415-e07e-4d18-9706-0a246e6821eb.mp4
 
diff --git a/plugins/ApolloGraphQL/build.gradle.kts b/plugins/ApolloGraphQL/build.gradle.kts
index f86ce321..677476d9 100644
--- a/plugins/ApolloGraphQL/build.gradle.kts
+++ b/plugins/ApolloGraphQL/build.gradle.kts
@@ -23,7 +23,7 @@ kotlin {
     sourceSets {
         val commonMain by getting {
             dependencies {
-                addModules(SupabaseModule.GOTRUE, SupabaseModule.SUPABASE)
+                addModules(SupabaseModule.AUTH, SupabaseModule.SUPABASE)
                 api(libs.apollo.kotlin)
             }
         }
diff --git a/plugins/ApolloGraphQL/src/commonMain/kotlin/io/github/jan/supabase/graphql/ApolloHttpInterceptor.kt b/plugins/ApolloGraphQL/src/commonMain/kotlin/io/github/jan/supabase/graphql/ApolloHttpInterceptor.kt
index cc1a3907..608d37fd 100644
--- a/plugins/ApolloGraphQL/src/commonMain/kotlin/io/github/jan/supabase/graphql/ApolloHttpInterceptor.kt
+++ b/plugins/ApolloGraphQL/src/commonMain/kotlin/io/github/jan/supabase/graphql/ApolloHttpInterceptor.kt
@@ -3,7 +3,7 @@ package io.github.jan.supabase.graphql
 import com.apollographql.apollo.network.http.HttpInterceptor
 import com.apollographql.apollo.network.http.HttpInterceptorChain
 import io.github.jan.supabase.SupabaseClient
-import io.github.jan.supabase.gotrue.resolveAccessToken
+import io.github.jan.supabase.auth.resolveAccessToken
 import io.github.jan.supabase.logging.d
 import io.ktor.http.HttpHeaders
 import com.apollographql.apollo.api.http.HttpRequest as ApolloHttpRequest
diff --git a/plugins/ComposeAuth/build.gradle.kts b/plugins/ComposeAuth/build.gradle.kts
index 28480136..527f4bc6 100644
--- a/plugins/ComposeAuth/build.gradle.kts
+++ b/plugins/ComposeAuth/build.gradle.kts
@@ -32,7 +32,7 @@ kotlin {
     sourceSets {
         val commonMain by getting {
             dependencies {
-                addModules(SupabaseModule.GOTRUE)
+                addModules(SupabaseModule.AUTH)
                 implementation(compose.runtime)
                 implementation(libs.krypto)
             }
diff --git a/plugins/ComposeAuth/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/ComposeAuth.kt b/plugins/ComposeAuth/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/ComposeAuth.kt
index 199d84dc..1b0b9f18 100644
--- a/plugins/ComposeAuth/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/ComposeAuth.kt
+++ b/plugins/ComposeAuth/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/ComposeAuth.kt
@@ -2,13 +2,13 @@ package io.github.jan.supabase.compose.auth
 
 import io.github.jan.supabase.SupabaseClient
 import io.github.jan.supabase.SupabaseSerializer
+import io.github.jan.supabase.auth.SessionStatus
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.providers.Apple
+import io.github.jan.supabase.auth.providers.Google
+import io.github.jan.supabase.auth.providers.IDTokenProvider
+import io.github.jan.supabase.auth.providers.builtin.IDToken
 import io.github.jan.supabase.compose.auth.composable.NativeSignInState
-import io.github.jan.supabase.gotrue.SessionStatus
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.providers.Apple
-import io.github.jan.supabase.gotrue.providers.Google
-import io.github.jan.supabase.gotrue.providers.IDTokenProvider
-import io.github.jan.supabase.gotrue.providers.builtin.IDToken
 import io.github.jan.supabase.logging.SupabaseLogger
 import io.github.jan.supabase.logging.d
 import io.github.jan.supabase.plugins.CustomSerializationConfig
diff --git a/plugins/ComposeAuth/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/composable/NativeAppleAuth.kt b/plugins/ComposeAuth/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/composable/NativeAppleAuth.kt
index 307801b6..71655a27 100644
--- a/plugins/ComposeAuth/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/composable/NativeAppleAuth.kt
+++ b/plugins/ComposeAuth/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/composable/NativeAppleAuth.kt
@@ -1,9 +1,9 @@
 package io.github.jan.supabase.compose.auth.composable
 
 import androidx.compose.runtime.Composable
+import io.github.jan.supabase.auth.providers.Apple
 import io.github.jan.supabase.compose.auth.ComposeAuth
 import io.github.jan.supabase.compose.auth.fallbackLogin
-import io.github.jan.supabase.gotrue.providers.Apple
 
 /**
  * Composable function that implements Native Apple Auth.
diff --git a/plugins/ComposeAuth/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/composable/NativeGoogleAuth.kt b/plugins/ComposeAuth/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/composable/NativeGoogleAuth.kt
index da45306d..8fbb4899 100644
--- a/plugins/ComposeAuth/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/composable/NativeGoogleAuth.kt
+++ b/plugins/ComposeAuth/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/composable/NativeGoogleAuth.kt
@@ -1,9 +1,9 @@
 package io.github.jan.supabase.compose.auth.composable
 
 import androidx.compose.runtime.Composable
+import io.github.jan.supabase.auth.providers.Google
 import io.github.jan.supabase.compose.auth.ComposeAuth
 import io.github.jan.supabase.compose.auth.fallbackLogin
-import io.github.jan.supabase.gotrue.providers.Google
 
 /**
  * Composable function that implements Native Google Auth.
diff --git a/plugins/ComposeAuthUI/build.gradle.kts b/plugins/ComposeAuthUI/build.gradle.kts
index b077208d..7e83ad6e 100644
--- a/plugins/ComposeAuthUI/build.gradle.kts
+++ b/plugins/ComposeAuthUI/build.gradle.kts
@@ -32,7 +32,7 @@ kotlin {
         val commonMain by getting {
             dependencies {
                 api(compose.ui)
-                addModules(SupabaseModule.GOTRUE)
+                addModules(SupabaseModule.AUTH)
                 implementation(compose.material3)
             }
         }
diff --git a/plugins/ComposeAuthUI/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/ui/ProviderButton.kt b/plugins/ComposeAuthUI/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/ui/ProviderButton.kt
index 4fb73849..abaf0d7e 100644
--- a/plugins/ComposeAuthUI/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/ui/ProviderButton.kt
+++ b/plugins/ComposeAuthUI/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/ui/ProviderButton.kt
@@ -11,8 +11,8 @@ import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.unit.dp
+import io.github.jan.supabase.auth.providers.OAuthProvider
 import io.github.jan.supabase.compose.auth.ui.annotations.AuthUiExperimental
-import io.github.jan.supabase.gotrue.providers.OAuthProvider
 
 internal val DEFAULT_ICON_SIZE = 24.dp //from Material3
 
diff --git a/plugins/ComposeAuthUI/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/ui/SvgPainter.kt b/plugins/ComposeAuthUI/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/ui/SvgPainter.kt
index 442548d3..21218df4 100644
--- a/plugins/ComposeAuthUI/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/ui/SvgPainter.kt
+++ b/plugins/ComposeAuthUI/src/commonMain/kotlin/io/github/jan/supabase/compose/auth/ui/SvgPainter.kt
@@ -6,25 +6,25 @@ import androidx.compose.runtime.produceState
 import androidx.compose.ui.graphics.painter.Painter
 import androidx.compose.ui.unit.Density
 import io.github.jan.supabase.annotations.SupabaseInternal
-import io.github.jan.supabase.gotrue.providers.Apple
-import io.github.jan.supabase.gotrue.providers.Azure
-import io.github.jan.supabase.gotrue.providers.Bitbucket
-import io.github.jan.supabase.gotrue.providers.Discord
-import io.github.jan.supabase.gotrue.providers.Facebook
-import io.github.jan.supabase.gotrue.providers.Figma
-import io.github.jan.supabase.gotrue.providers.Github
-import io.github.jan.supabase.gotrue.providers.Gitlab
-import io.github.jan.supabase.gotrue.providers.Google
-import io.github.jan.supabase.gotrue.providers.Kakao
-import io.github.jan.supabase.gotrue.providers.Keycloak
-import io.github.jan.supabase.gotrue.providers.LinkedIn
-import io.github.jan.supabase.gotrue.providers.Notion
-import io.github.jan.supabase.gotrue.providers.OAuthProvider
-import io.github.jan.supabase.gotrue.providers.Slack
-import io.github.jan.supabase.gotrue.providers.Spotify
-import io.github.jan.supabase.gotrue.providers.Twitch
-import io.github.jan.supabase.gotrue.providers.Twitter
-import io.github.jan.supabase.gotrue.providers.WorkOS
+import io.github.jan.supabase.auth.providers.Apple
+import io.github.jan.supabase.auth.providers.Azure
+import io.github.jan.supabase.auth.providers.Bitbucket
+import io.github.jan.supabase.auth.providers.Discord
+import io.github.jan.supabase.auth.providers.Facebook
+import io.github.jan.supabase.auth.providers.Figma
+import io.github.jan.supabase.auth.providers.Github
+import io.github.jan.supabase.auth.providers.Gitlab
+import io.github.jan.supabase.auth.providers.Google
+import io.github.jan.supabase.auth.providers.Kakao
+import io.github.jan.supabase.auth.providers.Keycloak
+import io.github.jan.supabase.auth.providers.LinkedIn
+import io.github.jan.supabase.auth.providers.Notion
+import io.github.jan.supabase.auth.providers.OAuthProvider
+import io.github.jan.supabase.auth.providers.Slack
+import io.github.jan.supabase.auth.providers.Spotify
+import io.github.jan.supabase.auth.providers.Twitch
+import io.github.jan.supabase.auth.providers.Twitter
+import io.github.jan.supabase.auth.providers.WorkOS
 
 @SupabaseInternal
 expect fun svgPainter(bytes: ByteArray, density: Density): Painter
diff --git a/sample/chat-demo-mpp/android/src/main/java/io/github/jan/supabase/android/MainActivity.kt b/sample/chat-demo-mpp/android/src/main/java/io/github/jan/supabase/android/MainActivity.kt
index 99e15d06..746c205d 100644
--- a/sample/chat-demo-mpp/android/src/main/java/io/github/jan/supabase/android/MainActivity.kt
+++ b/sample/chat-demo-mpp/android/src/main/java/io/github/jan/supabase/android/MainActivity.kt
@@ -4,9 +4,9 @@ import android.os.Bundle
 import androidx.activity.ComponentActivity
 import androidx.activity.compose.setContent
 import androidx.compose.material3.MaterialTheme
+import io.github.jan.supabase.auth.handleDeeplinks
 import io.github.jan.supabase.common.App
 import io.github.jan.supabase.common.ChatViewModel
-import io.github.jan.supabase.gotrue.handleDeeplinks
 import org.koin.android.ext.android.inject
 
 class MainActivity : ComponentActivity() {
diff --git a/sample/chat-demo-mpp/common/build.gradle.kts b/sample/chat-demo-mpp/common/build.gradle.kts
index 6e4d3bca..b4c4e25e 100644
--- a/sample/chat-demo-mpp/common/build.gradle.kts
+++ b/sample/chat-demo-mpp/common/build.gradle.kts
@@ -46,7 +46,7 @@ kotlin {
                 api(compose.foundation)
                 api(compose.material3)
                 api(compose.materialIconsExtended)
-                addModules(SupabaseModule.GOTRUE, SupabaseModule.POSTGREST, SupabaseModule.REALTIME, SupabaseModule.COMPOSE_AUTH, SupabaseModule.COMPOSE_AUTH_UI)
+                addModules(SupabaseModule.AUTH, SupabaseModule.POSTGREST, SupabaseModule.REALTIME, SupabaseModule.COMPOSE_AUTH, SupabaseModule.COMPOSE_AUTH_UI)
                 api(libs.koin.core)
             }
         }
diff --git a/sample/chat-demo-mpp/common/src/androidMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt b/sample/chat-demo-mpp/common/src/androidMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
index bc6c93e5..6deb296e 100644
--- a/sample/chat-demo-mpp/common/src/androidMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
+++ b/sample/chat-demo-mpp/common/src/androidMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
@@ -1,7 +1,7 @@
 package io.github.jan.supabase.common.di
 
-import io.github.jan.supabase.gotrue.AuthConfig
-import io.github.jan.supabase.gotrue.ExternalAuthAction
+import io.github.jan.supabase.auth.AuthConfig
+import io.github.jan.supabase.auth.ExternalAuthAction
 
 actual fun AuthConfig.platformGoTrueConfig() {
     scheme = "io.jan.supabase"
diff --git a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/App.kt b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/App.kt
index 093bb5fe..9e856858 100644
--- a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/App.kt
+++ b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/App.kt
@@ -11,9 +11,9 @@ import androidx.compose.runtime.getValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.unit.dp
+import io.github.jan.supabase.auth.SessionStatus
 import io.github.jan.supabase.common.ui.screen.ChatScreen
 import io.github.jan.supabase.common.ui.screen.LoginScreen
-import io.github.jan.supabase.gotrue.SessionStatus
 
 @Composable
 fun App(viewModel: ChatViewModel) {
diff --git a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/ChatViewModel.kt b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/ChatViewModel.kt
index 37b0e1d2..0aee98f1 100644
--- a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/ChatViewModel.kt
+++ b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/ChatViewModel.kt
@@ -3,10 +3,10 @@ package io.github.jan.supabase.common
 
 import co.touchlab.kermit.Logger
 import io.github.jan.supabase.SupabaseClient
+import io.github.jan.supabase.auth.SessionStatus
 import io.github.jan.supabase.common.net.AuthApi
 import io.github.jan.supabase.common.net.Message
 import io.github.jan.supabase.common.net.MessageApi
-import io.github.jan.supabase.gotrue.SessionStatus
 import io.github.jan.supabase.realtime.realtime
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.MutableStateFlow
diff --git a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/di/supabaseModule.kt b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/di/supabaseModule.kt
index 05b90f91..42060f8e 100644
--- a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/di/supabaseModule.kt
+++ b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/di/supabaseModule.kt
@@ -1,9 +1,9 @@
 package io.github.jan.supabase.common.di
 
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.AuthConfig
+import io.github.jan.supabase.auth.FlowType
 import io.github.jan.supabase.createSupabaseClient
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.AuthConfig
-import io.github.jan.supabase.gotrue.FlowType
 import io.github.jan.supabase.logging.LogLevel
 import io.github.jan.supabase.postgrest.Postgrest
 import io.github.jan.supabase.realtime.Realtime
diff --git a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/net/AuthApi.kt b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/net/AuthApi.kt
index 71653fb6..e6c6315f 100644
--- a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/net/AuthApi.kt
+++ b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/net/AuthApi.kt
@@ -1,11 +1,11 @@
 package io.github.jan.supabase.common.net
 
 import io.github.jan.supabase.SupabaseClient
-import io.github.jan.supabase.gotrue.OtpType
-import io.github.jan.supabase.gotrue.SessionStatus
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.providers.Google
-import io.github.jan.supabase.gotrue.providers.builtin.Email
+import io.github.jan.supabase.auth.OtpType
+import io.github.jan.supabase.auth.SessionStatus
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.providers.Google
+import io.github.jan.supabase.auth.providers.builtin.Email
 import kotlinx.coroutines.flow.Flow
 
 sealed interface AuthApi {
diff --git a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/net/MessageApi.kt b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/net/MessageApi.kt
index 061cdea8..a45d7be4 100644
--- a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/net/MessageApi.kt
+++ b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/net/MessageApi.kt
@@ -2,7 +2,7 @@ package io.github.jan.supabase.common.net
 
 import io.github.jan.supabase.SupabaseClient
 import io.github.jan.supabase.annotations.SupabaseExperimental
-import io.github.jan.supabase.gotrue.auth
+import io.github.jan.supabase.auth.auth
 import io.github.jan.supabase.postgrest.postgrest
 import io.github.jan.supabase.realtime.selectAsFlow
 import kotlinx.coroutines.flow.Flow
diff --git a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/ChatScreen.kt b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/ChatScreen.kt
index b813e384..12d4274d 100644
--- a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/ChatScreen.kt
+++ b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/ChatScreen.kt
@@ -31,10 +31,10 @@ import androidx.compose.ui.Modifier
 import androidx.compose.ui.unit.dp
 import io.github.jan.supabase.CurrentPlatformTarget
 import io.github.jan.supabase.PlatformTarget
+import io.github.jan.supabase.auth.user.UserInfo
 import io.github.jan.supabase.common.ChatViewModel
 import io.github.jan.supabase.common.ui.components.MessageCard
 import io.github.jan.supabase.common.ui.components.PasswordChangeDialog
-import io.github.jan.supabase.gotrue.user.UserInfo
 import kotlinx.coroutines.flow.map
 
 @OptIn(ExperimentalMaterial3Api::class)
diff --git a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/LoginScreen.kt b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/LoginScreen.kt
index 22371779..7ec089f1 100644
--- a/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/LoginScreen.kt
+++ b/sample/chat-demo-mpp/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/LoginScreen.kt
@@ -31,6 +31,7 @@ import androidx.compose.ui.text.input.ImeAction
 import androidx.compose.ui.text.input.KeyboardType
 import androidx.compose.ui.unit.dp
 import io.github.jan.supabase.annotations.SupabaseExperimental
+import io.github.jan.supabase.auth.providers.Google
 import io.github.jan.supabase.common.ChatViewModel
 import io.github.jan.supabase.common.ui.components.OTPDialog
 import io.github.jan.supabase.common.ui.components.OTPDialogState
@@ -38,7 +39,6 @@ import io.github.jan.supabase.common.ui.components.PasswordField
 import io.github.jan.supabase.common.ui.components.PasswordRecoveryDialog
 import io.github.jan.supabase.compose.auth.ui.ProviderButtonContent
 import io.github.jan.supabase.compose.auth.ui.annotations.AuthUiExperimental
-import io.github.jan.supabase.gotrue.providers.Google
 
 @OptIn(ExperimentalMaterial3Api::class, SupabaseExperimental::class, AuthUiExperimental::class)
 @Composable
diff --git a/sample/chat-demo-mpp/common/src/desktopMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt b/sample/chat-demo-mpp/common/src/desktopMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
index c2c86e17..9db4758c 100644
--- a/sample/chat-demo-mpp/common/src/desktopMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
+++ b/sample/chat-demo-mpp/common/src/desktopMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
@@ -1,6 +1,6 @@
 package io.github.jan.supabase.common.di
 
-import io.github.jan.supabase.gotrue.AuthConfig
+import io.github.jan.supabase.auth.AuthConfig
 
 actual fun AuthConfig.platformGoTrueConfig() {
     httpCallbackConfig {
diff --git a/sample/chat-demo-mpp/common/src/iosMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt b/sample/chat-demo-mpp/common/src/iosMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
index 11906050..efac2ce7 100644
--- a/sample/chat-demo-mpp/common/src/iosMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
+++ b/sample/chat-demo-mpp/common/src/iosMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
@@ -1,6 +1,6 @@
 package io.github.jan.supabase.common.di
 
-import io.github.jan.supabase.gotrue.AuthConfig
+import io.github.jan.supabase.auth.AuthConfig
 
 actual fun AuthConfig.platformGoTrueConfig() {
     scheme = "io.jan.supabase"
diff --git a/sample/chat-demo-mpp/common/src/jsMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt b/sample/chat-demo-mpp/common/src/jsMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
index 7331d7f7..494af766 100644
--- a/sample/chat-demo-mpp/common/src/jsMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
+++ b/sample/chat-demo-mpp/common/src/jsMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
@@ -1,5 +1,5 @@
 package io.github.jan.supabase.common.di
 
-import io.github.jan.supabase.gotrue.AuthConfig
+import io.github.jan.supabase.auth.AuthConfig
 
 actual fun AuthConfig.platformGoTrueConfig() = Unit
\ No newline at end of file
diff --git a/sample/multi-factor-auth/android/src/main/java/io/github/jan/supabase/android/MainActivity.kt b/sample/multi-factor-auth/android/src/main/java/io/github/jan/supabase/android/MainActivity.kt
index 8fa4fecb..66f6464a 100644
--- a/sample/multi-factor-auth/android/src/main/java/io/github/jan/supabase/android/MainActivity.kt
+++ b/sample/multi-factor-auth/android/src/main/java/io/github/jan/supabase/android/MainActivity.kt
@@ -4,9 +4,9 @@ import android.os.Bundle
 import androidx.activity.ComponentActivity
 import androidx.activity.compose.setContent
 import androidx.compose.material3.MaterialTheme
+import io.github.jan.supabase.auth.handleDeeplinks
 import io.github.jan.supabase.common.App
 import io.github.jan.supabase.common.AppViewModel
-import io.github.jan.supabase.gotrue.handleDeeplinks
 import org.koin.android.ext.android.inject
 
 class MainActivity : ComponentActivity() {
diff --git a/sample/multi-factor-auth/common/build.gradle.kts b/sample/multi-factor-auth/common/build.gradle.kts
index a149bdec..148d73af 100644
--- a/sample/multi-factor-auth/common/build.gradle.kts
+++ b/sample/multi-factor-auth/common/build.gradle.kts
@@ -35,7 +35,7 @@ kotlin {
                 api(compose.foundation)
                 api(compose.material3)
                 api(compose.materialIconsExtended)
-                addModules(SupabaseModule.GOTRUE)
+                addModules(SupabaseModule.AUTH)
                 api(libs.koin.core)
             }
         }
diff --git a/sample/multi-factor-auth/common/src/androidMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt b/sample/multi-factor-auth/common/src/androidMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
index 11906050..efac2ce7 100644
--- a/sample/multi-factor-auth/common/src/androidMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
+++ b/sample/multi-factor-auth/common/src/androidMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
@@ -1,6 +1,6 @@
 package io.github.jan.supabase.common.di
 
-import io.github.jan.supabase.gotrue.AuthConfig
+import io.github.jan.supabase.auth.AuthConfig
 
 actual fun AuthConfig.platformGoTrueConfig() {
     scheme = "io.jan.supabase"
diff --git a/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/App.kt b/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/App.kt
index 3959a879..1eac458f 100644
--- a/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/App.kt
+++ b/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/App.kt
@@ -11,10 +11,10 @@ import androidx.compose.runtime.getValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.unit.dp
+import io.github.jan.supabase.auth.SessionStatus
 import io.github.jan.supabase.common.ui.components.AlertDialog
 import io.github.jan.supabase.common.ui.screen.LoginScreen
 import io.github.jan.supabase.common.ui.screen.MfaScreen
-import io.github.jan.supabase.gotrue.SessionStatus
 
 @Composable
 fun App(viewModel: AppViewModel) {
diff --git a/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/AppViewModel.kt b/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/AppViewModel.kt
index ec6222a6..f0e6f6b5 100644
--- a/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/AppViewModel.kt
+++ b/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/AppViewModel.kt
@@ -2,12 +2,12 @@ package io.github.jan.supabase.common
 
 
 import io.github.jan.supabase.SupabaseClient
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.mfa.FactorType
+import io.github.jan.supabase.auth.mfa.MfaFactor
+import io.github.jan.supabase.auth.providers.Google
+import io.github.jan.supabase.auth.providers.builtin.Email
 import io.github.jan.supabase.exceptions.RestException
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.mfa.FactorType
-import io.github.jan.supabase.gotrue.mfa.MfaFactor
-import io.github.jan.supabase.gotrue.providers.Google
-import io.github.jan.supabase.gotrue.providers.builtin.Email
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.launch
diff --git a/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/di/supabaseModule.kt b/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/di/supabaseModule.kt
index d63fa54d..c5aadbe0 100644
--- a/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/di/supabaseModule.kt
+++ b/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/di/supabaseModule.kt
@@ -1,8 +1,8 @@
 package io.github.jan.supabase.common.di
 
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.AuthConfig
 import io.github.jan.supabase.createSupabaseClient
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.AuthConfig
 import org.koin.dsl.module
 
 expect fun AuthConfig.platformGoTrueConfig()
diff --git a/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/MfaScreen.kt b/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/MfaScreen.kt
index bd53c227..2a5d04ec 100644
--- a/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/MfaScreen.kt
+++ b/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/MfaScreen.kt
@@ -3,8 +3,8 @@ package io.github.jan.supabase.common.ui.screen
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.getValue
+import io.github.jan.supabase.auth.mfa.MfaStatus
 import io.github.jan.supabase.common.AppViewModel
-import io.github.jan.supabase.gotrue.mfa.MfaStatus
 
 @Composable
 fun MfaScreen(viewModel: AppViewModel) {
diff --git a/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/MfaSetupScreen.kt b/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/MfaSetupScreen.kt
index db1f9ada..8ad5636f 100644
--- a/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/MfaSetupScreen.kt
+++ b/sample/multi-factor-auth/common/src/commonMain/kotlin/io/github/jan/supabase/common/ui/screen/MfaSetupScreen.kt
@@ -25,10 +25,10 @@ import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.LocalClipboardManager
 import androidx.compose.ui.text.AnnotatedString
 import androidx.compose.ui.unit.dp
+import io.github.jan.supabase.auth.mfa.FactorType
+import io.github.jan.supabase.auth.mfa.MfaFactor
 import io.github.jan.supabase.common.AppViewModel
 import io.github.jan.supabase.common.ui.components.QRCode
-import io.github.jan.supabase.gotrue.mfa.FactorType
-import io.github.jan.supabase.gotrue.mfa.MfaFactor
 
 @OptIn(ExperimentalMaterial3Api::class)
 @Composable
diff --git a/sample/multi-factor-auth/common/src/desktopMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt b/sample/multi-factor-auth/common/src/desktopMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
index ca4d938c..daa63e2b 100644
--- a/sample/multi-factor-auth/common/src/desktopMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
+++ b/sample/multi-factor-auth/common/src/desktopMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
@@ -1,6 +1,6 @@
 package io.github.jan.supabase.common.di
 
-import io.github.jan.supabase.gotrue.AuthConfig
+import io.github.jan.supabase.auth.AuthConfig
 
 actual fun AuthConfig.platformGoTrueConfig() {
     httpCallbackConfig { htmlTitle = "Chat App" }
diff --git a/sample/multi-factor-auth/common/src/jsMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt b/sample/multi-factor-auth/common/src/jsMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
index 5919bfd3..a0e2b25b 100644
--- a/sample/multi-factor-auth/common/src/jsMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
+++ b/sample/multi-factor-auth/common/src/jsMain/kotlin/io/github/jan/supabase/common/di/platformGoTrueConfig.kt
@@ -1,6 +1,6 @@
 package io.github.jan.supabase.common.di
 
-import io.github.jan.supabase.gotrue.AuthConfig
+import io.github.jan.supabase.auth.AuthConfig
 
 actual fun AuthConfig.platformGoTrueConfig() {
 }
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 9c78d897..431bff73 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -12,7 +12,7 @@ plugins {
 }
 
 // Main Modules
-include("GoTrue")
+include("Auth")
 include("Postgrest")
 include("Storage")
 include("Realtime")
@@ -45,7 +45,7 @@ if (System.getProperty("LibrariesOnly") != "true") {
 }
 
 // Renames
-project(":GoTrue").name = "gotrue-kt"
+project(":Auth").name = "auth-kt"
 project(":Postgrest").name = "postgrest-kt"
 project(":Storage").name = "storage-kt"
 project(":Realtime").name = "realtime-kt"


Test patch:
diff --git a/GoTrue/src/androidUnitTest/kotlin/platformSettings.kt b/Auth/src/androidUnitTest/kotlin/platformSettings.kt
similarity index 62%
rename from GoTrue/src/androidUnitTest/kotlin/platformSettings.kt
rename to Auth/src/androidUnitTest/kotlin/platformSettings.kt
index 2386095b..68746061 100644
--- a/GoTrue/src/androidUnitTest/kotlin/platformSettings.kt
+++ b/Auth/src/androidUnitTest/kotlin/platformSettings.kt
@@ -1,4 +1,4 @@
-import io.github.jan.supabase.gotrue.AuthConfig
+import io.github.jan.supabase.auth.AuthConfig
 
 actual fun AuthConfig.platformSettings() {
     enableLifecycleCallbacks = false
diff --git a/Auth/src/appleTest/kotlin/platformSettings.kt b/Auth/src/appleTest/kotlin/platformSettings.kt
new file mode 100644
index 00000000..f6fa8ceb
--- /dev/null
+++ b/Auth/src/appleTest/kotlin/platformSettings.kt
@@ -0,0 +1,3 @@
+import io.github.jan.supabase.auth.AuthConfig
+
+actual fun AuthConfig.platformSettings() = Unit
\ No newline at end of file
diff --git a/GoTrue/src/commonTest/kotlin/AccessTokenTest.kt b/Auth/src/commonTest/kotlin/AccessTokenTest.kt
similarity index 90%
rename from GoTrue/src/commonTest/kotlin/AccessTokenTest.kt
rename to Auth/src/commonTest/kotlin/AccessTokenTest.kt
index 2c962fa7..ad664749 100644
--- a/GoTrue/src/commonTest/kotlin/AccessTokenTest.kt
+++ b/Auth/src/commonTest/kotlin/AccessTokenTest.kt
@@ -1,7 +1,7 @@
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.minimalSettings
-import io.github.jan.supabase.gotrue.resolveAccessToken
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.minimalSettings
+import io.github.jan.supabase.auth.resolveAccessToken
 import io.github.jan.supabase.testing.createMockedSupabaseClient
 import kotlinx.coroutines.test.runTest
 import kotlin.test.Test
diff --git a/GoTrue/src/commonTest/kotlin/AdminApiTest.kt b/Auth/src/commonTest/kotlin/AdminApiTest.kt
similarity index 97%
rename from GoTrue/src/commonTest/kotlin/AdminApiTest.kt
rename to Auth/src/commonTest/kotlin/AdminApiTest.kt
index 21ecfbf1..1e899e02 100644
--- a/GoTrue/src/commonTest/kotlin/AdminApiTest.kt
+++ b/Auth/src/commonTest/kotlin/AdminApiTest.kt
@@ -1,12 +1,12 @@
 import io.github.jan.supabase.SupabaseClientBuilder
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.SignOutScope
-import io.github.jan.supabase.gotrue.admin.LinkType
-import io.github.jan.supabase.gotrue.admin.generateLinkFor
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.minimalSettings
-import io.github.jan.supabase.gotrue.user.UserInfo
-import io.github.jan.supabase.gotrue.user.UserMfaFactor
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.SignOutScope
+import io.github.jan.supabase.auth.admin.LinkType
+import io.github.jan.supabase.auth.admin.generateLinkFor
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.minimalSettings
+import io.github.jan.supabase.auth.user.UserInfo
+import io.github.jan.supabase.auth.user.UserMfaFactor
 import io.github.jan.supabase.testing.assertMethodIs
 import io.github.jan.supabase.testing.assertPathIs
 import io.github.jan.supabase.testing.createMockedSupabaseClient
diff --git a/GoTrue/src/commonTest/kotlin/AuthApiTest.kt b/Auth/src/commonTest/kotlin/AuthApiTest.kt
similarity index 97%
rename from GoTrue/src/commonTest/kotlin/AuthApiTest.kt
rename to Auth/src/commonTest/kotlin/AuthApiTest.kt
index 5f6c6ea0..364ffdb3 100644
--- a/GoTrue/src/commonTest/kotlin/AuthApiTest.kt
+++ b/Auth/src/commonTest/kotlin/AuthApiTest.kt
@@ -1,18 +1,18 @@
 import io.github.jan.supabase.SupabaseClientBuilder
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.AuthConfig
-import io.github.jan.supabase.gotrue.FlowType
-import io.github.jan.supabase.gotrue.OtpType
-import io.github.jan.supabase.gotrue.PKCEConstants
-import io.github.jan.supabase.gotrue.SessionSource
-import io.github.jan.supabase.gotrue.SignOutScope
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.minimalSettings
-import io.github.jan.supabase.gotrue.providers.Google
-import io.github.jan.supabase.gotrue.providers.builtin.Email
-import io.github.jan.supabase.gotrue.providers.builtin.IDToken
-import io.github.jan.supabase.gotrue.providers.builtin.OTP
-import io.github.jan.supabase.gotrue.providers.builtin.Phone
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.AuthConfig
+import io.github.jan.supabase.auth.FlowType
+import io.github.jan.supabase.auth.OtpType
+import io.github.jan.supabase.auth.PKCEConstants
+import io.github.jan.supabase.auth.SessionSource
+import io.github.jan.supabase.auth.SignOutScope
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.minimalSettings
+import io.github.jan.supabase.auth.providers.Google
+import io.github.jan.supabase.auth.providers.builtin.Email
+import io.github.jan.supabase.auth.providers.builtin.IDToken
+import io.github.jan.supabase.auth.providers.builtin.OTP
+import io.github.jan.supabase.auth.providers.builtin.Phone
 import io.github.jan.supabase.testing.assertMethodIs
 import io.github.jan.supabase.testing.assertPathIs
 import io.github.jan.supabase.testing.createMockedSupabaseClient
diff --git a/GoTrue/src/commonTest/kotlin/AuthRestExceptionTest.kt b/Auth/src/commonTest/kotlin/AuthRestExceptionTest.kt
similarity index 91%
rename from GoTrue/src/commonTest/kotlin/AuthRestExceptionTest.kt
rename to Auth/src/commonTest/kotlin/AuthRestExceptionTest.kt
index a9fff77a..39db4412 100644
--- a/GoTrue/src/commonTest/kotlin/AuthRestExceptionTest.kt
+++ b/Auth/src/commonTest/kotlin/AuthRestExceptionTest.kt
@@ -1,11 +1,11 @@
 import io.github.jan.supabase.SupabaseClientBuilder
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.exception.AuthRestException
+import io.github.jan.supabase.auth.exception.AuthWeakPasswordException
+import io.github.jan.supabase.auth.minimalSettings
+import io.github.jan.supabase.auth.providers.builtin.Email
 import io.github.jan.supabase.exceptions.BadRequestRestException
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.exception.AuthRestException
-import io.github.jan.supabase.gotrue.exception.AuthWeakPasswordException
-import io.github.jan.supabase.gotrue.minimalSettings
-import io.github.jan.supabase.gotrue.providers.builtin.Email
 import io.github.jan.supabase.testing.createMockedSupabaseClient
 import io.github.jan.supabase.testing.respondJson
 import io.ktor.http.HttpStatusCode
diff --git a/GoTrue/src/commonTest/kotlin/AuthTest.kt b/Auth/src/commonTest/kotlin/AuthTest.kt
similarity index 94%
rename from GoTrue/src/commonTest/kotlin/AuthTest.kt
rename to Auth/src/commonTest/kotlin/AuthTest.kt
index 58414953..ed071de9 100644
--- a/GoTrue/src/commonTest/kotlin/AuthTest.kt
+++ b/Auth/src/commonTest/kotlin/AuthTest.kt
@@ -1,13 +1,13 @@
 import io.github.jan.supabase.SupabaseClientBuilder
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.MemorySessionManager
-import io.github.jan.supabase.gotrue.SessionStatus
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.minimalSettings
-import io.github.jan.supabase.gotrue.providers.Github
-import io.github.jan.supabase.gotrue.user.Identity
-import io.github.jan.supabase.gotrue.user.UserInfo
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.MemorySessionManager
+import io.github.jan.supabase.auth.SessionStatus
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.minimalSettings
+import io.github.jan.supabase.auth.providers.Github
+import io.github.jan.supabase.auth.user.Identity
+import io.github.jan.supabase.auth.user.UserInfo
+import io.github.jan.supabase.auth.user.UserSession
 import io.github.jan.supabase.testing.createMockedSupabaseClient
 import io.github.jan.supabase.testing.pathAfterVersion
 import io.github.jan.supabase.testing.respondJson
diff --git a/GoTrue/src/commonTest/kotlin/AuthTestUtils.kt b/Auth/src/commonTest/kotlin/AuthTestUtils.kt
similarity index 61%
rename from GoTrue/src/commonTest/kotlin/AuthTestUtils.kt
rename to Auth/src/commonTest/kotlin/AuthTestUtils.kt
index b271e573..48439e43 100644
--- a/GoTrue/src/commonTest/kotlin/AuthTestUtils.kt
+++ b/Auth/src/commonTest/kotlin/AuthTestUtils.kt
@@ -1,5 +1,5 @@
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.SessionStatus
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.SessionStatus
 
 fun Auth.sessionSource() = (sessionStatus.value as SessionStatus.Authenticated).source
 
diff --git a/GoTrue/src/commonTest/kotlin/CodeVerifierCacheTest.kt b/Auth/src/commonTest/kotlin/CodeVerifierCacheTest.kt
similarity index 92%
rename from GoTrue/src/commonTest/kotlin/CodeVerifierCacheTest.kt
rename to Auth/src/commonTest/kotlin/CodeVerifierCacheTest.kt
index d22a3424..bc5fe97e 100644
--- a/GoTrue/src/commonTest/kotlin/CodeVerifierCacheTest.kt
+++ b/Auth/src/commonTest/kotlin/CodeVerifierCacheTest.kt
@@ -1,4 +1,4 @@
-import io.github.jan.supabase.gotrue.MemoryCodeVerifierCache
+import io.github.jan.supabase.auth.MemoryCodeVerifierCache
 import kotlinx.coroutines.test.runTest
 import kotlin.test.Test
 import kotlin.test.assertEquals
diff --git a/GoTrue/src/commonTest/kotlin/MemorySessionManagerTest.kt b/Auth/src/commonTest/kotlin/MemorySessionManagerTest.kt
similarity index 94%
rename from GoTrue/src/commonTest/kotlin/MemorySessionManagerTest.kt
rename to Auth/src/commonTest/kotlin/MemorySessionManagerTest.kt
index ee213fbb..316c16a7 100644
--- a/GoTrue/src/commonTest/kotlin/MemorySessionManagerTest.kt
+++ b/Auth/src/commonTest/kotlin/MemorySessionManagerTest.kt
@@ -1,4 +1,4 @@
-import io.github.jan.supabase.gotrue.MemorySessionManager
+import io.github.jan.supabase.auth.MemorySessionManager
 import kotlinx.coroutines.test.runTest
 import kotlin.test.Test
 import kotlin.test.assertEquals
diff --git a/GoTrue/src/commonTest/kotlin/MfaApiTest.kt b/Auth/src/commonTest/kotlin/MfaApiTest.kt
similarity index 95%
rename from GoTrue/src/commonTest/kotlin/MfaApiTest.kt
rename to Auth/src/commonTest/kotlin/MfaApiTest.kt
index df08a83d..67571e6a 100644
--- a/GoTrue/src/commonTest/kotlin/MfaApiTest.kt
+++ b/Auth/src/commonTest/kotlin/MfaApiTest.kt
@@ -1,15 +1,15 @@
 import app.cash.turbine.test
 import io.github.jan.supabase.SupabaseClientBuilder
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.mfa.AuthenticatorAssuranceLevel
-import io.github.jan.supabase.gotrue.mfa.FactorType
-import io.github.jan.supabase.gotrue.mfa.MfaStatus
-import io.github.jan.supabase.gotrue.minimalSettings
-import io.github.jan.supabase.gotrue.providers.builtin.Phone
-import io.github.jan.supabase.gotrue.user.UserInfo
-import io.github.jan.supabase.gotrue.user.UserMfaFactor
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.mfa.AuthenticatorAssuranceLevel
+import io.github.jan.supabase.auth.mfa.FactorType
+import io.github.jan.supabase.auth.mfa.MfaStatus
+import io.github.jan.supabase.auth.minimalSettings
+import io.github.jan.supabase.auth.providers.builtin.Phone
+import io.github.jan.supabase.auth.user.UserInfo
+import io.github.jan.supabase.auth.user.UserMfaFactor
+import io.github.jan.supabase.auth.user.UserSession
 import io.github.jan.supabase.testing.assertMethodIs
 import io.github.jan.supabase.testing.assertPathIs
 import io.github.jan.supabase.testing.createMockedSupabaseClient
diff --git a/Auth/src/jsTest/kotlin/platformSettings.kt b/Auth/src/jsTest/kotlin/platformSettings.kt
new file mode 100644
index 00000000..f6fa8ceb
--- /dev/null
+++ b/Auth/src/jsTest/kotlin/platformSettings.kt
@@ -0,0 +1,3 @@
+import io.github.jan.supabase.auth.AuthConfig
+
+actual fun AuthConfig.platformSettings() = Unit
\ No newline at end of file
diff --git a/Auth/src/jvmTest/kotlin/platformSettings.kt b/Auth/src/jvmTest/kotlin/platformSettings.kt
new file mode 100644
index 00000000..f6fa8ceb
--- /dev/null
+++ b/Auth/src/jvmTest/kotlin/platformSettings.kt
@@ -0,0 +1,3 @@
+import io.github.jan.supabase.auth.AuthConfig
+
+actual fun AuthConfig.platformSettings() = Unit
\ No newline at end of file
diff --git a/Auth/src/linuxTest/kotlin/platformSettings.kt b/Auth/src/linuxTest/kotlin/platformSettings.kt
new file mode 100644
index 00000000..f6fa8ceb
--- /dev/null
+++ b/Auth/src/linuxTest/kotlin/platformSettings.kt
@@ -0,0 +1,3 @@
+import io.github.jan.supabase.auth.AuthConfig
+
+actual fun AuthConfig.platformSettings() = Unit
\ No newline at end of file
diff --git a/Auth/src/mingwTest/kotlin/platformSettings.kt b/Auth/src/mingwTest/kotlin/platformSettings.kt
new file mode 100644
index 00000000..f6fa8ceb
--- /dev/null
+++ b/Auth/src/mingwTest/kotlin/platformSettings.kt
@@ -0,0 +1,3 @@
+import io.github.jan.supabase.auth.AuthConfig
+
+actual fun AuthConfig.platformSettings() = Unit
\ No newline at end of file
diff --git a/GoTrue/src/settingsTest/kotlin/SettingsCodeVerifierCacheTest.kt b/Auth/src/settingsTest/kotlin/SettingsCodeVerifierCacheTest.kt
similarity index 94%
rename from GoTrue/src/settingsTest/kotlin/SettingsCodeVerifierCacheTest.kt
rename to Auth/src/settingsTest/kotlin/SettingsCodeVerifierCacheTest.kt
index fd636b0d..6a3e5fef 100644
--- a/GoTrue/src/settingsTest/kotlin/SettingsCodeVerifierCacheTest.kt
+++ b/Auth/src/settingsTest/kotlin/SettingsCodeVerifierCacheTest.kt
@@ -1,5 +1,5 @@
 import com.russhwolf.settings.MapSettings
-import io.github.jan.supabase.gotrue.SettingsCodeVerifierCache
+import io.github.jan.supabase.auth.SettingsCodeVerifierCache
 import kotlinx.coroutines.test.runTest
 import kotlin.test.Test
 import kotlin.test.assertEquals
diff --git a/GoTrue/src/settingsTest/kotlin/SettingsSessionManagerTest.kt b/Auth/src/settingsTest/kotlin/SettingsSessionManagerTest.kt
similarity index 94%
rename from GoTrue/src/settingsTest/kotlin/SettingsSessionManagerTest.kt
rename to Auth/src/settingsTest/kotlin/SettingsSessionManagerTest.kt
index 68c5440f..0139c01b 100644
--- a/GoTrue/src/settingsTest/kotlin/SettingsSessionManagerTest.kt
+++ b/Auth/src/settingsTest/kotlin/SettingsSessionManagerTest.kt
@@ -1,6 +1,6 @@
 import com.russhwolf.settings.MapSettings
-import io.github.jan.supabase.gotrue.SettingsSessionManager
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.SettingsSessionManager
+import io.github.jan.supabase.auth.user.UserSession
 import kotlinx.coroutines.test.runTest
 import kotlinx.serialization.encodeToString
 import kotlinx.serialization.json.Json
diff --git a/GoTrue/src/settingsTest/kotlin/SettingsTest.kt b/Auth/src/settingsTest/kotlin/SettingsTest.kt
similarity index 81%
rename from GoTrue/src/settingsTest/kotlin/SettingsTest.kt
rename to Auth/src/settingsTest/kotlin/SettingsTest.kt
index 33df27f5..a2bef23a 100644
--- a/GoTrue/src/settingsTest/kotlin/SettingsTest.kt
+++ b/Auth/src/settingsTest/kotlin/SettingsTest.kt
@@ -1,4 +1,4 @@
-import io.github.jan.supabase.gotrue.createDefaultSettingsKey
+import io.github.jan.supabase.auth.createDefaultSettingsKey
 import kotlin.test.Test
 import kotlin.test.assertEquals
 
diff --git a/Auth/src/wasmJsTest/kotlin/platformSettings.kt b/Auth/src/wasmJsTest/kotlin/platformSettings.kt
new file mode 100644
index 00000000..f6fa8ceb
--- /dev/null
+++ b/Auth/src/wasmJsTest/kotlin/platformSettings.kt
@@ -0,0 +1,3 @@
+import io.github.jan.supabase.auth.AuthConfig
+
+actual fun AuthConfig.platformSettings() = Unit
\ No newline at end of file
diff --git a/Functions/src/commonTest/kotlin/FunctionsTest.kt b/Functions/src/commonTest/kotlin/FunctionsTest.kt
index 43a2a12d..50ffc511 100644
--- a/Functions/src/commonTest/kotlin/FunctionsTest.kt
+++ b/Functions/src/commonTest/kotlin/FunctionsTest.kt
@@ -1,10 +1,10 @@
 import io.github.jan.supabase.SupabaseClientBuilder
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.minimalSettings
 import io.github.jan.supabase.functions.FunctionRegion
 import io.github.jan.supabase.functions.Functions
 import io.github.jan.supabase.functions.functions
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.minimalSettings
 import io.github.jan.supabase.testing.createMockedSupabaseClient
 import io.github.jan.supabase.testing.pathAfterVersion
 import io.github.jan.supabase.testing.toJsonElement
diff --git a/GoTrue/src/appleTest/kotlin/platformSettings.kt b/GoTrue/src/appleTest/kotlin/platformSettings.kt
deleted file mode 100644
index c97cb2bd..00000000
--- a/GoTrue/src/appleTest/kotlin/platformSettings.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-import io.github.jan.supabase.gotrue.AuthConfig
-
-actual fun AuthConfig.platformSettings() = Unit
\ No newline at end of file
diff --git a/GoTrue/src/jsTest/kotlin/platformSettings.kt b/GoTrue/src/jsTest/kotlin/platformSettings.kt
deleted file mode 100644
index c97cb2bd..00000000
--- a/GoTrue/src/jsTest/kotlin/platformSettings.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-import io.github.jan.supabase.gotrue.AuthConfig
-
-actual fun AuthConfig.platformSettings() = Unit
\ No newline at end of file
diff --git a/GoTrue/src/jvmTest/kotlin/platformSettings.kt b/GoTrue/src/jvmTest/kotlin/platformSettings.kt
deleted file mode 100644
index c97cb2bd..00000000
--- a/GoTrue/src/jvmTest/kotlin/platformSettings.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-import io.github.jan.supabase.gotrue.AuthConfig
-
-actual fun AuthConfig.platformSettings() = Unit
\ No newline at end of file
diff --git a/GoTrue/src/linuxTest/kotlin/platformSettings.kt b/GoTrue/src/linuxTest/kotlin/platformSettings.kt
deleted file mode 100644
index c97cb2bd..00000000
--- a/GoTrue/src/linuxTest/kotlin/platformSettings.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-import io.github.jan.supabase.gotrue.AuthConfig
-
-actual fun AuthConfig.platformSettings() = Unit
\ No newline at end of file
diff --git a/GoTrue/src/mingwTest/kotlin/platformSettings.kt b/GoTrue/src/mingwTest/kotlin/platformSettings.kt
deleted file mode 100644
index c97cb2bd..00000000
--- a/GoTrue/src/mingwTest/kotlin/platformSettings.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-import io.github.jan.supabase.gotrue.AuthConfig
-
-actual fun AuthConfig.platformSettings() = Unit
\ No newline at end of file
diff --git a/GoTrue/src/wasmJsTest/kotlin/platformSettings.kt b/GoTrue/src/wasmJsTest/kotlin/platformSettings.kt
deleted file mode 100644
index c97cb2bd..00000000
--- a/GoTrue/src/wasmJsTest/kotlin/platformSettings.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-import io.github.jan.supabase.gotrue.AuthConfig
-
-actual fun AuthConfig.platformSettings() = Unit
\ No newline at end of file
diff --git a/Realtime/src/commonTest/kotlin/RealtimeChannelTest.kt b/Realtime/src/commonTest/kotlin/RealtimeChannelTest.kt
index 174a7468..5079b847 100644
--- a/Realtime/src/commonTest/kotlin/RealtimeChannelTest.kt
+++ b/Realtime/src/commonTest/kotlin/RealtimeChannelTest.kt
@@ -1,7 +1,7 @@
 import app.cash.turbine.test
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.minimalSettings
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.minimalSettings
 import io.github.jan.supabase.postgrest.query.filter.FilterOperation
 import io.github.jan.supabase.postgrest.query.filter.FilterOperator
 import io.github.jan.supabase.realtime.CallbackManagerImpl
diff --git a/Realtime/src/commonTest/kotlin/RealtimeTestUtils.kt b/Realtime/src/commonTest/kotlin/RealtimeTestUtils.kt
index 957d1f69..34edb30f 100644
--- a/Realtime/src/commonTest/kotlin/RealtimeTestUtils.kt
+++ b/Realtime/src/commonTest/kotlin/RealtimeTestUtils.kt
@@ -1,5 +1,5 @@
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.user.UserSession
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.user.UserSession
 import io.github.jan.supabase.putJsonObject
 import io.github.jan.supabase.realtime.Presence
 import io.github.jan.supabase.realtime.RealtimeChannel.Companion.CHANNEL_EVENT_PRESENCE_DIFF
diff --git a/Storage/src/commonTest/kotlin/StorageTest.kt b/Storage/src/commonTest/kotlin/StorageTest.kt
index efa878bd..ab972775 100644
--- a/Storage/src/commonTest/kotlin/StorageTest.kt
+++ b/Storage/src/commonTest/kotlin/StorageTest.kt
@@ -1,7 +1,7 @@
 import io.github.jan.supabase.SupabaseClientBuilder
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.minimalSettings
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.minimalSettings
 import io.github.jan.supabase.storage.Storage
 import io.github.jan.supabase.storage.resumable.MemoryResumableCache
 import io.github.jan.supabase.storage.storage
diff --git a/plugins/ApolloGraphQL/src/commonTest/kotlin/ApolloHttpInterceptorTest.kt b/plugins/ApolloGraphQL/src/commonTest/kotlin/ApolloHttpInterceptorTest.kt
index 06231538..27d500de 100644
--- a/plugins/ApolloGraphQL/src/commonTest/kotlin/ApolloHttpInterceptorTest.kt
+++ b/plugins/ApolloGraphQL/src/commonTest/kotlin/ApolloHttpInterceptorTest.kt
@@ -5,9 +5,9 @@ import com.apollographql.apollo.api.http.HttpResponse
 import com.apollographql.apollo.api.http.get
 import com.apollographql.apollo.network.http.HttpInterceptorChain
 import io.github.jan.supabase.SupabaseClient
-import io.github.jan.supabase.gotrue.Auth
-import io.github.jan.supabase.gotrue.auth
-import io.github.jan.supabase.gotrue.minimalSettings
+import io.github.jan.supabase.auth.Auth
+import io.github.jan.supabase.auth.auth
+import io.github.jan.supabase.auth.minimalSettings
 import io.github.jan.supabase.graphql.ApolloHttpInterceptor
 import io.github.jan.supabase.graphql.GraphQL
 import io.github.jan.supabase.graphql.graphql