Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Coding-Meet/Gemini-AI-KMP-App
Gemini AI Kotlin Multiplatform project designed to target Android, iOS, Windows, macOS, Linux, and Web platforms.
https://github.com/Coding-Meet/Gemini-AI-KMP-App
compose-desktop compose-multiplatform gemini gemini-ai gemini-api gemini-kmp gemini-pro gemini-pro-vision generative-art jetpack jetpack-compose jetpackcompose koin kotlin-android kotlin-multiplatform kotlin-multiplatform-mobile kotlin-multiplatform-sample ktor sqldelight sqldelight-sample
Last synced: about 1 month ago
JSON representation
Gemini AI Kotlin Multiplatform project designed to target Android, iOS, Windows, macOS, Linux, and Web platforms.
- Host: GitHub
- URL: https://github.com/Coding-Meet/Gemini-AI-KMP-App
- Owner: Coding-Meet
- License: mit
- Created: 2024-01-08T12:56:30.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-12-21T05:42:46.000Z (about 2 months ago)
- Last Synced: 2024-12-21T06:26:23.112Z (about 2 months ago)
- Topics: compose-desktop, compose-multiplatform, gemini, gemini-ai, gemini-api, gemini-kmp, gemini-pro, gemini-pro-vision, generative-art, jetpack, jetpack-compose, jetpackcompose, koin, kotlin-android, kotlin-multiplatform, kotlin-multiplatform-mobile, kotlin-multiplatform-sample, ktor, sqldelight, sqldelight-sample
- Language: Kotlin
- Homepage: https://coding-meet.github.io/Gemini-AI-KMP-App/
- Size: 15.9 MB
- Stars: 70
- Watchers: 3
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Gemini AI Kotlin Multiplatform App - Chat with Gemini AI 💬✨
[![Gemini AI KMP App Preview](image/Gemini-AI-KMP-App.png)](https://youtu.be/YhWhR6IVs_Y)
Click the image above to watch a demo of the Gemini AI KMP App on YouTube.
## Overview
The Gemini AI KMP App is a Kotlin Compose Multiplatform project designed to target Android, iOS, Windows, macOS, Linux,
and Web platforms. It is an application by Gemini AI where you can retrieve information from text and images in a
conversational format. Additionally, it allows storing chats group-wise using SQLDelight and KStore, and facilitates
changing the Gemini API key.## Download / View App ⬇️
Platform
Release File## Features
- Engage in conversations from any device, including smartphones, tablets, desktops, and web browsers
- Retrieve information from text and images in a conversational format.
- Store chats group-wise using SQLDelight and KStore.
- Facilitating changing the Gemini API key.
- Simple Clean UI with Animations# Technologies:
- Kotlin
- Clean Architecture
- Jetpack Compose for UI development
- Koin for Dependency Injection
- SQLDelight and KStore library to Store chats
- Generative AI for All AI-related stuff## Libraries 🛠️
- [BuildKonfig](https://github.com/yshrsmz/BuildKonfig) - BuildConfig for Kotlin Multiplatform Project. It currently
supports embedding values from gradle file.
- [Koin](https://insert-koin.io/) - Kotlin dependency injection library with multiplatform support.
- [Ktor](https://ktor.io/docs/http-client-multiplatform.html) - Provides multiplatform libraries required to make
network calls to the REST API.
- [Kermit](https://github.com/touchlab/Kermit) - Kermit by Touchlab is a Kotlin Multiplatform centralized logging
utility.
- [ViewModel](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-viewmodel.html) - Compose Multiplatform ViewModel and it's Kotlin Multiplatform
project.
- [Compose Multiplatform File Picker](https://github.com/Wavesonics/compose-multiplatform-file-picker) - A multiplatform
compose widget for picking files.
- [Multiplatform Settings](https://github.com/russhwolf/multiplatform-settings) - This is a Kotlin library for
Multiplatform apps, so that common code can persist key-value data.
- [SQLDelight](https://cashapp.github.io/sqldelight/multiplatform_sqlite/) - Cross-Platform database library
- [KStore](https://github.com/xxfast/KStore) - A tiny Kotlin multiplatform library that assists in saving and restoring
objects to and from disk using kotlinx.coroutines, kotlinx.serialisation and okio.
- [kotlinx.coroutines](https://github.com/Kotlin/kotlinx.coroutines) - Library support for Kotlin coroutines with
multiplatform support.
- [kotlinx.serialization](https://github.com/Kotlin/kotlinx.serialization) - Provides sets of libraries for various
serialization formats eg. JSON, protocol buffers, CBOR etc.
- [kotlinx.datetime](https://github.com/Kotlin/kotlinx-datetime) - A multiplatform Kotlin library for working with date
and time.## Getting Started
### Installation 🛠️
1. Clone this repository:
```bash
git clone https://github.com/Coding-Meet/Gemini-AI-KMP-App.git
```2. Open in the latest version of Android Studio.
3. Before running the project, obtain an API key from [Google AI](https://ai.google.dev) to communicate with the Gemini
API.
4. Add a `local.properties` file to the project root.
5. Place your Gemini API key in `local.properties` file as `GEMINI_API_KEY` property.
```properties
GEMINI_API_KEY=YOUR_API_KEY
```
6. Configuration of SQLDelight in Android Studio:
- Click on the Gradle icon at the top right corner.![](image/install/openGradle.png)
7. Run the following Gradle tasks:
- `generateCommonMainGeminiApiChatDBInterface`
- `generateSqlDelightInterface`![](image/install/config.png)
### Run the app on your device or emulator:
- For Android, run the `composeApp` module by selecting the `app` configuration. If you need help with the
configuration, follow this link
for [android](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-create-first-app.html#run-your-application-on-android)
- For iOS, run the `composeApp` module by selecting the `iosApp` configuration. If you need help with the configuration,
follow this link
for [Ios](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-create-first-app.html#run-your-application-on-ios)
- For Desktop, run `./gradlew :composeApp:run`
- For Web, run `./gradlew :composeApp:wasmJsBrowserDevelopmentRun`## Screenshot 💻
## Android
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
## Window
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
## Mac
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
## Website
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
## Contributing 🤝
Feel free to contribute to this project by submitting issues, pull requests, or providing valuable feedback. Your
contributions are always welcome! 🙌## ❤ Show your support
Give a ⭐️ if this project helped you!
Your generosity is greatly appreciated! Thank you for supporting this project.
## Connect with me
[![](https://img.shields.io/badge/Youtube-red?style=for-the-badge&logo=youtube&logoColor=white)](https://youtube.com/@CodingMeet26?si=FuKwU-aBaf_5kukR)
[![](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/coding-meet-a74933273/)
[![](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://twitter.com/CodingMeet)## Author
**Meet**