<?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: Ritesh Soni</title>
    <description>The latest articles on DEV Community by Ritesh Soni (@riteshsonilogpile).</description>
    <link>https://dev.to/riteshsonilogpile</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%2F4239011%2F4c9233db-6e77-4fa2-804e-6c1f47dbce9e.png</url>
      <title>DEV Community: Ritesh Soni</title>
      <link>https://dev.to/riteshsonilogpile</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/riteshsonilogpile"/>
    <language>en</language>
    <item>
      <title>I built an offline-first PC game launcher that calculated my 18,838-hour backlog debt</title>
      <dc:creator>Ritesh Soni</dc:creator>
      <pubDate>Wed, 11 Nov 2026 13:44:35 +0000</pubDate>
      <link>https://dev.to/riteshsonilogpile/i-built-an-offline-first-pc-game-launcher-that-calculated-my-18838-hour-backlog-debt-52a9</link>
      <guid>https://dev.to/riteshsonilogpile/i-built-an-offline-first-pc-game-launcher-that-calculated-my-18838-hour-backlog-debt-52a9</guid>
      <description>&lt;p&gt;Like a lot of PC gamers, my library is scattered across 8 different storefronts. Between Steam sales, free weekly Epic games, GOG installers, and Xbox Game Pass, I had 1,420 titles sitting across my drives and no clean way to manage them on a portable SSD without background launchers eating RAM.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Logpile&lt;/strong&gt;, a 100% offline, open-source PC game library manager for Windows.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;GitHub Repo &amp;amp; Installer:&lt;/strong&gt; &lt;a href="https://github.com/ritesh-soni-logpile/logpile" rel="noopener noreferrer"&gt;https://github.com/ritesh-soni-logpile/logpile&lt;/a&gt;&lt;/p&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc2aimdzh1ipve2tykqfw.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc2aimdzh1ipve2tykqfw.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzoqo9hia0h5khabvevmo.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzoqo9hia0h5khabvevmo.png" alt=" " width="800" height="1083"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Facing the 18,838-Hour Backlog Debt
&lt;/h3&gt;

&lt;p&gt;Once Logpile scanned all 8 sources (Steam, Epic, GOG, Xbox, EA, Ubisoft, Amazon, and Standalone) and synced campaign lengths, the Sanctuary Dashboard gave me the brutal truth: &lt;strong&gt;~18,838 hours of unplayed story campaigns&lt;/strong&gt;, plus a breakdown of sub-5-hour "Quick Wins" I can actually finish over a weekend.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Fixing the "Portable SSD" Problem
&lt;/h3&gt;

&lt;p&gt;If you keep games on an external SSD and plug it into a laptop, Windows often swaps the drive letter from &lt;code&gt;D:\&lt;/code&gt; to &lt;code&gt;E:\&lt;/code&gt;, breaking every shortcut in traditional launchers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-Healing Paths:&lt;/strong&gt; Logpile tokenizes paths on the portable drive using &lt;code&gt;{{PORTABLE_ROOT}}&lt;/code&gt; and resolves the active drive root at launch time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rolling Save Backups:&lt;/strong&gt; When a game closes, Logpile zips the local save folder (keeping the newest 3 backups) inside &lt;code&gt;logpile_data/saves/&lt;/code&gt;. When you plug into a second PC, it checks file modification timestamps before launch and offers a 1-click restore if the portable save is newer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1kq3ikkbzr5d0tjgrfyp.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1kq3ikkbzr5d0tjgrfyp.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fja134xjt3f15y553p8i3.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fja134xjt3f15y553p8i3.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Futnhztdyobidezx94jny.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Futnhztdyobidezx94jny.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2q001yxfb2d8gqsx5k1y.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2q001yxfb2d8gqsx5k1y.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8yvhyzvddppe07tcw1r1.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8yvhyzvddppe07tcw1r1.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Solving the "I Haven't Played This in 3 Weeks" Problem
&lt;/h3&gt;

&lt;p&gt;Dropping a 50-hour RPG for two weeks usually means forgetting the story and the controls.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When you exit a game, Logpile shows a quick toast asking if you want to leave a voice or text checkpoint note.&lt;/li&gt;
&lt;li&gt;If a game sits idle for more than 14 days, the Game Dossier puts a &lt;strong&gt;"Jump Back In"&lt;/strong&gt; card at the top with your note, your latest screenshot, and a 4-bullet combat/controls refresher pulled from locally cached StrategyWiki guides in SQLite FTS5.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd4pufm9xn2rrk5zux94y.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd4pufm9xn2rrk5zux94y.png" alt=" " width="800" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm6e3vd63qpkdaqnbcpjt.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm6e3vd63qpkdaqnbcpjt.png" alt=" " width="563" height="1033"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxysfwv5eydcyph7yzfut.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxysfwv5eydcyph7yzfut.png" alt=" " width="799" height="269"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Zero-Bloat Hardware Protection (0 MB RAM Overlay)
&lt;/h3&gt;

&lt;p&gt;Launchers shouldn't cost you frames per second.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fast Guide Mode (Ctrl+Space):&lt;/strong&gt; Opens an in-game overlay to search cached offline walkthroughs with 0 MB RAM overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional BYOM Local Companion:&lt;/strong&gt; If you drop your own &lt;code&gt;.gguf&lt;/code&gt; model into the &lt;code&gt;/models&lt;/code&gt; folder for natural language filtering or voice commands (via Gamepad R3), Logpile automatically unloads the model from RAM after 30 seconds of idle time or the exact millisecond a game process spawns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pre-Launch RAM Guard:&lt;/strong&gt; Checks free system memory before booting a title and offers a 1-click option to close heavy background processes like Chrome or Discord.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Try It Out
&lt;/h3&gt;

&lt;p&gt;Logpile v1.3.0 is free and MIT-licensed. Grab the installer or portable zip from &lt;a href="https://github.com/ritesh-soni-logpile/logpile/releases/latest" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt; or &lt;a href="https://logpile.itch.io/logpile" rel="noopener noreferrer"&gt;Itch.io&lt;/a&gt; and let me know how many hours of backlog debt you have!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>javascript</category>
      <category>gamedev</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
