From 15ece84648901f7df60f943cca21e8d01ad82e1a Mon Sep 17 00:00:00 2001 From: DominicGBauer Date: Mon, 2 Sep 2024 11:44:30 +0200 Subject: [PATCH 01/11] chore: release beta 1 --- CHANGELOG.md | 14 ++++++++++++++ gradle.properties | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..5234152a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 0.0.1-BETA1 + +* Improve API by changing from Builder pattern to simply instantiating the database `PowerSyncDatabase` + E.g. `val db = PowerSyncDatabase(factory, schema)` +* Use callback context in transactions + E.g. `db.writeTransaction{ ctx -> ctx.execute(...) }` +* Removed unnecessary expiredAt field +* Added table max column validation as there is a hard limit of 63 columns +* Moved SQLDelight models to a separate module to reduce export size +* Replaced default Logger with [Kermit Logger](https://kermit.touchlab.co/) which allows users to more easily use and/or change Logger settings +* Add `retryDelay` and `crudThrottle` options when setting up database connection +* Changed `_viewNameOverride` to `viewNameOverride` \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 821fec64..a4ddada4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,7 +17,7 @@ development=true RELEASE_SIGNING_ENABLED=true # Library config GROUP=com.powersync -LIBRARY_VERSION=0.0.1-ALPHA17 +LIBRARY_VERSION=0.0.1-BETA1 GITHUB_REPO=https://github.com/powersync-ja/powersync-kotlin.git # POM POM_URL=https://github.com/powersync-ja/powersync-kotlin/ From f31543b3e9209e9d1e4cfbacd0b8a5470c6ddff3 Mon Sep 17 00:00:00 2001 From: DominicGBauer Date: Mon, 2 Sep 2024 11:46:54 +0200 Subject: [PATCH 02/11] docs: update from alpha to beta --- README.md | 7 +++---- core/README.md | 4 ++-- demos/hello-powersync/README.md | 8 ++++---- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8707e3bf..3701bb73 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,9 @@ # PowerSync Kotlin Multiplatform SDK -## Alpha release +## Beta release -This SDK is currently in an alpha release. If you find a bug or issue, please open a [GitHub issue](https://github.com/powersync-ja/powersync-kotlin/issues). Questions or feedback can be posted on +This SDK is currently in an beta release. If you find a bug or issue, please open a [GitHub issue](https://github.com/powersync-ja/powersync-kotlin/issues). Questions or feedback can be posted on our [community Discord](https://discord.gg/powersync) - we'd love to hear from you. ## SDK Features @@ -50,11 +50,10 @@ Demo applications are located in the [`demos/`](./demos) directory. See their re ## Current Limitations / Future work -The PowerSync Kotlin Multiplatform SDK is currently in an alpha release and is not yet suitable for production use. +The PowerSync Kotlin Multiplatform SDK is currently in an beta release and is not yet suitable for production use. Current limitations: -- Debugging via configurable logging is not yet implemented. - Integration with SQLDelight schema and API generation (ORM) is not yet supported. - Supports only a single database file. diff --git a/core/README.md b/core/README.md index cd6f5440..4490cb5d 100644 --- a/core/README.md +++ b/core/README.md @@ -14,6 +14,6 @@ This is a Kotlin Multiplatform project targeting Android, iOS platforms, with th ## Note on SQLDelight -The PowerSync core module, internally makes use of [SQLDelight](https://cashapp.github.io/sqldelight) for it database API and typesafe database query generation. +The PowerSync core module, internally makes use of [SQLDelight](https://cashapp.github.io/sqldelight) for it database API and typesafe database query generation. -With the Alpha release, the PowerSync core module does not support integrating with SQLDelight from client applications. \ No newline at end of file +With the Beta release, the PowerSync core module does not support integrating with SQLDelight from client applications. diff --git a/demos/hello-powersync/README.md b/demos/hello-powersync/README.md index b66b4403..98dfcb7c 100644 --- a/demos/hello-powersync/README.md +++ b/demos/hello-powersync/README.md @@ -1,16 +1,16 @@ # Hello-PowerSync Demo App This is a minimal demo app demonstrating use of the PowerSync Kotlin Mutiplatform SDK together -with [Supabase](https://supabase.com/) in a basic Kotlin Multiplatform Compose App. +with [Supabase](https://supabase.com/) in a basic Kotlin Multiplatform Compose App. The app lists customers and allows you to add or delete rows. Data is [synced to users globally](https://docs.powersync.com/usage/sync-rules/example-global-data). For more advanced sync rules and functionality, see the [PowerSync+Supabase Todo-List](../supabase-todolist/README.md) demo application. Supported KMP targets: Android and iOS. -## Alpha release +## Beta release -The Kotlin Multiplatform SDK is currently in an alpha release. If you find a bug or issue, please +The Kotlin Multiplatform SDK is currently in an beta release. If you find a bug or issue, please open a [GitHub issue](https://github.com/powersync-ja/powersync-kotlin/issues). Questions or feedback can be posted on our [community Discord](https://discord.gg/powersync) - we'd love to hear from you. @@ -102,4 +102,4 @@ Choose a run configuration for the Android (`composeApp`) or iOS (`iosApp`) targ * `/iosApp` contains iOS applications. Even if you’re sharing your UI with Compose Multiplatform, you need this entry point for your iOS app. This is also where you should add SwiftUI code for - your project. \ No newline at end of file + your project. From 31c3eca350d70cad4f6112568b7c9461a8045d6d Mon Sep 17 00:00:00 2001 From: Dominic Gunther Bauer <46312751+DominicGBauer@users.noreply.github.com> Date: Mon, 2 Sep 2024 14:47:15 +0200 Subject: [PATCH 03/11] Update README.md Co-authored-by: stevensJourney <51082125+stevensJourney@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3701bb73..e73fb5e4 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ Demo applications are located in the [`demos/`](./demos) directory. See their re ## Current Limitations / Future work -The PowerSync Kotlin Multiplatform SDK is currently in an beta release and is not yet suitable for production use. +The PowerSync Kotlin Multiplatform SDK is currently in a beta release and is not yet suitable for production use. Current limitations: From a0a77f5a7d0510113b5ea6d88b817987bd1324e2 Mon Sep 17 00:00:00 2001 From: Dominic Gunther Bauer <46312751+DominicGBauer@users.noreply.github.com> Date: Mon, 2 Sep 2024 14:49:54 +0200 Subject: [PATCH 04/11] Update demos/hello-powersync/README.md Co-authored-by: stevensJourney <51082125+stevensJourney@users.noreply.github.com> --- demos/hello-powersync/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demos/hello-powersync/README.md b/demos/hello-powersync/README.md index 98dfcb7c..db9bacc9 100644 --- a/demos/hello-powersync/README.md +++ b/demos/hello-powersync/README.md @@ -10,7 +10,7 @@ Supported KMP targets: Android and iOS. ## Beta release -The Kotlin Multiplatform SDK is currently in an beta release. If you find a bug or issue, please +The Kotlin Multiplatform SDK is currently in a beta release. If you find a bug or issue, please open a [GitHub issue](https://github.com/powersync-ja/powersync-kotlin/issues). Questions or feedback can be posted on our [community Discord](https://discord.gg/powersync) - we'd love to hear from you. From a9f0b605a563defe155fa4dca206d10a86b484a3 Mon Sep 17 00:00:00 2001 From: Dominic Gunther Bauer <46312751+DominicGBauer@users.noreply.github.com> Date: Mon, 2 Sep 2024 16:42:44 +0200 Subject: [PATCH 05/11] Update README.md Co-authored-by: benitav --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e73fb5e4..d2ac9bd0 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ## Beta release -This SDK is currently in an beta release. If you find a bug or issue, please open a [GitHub issue](https://github.com/powersync-ja/powersync-kotlin/issues). Questions or feedback can be posted on +This SDK is currently in a beta release. If you find a bug or issue, please open a [GitHub issue](https://github.com/powersync-ja/powersync-kotlin/issues). Questions or feedback can be posted on our [community Discord](https://discord.gg/powersync) - we'd love to hear from you. ## SDK Features From 31022b2c0d1ce9425131912f57970c5de3dd9fb0 Mon Sep 17 00:00:00 2001 From: DominicGBauer Date: Mon, 2 Sep 2024 16:44:28 +0200 Subject: [PATCH 06/11] docs: update from alpha to beta --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d2ac9bd0..f2893f9c 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ Demo applications are located in the [`demos/`](./demos) directory. See their re ## Current Limitations / Future work -The PowerSync Kotlin Multiplatform SDK is currently in a beta release and is not yet suitable for production use. +The PowerSync Kotlin Multiplatform SDK is currently in a beta release and can be used in production if you’ve tested extensively. Current limitations: From 932fb0195b997da627994c67989e92260a446d99 Mon Sep 17 00:00:00 2001 From: DominicGBauer Date: Wed, 4 Sep 2024 18:45:24 +0200 Subject: [PATCH 07/11] chore: pr reverts --- CHANGELOG.md | 4 ++-- gradle.properties | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5234152a..f0d6987c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## 0.0.1-BETA1 +## 1.0.0-BETA1 * Improve API by changing from Builder pattern to simply instantiating the database `PowerSyncDatabase` E.g. `val db = PowerSyncDatabase(factory, schema)` @@ -11,4 +11,4 @@ * Moved SQLDelight models to a separate module to reduce export size * Replaced default Logger with [Kermit Logger](https://kermit.touchlab.co/) which allows users to more easily use and/or change Logger settings * Add `retryDelay` and `crudThrottle` options when setting up database connection -* Changed `_viewNameOverride` to `viewNameOverride` \ No newline at end of file +* Changed `_viewNameOverride` to `viewNameOverride` diff --git a/gradle.properties b/gradle.properties index a4ddada4..d1e04d2a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,7 +17,7 @@ development=true RELEASE_SIGNING_ENABLED=true # Library config GROUP=com.powersync -LIBRARY_VERSION=0.0.1-BETA1 +LIBRARY_VERSION=1.0.0-BETA1 GITHUB_REPO=https://github.com/powersync-ja/powersync-kotlin.git # POM POM_URL=https://github.com/powersync-ja/powersync-kotlin/ From e97ea306469f1e01af8a8e09468fede5dee20d52 Mon Sep 17 00:00:00 2001 From: DominicGBauer Date: Fri, 6 Sep 2024 15:03:02 +0200 Subject: [PATCH 08/11] chore: remove wip from docs --- README.md | 3 +-- demos/supabase-todolist/README.md | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index f2893f9c..fe2c4fe6 100644 --- a/README.md +++ b/README.md @@ -45,8 +45,7 @@ Demo applications are located in the [`demos/`](./demos) directory. See their re - [demos/hello-powersync](./demos/hello-powersync/README.md): A minimal example demonstrating the use of the PowerSync Kotlin Multiplatform SDK and the Supabase connector. -- [demos/supabase-todolist](./demos/supabase-todolist/README.md): ** Currently a work in progress ** - A simple to-do list application demonstrating the use of the PowerSync Kotlin Multiplatform SDK and the Supabase connector. +- [demos/supabase-todolist](./demos/supabase-todolist/README.md): A simple to-do list application demonstrating the use of the PowerSync Kotlin Multiplatform SDK and the Supabase connector. ## Current Limitations / Future work diff --git a/demos/supabase-todolist/README.md b/demos/supabase-todolist/README.md index aae1ffae..3b4c511c 100644 --- a/demos/supabase-todolist/README.md +++ b/demos/supabase-todolist/README.md @@ -1,7 +1,5 @@ # PowerSync + Supabase Kotlin Multiplatform Demo: Todo List App -*** This demo app is a work in progress. It can be run, but certain functionality does not yet work. *** - It is a simple to-do list application demonstrating use of the PowerSync Kotlin Mutiplatform SDK together with [Supabase](https://supabase.com/) in a basic Kotlin Multiplatform Compose App. From 48e4cb0e92393ac63e0953aafa4311ee67386232 Mon Sep 17 00:00:00 2001 From: DominicGBauer Date: Fri, 6 Sep 2024 15:30:31 +0200 Subject: [PATCH 09/11] chore: remove no longer required creds --- demos/supabase-todolist/README.md | 4 ---- demos/supabase-todolist/shared/build.gradle.kts | 2 -- 2 files changed, 6 deletions(-) diff --git a/demos/supabase-todolist/README.md b/demos/supabase-todolist/README.md index 3b4c511c..d920141f 100644 --- a/demos/supabase-todolist/README.md +++ b/demos/supabase-todolist/README.md @@ -30,10 +30,6 @@ POWERSYNC_URL=https://foo.powersync.journeyapps.com # Enter your Supabase project's URL and public anon key (Project settings > API) SUPABASE_URL=https://foo.supabase.co SUPABASE_ANON_KEY=foo - -# Enter your Supabase auth user's details -SUPABASE_USER_EMAIL=user@example.com -SUPABASE_USER_PASSWORD=foo ``` ## Run the app diff --git a/demos/supabase-todolist/shared/build.gradle.kts b/demos/supabase-todolist/shared/build.gradle.kts index c623da05..217aa838 100644 --- a/demos/supabase-todolist/shared/build.gradle.kts +++ b/demos/supabase-todolist/shared/build.gradle.kts @@ -102,7 +102,5 @@ buildkonfig { stringConfigField("POWERSYNC_URL") stringConfigField("SUPABASE_URL") stringConfigField("SUPABASE_ANON_KEY") - stringConfigField("SUPABASE_USER_EMAIL") - stringConfigField("SUPABASE_USER_PASSWORD") } } From 808976f905932c5d408f7f33cd79ae7cb42766e4 Mon Sep 17 00:00:00 2001 From: benitav Date: Fri, 6 Sep 2024 15:53:48 +0200 Subject: [PATCH 10/11] Readme polish --- README.md | 185 ++---------------------------- demos/hello-powersync/README.md | 2 +- demos/supabase-todolist/README.md | 2 +- 3 files changed, 13 insertions(+), 176 deletions(-) diff --git a/README.md b/README.md index fe2c4fe6..8cc6f5c7 100644 --- a/README.md +++ b/README.md @@ -6,23 +6,15 @@ # PowerSync Kotlin Multiplatform SDK +This is the PowerSync client SDK for Kotlin Mutliplatform. This SDK currently supports Android and iOS as targets. + +See a summary of features [here](https://docs.powersync.com/client-sdk-references/kotlin-multiplatform-alpha#sdk-features). + ## Beta release This SDK is currently in a beta release. If you find a bug or issue, please open a [GitHub issue](https://github.com/powersync-ja/powersync-kotlin/issues). Questions or feedback can be posted on our [community Discord](https://discord.gg/powersync) - we'd love to hear from you. -## SDK Features - -* Provides real-time streaming of database changes, using Kotlin Coroutines and Flows. -* Offers direct access to the SQLite database, enabling the use of SQL on both client and server - sides. -* Operations are asynchronous, ensuring the user interface remains unblocked. -* Supports concurrent database operations, allowing one write and multiple reads simultaneously. -* Enables subscription to queries for receiving live updates. -* Eliminates the need for client-side database migrations as these are managed automatically. - -Supported KMP targets: Android and iOS. - ## Structure: Packages - [core](./core/) @@ -49,7 +41,7 @@ Demo applications are located in the [`demos/`](./demos) directory. See their re ## Current Limitations / Future work -The PowerSync Kotlin Multiplatform SDK is currently in a beta release and can be used in production if you’ve tested extensively. +The PowerSync Kotlin Multiplatform SDK is currently in a beta release. It can be used in production if you’ve tested your use cases. Current limitations: @@ -63,9 +55,7 @@ Future work/ideas: - Management of DB connections on each platform natively. - Supporting additional targets (JVM, Wasm). -## Getting Started - -### Installation +## Installation Add the PowerSync Kotlin Multiplatform SDK to your project by adding the following to your `build.gradle.kts` file: @@ -88,7 +78,7 @@ If want to use the Supabase Connector, also add the following to `commonMain.dep implementation("com.powersync:connector-supabase:$powersyncVersion") ``` -#### Cocoapods +### Cocoapods We recommend using Cocoapods (as opposed to SMP) for iOS targets. Add the following to the `cocoapods` config in your `build.gradle.kts` @@ -109,163 +99,10 @@ cocoapods { Note: The `linkOnly` attribute is set to `true` and framework is set to `isStatic = true` to ensure that the `powersync-sqlite-core` binaries are only statically linked. -### Usage - -The first step is creating a PowerSync account and setting up a PowerSync instance. If you are using Supabase, we have a step-by-step tutorial -available [here](https://docs.powersync.com/integration-guides/supabase-+-powersync). - -For other Postgres backend providers, follow these steps: - -* Sign up for a free PowerSync account - here [https://www.powersync.com/](https://www.powersync.com/). -* Visit the [PowerSync dashboard](https://powersync.journeyapps.com/) to create a PowerSync instance. After signing up you will be prompted to start the onboarding wizard which guides your though the - steps required for this, and find database specific - instructions [here](https://docs.powersync.com/usage/installation/database-setup). Existing users: start the onboarding wizard by navigating to Help > Start guide in the top-right corner. -* Developer documentation for PowerSync is available [here](https://docs.powersync.com/). - -#### 1. Define the schema for the on-device SQLite database. - -You need to set up your schema in your app project. This involves defining your schema in code using the PowerSync syntax. -This schema represents a "view" of the downloaded data. No migrations are required — the schema is applied directly when the PowerSync database is constructed. - -```kotlin -import com.powersync.db.schema.Column -import com.powersync.db.schema.Schema -import com.powersync.db.schema.Table - -val schema: Schema = Schema( - Table( - name = "customers", - columns = listOf( - Column.text("name"), - Column.text("email") - ) - ) -) - -``` - -Note: No need to declare a primary key `id` column, as PowerSync will automatically create this. - -#### 2. Implement a backend connector to define how PowerSync communicates with your backend. - -The PowerSync backend connector provides the connection between your application backend and the PowerSync managed database. -It is used to: - -1. Retrieve a token to connect to the PowerSync instance. -2. Apply local changes on your backend application server (and from there, to Postgres) - -If you are using Supabase, you can use [SupabaseConnector.kt](./connectors/supabase/src/commonMain/kotlin/com/powersync/connector/supabase/SupabaseConnector.kt) as a starting point. - -```kotlin -class MyConnector : PowerSyncBackendConnector() { - override suspend fun fetchCredentials(): PowerSyncCredentials { - // implement fetchCredentials to obtain the necessary credentials to connect to your backend - // See an example implementation in connectors/supabase/src/commonMain/kotlin/com/powersync/connector/supabase/SupabaseConnector.kt - } - - override suspend fun uploadData(database: PowerSyncDatabase) { - // Implement uploadData to send local changes to your backend service - // You can omit this method if you only want to sync data from the server to the client - // See an example implementation in connectors/supabase/src/commonMain/kotlin/com/powersync/connector/supabase/SupabaseConnector.kt - // See https://docs.powersync.com/usage/installation/app-backend-setup/writing-client-changes for considerations. - } -} -``` - -#### 3. Initialize the PowerSync database and connect it to the connector, using `PowerSyncBuilder`: - -You need to instantiate the PowerSync database — this is the core managed database. -Its primary functions are to record all changes in the local database, whether online or offline. In addition, it automatically uploads changes to your app backend when connected. - -a. Create platform specific `DatabaseDriverFactory` to be used by the `PowerSyncBuilder` to create the SQLite database driver. - - ```kotlin -// Android -val driverFactory = DatabaseDriverFactory(this) - -// iOS -val driverFactory = DatabaseDriverFactory() - ``` - -b. Build a `PowerSyncDatabase` instance using the `PowerSyncBuilder` and the `DatabaseDriverFactory`. The schema you created in a previous step is also used as a parameter: - - ```kotlin -// commonMain -val database = PowerSyncBuilder.from(driverFactory, schema).build() - ``` - -c. Connect the `PowerSyncDatabase` to the backend connector: - - ```kotlin -// commonMain -database.connect(MyConnector()) - ``` - -**Special case: Compose Multiplatform** - -The artifact `com.powersync:powersync-compose` provides a simpler API: - -```kotlin -// commonMain -val database = rememberPowerSyncDatabase(schema) -remember { - database.connect(MyConnector()) -} -``` - -#### 4. Subscribe to changes in data - -```kotlin -// You can watch any SQL query. This excutes a read query every time the source tables are modified. -fun watchCustomers(): Flow> { - // TODO: implement your UI based on the result set - return database.watch("SELECT * FROM customers", mapper = { cursor -> - User( - id = cursor.getString(0)!!, - name = cursor.getString(1)!!, - email = cursor.getString(2)!! - ) - }) -} -``` - -#### 5. Insert, update, and delete data in the local database - -The `execute` method executes a write query (INSERT, UPDATE, DELETE) and returns the results (if any). +## Getting Started -```kotlin -suspend fun insertCustomer(name: String, email: String) { - database.writeTransaction { tx -> - tx.execute( - sql = "INSERT INTO customers (id, name, email) VALUES (uuid(), ?, ?)", - parameters = listOf(name, email) - ) - } -} +Our [full SDK reference](https://docs.powersync.com/client-sdk-references/kotlin-multiplatform-alpha#getting-started) contains everything you need to know to get started implementing PowerSync in your project. -suspend fun updateCustomer(id: String, name: String, email: String) { - database.execute( - sql = "UPDATE customers SET name = ? WHERE email = ?", - parameters = listOf(name, email) - ) -} +## Examples -suspend fun deleteCustomer(id: String? = null) { - // If no id is provided, delete the first customer in the database - val targetId = - id ?: database.getOptional( - sql = "SELECT id FROM customers LIMIT 1", - mapper = { cursor -> - cursor.getString(0)!! - } - ) ?: return - - database.writeTransaction { tx -> - tx.execute( - sql = "DELETE FROM customers WHERE id = ?", - parameters = listOf(targetId) - ) - } -} -``` +For example projects built with PowerSync and Kotlin Multiplatform, see our [Demo Apps / Example Projects](https://docs.powersync.com/resources/demo-apps-example-projects#kotlin-multiplatform) gallery. Most of these projects can also be found in the [`demos/`](demos/) directory. diff --git a/demos/hello-powersync/README.md b/demos/hello-powersync/README.md index db9bacc9..2896b3cc 100644 --- a/demos/hello-powersync/README.md +++ b/demos/hello-powersync/README.md @@ -67,7 +67,7 @@ create publication powersync for table customers; 2. Open the repo in Android Studio. This creates a `local.properties` file in root and should contain a `sdk.dir=/path/to/android/sdk` line. 3. Sync the project with Gradle (this should happen automatically, or choose File > Sync project with Gradle Files). 4. Open the `demos/hello-powersync` directory in Android Studio and sync this project with Gradle. -5. Insert your Supabase project, auth user, and PowerSync project credentials into the `local.properties` file: +5. Insert your Supabase project URL, Supabase Anon Key, and PowerSync instance URL into the `local.properties` file: ``` # local.properties diff --git a/demos/supabase-todolist/README.md b/demos/supabase-todolist/README.md index 3b4c511c..9ca1badb 100644 --- a/demos/supabase-todolist/README.md +++ b/demos/supabase-todolist/README.md @@ -19,7 +19,7 @@ A step-by-step guide on Supabase<>PowerSync integration is available [here](http 2. Open the repo in Android Studio. This creates a `local.properties` file in root and should contain a `sdk.dir=/path/to/android/sdk` line. 3. Sync the project with Gradle (this should happen automatically, or choose File > Sync project with Gradle Files). 4. Open the `demos/supabase-todolist` directory in Android Studio and sync this project with Gradle. -5. Insert your Supabase project, auth user, and PowerSync project credentials into the `local.properties` file: +5. Insert your Supabase project URL, Supabase Anon Key, and PowerSync instance URL into the `local.properties` file: ```bash # local.properties From e787c76118a02a23c9eeacbe31bee21145eee719 Mon Sep 17 00:00:00 2001 From: benitav Date: Fri, 6 Sep 2024 16:29:50 +0200 Subject: [PATCH 11/11] Update core/README.md --- core/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/README.md b/core/README.md index 4490cb5d..9f40d0ac 100644 --- a/core/README.md +++ b/core/README.md @@ -16,4 +16,4 @@ This is a Kotlin Multiplatform project targeting Android, iOS platforms, with th The PowerSync core module, internally makes use of [SQLDelight](https://cashapp.github.io/sqldelight) for it database API and typesafe database query generation. -With the Beta release, the PowerSync core module does not support integrating with SQLDelight from client applications. +The PowerSync core module does not currently support integrating with SQLDelight from client applications.