BibleKit KMP is a Kotlin Multiplatform library that provides Bible-related functionality for iOS, macOS, and Android platforms.
- 🔍 Powerful verse search functionality
- 📚 Cross-platform Bible database access
- 📱 Support for iOS, macOS, and Android
- ⚡️ Built with Kotlin Multiplatform
- Android: minSdk 24+
- iOS: 13.0+
- macOS: 10.15+
dependencies {
implementation("com.aarkaystudio.biblekit:biblekit:0.2.1")
}Add the following to your Package.swift file:
dependencies: [
.package(url: "https://github.com/VerseWell/biblekit-kmp.git", from: "0.2.1")
]If you prefer using native Swift instead of Kotlin Multiplatform, we maintain a dedicated Swift library alongside this one:
- BibleKit Swift - A native Swift library for iOS/macOS developers who want the most idiomatic Swift APIs and experience for Apple platforms
As a Swift developer first, I am actively maintaining both libraries. This KMP version allows me to explore cross-platform development potential while providing a solution for teams that need Android support. Both libraries provide the same core functionality, so choose the one that best fits your project's architecture and team preferences.
Important
Your app must include a file named bible.db in its bundle. This SQLite database file contains the Bible content and is required for the library to function. You can find:
- Example database file: bible.db (World English Bible with translation modifications)
- Database schema: database.sq
You can replace the bible.db file with your preferred translation as long as it follows the same database schema.
// Copy bible.db from assets to app directory if it doesn't exist
val dbFile = File(applicationContext.filesDir, "bible.db")
if (!dbFile.exists()) {
applicationContext.assets.open("bible.db").use { input ->
FileOutputStream(dbFile).use { output ->
input.copyTo(output)
}
}
}
// Initialize with the database file path
val provider = BibleProvider.create(
dbFactory = BibleDatabaseFactory(context = applicationContext),
filePath = dbFile.absolutePath
)
// Search
val results = provider.search(
query = "love",
verseIDs = null
)// Get the bible.db path from the app bundle
guard let dbPath = Bundle.main.path(forResource: "bible", ofType: "db") else {
fatalError("bible.db not found in bundle")
}
// Initialize with the database file path
let provider = BibleProvider.companion.create(
dbFactory: BibleDatabaseFactory(),
filePath: dbPath
)
// Search
let results = try await provider.search(
query: "love",
verseIDs: nil
)For detailed API documentation, visit BibleKit KMP Documentation
The example database included with BibleKit uses the World English Bible translation (Protestant, US English) with modifications.
- You can visit the official WEB page for more information about this translation.
- For details regarding the modifications we've made to the WEB translation in our database, please refer to our Translation Modifications documentation.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.