<?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: itsmeakhil</title>
    <description>The latest articles on DEV Community by itsmeakhil (@itsmeakhil).</description>
    <link>https://dev.to/itsmeakhil</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%2F795542%2F7939e744-259b-4787-ace4-d74194b06a9c.jpeg</url>
      <title>DEV Community: itsmeakhil</title>
      <link>https://dev.to/itsmeakhil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/itsmeakhil"/>
    <language>en</language>
    <item>
      <title>We Built an Open-Source, Zero-Knowledge Password Manager — Here's Why (and How)</title>
      <dc:creator>itsmeakhil</dc:creator>
      <pubDate>Wed, 11 Jun 2025 17:23:43 +0000</pubDate>
      <link>https://dev.to/itsmeakhil/we-built-an-open-source-zero-knowledge-password-manager-heres-why-and-how-5389</link>
      <guid>https://dev.to/itsmeakhil/we-built-an-open-source-zero-knowledge-password-manager-heres-why-and-how-5389</guid>
      <description>&lt;p&gt;It started with a sticky note.&lt;/p&gt;

&lt;p&gt;Literally.&lt;/p&gt;

&lt;p&gt;One of our teammates forgot the admin password to a test server. He’d written it down, then tossed it. Oops.&lt;/p&gt;

&lt;p&gt;It was funny at first. But also frustrating.&lt;br&gt;
We’re developers. We should know better.&lt;/p&gt;

&lt;p&gt;That moment triggered a conversation that turned into a weekend project that turned into a full product:&lt;/p&gt;

&lt;p&gt;Zecrypt — a zero-knowledge, open-source password manager built with:&lt;/p&gt;

&lt;p&gt;FastAPI (Python) for the backend&lt;/p&gt;

&lt;p&gt;Next.js (React) for the frontend&lt;/p&gt;

&lt;p&gt;MongoDB as the data store&lt;/p&gt;

&lt;p&gt;AES-GCM for client-side encryption&lt;/p&gt;

&lt;p&gt;And a commitment to zero-knowledge principles: even we can't access your data.&lt;/p&gt;

&lt;p&gt;Why We Built Zecrypt&lt;br&gt;
Most password managers either:&lt;/p&gt;

&lt;p&gt;Don’t feel secure enough (because they’re not zero-knowledge), or&lt;/p&gt;

&lt;p&gt;Feel too complex to use or trust (because they’re black boxes).&lt;/p&gt;

&lt;p&gt;We wanted something different — something we'd actually trust with our own keys, credentials, and secrets.&lt;/p&gt;

&lt;p&gt;So we built Zecrypt with 3 guiding principles:&lt;/p&gt;

&lt;p&gt;Client-side encryption by default&lt;/p&gt;

&lt;p&gt;Zero-knowledge architecture&lt;/p&gt;

&lt;p&gt;Radical transparency through open source&lt;/p&gt;

&lt;p&gt;What Makes Zecrypt Different&lt;br&gt;
🔐 Zero-Knowledge by Design&lt;br&gt;
All encryption happens in the browser or app. We never see or store your plaintext data, and we couldn’t decrypt it even if we tried.&lt;/p&gt;

&lt;p&gt;🔓 AES-GCM Encryption&lt;br&gt;
We use AES with Galois/Counter Mode (GCM), a widely respected, modern encryption standard that ensures both confidentiality and integrity.&lt;/p&gt;

&lt;p&gt;📦 MongoDB as an Encrypted Store&lt;br&gt;
Every credential, API key, and password you store is encrypted before it ever touches our database. MongoDB just holds the ciphertext.&lt;/p&gt;

&lt;p&gt;⚡ FastAPI for Speed and Simplicity&lt;br&gt;
Python was a natural fit for building a fast, lightweight, and easily auditable backend. FastAPI gives us async performance and type-safety out of the box.&lt;/p&gt;

&lt;p&gt;🖥️ Next.js for a Smooth Frontend Experience&lt;br&gt;
Users don’t care about encryption algorithms — they care about UX. We wanted to make storing and retrieving credentials feel frictionless.&lt;/p&gt;

&lt;p&gt;🧪 Fully Open Source&lt;br&gt;
Our repo has been public from day one. If you’re a dev, you can audit the code. Fork it. Contribute. Or even host your own version.&lt;/p&gt;

&lt;p&gt;Under the Hood: How It Works&lt;br&gt;
User logs in – Their password never leaves the client.&lt;/p&gt;

&lt;p&gt;Encryption keys are derived on the client using PBKDF2 or Argon2.&lt;/p&gt;

&lt;p&gt;Each password entry is encrypted using AES-GCM with a unique nonce.&lt;/p&gt;

&lt;p&gt;Encrypted data is stored in MongoDB via FastAPI.&lt;/p&gt;

&lt;p&gt;When retrieved, decryption also happens entirely on the client.&lt;/p&gt;

&lt;p&gt;Even if someone had full access to our infrastructure — database, codebase, everything — they’d see nothing but gibberish.&lt;/p&gt;

&lt;p&gt;No backdoors. No exceptions. Not even for us.&lt;/p&gt;

&lt;p&gt;Welaunched Zecrypt today because we believe secure password management shouldn’t be a luxury or a mystery.&lt;/p&gt;

&lt;p&gt;You can try it, fork it, or dig into the code here:&lt;br&gt;
&lt;a href="https://github.com/zecrypt-io/zecrypt-server" rel="noopener noreferrer"&gt;👉 GitHub Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try it out. Break it. Improve it.&lt;/p&gt;

&lt;p&gt;We’re just getting started — and we’d love your feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s Next&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;➤ Share with friends, family, and colleagues&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;💻 Mac Application (Planning Offline Edition)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;📱 Mobile support via Flutter&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🛡️ Self-hosted version for teams and orgs&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security should be a right, not a feature.&lt;/p&gt;

&lt;p&gt;If you're building with FastAPI, Next.js, MongoDB, or just want to help make open security tools better, come say hi. PRs welcome.&lt;/p&gt;

&lt;p&gt;P.S. Ever stored a password in plain text in your notes app? We have too.&lt;br&gt;
Let’s never do that again.&lt;br&gt;
Follow us on &lt;a href="https://www.linkedin.com/company/zecrypt-labs" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>programming</category>
      <category>python</category>
      <category>nextjs</category>
    </item>
  </channel>
</rss>
