<?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: Ali Mahmood Rana</title>
    <description>The latest articles on DEV Community by Ali Mahmood Rana (@alimahmood).</description>
    <link>https://dev.to/alimahmood</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%2F3955175%2Fe822f84e-451f-4440-a696-dcca1992762c.png</url>
      <title>DEV Community: Ali Mahmood Rana</title>
      <link>https://dev.to/alimahmood</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alimahmood"/>
    <language>en</language>
    <item>
      <title>EnvArmor: AI-Aware Env Secrets Security Platform</title>
      <dc:creator>Ali Mahmood Rana</dc:creator>
      <pubDate>Fri, 05 Jun 2026 20:15:47 +0000</pubDate>
      <link>https://dev.to/alimahmood/envarmor-ai-aware-env-secrets-security-platform-4ho5</link>
      <guid>https://dev.to/alimahmood/envarmor-ai-aware-env-secrets-security-platform-4ho5</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-05-21"&gt;GitHub Finish-Up-A-Thon Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repo:&lt;/strong&gt; &lt;a href="https://github.com/AliRana30/EnvArmor" rel="noopener noreferrer"&gt;github.com/AliRana30/EnvArmor&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;npm Package:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/envarmor-cli" rel="noopener noreferrer"&gt;npmjs.com/package/envarmor-cli&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://env-armor.vercel.app/" rel="noopener noreferrer"&gt;env-armor.vercel.app&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  What I Built
&lt;/h1&gt;

&lt;p&gt;Most developers have a secret-leaking story. Mine happened during a late-night push — a &lt;code&gt;.env&lt;/code&gt; file slipped past &lt;code&gt;.gitignore&lt;/code&gt;, and I caught it only after the commit was already on GitHub. No real damage that time, but the near-miss stuck with me.&lt;/p&gt;

&lt;p&gt;The bigger realization came later: with AI coding tools like Cursor and Copilot ingesting entire project directories automatically, the leak surface expanded beyond public repos. A single unignored secret could quietly travel to a third-party AI provider during a normal development session. Nobody talks about that enough.&lt;/p&gt;

&lt;p&gt;That's what EnvArmor is built to stop.&lt;/p&gt;

