<?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: Rehan Kumar Sahu</title>
    <description>The latest articles on DEV Community by Rehan Kumar Sahu (@rehankumar554).</description>
    <link>https://dev.to/rehankumar554</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3948783%2F0a18e4d3-6791-43eb-9b29-73a477b8ac25.png</url>
      <title>DEV Community: Rehan Kumar Sahu</title>
      <link>https://dev.to/rehankumar554</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rehankumar554"/>
    <language>en</language>
    <item>
      <title>Why We Still Need Truly Anonymous Chat Apps in 2026 (And How I Built One)</title>
      <dc:creator>Rehan Kumar Sahu</dc:creator>
      <pubDate>Sun, 24 May 2026 08:41:55 +0000</pubDate>
      <link>https://dev.to/rehankumar554/why-we-still-need-truly-anonymous-chat-apps-in-2026-and-how-i-built-one-e9g</link>
      <guid>https://dev.to/rehankumar554/why-we-still-need-truly-anonymous-chat-apps-in-2026-and-how-i-built-one-e9g</guid>
      <description>&lt;p&gt;I built an ephemeral, zero-footprint E2EE chat app using the Web Crypto API 🔒&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Figdwoxd6o4p3zhjzpbrx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Figdwoxd6o4p3zhjzpbrx.png" alt=" " width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hey DEV community! 👋&lt;/p&gt;

&lt;p&gt;For the past few weeks, I've been building &lt;strong&gt;Nixvoid&lt;/strong&gt; — a completely anonymous, real-time chat application that runs entirely in the browser.&lt;/p&gt;

&lt;p&gt;The idea sparked from a frustration with modern "secure" messaging apps. Sure, they have end-to-end encryption, but they still want your phone number, your email, and your contact list. I wanted to build something where anonymity was the default, not an opt-in feature. No sign-ups, no tracking, no footprint.&lt;/p&gt;

&lt;p&gt;How it works under the hood 🛠️&lt;br&gt;
Nixvoid relies heavily on the native &lt;strong&gt;window.crypto.subtle&lt;/strong&gt; API.&lt;/p&gt;

&lt;p&gt;Key Generation: When you open the app, it generates an ECDH key pair.&lt;br&gt;
Key Exchange: The public key is sent through Firebase (which acts only as a transit layer). The two clients derive a shared AES-GCM secret key.&lt;br&gt;
Encryption: Every message is encrypted before it ever touches the network.&lt;br&gt;
Here is a simplified idea of the core encryption flow:&lt;/p&gt;

&lt;p&gt;javascript&lt;/p&gt;

&lt;p&gt;&lt;code&gt;// Deriving the AES-GCM key from the ECDH shared secret&lt;br&gt;
const derivedKey = await crypto.subtle.deriveKey(&lt;br&gt;
  {&lt;br&gt;
    name: "ECDH",&lt;br&gt;
    public: remotePublicKey&lt;br&gt;
  },&lt;br&gt;
  localPrivateKey,&lt;br&gt;
  { name: "AES-GCM", length: 256 },&lt;br&gt;
  false,&lt;br&gt;
  ["encrypt", "decrypt"]&lt;br&gt;
);&lt;br&gt;
// Encrypting the payload&lt;br&gt;
const iv = crypto.getRandomValues(new Uint8Array(12));&lt;br&gt;
const encryptedMessage = await crypto.subtle.encrypt(&lt;br&gt;
  { name: "AES-GCM", iv: iv },&lt;br&gt;
  derivedKey,&lt;br&gt;
  new TextEncoder().encode(messageText)&lt;br&gt;
);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The 10-Second Auto-Destruct Rule ⏱️&lt;br&gt;
End-to-End Encryption doesn't protect you from shoulder-surfing or a seized unlocked phone. To combat this, Nixvoid is deeply ephemeral.&lt;/p&gt;

&lt;p&gt;Once a message is rendered on the recipient's screen, a 10-second timer starts. When it hits zero:&lt;/p&gt;

&lt;p&gt;The DOM element is completely removed.&lt;br&gt;
A signal is sent to immediately wipe the ciphertext from Firebase.&lt;br&gt;
There are no databases holding your chat history. Once you close the tab, it’s gone forever.&lt;/p&gt;

&lt;p&gt;UI Privacy Customizations&lt;br&gt;
I also built in a few local privacy tweaks stored purely in localStorage:&lt;/p&gt;

&lt;p&gt;Ghost Mode: Stops sending typing indicators.&lt;br&gt;
Incognito Read: Blocks read receipts.&lt;br&gt;
Feedback Wanted!&lt;br&gt;
I’d love for you guys to check it out, try breaking it, or review the architecture concept. Let me know what you think of the UI/UX as well!&lt;/p&gt;

&lt;p&gt;🔗 Live App: &lt;a href="https://nixvoid.vercel.app" rel="noopener noreferrer"&gt;Nixvoid&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy (and secure) coding! 🚀&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>security</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
