<?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: Kieren Day</title>
    <description>The latest articles on DEV Community by Kieren Day (@kieren_day_a4de340aace101).</description>
    <link>https://dev.to/kieren_day_a4de340aace101</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4061261%2F1f5cc5c5-ce0f-4a19-b819-4688f1e0f33d.png</url>
      <title>DEV Community: Kieren Day</title>
      <link>https://dev.to/kieren_day_a4de340aace101</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kieren_day_a4de340aace101"/>
    <language>en</language>
    <item>
      <title>I built a local-first Browser OS with $0 server costs (OPFS, Web Workers &amp; zero-backend)</title>
      <dc:creator>Kieren Day</dc:creator>
      <pubDate>Mon, 03 Aug 2026 19:43:45 +0000</pubDate>
      <link>https://dev.to/kieren_day_a4de340aace101/i-built-a-local-first-browser-os-with-0-server-costs-opfs-web-workers-zero-backend-okg</link>
      <guid>https://dev.to/kieren_day_a4de340aace101/i-built-a-local-first-browser-os-with-0-server-costs-opfs-web-workers-zero-backend-okg</guid>
      <description>&lt;p&gt;Most web applications today follow the same blueprint: heavy backend server instances, cloud database dependencies, aggressive telemetry, and recurring subscription walls.&lt;/p&gt;

&lt;p&gt;For the past few months, I've been experimenting with the opposite extreme: What if you built a desktop-grade Browser OS that runs 100% inside the client's browser, keeps data sovereign on their local disk, and costs $0/month in server infrastructure?&lt;/p&gt;

&lt;p&gt;That experiment became Cordoval (&lt;a href="https://cordoval.work)%E2%80%94a" rel="noopener noreferrer"&gt;https://cordoval.work)—a&lt;/a&gt; local-first workspace merging productivity ("Work"), an offline economic simulation engine ("Play"), and an embedded RSS podcast client ("Cast") into a single tab.&lt;/p&gt;

&lt;p&gt;Here is a look at the architecture, the modern browser APIs that made it possible, and a local-first growth experiment I'm running.&lt;/p&gt;

&lt;p&gt;The System Architecture&lt;/p&gt;

&lt;p&gt;To deliver a desktop-class experience entirely in browser memory and local storage without backend APIs, Cordoval relies on three core browser subsystems:&lt;/p&gt;

&lt;p&gt;High-Performance Local Storage: OPFS + IndexedDB&lt;br&gt;
Instead of hitting remote databases, data lives strictly on the user's disk:&lt;br&gt;
• Origin Private File System (OPFS): Used for bulk binary assets, heavy document trees, and state snapshot files. OPFS provides near-native read/write file handle performance off the main thread.&lt;br&gt;
• IndexedDB: Handles rapid key-value application states, user settings, and indexing.&lt;/p&gt;

&lt;p&gt;Note: Zero database latency, full offline functionality, and complete data sovereignty—if the network goes down, the OS keeps running.&lt;/p&gt;

&lt;p&gt;Off-Main-Thread Simulation: Web Workers&lt;br&gt;
The Play module features a full economic sandbox (stocks, fixed-yield bonds, real estate) with background time-elapsed yield calculations.&lt;/p&gt;

&lt;p&gt;To keep the UI running at 60fps glassmorphic rendering:&lt;br&gt;
• All price fluctuation tickers and compound interest logic run inside dedicated Web Workers.&lt;br&gt;
• State updates are passed back to the main UI thread via postMessage(), preventing UI jank or main-thread blocking.&lt;/p&gt;

&lt;p&gt;Native Streaming &amp;amp; RSS Parsing: HTML5 Audio&lt;br&gt;
The Cast module streams audio directly from podcast host URLs parsed client-side via native RSS feed enclosures using standard fetch() and HTML5 Audio APIs, eliminating the need for media proxy servers.&lt;/p&gt;

&lt;p&gt;The "Local Sharewall" Experiment&lt;/p&gt;

&lt;p&gt;Because Cordoval has no server backend, accounts, or telemetry, standard SaaS paywalls don't work. Instead, I'm testing a zero-backend Sharewall loop:&lt;/p&gt;

&lt;p&gt;Active Usage Tracking: Using the Page Visibility API (document.visibilityState === 'visible'), the app tracks active foreground minutes locally.&lt;/p&gt;

&lt;p&gt;The 30-Minute Trigger: After 30 active minutes, access pauses until the user triggers a social share.&lt;/p&gt;

&lt;p&gt;Client-Side Unlock: Leveraging the native navigator.share() Web API, completing the share writes a 30-day forward expiration timestamp directly into localStorage.&lt;/p&gt;

&lt;p&gt;While technical users could open DevTools and bypass the token, it provides a seamless, zero-friction viral loop for general users while preserving a zero-data-collection promise.&lt;/p&gt;

&lt;p&gt;Challenges of Local-First Architecture&lt;/p&gt;

&lt;p&gt;Building without a backend isn't without trade-offs. Two key browser hurdles remain:&lt;/p&gt;

&lt;p&gt;• Mobile WebKit Storage Eviction: iOS Safari can evict IndexedDB/PWA storage for un-bookmarked apps after periods of non-use. Implementing strict export/import backup workflows is critical.&lt;br&gt;
• CORS Restrictions on RSS Feeds: Some podcast hosts restrict cross-origin enclosure fetching via strict CDN headers, requiring carefully managed client-side fallback parsing.&lt;/p&gt;

&lt;p&gt;Check It Out&lt;/p&gt;

&lt;p&gt;Cordoval 8.0 is live at &lt;a href="https://cordoval.work" rel="noopener noreferrer"&gt;https://cordoval.work&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're interested in local-first software, PWA architectures, or building serverless client-side applications, try it out and drop your feedback in the comments!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>startup</category>
      <category>productivity</category>
      <category>reviews</category>
    </item>
  </channel>
</rss>
