Chatter AI is a Gemini AI powered chatting app which can simulate mutual chatting behaviour.
If you find my repository helpful, you can buy me a coffee to see more PoC samples 🍻☕️
APK Link (https://drive.google.com/file/d/1F-NiE28cLRZd3_tpXKRD3mdVVeL9iPMa/view?usp=sharing)
Note
Chatter AI is a standalone application which handles/wraps all of necessary simulation/backend logics inside to simulate real time chatting experince.
In order to run project in your local be aware below points ->
- Android Studio Iguana | 2023.2.1 RC 1 | Build #AI-232.10227.8.2321.11379558, built on January 30, 2024
- Checkout
master
branch - Add below parameters to your local.properties file.
SERVICE_ENDPOINT_BASE_URL=https://randomuser.me/
GEMINI_API_KEY={Your_Gemini_API_Key_Here}
-> You can follow this link to checkout Gemini API documentation.
- Kotlin
- Gemini AI
- Kotlin Coroutines
- Kotlin DSL
- Material 3
- Patterns
- MVVM
- MVI
- Clean Architecture
- Repository
- JetPack Compose
- Edge to Edge UI design
- Native/Custom Splash Screen
- Dark/Light UI Mode
- Compose Destinations / Documentation
- Ktor Client
- Gradle Version Catalogs (toml)
- ROOM DB
- Relational DB usage
- DataStrore
- Lottie Animations
- Coil
- Timber Client logging
- Dependency Injection (HILT)
- Turbine
- MockK
- Unit testing
- Instrumentation Testing
- JUnit5
Chatter AI consist of 4 different screeens namely Splash, Login, Dashboard, Messaging.
General capabilities of Chatter AI:
- Creation an account
- Login to an account
- Logout from an account
- Remember last logged in user
- List chat sessions
- Match with random chat mate
- Show chat history
- Send message to chat mate
- Receive Gemini AI response as reply
- Receive chat mate's response
- UI Flow starts with Lottie animation and app navigates to Login Screen or Dashboard Screen by checking logged in status of any user.
- On Login Screen below validations are applied for given input text
- Input text can not be blank
- If it's login button action, user should be registered before with given name input
- If it's register button action, user should not be registered before with given name input.
- Login Button navigates user to Dashboard screen
- Register button fetches random user information via
randomuser.me
public api and overrides name with given text. Then saves it into local database and logs user in. - Logged in user will be remembered for second app launch.
- Dashboard Screen lists user's chat sessions.
Logout
button logs user out and clears logged in status.Start new chat
button generates new user viarandomuser.me
api and creates a chat session with new fetched user.
- Tap actions for any row navigates user to Messaging Screen.
- Messaging history will be restored for each chat session.
- User can send message by using bottom text field and send button.
- Integrated chat simulation engine will pick for each send message and will reply it with Gemini AI response, if valid api key provided. As a fallback mechanism (in case of any issue with Gemini) simulation engine will reply with
Answer for '<User's message>' -> {random integer value}
format
Launch & Login Direct Dashboard & Logut Login Validations Find Chat Mate Messaging
The code is licensed as:
Copyright 2021 Attila Akıncı
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.