<?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: Willy Nelson</title>
    <description>The latest articles on DEV Community by Willy Nelson (@wilxai).</description>
    <link>https://dev.to/wilxai</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%2F3802707%2Fcf7c53d6-eda7-40f1-b361-3191ecee1d04.png</url>
      <title>DEV Community: Willy Nelson</title>
      <link>https://dev.to/wilxai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wilxai"/>
    <language>en</language>
    <item>
      <title>I built a local-first AI prompt manager — here is why offline-first was worth the extra complexity</title>
      <dc:creator>Willy Nelson</dc:creator>
      <pubDate>Tue, 03 Mar 2026 00:39:08 +0000</pubDate>
      <link>https://dev.to/wilxai/i-built-a-local-first-ai-prompt-manager-here-is-why-offline-first-was-worth-the-extra-complexity-4ao7</link>
      <guid>https://dev.to/wilxai/i-built-a-local-first-ai-prompt-manager-here-is-why-offline-first-was-worth-the-extra-complexity-4ao7</guid>
      <description>&lt;p&gt;&lt;a href="https://promptvault-wilxai.vercel.app" rel="noopener noreferrer"&gt;PromptVault by WILxAI&lt;/a&gt;&lt;br&gt;
Every developer I know who uses AI tools daily has the same problem.&lt;/p&gt;

&lt;p&gt;You write a prompt that works perfectly. You get exactly the output you needed from Claude or Cursor or ChatGPT. You close the tab.&lt;/p&gt;

&lt;p&gt;Next week the same problem comes up. You spend 20 minutes trying to reconstruct that prompt from memory.&lt;/p&gt;

&lt;p&gt;I got fed up with this and built PromptVault — a local-first prompt manager that works offline, has a browser extension for any AI tool, and includes AI features to help you write better prompts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why local-first instead of just building a simple cloud app
&lt;/h2&gt;

&lt;p&gt;The obvious approach was to build a database, a backend, user accounts, and store everything server-side. I chose not to for two reasons.&lt;/p&gt;

&lt;p&gt;First — developers do not trust tools that store their prompts in someone else's database. Your prompts contain your entire thinking process, your preferred approaches, your project context. That is sensitive.&lt;/p&gt;

&lt;p&gt;Second — a local-first app is faster. There is no round trip to a server. Search is instant. The vault opens immediately. It works on a plane.&lt;/p&gt;

&lt;p&gt;The trade-off is complexity. Offline-first means you have to handle sync conflicts, queued operations, and cases where the same data gets modified on two devices.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the sync works
&lt;/h2&gt;

&lt;p&gt;Every write operation (create, update, delete) gets added to a local sync queue stored in IndexedDB. Each entry records the operation type, the entity ID, and the full payload.&lt;/p&gt;

&lt;p&gt;When the app comes online it flushes the queue to Supabase in order. If a sync operation fails it retries up to 3 times with exponential backoff. After 3 failures it removes the entry and logs the error.&lt;/p&gt;

&lt;p&gt;Conflict resolution is Last-Write-Wins based on the updatedAt timestamp. This is simple and correct for this use case — you are almost never editing the same prompt on two devices at the exact same moment.&lt;/p&gt;

&lt;h2&gt;
  
  
  The browser extension
&lt;/h2&gt;

&lt;p&gt;The extension uses Chrome MV3. It injects a small ⚡ button into text fields on claude.ai, chatgpt.com, and any other page with a textarea or contenteditable element.&lt;/p&gt;

&lt;p&gt;Clicking the button opens a mini search popup that reads from PromptVault's local IndexedDB. You search, click a prompt, it pastes directly into the active field. No switching windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The AI features
&lt;/h2&gt;

&lt;p&gt;Everything AI-related uses BYOK — Bring Your Own Key. You configure your provider (Claude, GPT-5, Gemini, Groq, or any OpenAI-compatible endpoint) in Settings. The app calls your provider directly. No data goes through PromptVault's infrastructure.&lt;/p&gt;

&lt;p&gt;The main AI features: Vibe Mode (rough idea to structured prompt), Prompt Improver (4 modes), Variant Generator (Concise, Detailed, Reframed versions), and a Debugger that runs 5 checks on any prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://promptvault-wilxai.vercel.app" rel="noopener noreferrer"&gt;https://promptvault-wilxai.vercel.app&lt;/a&gt; — free tier is 100 prompts with all features. No account required to start.&lt;/p&gt;

&lt;p&gt;Pro is $9/month for unlimited prompts and cross-device sync.&lt;/p&gt;

&lt;p&gt;Happy to answer questions about the architecture in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
