Communication Barrier? Not Anymore!
With Cross Chat, you can communicate with people across languages, countries, and locales. For eg:
- You are chatting with a person from Spain
- They send messages in Spanish
- You get the original message in real-time
- And the translated text according to your preferred language (eg. English)
Note: The translations may take 2-10 seconds depending on message length
Check out the demo video here to see Cross Chat in action.
Its primary focus is on:
- Breaking language barriers in real-time text conversations
- Server-driven translations with client-side flexibility
- Clean separation between messaging and translation concerns
This project was built as part of a Hackathon hosted by lingo.dev from 31/01/2026 to 8/02/2026.
You can download the first pre-release version of the Cross Chat Android app here: v1.0.0-alpha.1
Note: The first alpha release contains some bugs, as building a production-ready application within a week wasn’t feasible for me. However these issues will be addressed in upcoming releases 🙂
Cross Chat demonstrates how multilingual chat can be implemented in a scalable, production-friendly way using modern Android and backend technologies.
- Real-time Messaging – Instant delivery using Socket.IO
- Auto Translation – Messages translated based on the user’s preferred language
- Modern UI – Jetpack Compose with Material 3
- Offline First – Local caching with Room Database
- Secure Authentication – JWT-based authentication
- UI: Jetpack Compose, Material 3 UI
- App Navigation: Navigation 3
- DI(Dependency Injection): Koin
- Networking: Ktor Client, Socket.IO Java-based SDK for Web Sockets
- Local Storage: Room Database and Jetpack DataStore
Please refer to the backend repository here: https://github.com/rohit9625/cross-chat-backend
- Android Studio (latest version preferred)
- JDK 17 or higher
- Android SDK 34+ (Target SDK 36)
-
Clone the repository:
git clone https://github.com/androhit/cross-chat.git cd cross-chat -
Backend Configuration: The app is pre-configured to connect to a hosted backend. If you wish to use a local backend, update the
BASE_URLinapp/build.gradle.kts:buildTypes { debug { buildConfigField("String", "BASE_URL", "\"http://YOUR_LOCAL_IP:PORT\"") } }Note: Please check out the cross-chat-backend for running backend server locally.
-
Build the project:
- Open the project in Android Studio.
- Sync the project with Gradle files.
- Build the project using
Build > Make Project.
-
Run the app:
- Select an emulator or a physical device.
- Click the Run button.
The project is structured into several modules/directories based on features:
auth: Authentication code lives herechat: Chats and messages related codeprofile: Managing user preferences/settings
Each of the above modules is further divided into:
data: Implementation of repositories, local (Room), and remote (Ktor/Socket.io) data sources.domain: Core business logic, repository interfaces, and models.ui: Jetpack Compose screens, ViewModels, and UI state management.
Apart from that, we have some root-level modules that share the logic across different feature modules
navigation: Application flow control using Navigation 3.di: Dependency injection setup using Koindesignsystem: Reusable UI components and theme definitions.
Note: The above architecture pattern follows the official Android guidelines and best practices
Contributions are always welcome. But, please contact me before forking or creating a PR :)
Developed with pure dedication by Rohit Verma