 
 
  
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).



