Skip to content

A modern, real-time messaging app built with Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP) for Android, iOS, and Desktop. Features offline-first architecture, WebSockets, multi-module setup, and 100% shared UI.

Notifications You must be signed in to change notification settings

IronManYG/Chirp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Chirp

Chirp Logo

A modern, cross-platform messaging application built with Kotlin Multiplatform and Compose Multiplatform, targeting Android, iOS, and Desktop.

JDK 17 Kotlin 2.2.0 Compose Multiplatform AGP 8.11.1

Android iOS Desktop

About This Project

This application is a comprehensive implementation of a cross-platform chat solution, built to demonstrate mastery of Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP).

It implements industry-standard practices including:

  • Kotlin Multiplatform (KMP) architecture for shared business logic.

  • Compose Multiplatform (CMP) for 100% shared UI across platforms.

  • Multi-module Gradle setup following best practices.

  • Offline-first architecture with robust data synchronization.

  • Real-time messaging using WebSockets.

Table of Contents

Features

Authentication & Profile

  • ๐Ÿ” Secure Auth โ€” Registration, Login, and Session Management with auto-refresh.

  • ๐Ÿ“ง Email Verification โ€” Deep linking support for verifying email addresses.

  • ๐Ÿ”„ Password Recovery โ€” "Forgot Password" flow via email and deep links.

  • ๐Ÿ“ธ Profile Management โ€” Native photo picking (Android/iOS/Desktop) and image uploads.

Messaging & Connectivity

  • โšก Real-time Chat โ€” WebSockets for instant message delivery.

  • ๐Ÿ“ก Offline-First โ€” Local database caching (Room/SQLite) allows full app usage without internet.

  • ๐Ÿ“„ Pagination โ€” Efficient data loading for chat history and lists.

  • ๐Ÿ”” Push Notifications โ€” Firebase Cloud Messaging (Android/iOS) and local notifications ( Desktop).

  • ๐Ÿ“ฑ Cross-platform Sync โ€” Seamless state synchronization across all 5 platforms.

Internationalization & UI

  • ๐ŸŒ Multilingual โ€” Full support for English and Arabic (RTL).

  • ๐ŸŒ— Theming โ€” 100% responsive UI with Light and Dark modes.

  • ๐Ÿ”ค Dynamic Typography โ€” Cairo font for Arabic, Plus Jakarta Sans for Latin scripts.

Platform Features

  • ๐Ÿ–ฅ๏ธ Desktop Support โ€” Native Windows, macOS, and Linux apps.

  • ๐Ÿ“ฆ Distribution โ€” Installers via Conveyor.

Roadmap: Extended Features

Having established the core foundation, I am now focused on integrating advanced features to further refine the architecture and tackle complex, real-world engineering challenges.

๐Ÿ” Advanced Security

  • Local Data Encryption
    • Android: Encrypt data using Android Keystore System
    • iOS: Secure storage via Keychain Services
    • Desktop: Integration with Windows Credential Manager, macOS Keychain, and Linux Secret Service

๐ŸŽค Rich Media & Audio

  • Voice Messages
    • Audio recording implementation
    • Waveform visualization
    • Scrubbing and playback controls
    • Background playback support
  • Image Attachments
    • Multiple image selection (up to 10)
    • Automatic compression
    • Upload progress indicators
    • Full-screen interactive viewer

โšก Real-Time Enhancements

  • Typing Indicators
    • Visual cues for single user typing
    • "Several people are typing" support
  • Smart Verification
    • Auto-detection of unverified users during login
    • Automatic trigger for verification emails

๐Ÿ‘ฎ Chat Administration

  • Admin Roles
    • Group creator assignment as Admin
  • Moderation
    • Member removal functionality
  • Group Management
    • Cascade deletion logic (if Admin leaves)
    • Warning dialogs for destructive actions

Backend

This application is powered by a custom backend service. You can visit the backend repository here: Chirp Backend API

Screenshots

Note: These screenshots showcase key features but do not represent every screen in the application.

Splash Screen

Splash Screen

Authorization

Register
Register Screen
Register + Success
Register Success
Login (Tablet)
Login Screen - Tablet

Profile Settings

Profile Settings

Chat

Empty Chat
Empty Chat - Dark Mode
Chat List
Chat List
Inside Chat (Desktop)
Inside Chat - Desktop Light
Chat Members (Desktop)
Chat Members - Desktop Dark

Tech Stack

Core Technologies

Category Technology Version
Language Kotlin 2.2.0
UI Framework Compose Multiplatform 1.9.0-beta01
Compose BOM Jetpack Compose BOM 2025.07.00
Android Gradle Plugin AGP 8.11.1
KSP Kotlin Symbol Processing 2.2.0-2.0.2

