{"id":23697951,"url":"https://github.com/Coding-Meet/Gemini-AI-KMP-App","last_synced_at":"2025-09-03T01:32:14.163Z","repository":{"id":222264832,"uuid":"740487604","full_name":"Coding-Meet/Gemini-AI-KMP-App","owner":"Coding-Meet","description":"Gemini AI Kotlin Multiplatform project designed to target Android, iOS, Windows, macOS, Linux, and Web platforms.","archived":false,"fork":false,"pushed_at":"2025-01-26T05:34:21.000Z","size":16682,"stargazers_count":79,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-26T06:21:53.225Z","etag":null,"topics":["compose-desktop","compose-multiplatform","gemini","gemini-ai","gemini-api","gemini-kmp","gemini-pro-vision","generative-art","jetpack","jetpack-compose","jetpackcompose","koin","kotlin-android","kotlin-multiplatform","kotlin-multiplatform-mobile","kotlin-multiplatform-sample","ktor","modern-android-development","sqldelight","sqldelight-sample"],"latest_commit_sha":null,"homepage":"https://coding-meet.github.io/Gemini-AI-KMP-App/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Coding-Meet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"buy_me_a_coffee":"codingmeet"}},"created_at":"2024-01-08T12:56:30.000Z","updated_at":"2025-01-26T05:34:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"06867bad-a21d-4a36-877e-4c2e16a1bef9","html_url":"https://github.com/Coding-Meet/Gemini-AI-KMP-App","commit_stats":null,"previous_names":["coding-meet/gemini-ai-kmp-app"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Coding-Meet/Gemini-AI-KMP-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coding-Meet%2FGemini-AI-KMP-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coding-Meet%2FGemini-AI-KMP-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coding-Meet%2FGemini-AI-KMP-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coding-Meet%2FGemini-AI-KMP-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Coding-Meet","download_url":"https://codeload.github.com/Coding-Meet/Gemini-AI-KMP-App/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coding-Meet%2FGemini-AI-KMP-App/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273377045,"owners_count":25094525,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-02T02:00:09.530Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compose-desktop","compose-multiplatform","gemini","gemini-ai","gemini-api","gemini-kmp","gemini-pro-vision","generative-art","jetpack","jetpack-compose","jetpackcompose","koin","kotlin-android","kotlin-multiplatform","kotlin-multiplatform-mobile","kotlin-multiplatform-sample","ktor","modern-android-development","sqldelight","sqldelight-sample"],"created_at":"2024-12-30T07:01:38.287Z","updated_at":"2025-09-03T01:32:12.407Z","avatar_url":"https://github.com/Coding-Meet.png","language":"Kotlin","funding_links":["https://buymeacoffee.com/codingmeet","https://www.buymeacoffee.com/codingmeet"],"categories":["Multiplatform Apps (Search Results)","Kotlin"],"sub_categories":[],"readme":"# Gemini AI Kotlin Multiplatform App - Chat with Gemini AI 💬✨\n\n[![Gemini AI KMP App Preview](image/Gemini-AI-KMP-App.png)](https://youtu.be/YhWhR6IVs_Y)\n\nClick the image above to watch a demo of the Gemini AI KMP App on YouTube.\n\n## Overview\n\nThe Gemini AI KMP App is a Kotlin Compose Multiplatform project designed to target Android, iOS, Windows, macOS, Linux,\nand Web platforms. It is an application by Gemini AI where you can retrieve information from text and images in a\nconversational format. Additionally, it allows storing chats group-wise using SQLDelight and KStore, and facilitates\nchanging the Gemini API key.\n\n## Download / View App ⬇️\n\n\u003ctable\u003e\n\u003ctr\u003e\n   \u003cth\u003ePlatform\u003c/th\u003e\n   \u003cth\u003eRelease File\u003c/th\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n   \u003ctd\u003e📱 Mobile \u003c/td\u003e\n   \u003ctd\u003e\n      \u003ca href=\"https://github.com/Coding-Meet/Gemini-AI-KMP-App/releases\"\u003e\u003cimg src=\"https://img.shields.io/badge/Android-black.svg?style=for-the-badge\u0026logo=android\" alt=\"android\"\u003e\u003c/a\u003e\n   \u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n   \u003ctd\u003e🖥️ Desktop \u003c/td\u003e\n   \u003ctd\u003e\n      \u003ca href=\"https://github.com/Coding-Meet/Gemini-AI-KMP-App/releases\"\u003e\u003cimg src=\"https://img.shields.io/badge/Windows-black.svg?style=for-the-badge\u0026logo=windows\" alt=\"window\"\u003e\u003c/a\u003e\n      \u003ca href=\"https://github.com/Coding-Meet/Gemini-AI-KMP-App/releases\"\u003e\u003cimg src=\"https://img.shields.io/badge/MacOS-black.svg?style=for-the-badge\u0026logo=apple\" alt=\"macos\"\u003e\u003c/a\u003e\n      \u003ca href=\"https://github.com/Coding-Meet/Gemini-AI-KMP-App/releases\"\u003e\u003cimg src=\"https://img.shields.io/badge/Linux-black.svg?style=for-the-badge\u0026logo=linux\" alt=\"linux\"\u003e\u003c/a\u003e\n   \u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n   \u003ctd\u003e🌎 Web\u003c/td\u003e\n   \u003ctd\u003e\n      \u003ca href=\"https://coding-meet.github.io/Gemini-AI-KMP-App/\"\u003e\u003cimg src=\"https://img.shields.io/badge/View%20Live-black.svg?style=for-the-badge\u0026logo=internetexplorer\" alt=\"website\"\u003e\u003c/a\u003e\n   \u003c/td\u003e\n\u003c/tr\u003e\n\n\u003c/table\u003e\n\n## Features\n\n- Engage in conversations from any device, including smartphones, tablets, desktops, and web browsers\n- Retrieve information from text and images in a conversational format.\n- Store chats group-wise using SQLDelight and KStore.\n- Facilitating changing the Gemini API key.\n- Simple Clean UI with Animations\n\n# Technologies:\n\n- Kotlin\n- Clean Architecture\n- Jetpack Compose for UI development\n- Koin for Dependency Injection\n- SQLDelight and KStore library to Store chats\n- Generative AI for All AI-related stuff\n\n## Libraries 🛠️\n\n- [BuildKonfig](https://github.com/yshrsmz/BuildKonfig) - BuildConfig for Kotlin Multiplatform Project. It currently\n  supports embedding values from gradle file.\n- [Koin](https://insert-koin.io/) - Kotlin dependency injection library with multiplatform support.\n- [Ktor](https://ktor.io/docs/http-client-multiplatform.html) - Provides multiplatform libraries required to make\n  network calls to the REST API.\n- [Kermit](https://github.com/touchlab/Kermit) - Kermit by Touchlab is a Kotlin Multiplatform centralized logging\n  utility.\n- [ViewModel](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-viewmodel.html) - Compose Multiplatform ViewModel and it's Kotlin Multiplatform\n  project.\n- [Compose Multiplatform File Picker](https://github.com/Wavesonics/compose-multiplatform-file-picker) - A multiplatform\n  compose widget for picking files.\n- [Multiplatform Settings](https://github.com/russhwolf/multiplatform-settings) - This is a Kotlin library for\n  Multiplatform apps, so that common code can persist key-value data.\n- [SQLDelight](https://cashapp.github.io/sqldelight/multiplatform_sqlite/) - Cross-Platform database library\n- [KStore](https://github.com/xxfast/KStore) - A tiny Kotlin multiplatform library that assists in saving and restoring\n  objects to and from disk using kotlinx.coroutines, kotlinx.serialisation and okio.\n- [kotlinx.coroutines](https://github.com/Kotlin/kotlinx.coroutines) - Library support for Kotlin coroutines with\n  multiplatform support.\n- [kotlinx.serialization](https://github.com/Kotlin/kotlinx.serialization) - Provides sets of libraries for various\n  serialization formats eg. JSON, protocol buffers, CBOR etc.\n- [kotlinx.datetime](https://github.com/Kotlin/kotlinx-datetime) - A multiplatform Kotlin library for working with date\n  and time.\n\n## Getting Started\n\n### Installation 🛠️\n\n1. Clone this repository:\n   ```bash\n   git clone https://github.com/Coding-Meet/Gemini-AI-KMP-App.git\n   ```\n\n2. Open in the latest version of Android Studio.\n3. Before running the project, obtain an API key from [Google AI](https://ai.google.dev) to communicate with the Gemini\n   API.\n4. Add a `local.properties` file to the project root.\n5. Place your Gemini API key in `local.properties` file as `GEMINI_API_KEY` property.\n```properties\nGEMINI_API_KEY=YOUR_API_KEY\n```\n6. Configuration of SQLDelight in Android Studio:\n  - Click on the Gradle icon at the top right corner.\n\n   ![](image/install/openGradle.png)\n\n7. Run the following Gradle tasks:\n  - `generateCommonMainGeminiApiChatDBInterface`\n  - `generateSqlDelightInterface`\n\n   ![](image/install/config.png)\n\n\n### Run the app on your device or emulator:\n\n- For Android, run the `composeApp` module by selecting the `app` configuration. If you need help with the\n  configuration, follow this link\n  for [android](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-create-first-app.html#run-your-application-on-android)\n- For iOS, run the `composeApp` module by selecting the `iosApp` configuration. If you need help with the configuration,\n  follow this link\n  for [Ios](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-create-first-app.html#run-your-application-on-ios)\n- For Desktop, run `./gradlew :composeApp:run`\n- For Web, run `./gradlew :composeApp:wasmJsBrowserDevelopmentRun`\n\n## Screenshot 💻\n\n## Android\n\n\u003ctable\u003e\n   \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/android/android1.png\" alt=\"android\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"image/android/android2.png\" alt=\"android\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/android/android3.png\" alt=\"android\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"image/android/android4.png\" alt=\"android\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/android/android5.png\" alt=\"android\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"image/android/android6.png\" alt=\"android\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/android/android7.png\" alt=\"android\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"image/android/android8.png\" alt=\"android\"\u003e\u003c/td\u003e\n       \u003c/tr\u003e\n   \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/android/android9.png\" alt=\"android\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n\u003c/table\u003e\n\n## Window\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/windows/win1.png\" alt=\"win\"\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/windows/win2.png\" alt=\"win\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/windows/win3.png\" alt=\"win\"\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/windows/win4.png\" alt=\"win\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/windows/win5.png\" alt=\"win\"\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/windows/win6.png\" alt=\"win\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/windows/win7.png\" alt=\"win\"\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/windows/win8.png\" alt=\"win\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/windows/win9.png\" alt=\"win\"\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"image/windows/win10.png\" alt=\"win\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Mac\n\n\u003ctable\u003e\n   \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/mac/mac1.jpeg\" alt=\"mac\"\u003e\u003c/td\u003e\n       \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/mac/mac2.png\" alt=\"mac\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/mac/mac3.jpeg\" alt=\"mac\"\u003e\u003c/td\u003e\n       \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/mac/mac4.jpeg\" alt=\"mac\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/mac/mac5.jpeg\" alt=\"mac\"\u003e\u003c/td\u003e\n       \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/mac/mac6.jpeg\" alt=\"mac\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/mac/mac7.jpeg\" alt=\"mac\"\u003e\u003c/td\u003e\n       \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/mac/mac8.jpeg\" alt=\"mac\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/mac/mac9.jpeg\" alt=\"mac\"\u003e\u003c/td\u003e\n       \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/mac/mac10.jpeg\" alt=\"mac\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n\u003c/table\u003e\n\n## Website\n\n\u003ctable\u003e\n   \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/web/web1.png\" alt=\"web\"\u003e\u003c/td\u003e\n       \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/web/web2.png\" alt=\"web\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/web/web3.png\" alt=\"web\"\u003e\u003c/td\u003e\n       \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/web/web4.png\" alt=\"web\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/web/web5.png\" alt=\"web\"\u003e\u003c/td\u003e\n       \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/web/web6.png\" alt=\"web\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/web/web7.png\" alt=\"web\"\u003e\u003c/td\u003e\n       \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/web/web8.png\" alt=\"web\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/web/web9.png\" alt=\"web\"\u003e\u003c/td\u003e\n       \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"image/web/web10.png\" alt=\"web\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n\u003c/table\u003e\n\n## Contributing 🤝\n\nFeel free to contribute to this project by submitting issues, pull requests, or providing valuable feedback. Your\ncontributions are always welcome! 🙌\n\n## ❤ Show your support\n\nGive a ⭐️ if this project helped you!\n\n\u003ca href=\"https://www.buymeacoffee.com/codingmeet\" target=\"_blank\"\u003e\n\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" width=\"160\"\u003e\n\u003c/a\u003e\n\nYour generosity is greatly appreciated! Thank you for supporting this project.\n\n## Connect with me\n\n[![](https://img.shields.io/badge/Youtube-red?style=for-the-badge\u0026logo=youtube\u0026logoColor=white)](https://youtube.com/@CodingMeet26?si=FuKwU-aBaf_5kukR)\n[![](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](https://www.linkedin.com/in/coding-meet-a74933273/)\n[![](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge\u0026logo=twitter\u0026logoColor=white)](https://twitter.com/CodingMeet)\n\n## Author\n\n**Meet**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCoding-Meet%2FGemini-AI-KMP-App","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCoding-Meet%2FGemini-AI-KMP-App","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCoding-Meet%2FGemini-AI-KMP-App/lists"}