Chatify is a full-stack, real-time chat application that demonstrates modern Android and server-side Kotlin development. It includes:
- A Ktor WebSocket server that handles user connections, avatar data, and message broadcasting.
- A Jetpack Compose client app where users pick avatars, set a nickname, and join a shared group chat room.
✅ Real-time messaging powered by Ktor WebSockets
✅ Avatar selection — choose from a list served by the backend
✅ Nickname setup — shown in chat messages
✅ Group chat room where all users can communicate
✅ Reactive UI with Jetpack Compose
| Layer | Technology |
|---|---|
| Backend | Ktor (WebSockets, JSON serialization, Exposed ORM, Kotlin Coroutines) |
| Database | H2 (via Exposed) |
| Client | Jetpack Compose |
| Networking | Ktor Client (CIO engine, WebSocket support) |
| Serialization | kotlinx.serialization |
| Dependency Injection | Hilt |
| State Management | Kotlin Flow + ViewModel |
1️⃣ Avatar Selection The client requests an avatar list from the server. The user chooses one and enters a nickname.
2️⃣ Join Chat Room After submitting, the app navigates to the group chat screen.
3️⃣ Real-Time Messaging Messages are exchanged instantly via WebSocket. User messages are styled separately (mine vs. others).