Libraries & Frameworks

Category Library Purpose
Dependency Injection Koin Multiplatform DI
Networking Ktor Client REST & WebSockets
Database Room Local persistence (Offline-first)
SQLite SQLite Bundled 2.5.2
Preferences DataStore Key-value storage
Async Coroutines + Flow Concurrency
Date/Time kotlinx-datetime Multiplatform dates
Images Coil 3 Image loading & Caching
Permissions moko-permissions Cross-platform permissions
Push Firebase Cloud Messaging Notifications

Build & Tooling

Tool Purpose
Gradle Build system with Kotlin DSL
Version Catalog Centralized dependency management
Convention Plugins Reusable build logic in build-logic/
Conveyor Desktop app packaging

Architecture

Chirp follows a multi-module clean architecture with clear separation of concerns:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        composeApp                           โ”‚
โ”‚              (Android + iOS + Desktop entry)                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
          โ–ผ                   โ–ผ                   โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  feature:auth   โ”‚ โ”‚  feature:chat   โ”‚ โ”‚     core        โ”‚
โ”‚  โ”œโ”€presentation โ”‚ โ”‚  โ”œโ”€presentation โ”‚ โ”‚  โ”œโ”€presentation โ”‚
โ”‚  โ””โ”€domain       โ”‚ โ”‚  โ”œโ”€domain       โ”‚ โ”‚  โ”œโ”€domain       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚  โ”œโ”€data         โ”‚ โ”‚  โ”œโ”€data         โ”‚
                    โ”‚  โ””โ”€database     โ”‚ โ”‚  โ””โ”€designsystem โ”‚
                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Key Principles:

  • Unidirectional Data Flow โ€” State flows down, events flow up
  • Repository Pattern โ€” Abstract data sources behind interfaces
  • Dependency Injection โ€” Koin for multiplatform DI
  • Platform Abstraction โ€” expect/actual for platform-specific code

๐Ÿ“– Learn more: Architecture Documentation

Quick Start

Prerequisites

Requirement Version Notes
JDK 17 Required for Gradle
Android Studio Latest With SDK Platform 36
Xcode Latest macOS only, for iOS

Clone & Build

# Clone the repository  
git clone https://github.com/IronManYG/Chirp.git  
cd Chirp  
  
# Build all modules  
.\gradlew.bat build          # Windows  
./gradlew build              # macOS/Linux  

Run

# Android (debug APK)  
.\gradlew.bat :composeApp:assembleDebug  
  
# Desktop  
.\gradlew.bat :composeApp:run  
  
# iOS โ€” Open iosApp in Xcode and run  

Package Desktop App

# Compose Multiplatform packaging  
.\gradlew.bat :composeApp:packageDistributionForCurrentOS  
  
# Conveyor (cross-platform installers)  
conveyor make  

๐Ÿ“– Detailed setup: Installation Guide

Documentation

Document Description
Installation Environment setup, IDE configuration, first build
Usage Run, build, and test commands for all platforms
Architecture Module design, DI, navigation, build conventions
Project Structure Module breakdown, directory layout, entry points
Configuration BuildKonfig, Firebase, Room schemas, signing
Testing Test commands, source locations, best practices
Internationalization i18n, RTL support, typography, adding locales
Deep Links & Auth Auth flows, deep link routing, diagrams
Notifications FCM setup for Android and iOS
Contributing Contribution guidelines, code style, PR process

Contributing

We welcome contributions! Please read our Contributing Guide before submitting a PR.

Quick Checklist

# Before opening a PR  
.\gradlew.bat build                    # Build all  
.\gradlew.bat test                     # Run tests  
.\gradlew.bat :composeApp:lint         # Lint check  

Acknowledgment

This project was built as part of the CMP Android & iOS Course by Philipp Lackner, created in collaboration with JetBrains.

Special thanks to Philipp Lackner and JetBrains for the comprehensive curriculum and resources.

Thank you for checking out Chirp!

If you have any questions or suggestions, feel free to open an issue or reach out to the maintainer. Happy coding!

License

This project is licensed under the MIT License.

Note: A LICENSE file should be added to the repository root.

Changelog

See CHANGELOG.md for a detailed history of changes.


Built with โค๏ธ using Kotlin Multiplatform and Compose Multiplatform

About

A modern, real-time messaging app built with Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP) for Android, iOS, and Desktop. Features offline-first architecture, WebSockets, multi-module setup, and 100% shared UI.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published