Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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.

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

📱 Mobile

android

🖥️ Desktop

window
macos
linux

🌎 Web

website

## 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


android
android


android
android


android
android


android
android


android

## Window


win


win


win


win


win


win


win


win


win


win

## Mac


mac


mac


mac


mac


mac


mac


mac


mac


mac


mac

## Website


web


web


web


web


web


web


web


web


web


web

## 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!


Buy Me A Coffee

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**