
Firebase API wrapper enabling shared, Firebase-like APIs for app initialization, messaging and storage; supports storage emulator, service-account credentials, and public API coverage tracking.
Open-source Kotlin Multiplatform (Android/Apple/JVM) wrapper library for Firebase APIs.
Language:
README.ko.md
| Module | Firebase Product | Current Scope | Public API Coverage | Status |
|---|---|---|---|---|
firebase-common |
Core | App init, app instance, options, app registry | 21 / 25 = 84.0% |
partial |
firebase-message |
Cloud Messaging | Topic/token APIs (Android/Apple only, JVM unsupported) | 6 / 18 = 33.3% |
partial |
firebase-storage |
Cloud Storage | Storage reference APIs + bytes/download/delete (see notes) | 13 / 31 = 41.9% |
partial |
| Target | Support |
|---|---|
| Android | Yes |
Apple (ios*, macos*, tvos*, watchos*) |
Yes |
| JVM | Yes |
Note:
firebase-message currently supports Android/Apple targets only.Goal:
100% Firebase API compatibility coverage for KMP.100% public API coverage for each supported Firebase product module.Coverage model:
not started, partial, near parity, parity
Current snapshot:
3 / 18 = 16.7%
docs/public-api/README.md
| Module | Coverage | Catalog |
|---|---|---|
firebase-common |
21 / 25 = 84.0% |
docs/public-api/firebase-common.md |
firebase-message |
6 / 18 = 33.3% |
docs/public-api/firebase-message.md |
firebase-storage |
13 / 31 = 41.9% |
docs/public-api/firebase-storage.md |
Target product families (18):
Maven coordinates (example version: 0.0.1):
dependencies {
implementation("io.github.big-gates:firebase-common:0.0.1")
implementation("io.github.big-gates:firebase-message:0.0.1")
implementation("io.github.big-gates:firebase-storage:0.0.1")
}import com.biggates.firebase.common.Firebase
import com.biggates.firebase.common.FirebaseOptions
import com.biggates.firebase.common.PlatformContext
fun initFirebaseOnJvm() {
Firebase.initializeApp(
context = PlatformContext(),
options = FirebaseOptions(
applicationId = "your-app-id",
apiKey = "your-api-key",
projectId = "your-project-id",
storageBucket = "your-project-id.appspot.com",
serviceAccountPath = "/absolute/path/service-account.json" // JVM-only
)
)
}firebase-message does not provide a JVM target at this time. Use Android/Apple targets for Messaging APIs.
import com.biggates.firebase.common.Firebase
import com.biggates.firebase.storage.storage
suspend fun storageJvmSample() {
val storage = Firebase.storage
val ref = storage.reference("images/profile.png")
ref.putBytes("hello-storage".encodeToByteArray())
val bytes = ref.getBytes(maxDownloadSizeBytes = 1024 * 1024)
val downloadUrl = ref.getDownloadUrl()
ref.delete()
val gsRef = storage.referenceFromUrl("gs://your-project-id.appspot.com/images/profile.png")
val childRef = gsRef.child("thumb.png")
// For Storage Emulator
storage.useEmulator("127.0.0.1", 9199)
}initializeApp(context) fails. Use initializeApp(context, options).serviceAccountPath is omitted on JVM, ADC (Application Default Credentials) is used.firebase-message does not support JVM target currently.storageBucket is required when using default Firebase.storage on JVM.StorageReference.putBytes(...) is currently pending on iOS target../gradlew :firebase-common:check :firebase-message:check :firebase-storage:check
./gradlew :firebase-common:compileKotlinJvm :firebase-storage:compileKotlinJvmdocs/public-api/README.md
AGENTS.md
docs/agents/firebase-common.mddocs/agents/firebase-message.mddocs/agents/firebase-storage.mdOpen-source Kotlin Multiplatform (Android/Apple/JVM) wrapper library for Firebase APIs.
Language:
README.ko.md
| Module | Firebase Product | Current Scope | Public API Coverage | Status |
|---|---|---|---|---|
firebase-common |
Core | App init, app instance, options, app registry | 21 / 25 = 84.0% |
partial |
firebase-message |
Cloud Messaging | Topic/token APIs (Android/Apple only, JVM unsupported) | 6 / 18 = 33.3% |
partial |
firebase-storage |
Cloud Storage | Storage reference APIs + bytes/download/delete (see notes) | 13 / 31 = 41.9% |
partial |
| Target | Support |
|---|---|
| Android | Yes |
Apple (ios*, macos*, tvos*, watchos*) |
Yes |
| JVM | Yes |
Note:
firebase-message currently supports Android/Apple targets only.Goal:
100% Firebase API compatibility coverage for KMP.100% public API coverage for each supported Firebase product module.Coverage model:
not started, partial, near parity, parity
Current snapshot:
3 / 18 = 16.7%
docs/public-api/README.md
| Module | Coverage | Catalog |
|---|---|---|
firebase-common |
21 / 25 = 84.0% |
docs/public-api/firebase-common.md |
firebase-message |
6 / 18 = 33.3% |
docs/public-api/firebase-message.md |
firebase-storage |
13 / 31 = 41.9% |
docs/public-api/firebase-storage.md |
Target product families (18):
Maven coordinates (example version: 0.0.1):
dependencies {
implementation("io.github.big-gates:firebase-common:0.0.1")
implementation("io.github.big-gates:firebase-message:0.0.1")
implementation("io.github.big-gates:firebase-storage:0.0.1")
}import com.biggates.firebase.common.Firebase
import com.biggates.firebase.common.FirebaseOptions
import com.biggates.firebase.common.PlatformContext
fun initFirebaseOnJvm() {
Firebase.initializeApp(
context = PlatformContext(),
options = FirebaseOptions(
applicationId = "your-app-id",
apiKey = "your-api-key",
projectId = "your-project-id",
storageBucket = "your-project-id.appspot.com",
serviceAccountPath = "/absolute/path/service-account.json" // JVM-only
)
)
}firebase-message does not provide a JVM target at this time. Use Android/Apple targets for Messaging APIs.
import com.biggates.firebase.common.Firebase
import com.biggates.firebase.storage.storage
suspend fun storageJvmSample() {
val storage = Firebase.storage
val ref = storage.reference("images/profile.png")
ref.putBytes("hello-storage".encodeToByteArray())
val bytes = ref.getBytes(maxDownloadSizeBytes = 1024 * 1024)
val downloadUrl = ref.getDownloadUrl()
ref.delete()
val gsRef = storage.referenceFromUrl("gs://your-project-id.appspot.com/images/profile.png")
val childRef = gsRef.child("thumb.png")
// For Storage Emulator
storage.useEmulator("127.0.0.1", 9199)
}initializeApp(context) fails. Use initializeApp(context, options).serviceAccountPath is omitted on JVM, ADC (Application Default Credentials) is used.firebase-message does not support JVM target currently.storageBucket is required when using default Firebase.storage on JVM.StorageReference.putBytes(...) is currently pending on iOS target../gradlew :firebase-common:check :firebase-message:check :firebase-storage:check
./gradlew :firebase-common:compileKotlinJvm :firebase-storage:compileKotlinJvmdocs/public-api/README.md
AGENTS.md
docs/agents/firebase-common.mddocs/agents/firebase-message.mddocs/agents/firebase-storage.md