{"id":34912768,"url":"https://github.com/pranav291/ghost-messenger","last_synced_at":"2026-05-01T22:32:49.034Z","repository":{"id":330096437,"uuid":"1121561923","full_name":"pranav291/ghost-messenger","owner":"pranav291","description":"👻 Ghost Messenger - A privacy-first, open-source messaging app with disappearing messages, end-to-end encryption, and Ghost Mode. Built with Kotlin, Jetpack Compose, and Ktor backend","archived":false,"fork":false,"pushed_at":"2025-12-23T07:29:32.000Z","size":126,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-24T21:46:34.537Z","etag":null,"topics":["android","chat","end-to-end-encryption","jetpack-compose-","kotlin","kotlin-android","ktor","messager","mongodb-","telegram","websocket","whatsapp"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pranav291.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-23T07:26:20.000Z","updated_at":"2025-12-23T07:49:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pranav291/ghost-messenger","commit_stats":null,"previous_names":["pranav291/ghost-messenger"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/pranav291/ghost-messenger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranav291%2Fghost-messenger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranav291%2Fghost-messenger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranav291%2Fghost-messenger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranav291%2Fghost-messenger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pranav291","download_url":"https://codeload.github.com/pranav291/ghost-messenger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranav291%2Fghost-messenger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32515838,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","chat","end-to-end-encryption","jetpack-compose-","kotlin","kotlin-android","ktor","messager","mongodb-","telegram","websocket","whatsapp"],"created_at":"2025-12-26T11:56:47.017Z","updated_at":"2026-05-01T22:32:49.014Z","avatar_url":"https://github.com/pranav291.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003ch1 align=\"center\"\u003e👻 Ghost Messenger\u003c/h1\u003e\n\u003ch3 align=\"center\"\u003ePrivacy-First • Open Source • Next Generation Messaging\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Version-1.0.0--beta-blue?style=for-the-badge\" alt=\"Version\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Release-22%20Feb%202027-green?style=for-the-badge\" alt=\"Release\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-orange?style=for-the-badge\" alt=\"License\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Platform-Android-brightgreen?style=for-the-badge\u0026logo=android\" alt=\"Platform\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://t.me/SpiralTechDivision\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Telegram-Join%20Community-blue?style=for-the-badge\u0026logo=telegram\" alt=\"Telegram\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/spiraltech/ghost-messenger\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/GitHub-Star%20Us-black?style=for-the-badge\u0026logo=github\" alt=\"GitHub\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Kotlin-Backend-purple?style=flat-square\u0026logo=kotlin\" alt=\"Kotlin\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Jetpack%20Compose-UI-blue?style=flat-square\u0026logo=jetpackcompose\" alt=\"Compose\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Ktor-Server-orange?style=flat-square\" alt=\"Ktor\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MongoDB-Database-green?style=flat-square\u0026logo=mongodb\" alt=\"MongoDB\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/WebSocket-Real--time-red?style=flat-square\" alt=\"WebSocket\"/\u003e\n\u003c/p\u003e\n\n---\n\n\u003e ⚠️ **WORK IN PROGRESS** - This project is under active development. Features may change, and some functionality might not be fully implemented yet. We welcome contributions and feedback!\n\n---\n\n## 📖 Table of Contents\n\n- [About](#-about-ghost-messenger)\n- [Vision \u0026 Mission](#-vision--mission)\n- [Key Features](#-key-features)\n- [Architecture](#-architecture)\n- [Tech Stack](#-tech-stack)\n- [Getting Started](#-getting-started)\n- [API Documentation](#-api-documentation)\n- [Development Timeline](#-development-timeline)\n- [Roadmap](#-roadmap)\n- [Contributing](#-contributing)\n- [Support](#-support)\n- [License](#-license)\n\n---\n\n## 🌟 About Ghost Messenger\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"other/ic_ghost_logo.png\" width=\"150\" alt=\"Ghost Messenger Logo\"/\u003e\n\u003c/p\u003e\n\n**Ghost Messenger** is a revolutionary, privacy-focused messaging application that puts user security and data protection at the forefront. Built from the ground up with modern technologies, Ghost Messenger offers a unique \"Ghost Mode\" feature that allows messages to disappear after a set time, ensuring your conversations remain truly private.\n\nIn an era where digital privacy is increasingly compromised, Ghost Messenger stands as a beacon of hope for users who value their personal data. Unlike mainstream messaging apps that harvest user data for advertising, Ghost Messenger is committed to a privacy-first approach with end-to-end encryption and zero data collection policies.\n\n### Why Ghost Messenger?\n\n| Problem | Our Solution |\n|---------|--------------|\n| Messages stored forever on servers | **Ghost Mode** - Messages auto-delete after set time |\n| Companies selling your data | **Zero data collection** - We don't track you |\n| Complex, bloated apps | **Clean, minimal UI** - Focus on what matters |\n| Closed source, no transparency | **Open source** - Audit our code yourself |\n| No control over your data | **Full user control** - Delete anything, anytime |\n\n---\n\n## 🎯 Vision \u0026 Mission\n\n### Our Vision\nTo create a world where digital communication is truly private, secure, and under the complete control of users - not corporations.\n\n### Our Mission\n- **Democratize Privacy**: Make enterprise-grade security accessible to everyone\n- **Empower Users**: Give complete control over personal data and conversations\n- **Foster Trust**: Build transparent, open-source software that users can verify\n- **Innovate Responsibly**: Push the boundaries of messaging technology while respecting user privacy\n\n### Core Values\n1. **Privacy First** - Every feature is designed with privacy as the primary consideration\n2. **Transparency** - Open source code, clear policies, no hidden agendas\n3. **User Empowerment** - You own your data, you control your experience\n4. **Security by Design** - Not an afterthought, but the foundation\n5. **Simplicity** - Powerful features wrapped in an intuitive interface\n\n---\n\n## ✨ Key Features\n\n### 💬 Core Messaging\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\"\u003e\n\n**Real-time Communication**\n- Instant message delivery via WebSocket\n- Typing indicators show when contacts are composing\n- Read receipts with blue double-tick\n- Online/offline status indicators\n- Message delivery confirmation\n\n\u003c/td\u003e\n\u003ctd width=\"50%\"\u003e\n\n**Rich Media Support**\n- Share images, videos, and documents\n- Voice message recording and playback\n- Location sharing with map preview\n- Contact card sharing\n- File attachments up to 100MB\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n### 👻 Ghost Mode (Signature Feature)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/ghost_mode_demo.gif\" width=\"300\" alt=\"Ghost Mode Demo\"/\u003e\n\u003c/p\u003e\n\nGhost Mode is what sets us apart. Enable it on any conversation to make messages automatically disappear:\n\n| Duration | Use Case |\n|----------|----------|\n| **5 minutes** | Quick, sensitive information |\n| **1 hour** | Time-sensitive discussions |\n| **24 hours** | Daily conversations |\n| **7 days** | Extended but temporary chats |\n| **Custom** | Set your own duration |\n\n**Additional Ghost Mode Features:**\n- 🔔 Screenshot detection alerts\n- 🚫 Forward prevention option\n- 👁️ View-once media\n- 🔒 No server-side message storage\n\n### 📞 Voice \u0026 Video Calls\n\n| Feature | Description |\n|---------|-------------|\n| **HD Voice Calls** | Crystal clear audio with noise cancellation |\n| **Video Calls** | Up to 1080p video quality |\n| **Group Calls** | Up to 8 participants |\n| **Call Recording** | Record important calls (with consent) |\n| **Screen Sharing** | Share your screen during video calls |\n\n### 🔍 Smart Search\n\n- **Global Search**: Find messages, contacts, and media across all chats\n- **In-Chat Search**: Search within specific conversations\n- **Filter by Type**: Images, videos, documents, links\n- **Date Range**: Find messages from specific time periods\n\n### 📢 Channels \u0026 Groups\n\n**Channels** - Broadcast to unlimited subscribers\n- Public or private channels\n- Admin-only posting option\n- Subscriber analytics\n- Scheduled posts\n\n**Groups** - Collaborate with up to 200,000 members\n- Multiple admin levels\n- Polls and surveys\n- Pinned messages\n- Slow mode option\n\n---\n\n## 🏗️ Architecture\n\nGhost Messenger follows a clean, modular architecture designed for scalability, maintainability, and testability.\n\n### System Overview\n\n```\n┌─────────────────────────────────────────────────────────────────────────────┐\n│                           GHOST MESSENGER ECOSYSTEM                          │\n├─────────────────────────────────────────────────────────────────────────────┤\n│                                                                              │\n│  ┌─────────────────────────────────────────────────────────────────────┐    │\n│  │                        ANDROID APPLICATION                           │    │\n│  │  ┌───────────────────────────────────────────────────────────────┐  │    │\n│  │  │                    PRESENTATION LAYER                          │  │    │\n│  │  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐          │  │    │\n│  │  │  │ Screens │  │ViewModels│  │  State  │  │   UI    │          │  │    │\n│  │  │  │(Compose)│  │  (MVVM) │  │  Flows  │  │ Events  │          │  │    │\n│  │  │  └─────────┘  └─────────┘  └─────────┘  └─────────┘          │  │    │\n│  │  └───────────────────────────────────────────────────────────────┘  │    │\n│  │  ┌───────────────────────────────────────────────────────────────┐  │    │\n│  │  │                      DOMAIN LAYER                              │  │    │\n│  │  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐          │  │    │\n│  │  │  │Use Cases│  │Repositories│ │ Models │  │Interfaces│          │  │    │\n│  │  │  └─────────┘  └─────────┘  └─────────┘  └─────────┘          │  │    │\n│  │  └───────────────────────────────────────────────────────────────┘  │    │\n│  │  ┌───────────────────────────────────────────────────────────────┐  │    │\n│  │  │                       DATA LAYER                               │  │    │\n│  │  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐          │  │    │\n│  │  │  │  Room   │  │ Retrofit│  │WebSocket│  │DataStore│          │  │    │\n│  │  │  │   DB    │  │   API   │  │ Client  │  │  Prefs  │          │  │    │\n│  │  │  └─────────┘  └─────────┘  └─────────┘  └─────────┘          │  │    │\n│  │  └───────────────────────────────────────────────────────────────┘  │    │\n│  └─────────────────────────────────────────────────────────────────────┘    │\n│                                     │                                        │\n│                                     ▼                                        │\n│  ┌─────────────────────────────────────────────────────────────────────┐    │\n│  │                         KTOR BACKEND SERVER                          │    │\n│  │  ┌───────────────────────────────────────────────────────────────┐  │    │\n│  │  │                      API LAYER (REST)                          │  │    │\n│  │  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐          │  │    │\n│  │  │  │  Auth   │  │ Message │  │  Call   │  │ Channel │          │  │    │\n│  │  │  │ Routes  │  │ Routes  │  │ Routes  │  │ Routes  │          │  │    │\n│  │  │  └─────────┘  └─────────┘  └─────────┘  └─────────┘          │  │    │\n│  │  └───────────────────────────────────────────────────────────────┘  │    │\n│  │  ┌───────────────────────────────────────────────────────────────┐  │    │\n│  │  │                   REAL-TIME LAYER (WebSocket)                  │  │    │\n│  │  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐          │  │    │\n│  │  │  │  Chat   │  │ Typing  │  │ Online  │  │  Call   │          │  │    │\n│  │  │  │ Server  │  │ Events  │  │ Status  │  │Signaling│          │  │    │\n│  │  │  └─────────┘  └─────────┘  └─────────┘  └─────────┘          │  │    │\n│  │  └───────────────────────────────────────────────────────────────┘  │    │\n│  │  ┌───────────────────────────────────────────────────────────────┐  │    │\n│  │  │                     DATA LAYER                                 │  │    │\n│  │  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐          │  │    │\n│  │  │  │ MongoDB │  │   S3    │  │  Redis  │  │   FCM   │          │  │    │\n│  │  │  │Database │  │ Storage │  │  Cache  │  │  Push   │          │  │    │\n│  │  │  └─────────┘  └─────────┘  └─────────┘  └─────────┘          │  │    │\n│  │  └───────────────────────────────────────────────────────────────┘  │    │\n│  └─────────────────────────────────────────────────────────────────────┘    │\n│                                                                              │\n└─────────────────────────────────────────────────────────────────────────────┘\n```\n\n---\n\n## 🛠️ Tech Stack\n\n### Android Application\n\n| Technology | Purpose | Why We Chose It |\n|------------|---------|-----------------|\n| **Kotlin** | Primary Language | Modern, concise, null-safe, officially supported by Google |\n| **Jetpack Compose** | UI Framework | Declarative UI, less boilerplate, better performance |\n| **Hilt** | Dependency Injection | Official DI solution, compile-time verification |\n| **Room** | Local Database | Type-safe SQLite abstraction, LiveData/Flow support |\n| **Retrofit** | HTTP Client | Industry standard, type-safe, easy to use |\n| **OkHttp** | WebSocket Client | Reliable, efficient, great interceptor support |\n| **DataStore** | Preferences | Modern replacement for SharedPreferences |\n| **Coil** | Image Loading | Kotlin-first, lightweight, Compose support |\n| **Navigation Compose** | Navigation | Type-safe navigation, deep linking support |\n\n### Backend Server\n\n| Technology | Purpose | Why We Chose It |\n|------------|---------|-----------------|\n| **Kotlin** | Primary Language | Shared language with Android, coroutines support |\n| **Ktor** | Web Framework | Lightweight, async, Kotlin-native |\n| **MongoDB** | Database | Flexible schema, horizontal scaling, JSON-like documents |\n| **JWT** | Authentication | Stateless, secure, industry standard |\n| **WebSocket** | Real-time | Bi-directional, low latency communication |\n| **AWS S3** | File Storage | Scalable, reliable, cost-effective |\n| **Firebase FCM** | Push Notifications | Reliable delivery, cross-platform |\n\n### Development Tools\n\n| Tool | Purpose |\n|------|---------|\n| **Android Studio** | IDE |\n| **IntelliJ IDEA** | Backend IDE |\n| **Git** | Version Control |\n| **GitHub Actions** | CI/CD |\n| **Docker** | Containerization |\n| **Postman** | API Testing |\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n\nBefore you begin, ensure you have the following installed:\n\n- **Android Studio** Hedgehog (2023.1.1) or later\n- **JDK 17** or higher\n- **MongoDB 6.0+** (local or Atlas)\n- **Kotlin 1.9+**\n- **Gradle 8.0+**\n\n### Clone the Repository\n\n```bash\ngit clone https://github.com/pranav291/ghost-messenger.git\ncd ghost-messenger\n```\n\n### Backend Setup\n\n1. **Navigate to backend directory**\n   ```bash\n   cd backend\n   ```\n\n2. **Configure environment variables**\n   Create `src/main/resources/application.conf`:\n   ```hocon\n   ktor {\n       deployment {\n           port = 8080\n       }\n       application {\n           modules = [ com.pranavajay.ApplicationKt.module ]\n       }\n   }\n   \n   mongodb {\n       connectionString = \"mongodb://localhost:27017\"\n       database = \"ghost_messenger\"\n   }\n   \n   jwt {\n       secret = \"your-super-secret-key-min-32-chars\"\n       issuer = \"ghost-messenger\"\n       audience = \"ghost-users\"\n       realm = \"Ghost Messenger\"\n   }\n   \n   aws {\n       accessKey = \"your-aws-access-key\"\n       secretKey = \"your-aws-secret-key\"\n       region = \"ap-south-1\"\n       bucket = \"ghost-messenger-media\"\n   }\n   ```\n\n3. **Run the server**\n   ```bash\n   ./gradlew run\n   ```\n   Server starts at `http://localhost:8080`\n\n4. **Verify installation**\n   ```bash\n   curl http://localhost:8080/health\n   # Should return: OK\n   ```\n\n### Android Setup\n\n1. **Open in Android Studio**\n   - File → Open → Select the `app` folder\n\n2. **Configure API URL**\n   Update `app/src/main/java/.../di/AppModule.kt`:\n   ```kotlin\n   // For emulator\n   private const val BASE_URL = \"http://10.0.2.2:8080/\"\n   \n   // For physical device (replace with your IP)\n   // private const val BASE_URL = \"http://192.168.1.100:8080/\"\n   ```\n\n3. **Build and Run**\n   ```bash\n   ./gradlew assembleDebug\n   ```\n   Or use Android Studio's Run button (Shift+F10)\n\n---\n\n## 📡 API Documentation\n\n### Base URL\n```\nProduction: https://api.ghostmessenger.app/\nDevelopment: http://localhost:8080/\n```\n\n### Authentication\n\nAll authenticated endpoints require a Bearer token in the Authorization header:\n```\nAuthorization: Bearer \u003cyour-jwt-token\u003e\n```\n\n### Endpoints Overview\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🔐 Authentication\u003c/b\u003e\u003c/summary\u003e\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `POST` | `/api/auth/register` | Register new user |\n| `POST` | `/api/auth/login` | Login with email/password |\n| `POST` | `/api/auth/verify-otp` | Verify OTP code |\n| `POST` | `/api/auth/google` | Google OAuth login |\n| `POST` | `/api/auth/refresh` | Refresh access token |\n| `POST` | `/api/auth/logout` | Logout and invalidate token |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e💬 Chats \u0026 Messages\u003c/b\u003e\u003c/summary\u003e\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/api/chats` | Get all user's chats |\n| `POST` | `/api/chats` | Create new chat |\n| `GET` | `/api/messages/{chatId}` | Get messages for chat |\n| `POST` | `/api/messages` | Send message |\n| `POST` | `/api/messages/forward` | Forward message |\n| `DELETE` | `/api/messages/{id}` | Delete message |\n| `PUT` | `/api/chats/{id}/ghost-mode` | Toggle ghost mode |\n| `PUT` | `/api/chats/{id}/pin` | Pin/unpin chat |\n| `PUT` | `/api/chats/{id}/archive` | Archive chat |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e📞 Calls\u003c/b\u003e\u003c/summary\u003e\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `POST` | `/api/calls/initiate` | Start a call |\n| `POST` | `/api/calls/{id}/accept` | Accept incoming call |\n| `POST` | `/api/calls/{id}/decline` | Decline call |\n| `POST` | `/api/calls/{id}/end` | End ongoing call |\n| `GET` | `/api/calls/history` | Get call history |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e📢 Channels\u003c/b\u003e\u003c/summary\u003e\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/api/channels` | Get subscribed channels |\n| `POST` | `/api/channels` | Create channel |\n| `POST` | `/api/channels/{id}/subscribe` | Subscribe to channel |\n| `POST` | `/api/channels/{id}/unsubscribe` | Unsubscribe |\n| `GET` | `/api/channels/search` | Search public channels |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e📊 Status/Stories\u003c/b\u003e\u003c/summary\u003e\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/api/status/me` | Get my statuses |\n| `GET` | `/api/status` | Get contacts' statuses |\n| `POST` | `/api/status` | Create status |\n| `POST` | `/api/status/{id}/view` | Mark as viewed |\n| `POST` | `/api/status/{id}/react` | React to status |\n| `DELETE` | `/api/status/{id}` | Delete status |\n\n\u003c/details\u003e\n\n### WebSocket Events\n\nConnect to: `ws://localhost:8080/chat?token=\u003cjwt-token\u003e`\n\n**Client → Server:**\n```json\n{ \"type\": \"message\", \"data\": { \"chatId\": \"...\", \"content\": \"Hello!\" } }\n{ \"type\": \"typing\", \"data\": { \"chatId\": \"...\", \"isTyping\": true } }\n{ \"type\": \"read\", \"data\": { \"chatId\": \"...\", \"messageId\": \"...\" } }\n```\n\n**Server → Client:**\n```json\n{ \"type\": \"message\", \"data\": { \"id\": \"...\", \"content\": \"...\", ... } }\n{ \"type\": \"typing\", \"data\": { \"userId\": \"...\", \"isTyping\": true } }\n{ \"type\": \"online_status\", \"data\": { \"userId\": \"...\", \"isOnline\": true } }\n{ \"type\": \"incoming_call\", \"data\": { \"callId\": \"...\", \"callerId\": \"...\" } }\n```\n\n---\n\n## 📅 Development Timeline\n\n### The Journey So Far\n\n```\n2022 ─────────────────────────────────────────────────────────────────────────\n     │\n     ├── Q1: 💡 Concept \u0026 Research\n     │        - Market research on messaging apps\n     │        - Privacy concerns analysis\n     │        - Initial concept development\n     │        - Technology stack evaluation\n     │\n     ├── Q2: 📝 Planning \u0026 Design\n     │        - UI/UX wireframes\n     │        - Database schema design\n     │        - API architecture planning\n     │        - Security protocol research\n     │\n     ├── Q3: 🏗️ Foundation\n     │        - Project setup\n     │        - Basic authentication system\n     │        - Database integration\n     │        - Initial UI components\n     │\n     └── Q4: 💬 Core Messaging\n              - Real-time messaging via WebSocket\n              - Message persistence\n              - Basic chat UI\n              - User profiles\n\n2023 ─────────────────────────────────────────────────────────────────────────\n     │\n     ├── Q1: 👻 Ghost Mode Development\n     │        - Disappearing messages logic\n     │        - Timer implementation\n     │        - Screenshot detection research\n     │        - Message expiry system\n     │\n     ├── Q2: 📞 Voice \u0026 Video Calls\n     │        - WebRTC integration\n     │        - Call signaling server\n     │        - Audio/video streaming\n     │        - Call UI implementation\n     │\n     ├── Q3: 📢 Groups \u0026 Channels\n     │        - Group chat functionality\n     │        - Channel broadcasting\n     │        - Admin management\n     │        - Member permissions\n     │\n     └── Q4: 🔐 Security Enhancements\n              - End-to-end encryption\n              - Biometric authentication\n              - App lock feature\n              - Security audit\n\n2024 ─────────────────────────────────────────────────────────────────────────\n     │\n     ├── Q1: 📊 Status/Stories\n     │        - 24-hour stories\n     │        - Text/image/video status\n     │        - Viewer analytics\n     │        - Reactions system\n     │\n     ├── Q2: 🔍 Search \u0026 Discovery\n     │        - Global search\n     │        - Message search\n     │        - User discovery\n     │        - Channel discovery\n     │\n     ├── Q3: 🎨 UI/UX Overhaul\n     │        - Material Design 3\n     │        - Dark/Light themes\n     │        - Animations\n     │        - Accessibility improvements\n     │\n     └── Q4: 🧪 Testing \u0026 Optimization\n              - Unit testing\n              - Integration testing\n              - Performance optimization\n              - Bug fixes\n\n2025 ─────────────────────────────────────────────────────────────────────────\n     │\n     ├── Q1: 📱 Beta Release Preparation\n     │        - Feature freeze\n     │        - Beta testing program\n     │        - User feedback collection\n     │        - Critical bug fixes\n     │\n     ├── Q2: 🌐 Internationalization\n     │        - Multi-language support\n     │        - RTL layout support\n     │        - Regional compliance\n     │        - Localized content\n     │\n     ├── Q3: ☁️ Cloud Infrastructure\n     │        - AWS deployment\n     │        - Auto-scaling setup\n     │        - CDN integration\n     │        - Backup systems\n     │\n     └── Q4: 🔔 Push Notifications\n              - FCM integration\n              - Notification channels\n              - Silent notifications\n              - Notification preferences\n\n2026 ─────────────────────────────────────────────────────────────────────────\n     │\n     ├── Q1: 💾 Offline Mode\n     │        - Local message caching\n     │        - Offline message queue\n     │        - Sync on reconnect\n     │        - Conflict resolution\n     │\n     ├── Q2: 📤 Backup \u0026 Restore\n     │        - Cloud backup\n     │        - Local backup\n     │        - Encrypted backups\n     │        - Cross-device restore\n     │\n     ├── Q3: 🖥️ Multi-Device Support\n     │        - Device linking\n     │        - Session management\n     │        - Sync across devices\n     │        - Device authorization\n     │\n     └── Q4: 🎯 Final Polish\n              - Performance tuning\n              - UI refinements\n              - Documentation\n              - Release preparation\n\n2027 ─────────────────────────────────────────────────────────────────────────\n     │\n     └── 📅 February 22, 2027: 🚀 OFFICIAL RELEASE v1.0.0\n              - Public launch on Google Play Store\n              - Press release\n              - Marketing campaign\n              - Community launch event\n```\n\n---\n\n## 🗺️ Roadmap\n\n### Completed ✅\n\n| Phase | Features | Status |\n|-------|----------|--------|\n| **Phase 1** | Core Messaging, Authentication, Basic UI | ✅ Complete |\n| **Phase 2** | Ghost Mode, Reactions, Reply/Forward | ✅ Complete |\n| **Phase 3** | Voice/Video Calls, Search | ✅ Complete |\n| **Phase 4** | Status/Stories, Channels, Groups | ✅ Complete |\n| **Phase 5** | Security (Biometric, App Lock, E2E) | ✅ Complete |\n\n### In Progress 🔄\n\n| Phase | Features | Progress |\n|-------|----------|----------|\n| **Phase 6** | Settings, Notifications, Polish | 80% |\n\n### Planned 📋\n\n| Phase | Features | Target |\n|-------|----------|--------|\n| **Phase 7** | Push Notifications (FCM) | Q4 2025 |\n| **Phase 8** | Offline Mode | Q1 2026 |\n| **Phase 9** | Backup \u0026 Restore | Q2 2026 |\n| **Phase 10** | Multi-Device Sync | Q3 2026 |\n| **Phase 11** | iOS Version | 2027 |\n| **Phase 12** | Desktop Apps | 2027 |\n| **Phase 13** | Web Version | 2028 |\n\n### Future Vision 🔮\n\n**2027 Predictions:**\n- 🤖 AI-powered smart replies\n- 🌍 Real-time translation\n- 🎮 In-chat mini games\n- 💰 Integrated payments\n\n**2028 Predictions:**\n- 🥽 AR/VR messaging\n- 🧠 Sentiment analysis\n- 🔗 Blockchain verification\n- 🌐 Decentralized architecture\n\n---\n\n## 🤝 Contributing\n\nWe love contributions! Ghost Messenger is an open-source project, and we welcome developers of all skill levels.\n\n### How to Contribute\n\n1. **Fork the Repository**\n   ```bash\n   git clone https://github.com/YOUR_USERNAME/ghost-messenger.git\n   ```\n\n2. **Create a Feature Branch**\n   ```bash\n   git checkout -b feature/amazing-feature\n   ```\n\n3. **Make Your Changes**\n   - Follow our coding standards\n   - Write tests for new features\n   - Update documentation\n\n4. **Commit Your Changes**\n   ```bash\n   git commit -m \"feat: add amazing feature\"\n   ```\n   We follow [Conventional Commits](https://www.conventionalcommits.org/)\n\n5. **Push and Create PR**\n   ```bash\n   git push origin feature/amazing-feature\n   ```\n   Then open a Pull Request on GitHub\n\n### Contribution Guidelines\n\n- **Code Style**: Follow Kotlin coding conventions\n- **Documentation**: Update README and code comments\n- **Testing**: Add unit tests for new features\n- **Commits**: Use meaningful commit messages\n- **PRs**: Keep pull requests focused and small\n\n### Areas We Need Help\n\n- 🐛 Bug fixes\n- 📝 Documentation improvements\n- 🌍 Translations\n- 🧪 Testing\n- 🎨 UI/UX improvements\n- 🔒 Security audits\n\n---\n\n## 💬 Support\n\n### Get Help\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://t.me/SpiralTechDivision\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Telegram-Join%20Community-blue?style=for-the-badge\u0026logo=telegram\u0026logoColor=white\" alt=\"Telegram\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n**Join our Telegram community for:**\n- 📢 Latest updates and announcements\n- 💬 Discussion with other developers\n- 🐛 Bug reports and feature requests\n- 🤝 Collaboration opportunities\n- 📚 Tutorials and guides\n\n### Contact\n\n| Channel | Link |\n|---------|------|\n| **Telegram Community** | [@SpiralTechDivision](https://t.me/SpiralTechDivision) |\n| **GitHub Issues** | [Report a Bug](https://github.com/pranav291/ghost-messenger/issues) |\n| **Email** | support@spiraltech.dev |\n\n### FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eIs Ghost Messenger really private?\u003c/b\u003e\u003c/summary\u003e\n\nYes! We use end-to-end encryption for all messages. Even we cannot read your messages. Ghost Mode ensures messages are deleted from our servers after the set time.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eIs it free to use?\u003c/b\u003e\u003c/summary\u003e\n\nGhost Messenger is completely free and open source. We don't have ads, and we don't sell your data. We may introduce optional premium features in the future to sustain development.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eWhen will it be released?\u003c/b\u003e\u003c/summary\u003e\n\nThe official release is planned for **February 22, 2027**. However, you can build and run the app from source right now!\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eCan I contribute?\u003c/b\u003e\u003c/summary\u003e\n\nAbsolutely! We welcome contributions of all kinds. Check out our Contributing section above.\n\u003c/details\u003e\n\n---\n\n## 📄 License\n\n```\nMIT License\n\nCopyright (c) 2022-2027 Spiral Tech Division\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n\n---\n\n## 👨‍💻 Developer\n\n\u003ch3 align=\"center\"\u003ePranav Ajay\u003c/h3\u003e\n\u003cp align=\"center\"\u003eFounder \u0026 Lead Developer\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://t.me/SpiralTechDivision\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Telegram-Contact-blue?style=flat-square\u0026logo=telegram\" alt=\"Telegram\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/pranavajay\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/GitHub-Follow-black?style=flat-square\u0026logo=github\" alt=\"GitHub\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\n\u003ch3 align=\"center\"\u003eSpiral Tech Division\u003c/h3\u003e\n\u003cp align=\"center\"\u003eBuilding the future of private communication\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://t.me/SpiralTechDivision\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Join%20Us-Telegram-blue?style=for-the-badge\u0026logo=telegram\" alt=\"Join Telegram\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eMade with ❤️ in India\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/🚀%20Release-22%20February%202027-success?style=for-the-badge\" alt=\"Release Date\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003e© 2022-2027 Spiral Tech Division. All rights reserved.\u003c/sub\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003e⭐ Star this repo if you find it useful! ⭐\u003c/b\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpranav291%2Fghost-messenger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpranav291%2Fghost-messenger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpranav291%2Fghost-messenger/lists"}