&lt;p&gt;It ships as two things: a CLI scanner that hooks into &lt;code&gt;git commit&lt;/code&gt; and blocks the push before secrets leave your machine, and a web dashboard where you can track scan history, review financial risk projections tied to real service abuse costs, and manage encrypted variables — without emailing &lt;code&gt;.env&lt;/code&gt; files over Slack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Web Dashboard
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; Next.js 15 (App Router)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Prisma ORM + Supabase PostgreSQL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth:&lt;/strong&gt; Supabase (Magic Links + GitHub OAuth)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling:&lt;/strong&gt; Vanilla CSS + custom Tailwind (Neo-Brutalist, high-contrast UI)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  CLI
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Runtime:&lt;/strong&gt; TypeScript + Node.js&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commands:&lt;/strong&gt; Commander.js, Chalk&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detection Engine:&lt;/strong&gt; Regex pattern signatures + Shannon Entropy analysis&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vault:&lt;/strong&gt; Local AES-256 encryption before cloud sync&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Core Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Financial Risk Estimation:&lt;/strong&gt; When EnvArmor detects a Stripe key, an AWS credential, or an OpenAI token, it doesn't just flag it — it maps it to a real abuse cost range (e.g., &lt;code&gt;$200–$5,000&lt;/code&gt;). You see the actual dollar exposure, not just a severity label.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Context Guard:&lt;/strong&gt; Scans your project and auto-generates context exclusion rules to keep secrets out of Cursor, Copilot, and Claude's context windows during active development.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Plan Limits:&lt;/strong&gt; Every account supports unlimited project creation. Useful if you're juggling multiple microservices or monorepos and don't want to hit an arbitrary cap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local-to-Cloud Linking:&lt;/strong&gt; A &lt;code&gt;.envarmor&lt;/code&gt; config file or &lt;code&gt;--project&lt;/code&gt; CLI flag binds your terminal session directly to the right dashboard project. No manual syncing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Encrypted Vault:&lt;/strong&gt; Variables encrypt on your machine before hitting the cloud. Nothing travels in plaintext.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Demo (Screenshots)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Web Application
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Home&lt;/strong&gt;&lt;br&gt;
An interactive landing page covering EnvArmor's core features, live detection statistics, and links to the docs and dashboard.&lt;br&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%2Ftjoexv3leycsnl3rlt9u.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%2Ftjoexv3leycsnl3rlt9u.png" alt="Home Page" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;&lt;br&gt;
The main control panel — real-time scan analytics, secret severity breakdown, active projects, and estimated financial savings from blocked events.&lt;br&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%2F2vh1bdwrlaoxy7t6pvdu.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%2F2vh1bdwrlaoxy7t6pvdu.png" alt="Dashboard" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Projects&lt;/strong&gt;&lt;br&gt;
All linked repositories in one view, with individual scan results, API key status, and active security rules per project.&lt;br&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%2Fv0vjtkg2peczvoesxiu2.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%2Fv0vjtkg2peczvoesxiu2.png" alt="Projects" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New Project&lt;/strong&gt;&lt;br&gt;
A setup wizard to register repository metadata, define project scope, and configure environment policies.&lt;br&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%2Fl0rlo0970moh8vpqvq4l.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%2Fl0rlo0970moh8vpqvq4l.png" alt="New Project" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scan History&lt;/strong&gt;&lt;br&gt;
A searchable, chronological log of every scan — filenames, severity, leak status, and recommended fixes included.&lt;br&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%2F5vv1sa6pz9chxnwyotz2.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%2F5vv1sa6pz9chxnwyotz2.png" alt="Scan History" width="799" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vault&lt;/strong&gt; &lt;em&gt;(Launching as a paid feature)&lt;/em&gt;&lt;br&gt;
Encrypted secret storage with rotation schedules and credential access logs.&lt;br&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%2F51ayw5f6pn5r4gnin91c.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%2F51ayw5f6pn5r4gnin91c.png" alt="Vault" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Settings&lt;/strong&gt;&lt;br&gt;
Profile details, notification triggers, organization scope, and API token management.&lt;br&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%2F25frcsvzn3hcuyp2fidh.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%2F25frcsvzn3hcuyp2fidh.png" alt="Settings" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Login / Signup&lt;/strong&gt;&lt;br&gt;
Magic link or GitHub OAuth. Fast, clean, no friction.&lt;br&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%2Fy5s10pfwuclv09cde9a3.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%2Fy5s10pfwuclv09cde9a3.png" alt="Login Signup" width="799" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blog&lt;/strong&gt;&lt;br&gt;
Security advisories, vulnerability write-ups, and environment configuration best practices.&lt;br&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%2Fvo1eoz06hd4z66czry1g.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%2Fvo1eoz06hd4z66czry1g.png" alt="Blog" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Realtime User Stats&lt;/strong&gt;&lt;br&gt;
A live summary card — total secrets detected, financial risk prevented, and onboarding timestamps per user.&lt;br&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%2Ffs06uaantlzaczxaf9sc.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%2Ffs06uaantlzaczxaf9sc.png" alt="Realtime User Stats" width="800" height="671"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  CLI Tool
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Initialization&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;npx envarmor init&lt;/code&gt; creates the local config, &lt;code&gt;.envarmorignore&lt;/code&gt;, and wires up the pre-commit hook.&lt;br&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%2Fdyopzdav386a4vukpnpg.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%2Fdyopzdav386a4vukpnpg.png" alt="CLI Initialization" width="759" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Login&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;envarmor login --key &amp;lt;api_key&amp;gt;&lt;/code&gt; links your terminal directly to your web profile.&lt;br&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%2Frxrt3dwvga2un0rwjiw1.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%2Frxrt3dwvga2un0rwjiw1.png" alt="CLI Login" width="739" height="127"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full Codebase Scan&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;envarmor scan -all&lt;/code&gt; sweeps every project folder for hardcoded secrets, database connection strings, and live API tokens.&lt;br&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%2Fyb3iycqjnwzgld7dwo1w.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%2Fyb3iycqjnwzgld7dwo1w.png" alt="Full Codebase Scan" width="736" height="736"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Tool Protection&lt;/strong&gt;&lt;br&gt;
Detects and blocks AI agents from reading environment keys during active coding sessions.&lt;br&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%2Fd4lhoshjk4qb0wupnc6o.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%2Fd4lhoshjk4qb0wupnc6o.png" alt="AI Tool Protection" width="703" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Commit Blocking&lt;/strong&gt;&lt;br&gt;
The pre-commit hook intercepts every &lt;code&gt;git commit&lt;/code&gt;, scans the staged diff, and rejects it if any secrets are present.&lt;br&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%2Fljbp56et4l54r7mdm2ok.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%2Fljbp56et4l54r7mdm2ok.png" alt="Commit Blocking" width="800" height="598"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  The Comeback Story
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Where the Project Was
&lt;/h2&gt;

&lt;p&gt;Six months ago, EnvArmor was a desktop-only prototype held together with duct tape and good intentions. The core scanner worked. Everything else was broken in ways that weren't obvious until you tried to actually use it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Split Identity
&lt;/h3&gt;

