<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ritik Kumar</title>
    <description>The latest articles on DEV Community by Ritik Kumar (@ritik_kumar_b6c3a30051923).</description>
    <link>https://dev.to/ritik_kumar_b6c3a30051923</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4240519%2F4d6ecc76-a2b6-4a54-b58a-79615c9e9d43.png</url>
      <title>DEV Community: Ritik Kumar</title>
      <link>https://dev.to/ritik_kumar_b6c3a30051923</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ritik_kumar_b6c3a30051923"/>
    <language>en</language>
    <item>
      <title>How I Built NexChat (NexxChat): A Real-Time Messaging &amp; WebRTC Video App for Web, Android, and Windows</title>
      <dc:creator>Ritik Kumar</dc:creator>
      <pubDate>Thu, 12 Nov 2026 07:53:04 +0000</pubDate>
      <link>https://dev.to/ritik_kumar_b6c3a30051923/how-i-built-nexchat-nexxchat-a-real-time-messaging-webrtc-video-app-for-web-android-and-12ba</link>
      <guid>https://dev.to/ritik_kumar_b6c3a30051923/how-i-built-nexchat-nexxchat-a-real-time-messaging-webrtc-video-app-for-web-android-and-12ba</guid>
      <description>&lt;p&gt;Building a full-stack real-time messaging, voice/video calling, and file-sharing app using React, Socket.IO, WebRTC, Capacitor, and Electron from a single codebase.&lt;br&gt;
Most messaging projects stay stuck as browser-only demos. When I set out to build NexChat&lt;br&gt;
 (also known as NexxChat), my goal was to ship a single unified codebase that runs smoothly across Web, Android (native APK), and Windows Desktop (.exe).&lt;/p&gt;

&lt;p&gt;👉 Try the Live Web App: &lt;a href="https://nexxchat-zeta.vercel.app/" rel="noopener noreferrer"&gt;https://nexxchat-zeta.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 Source Code &amp;amp; Releases: github.com/ritik46te45-debug/nexxchat&lt;/p&gt;

&lt;p&gt;Why Build a Cross-Platform Messenger?&lt;/p&gt;

&lt;p&gt;Modern users expect messages and calls to sync everywhere without compromising native features like system tray notifications on PC or gallery saving on Android. Instead of maintaining three separate apps, NexChat shares one core React 18 + Vite frontend across all three targets:&lt;/p&gt;

&lt;p&gt;Web App: Deployed on Vercel at nexxchat-zeta.vercel.app&lt;br&gt;
 with PWA manifest support.&lt;br&gt;
Android App: Packaged natively using Capacitor 8 (Android SDK 35) with local notification channels, Firebase push notifications, and native MediaStore / DownloadManager gallery saving.&lt;br&gt;
Windows Desktop App: Wrapped with Electron featuring Windows Action Center toast notifications, optional auto-launch on startup, and system-tray background keepalive.&lt;br&gt;
Tech Stack Breakdown&lt;br&gt;
Frontend (Web / Android / Windows)&lt;br&gt;
UI: React 18, Vite 5, Tailwind CSS 3, Lucide Icons&lt;br&gt;
State: Zustand 5&lt;br&gt;
Real-Time &amp;amp; Calls: Socket.IO Client &amp;amp; Peer-to-Peer WebRTC&lt;br&gt;
Media &amp;amp; Docs: Built-in PDF viewer (pdfjs-dist), voice note waveform recording, and media lightbox&lt;br&gt;
Backend (API &amp;amp; WebSockets)&lt;br&gt;
Runtime: Node.js + Express.js (ES Modules)&lt;br&gt;
Database: MongoDB with Mongoose ODM&lt;br&gt;
Real-Time Engine: Socket.IO for presence tracking, typing/recording indicators, read receipts, and WebRTC signaling&lt;br&gt;
Storage &amp;amp; Auth: Cloudinary CDN for media, JWT access/refresh token rotation, Google OAuth, and TOTP Two-Factor Authentication (2FA)&lt;br&gt;
Key Features Implemented&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Instant Messaging &amp;amp; Rich Interactions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Messages flow over Socket.IO with live delivery and read receipt states (Pending, Sent, Delivered, Read), quoted replies, message reactions, inline editing, forwarding, and group chat management with custom avatars and admin controls.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Peer-to-Peer WebRTC Voice &amp;amp; Video Calls&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;NexChat includes 1-on-1 audio and video calling with camera switching, audio/video toggles, speaker selection, screen sharing, incoming call ringtones, and persistent call history logs.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Security &amp;amp; Account Protection&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Users can sign in with email/password or Google OAuth, enable Two-Factor Authentication (2FA) compatible with Google Authenticator/Authy, set a PIN App Lock, and inspect or revoke active device sessions remotely.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Automated CI/CD Binary Builds&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every push to main triggers GitHub Actions workflows (.github/workflows/build-apk.yml and build-exe.yml) to compile fresh Android .apk and Windows Setup .exe releases automatically:&lt;/p&gt;

&lt;p&gt;Launch Web App: &lt;a href="https://nexxchat-zeta.vercel.app/" rel="noopener noreferrer"&gt;https://nexxchat-zeta.vercel.app/&lt;/a&gt;&lt;br&gt;
Download Android APK: NexChat.apk&lt;br&gt;
Download Windows Installer: NexChat-Setup.exe&lt;br&gt;
Lessons Learned Shipping to 3 Platforms&lt;br&gt;
Router Strategy Matters: Browser SPAs work best with BrowserRouter for clean URLs and SEO, while Electron (file://) and Capacitor native shells need HashRouter so deep paths never break on reload.&lt;br&gt;
Code-Splitting Boosts Startup &amp;amp; SEO: Separating heavy modules (MainLayout, pdfjs-dist, @emoji-mart) from the entry bundle keeps the public landing page lightweight (~86 kB main entry) while loading full chat capabilities immediately after sign-in.&lt;br&gt;
Background Keepalive on Desktop &amp;amp; Mobile: Minimizing to the Windows system tray and configuring dedicated Android notification channels make a web-powered app feel truly native.&lt;br&gt;
If you want to test it out or explore the code:&lt;/p&gt;

&lt;p&gt;Web App: &lt;a href="https://nexxchat-zeta.vercel.app/" rel="noopener noreferrer"&gt;https://nexxchat-zeta.vercel.app/&lt;/a&gt;&lt;br&gt;
GitHub Repository: ritik46te45-debug/nexxchat&lt;/p&gt;

&lt;p&gt;Feedback, stars, and suggestions are always welcome in the comments!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>webrtc</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
