<?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: Douglas Correa</title>
    <description>The latest articles on DEV Community by Douglas Correa (@douglascorrea).</description>
    <link>https://dev.to/douglascorrea</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%2F18518%2F6f5510ad-87c7-45c0-90e8-4dfc299d19a6.jpg</url>
      <title>DEV Community: Douglas Correa</title>
      <link>https://dev.to/douglascorrea</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/douglascorrea"/>
    <language>en</language>
    <item>
      <title>I built a local-first net worth tracker that never touches a server</title>
      <dc:creator>Douglas Correa</dc:creator>
      <pubDate>Thu, 19 Mar 2026 14:27:46 +0000</pubDate>
      <link>https://dev.to/douglascorrea/i-built-a-local-first-net-worth-tracker-that-never-touches-a-server-1ia5</link>
      <guid>https://dev.to/douglascorrea/i-built-a-local-first-net-worth-tracker-that-never-touches-a-server-1ia5</guid>
      <description>&lt;p&gt;Every finance app I tried wanted my bank login. Mint, Monarch, Copilot, they all connect through Plaid or similar services. I just wanted to track my net worth over time without giving a third party access to my accounts.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://vaultedworth.com" rel="noopener noreferrer"&gt;Vaulted&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;A free, open-source net worth tracker that runs entirely in your browser. No account, no server, no cloud database.&lt;/p&gt;

&lt;p&gt;You add your assets and liabilities manually, and Vaulted shows you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your total net worth&lt;/li&gt;
&lt;li&gt;Asset breakdown (donut chart)&lt;/li&gt;
&lt;li&gt;Net worth trend over time (monthly snapshots)&lt;/li&gt;
&lt;li&gt;Multi-currency support (USD, EUR, GBP, BRL, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The tech
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 16&lt;/strong&gt; with static export (deployed on GitHub Pages)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IndexedDB&lt;/strong&gt; as primary storage with localStorage fallback&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript&lt;/strong&gt; throughout&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; for styling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recharts&lt;/strong&gt; for the charts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PWA&lt;/strong&gt; with service worker for offline support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The entire app is a static site. No API routes, no server functions. The build output is plain HTML/CSS/JS served from GitHub Pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Storage approach
&lt;/h2&gt;

&lt;p&gt;I went with IndexedDB as the primary store because it's more durable than localStorage. Most browsers don't wipe IndexedDB when you "clear cookies." There's also a localStorage fallback for older browsers.&lt;/p&gt;

&lt;p&gt;Data is saved on every change. There's a JSON export/import for backups, and the app shows a reminder banner when you haven't backed up in a while (since your data only exists on your device).&lt;/p&gt;

&lt;h2&gt;
  
  
  The trade-off
&lt;/h2&gt;

&lt;p&gt;No automatic bank sync. You update your numbers yourself. For net worth tracking, most people do this monthly. Takes about 2 minutes.&lt;/p&gt;

&lt;p&gt;The upside: nobody can leak your financial data because nobody has it. No breach risk, no third-party access, no data selling.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Live: &lt;a href="https://vaultedworth.com" rel="noopener noreferrer"&gt;vaultedworth.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source: &lt;a href="https://github.com/douglascorrea/vaulted" rel="noopener noreferrer"&gt;github.com/douglascorrea/vaulted&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's free, no sign-up, works offline once loaded. Feedback welcome.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>opensource</category>
      <category>privacy</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