&lt;p&gt;The codebase lived under two names — the old &lt;em&gt;EnvGuard&lt;/em&gt; and the new &lt;em&gt;EnvArmor&lt;/em&gt; — simultaneously. Conflicting namespaces, broken directory references, mismatched Prisma schemas, and compilation errors that only appeared at link time. Rebranding sounds simple until half your imports point to the wrong package.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fake Metrics on the Dashboard
&lt;/h3&gt;

&lt;p&gt;The dashboard showed &lt;em&gt;EST. $0K+ Savings Created&lt;/em&gt; across every account. Hardcoded. Static. Not connected to the database at all. The number looked good in a screenshot and meant nothing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hard Caps That Broke Real Workflows
&lt;/h3&gt;

&lt;p&gt;The database had hard check constraints that blocked non-premium users from creating more than a few projects. Fine for a single app. Useless for anyone managing microservices or a multi-repo workspace.&lt;/p&gt;

&lt;h3&gt;
  
  
  Auth That Crashed Silently
&lt;/h3&gt;

&lt;p&gt;No email validation before sending magic links. Supabase's 429 rate limit error surfaced as a raw network crash — no message, no retry guidance, just a broken page. New signups regularly hit this and bounced.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mobile Was Unusable
&lt;/h3&gt;

&lt;p&gt;Long file paths in the scan tables had no wrapping rules. They pushed severity badges and action buttons completely off-screen. The dashboard was desktop-only in practice, even though it wasn't designed that way.&lt;/p&gt;

&lt;h3&gt;
  
  
  CTAs That Led Nowhere
&lt;/h3&gt;

&lt;p&gt;Primary call-to-action buttons pointed to &lt;code&gt;#&lt;/code&gt; anchors. Clicking "Get Started" on the landing page did nothing. There was also no onboarding guide — new users arrived with no path forward.&lt;/p&gt;

&lt;h3&gt;
  
  
  Risk Math That Disagreed With Itself
&lt;/h3&gt;

&lt;p&gt;Financial estimates were calculated independently in the dashboard summary, the project detail view, and the activity feed. All three used different logic. All three showed different numbers for the same data.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where It Is Now
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Unified Codebase and Published CLI
&lt;/h3&gt;

&lt;p&gt;Every reference to &lt;em&gt;EnvGuard&lt;/em&gt; is gone. Directory names, database schemas, npm package name, component imports, metadata — all standardized under &lt;em&gt;EnvArmor&lt;/em&gt;. Version &lt;code&gt;0.1.1&lt;/code&gt; of &lt;code&gt;envarmor-cli&lt;/code&gt; is live on npm and installable with &lt;code&gt;npx envarmor init&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Savings Engine That Reads Real Data
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;lib/savings-engine.ts&lt;/code&gt; pulls live &lt;code&gt;ScanEvent&lt;/code&gt; records from the database and calculates financial exposure using severity-based multipliers. Pre-commit blocked events apply a &lt;code&gt;10x&lt;/code&gt; multiplier automatically — because stopping a secret before it commits is worth more than catching it after. The dashboard now shows numbers that mean something.&lt;/p&gt;

&lt;h3&gt;
  
  
  No More Project Caps
&lt;/h3&gt;

&lt;p&gt;Hard database constraints replaced with dynamic limits tied to account metadata. Every tier supports unlimited project creation. Building five microservices in parallel no longer requires an upgrade.&lt;/p&gt;

&lt;h3&gt;
  
  
  Auth That Handles Failure Gracefully
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;/api/v1/auth/check-email&lt;/code&gt; validates registration before any OTP is sent. Supabase 429 errors now return a clear cooldown message with retry timing instead of crashing the page. A developer bypass workflow handles local testing without triggering rate limits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mobile That Actually Works
&lt;/h3&gt;

&lt;p&gt;Dashboard grids rebuilt with responsive flex and grid utilities. File paths in scan tables use &lt;code&gt;break-all&lt;/code&gt;. Severity badges and action buttons stay on screen at any viewport width. Tested across mobile, tablet, and desktop.&lt;/p&gt;

&lt;h3&gt;
  
  
  Docs Inside the Dashboard
&lt;/h3&gt;

&lt;p&gt;An interactive CLI Docs page now lives inside the dashboard — installation steps, config options, flag overrides, vault operations. No hunting through a separate README.&lt;/p&gt;

&lt;h3&gt;
  
  
  One Source of Truth for Risk Math
&lt;/h3&gt;

&lt;p&gt;All financial and risk calculations route through the Savings Engine. Every dashboard surface — summary cards, activity feeds, project detail views, analytics — reads from the same function with the same logic. The numbers agree now.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Changed, Fixed, or Got Added
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unified Brand Architecture:&lt;/strong&gt; Every folder, schema, model, component, and npm reference now points to &lt;em&gt;EnvArmor&lt;/em&gt;. The EnvGuard era is gone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Savings Engine:&lt;/strong&gt; &lt;code&gt;lib/savings-engine.ts&lt;/code&gt; queries real &lt;code&gt;ScanEvent&lt;/code&gt; logs, applies severity tiers, and adds the &lt;code&gt;10x&lt;/code&gt; multiplier for pre-commit blocks. Dashboard projections are now live, not hardcoded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth Preflight Route:&lt;/strong&gt; &lt;code&gt;/api/v1/auth/check-email&lt;/code&gt; runs before OTP delivery. Supabase 429s surface as friendly cooldown messages, not crashes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limitless Projects:&lt;/strong&gt; Hard caps removed. Unlimited creation across all account tiers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive Layouts:&lt;/strong&gt; &lt;code&gt;break-all&lt;/code&gt; on file paths, fluid grid rebuilds on dashboard panels, tested across viewports.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI Docs Hub:&lt;/strong&gt; Built inside the dashboard — covers init, login, scan flags, vault commands, and project linking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistent Audit Logs:&lt;/strong&gt; &lt;code&gt;estimateSavings&lt;/code&gt; utility now powers both recent activity logs and project detail views. No more discrepancies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production &lt;code&gt;.gitignore&lt;/code&gt;:&lt;/strong&gt; Filters &lt;code&gt;.envarmor&lt;/code&gt; local configs, &lt;code&gt;.venv/&lt;/code&gt;, temp scan reports, and build artifacts.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  My Experience with GitHub Copilot
&lt;/h1&gt;

&lt;p&gt;I used Copilot throughout this sprint, and the moments where it actually saved time were specific enough to be worth calling out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Savings Engine Completion
&lt;/h2&gt;

&lt;p&gt;When I wrote the &lt;code&gt;estimateSavings&lt;/code&gt; function signature with its severity parameter and return type, Copilot completed the entire multiplier table — &lt;code&gt;CRITICAL: 10x&lt;/code&gt;, &lt;code&gt;HIGH: 5x&lt;/code&gt;, &lt;code&gt;MEDIUM: 2x&lt;/code&gt;, &lt;code&gt;LOW: 1x&lt;/code&gt; — in a single suggestion. I adjusted the thresholds, but the structure was right on the first completion. That function is now the single source of truth for every financial figure in the dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preflight Route Scaffolding
&lt;/h2&gt;

&lt;p&gt;For the &lt;code&gt;/api/v1/auth/check-email&lt;/code&gt; route, Copilot inlined the Supabase admin client lookup, the 429 detection branch, and the JSON error shape in one pass. I only had to wire in the cooldown timer logic and adjust the response messages. A route that would have taken 30 minutes of back-and-forth with docs took about 10.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shannon Entropy Test Cases
&lt;/h2&gt;

&lt;p&gt;Writing unit tests for the entropy-based secret detector is tedious — you need strings that hover right at the boundary between high-entropy random values and normal code. Copilot generated a solid set of boundary cases I hadn't thought to include: UUID-adjacent strings, base64 padding edge cases, and short tokens that look like secrets but aren't. Several of those cases caught real false positives in the scanner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Responsive Grid Fixes
&lt;/h2&gt;

&lt;p&gt;When I was patching the mobile overflow issues, I described the problem in a comment — "file paths in scan table overflow on mobile, need break-all with flex wrap on action column" — and Copilot suggested the full Tailwind class combination, including the &lt;code&gt;min-w-0&lt;/code&gt; fix on the flex child that actually solved the overflow. That one I wouldn't have found without digging through docs.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Outcome
&lt;/h1&gt;

&lt;p&gt;EnvArmor went from a prototype that worked in one narrow scenario to a platform you can actually ship a project with.&lt;/p&gt;

&lt;p&gt;It now delivers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pre-commit secret blocking with Shannon Entropy + Regex detection&lt;/li&gt;
&lt;li&gt;Live financial risk projections tied to real scan data&lt;/li&gt;
&lt;li&gt;AI context window protection for Cursor, Copilot, and Claude&lt;/li&gt;
&lt;li&gt;Responsive dashboard across mobile, tablet, and desktop&lt;/li&gt;
&lt;li&gt;Reliable auth with rate-limit protection and email validation&lt;/li&gt;
&lt;li&gt;Unlimited project creation across all account tiers&lt;/li&gt;
&lt;li&gt;Published CLI (&lt;code&gt;envarmor-cli&lt;/code&gt; on npm)&lt;/li&gt;
&lt;li&gt;Consistent risk math across every dashboard surface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The secret-leaking story I mentioned at the start? EnvArmor would have caught it at the pre-commit hook — before the push, before the panic, before the late-night token rotation. That's the version worth shipping.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
