<?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: Mohit Gauniyal</title>
    <description>The latest articles on DEV Community by Mohit Gauniyal (@mohitgauniyal).</description>
    <link>https://dev.to/mohitgauniyal</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%2F3746556%2F2534ecc3-1359-4344-a702-10bf00070e5d.jpg</url>
      <title>DEV Community: Mohit Gauniyal</title>
      <link>https://dev.to/mohitgauniyal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mohitgauniyal"/>
    <language>en</language>
    <item>
      <title>What happens when a personal tool accidentally becomes a team tool — and what you have to rebuild</title>
      <dc:creator>Mohit Gauniyal</dc:creator>
      <pubDate>Sun, 15 Mar 2026 17:21:04 +0000</pubDate>
      <link>https://dev.to/mohitgauniyal/what-happens-when-a-personal-tool-accidentally-becomes-a-team-tool-and-what-you-have-to-rebuild-59bk</link>
      <guid>https://dev.to/mohitgauniyal/what-happens-when-a-personal-tool-accidentally-becomes-a-team-tool-and-what-you-have-to-rebuild-59bk</guid>
      <description>&lt;p&gt;A few weeks ago I posted here about a small tool I'd built — &lt;strong&gt;Instbyte, a self-hosted LAN clipboard for dev teams&lt;/strong&gt;. Got some traction, a few people tried it.&lt;br&gt;
What I didn't expect was that the tool itself would change this much in the months after.&lt;br&gt;
I want to write about that process honestly because I think it's a pattern that comes up a lot when you build something for yourself and then other people start using it — the assumptions baked into the original design start breaking in interesting ways.&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.amazonaws.com%2Fuploads%2Farticles%2Fmqr1s56efzuqfhd8rtc3.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%2Fmqr1s56efzuqfhd8rtc3.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The original assumption: one person, a few devices&lt;/strong&gt;&lt;br&gt;
When I built v1 the mental model was simple. One person runs it, shares the URL with a few teammates, they use it for a sprint, it auto-deletes, done. The data model was flat — just items in a feed. The UI was basically a list with a compose box.&lt;br&gt;
This worked. But when teams actually started using it consistently, the flat feed became a problem immediately. Build logs were mixing with design assets were mixing with credentials were mixing with random links. The tool that was supposed to reduce noise was creating its own noise.&lt;br&gt;
The answer was obvious in retrospect: channels. But adding channels to something that assumed a flat structure meant revisiting the database schema, the socket events, the UI layout, and the search implementation all at once. A small conceptual change with a wide blast radius.&lt;/p&gt;

&lt;p&gt;The thing I didn't design for: the live session&lt;br&gt;
&lt;strong&gt;The original tool was async. Drop something, someone sees it later. That's fine for files and links.&lt;/strong&gt;&lt;br&gt;
But teams started using it during standups and pair sessions — and suddenly the async model felt wrong. People wanted a shared surface, not a shared history.&lt;br&gt;
This pushed me toward building &lt;strong&gt;broadcast mode&lt;/strong&gt; — a way to push your screen to every connected device simultaneously. Anyone watching can click to capture a screenshot into the shared feed. No screenshare lag, no projector needed.&lt;br&gt;
Broadcast required a completely different architecture decision from the rest of the tool. The rest of Instbyte is store-and-forward. Broadcast is live. I ended up keeping them as separate features that share the same UI rather than trying to unify them, which I'm still not sure was the right call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;White-labelling as a product decision, not a feature&lt;/strong&gt;&lt;br&gt;
At some point someone asked if they could rename the app for their team. I said sure and exposed the branding config — name, color, logo, favicon, all from a JSON file.&lt;br&gt;
What I didn't anticipate is how much this changes the way people relate to the tool. Teams that white-label it treat it as their own infrastructure, not as "that Instbyte thing." They're more likely to keep it running, integrate it into their workflow, and tell other people about it.&lt;br&gt;
The tradeoff is that white-label means zero brand visibility for me when those teams share it internally. I'm still working out how I feel about that.&lt;/p&gt;

&lt;p&gt;The pipe interface — for people who don't want to touch a browser&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm run build 2&amp;gt;&amp;amp;1 | curl -X POST http://192.168.1.42:3000/text -d @-&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
This was a small addition that turned out to be disproportionately popular with the developer users specifically. Being able to pipe terminal output directly into the shared feed without context-switching is genuinely useful during CI failures, debugging sessions, or any time you want your team to see output as it happens.&lt;/p&gt;

&lt;p&gt;I'm &lt;strong&gt;considering a proper CLI package&lt;/strong&gt; to clean this up. Curious whether that's worth the maintenance overhead or whether the curl interface is already good enough for the people who'd use it.&lt;/p&gt;

&lt;p&gt;Where it is now&lt;br&gt;
v1.10. MIT licensed. &lt;strong&gt;npx instbyte&lt;/strong&gt; to run it. Docker image available. Everything persists in the directory you run it from.&lt;/p&gt;

&lt;p&gt;Full list of what's changed since the first post: channels, broadcast mode, pipe support, passphrase auth, configurable retention, read receipts, pin, undo delete, cross-channel notifications, dark mode, full white-label, QR join, Docker.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;strong&gt;github.com/mohitgauniyal/instbyte&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What I'm actually curious about&lt;br&gt;
Two things I genuinely haven't resolved:&lt;br&gt;
First — the broadcast feature gets less usage than I expected relative to how much work it took to build. I think it's a discoverability problem but it might be that the problem it solves isn't as common as I thought. If you run standups or design reviews, does "push to every screen in the room simultaneously without screensharing" solve something real for you?&lt;/p&gt;

&lt;p&gt;Second — the white-label tradeoff. If you've built something that people use internally under their own branding, how do you think about visibility vs adoption? Is invisibility just the cost of being genuinely useful infrastructure?&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>sideprojects</category>
      <category>devtool</category>
    </item>
    <item>
      <title>Building a shared clipboard for dev teams — looking for feedback</title>
      <dc:creator>Mohit Gauniyal</dc:creator>
      <pubDate>Mon, 02 Mar 2026 08:47:33 +0000</pubDate>
      <link>https://dev.to/mohitgauniyal/building-a-shared-clipboard-for-dev-teams-looking-for-feedback-4flc</link>
      <guid>https://dev.to/mohitgauniyal/building-a-shared-clipboard-for-dev-teams-looking-for-feedback-4flc</guid>
      <description>&lt;h1&gt;
  
  
  I built a tool for sharing things instantly across devices — it's now something my dev team uses daily
&lt;/h1&gt;

&lt;p&gt;It started small. I was running something on localhost and wanted to quickly check it on my phone. Typed the IP, added the port, hoped for the best. Did that enough times that I thought — why not just build a proper UI for this?&lt;/p&gt;

&lt;p&gt;So I did. And then I kept adding things.&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.amazonaws.com%2Fuploads%2Farticles%2F640zmwhmylpfe5idh7st.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%2F640zmwhmylpfe5idh7st.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What started as a personal convenience tool has quietly become something my team reaches for during almost every sprint. This post is about how that happened, what it actually looks like in practice, and where I want to take it — because honestly I want feedback from other devs on what's missing or what could be better.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;Instbyte&lt;/strong&gt; is a self-hosted local network sharing tool. One command on any machine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx instbyte
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A URL appears. Anyone on the same network opens it in their browser. That's it — no install on their end, no account, no cloud. Everything syncs in real time.&lt;/p&gt;

&lt;p&gt;You can share files, text snippets, links, API payloads, logs, build artifacts — anything. It all lives in channels, auto-deletes after a configurable retention window, and never leaves your network.&lt;/p&gt;




&lt;h2&gt;
  
  
  How it actually gets used in a team
&lt;/h2&gt;

&lt;p&gt;This is the part I want to talk about more than the technical stuff, because the use cases kind of surprised me as they emerged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sharing payloads and logs mid-sprint&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Someone hits an unexpected API response. Instead of copy-pasting it into Slack, screenshotting it, or trying to describe it — they drop it into Instbyte. Everyone on the sprint who has the URL open sees it instantly. We can all look at the same JSON at the same time without anyone forwarding anything.&lt;/p&gt;

&lt;p&gt;Same with logs. A long error trace is awkward in a chat message. Drop it in, it renders with syntax highlighting, everyone can read it properly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build files between machines&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I have situations where something is built on one machine and needs to get to another quickly. Drag it onto the page, it's there. The person on the other machine clicks it, it downloads. No USB, no cloud upload, no "I'll send it to you on WhatsApp."&lt;/p&gt;

&lt;p&gt;For larger files — the default cap is 2GB — it shows a progress bar during upload so you know it's moving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;During standups and pair sessions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This one snuck up on me. When you're pairing or in a standup and someone says "here's the endpoint" or "use this token for testing" — instead of DMing it or putting it in a shared doc that you have to find later — it just goes into the general channel. It's there, everyone on the call can copy it, it disappears after 24 hours anyway so it doesn't clutter anything.&lt;/p&gt;

&lt;p&gt;The paste-anywhere behaviour helps here too. You don't have to click into an input — paste anywhere on the page and it sends. When you're mid-conversation that small thing actually matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Moving assets between designers and devs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Drop an image, a mockup, an icon export — it previews inline. No "did you get the file I sent" back and forth. It's there, you see it, you download it if you need it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The features that make it feel like a team tool rather than a file drop
&lt;/h2&gt;

&lt;p&gt;A few things I've added that changed how it feels to use:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Channels&lt;/strong&gt; — keeps things from becoming a single noisy feed. We have general, builds, assets, and a temp channel for things that definitely don't need to survive the day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read receipts&lt;/strong&gt; — shows how many devices have actually viewed each item. Small thing but genuinely useful when you've dropped something and want to know if your teammate saw it before the standup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expiry badges&lt;/strong&gt; — items show a countdown to when they'll auto-delete. Keeps the mental model clean. Nothing lingers. If something needs to stay, you pin it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inline editing&lt;/strong&gt; — update a snippet in place without deleting and re-pasting. Useful when an endpoint changes mid-sprint and you want to correct what's already there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passphrase auth&lt;/strong&gt; — if you want to lock it down so only your team gets in, one line in the config file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;White-label&lt;/strong&gt; — set a custom name, colour, logo. We run it as "Team Hub" internally. Sounds small but it makes it feel like yours rather than a random tool you're running.&lt;/p&gt;




&lt;h2&gt;
  
  
  Running it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;**&lt;/span&gt;npx instbyte
&lt;span class="k"&gt;**&lt;/span&gt;&lt;span class="sb"&gt;```&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;% endraw %&lt;span class="o"&gt;}&lt;/span&gt;


Or globally:
&lt;span class="o"&gt;{&lt;/span&gt;% raw %&lt;span class="o"&gt;}&lt;/span&gt;


&lt;span class="sb"&gt;```&lt;/span&gt;bash
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; instbyte
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For persistent team use, throw it behind pm2:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pm2 start &lt;span class="s2"&gt;"npx instbyte"&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; instbyte
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Config is optional — everything has sensible defaults. If you want to customise:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"auth"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"passphrase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"yourteampassword"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"storage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"maxFileSize"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2GB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"retention"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"24h"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"branding"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"appName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Team Hub"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"primaryColor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#7c3aed"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Drop that as &lt;code&gt;instbyte.config.json&lt;/code&gt; in the directory you run from. That's it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where it's at and where it's going
&lt;/h2&gt;

&lt;p&gt;Currently at &lt;strong&gt;v1.9&lt;/strong&gt;. It's MIT licensed, open source, built on Node.js, Express, Socket.IO, and SQLite.&lt;/p&gt;

&lt;p&gt;v2.0 is where I want to make it easier to run without Node at all — Docker image, standalone binaries for macOS, Windows, and Linux. The goal is that anyone on a team can run it with one download regardless of their setup.&lt;/p&gt;

&lt;p&gt;But before I get there I genuinely want to hear from other developers using it or considering it. What's missing for your workflow? What would make it something you'd actually keep running on your machine? What's confusing, what's unnecessary, what's the one thing that's not there?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/mohitgauniyal/instbyte" rel="noopener noreferrer"&gt;https://github.com/mohitgauniyal/instbyte&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;npm:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/instbyte" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/instbyte&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx instbyte
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>discuss</category>
      <category>productivity</category>
      <category>showdev</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>TabLedger — Iteration 3 (Now It Actually Feels Usable)</title>
      <dc:creator>Mohit Gauniyal</dc:creator>
      <pubDate>Wed, 25 Feb 2026 07:58:00 +0000</pubDate>
      <link>https://dev.to/mohitgauniyal/tabledger-iteration-3-now-it-actually-feels-usable-4dke</link>
      <guid>https://dev.to/mohitgauniyal/tabledger-iteration-3-now-it-actually-feels-usable-4dke</guid>
      <description>&lt;p&gt;A few weeks ago I wrote about building a tiny Chrome extension because I was drowning in tabs and did what devs do best — built a tool instead of fixing the habit.&lt;/p&gt;

&lt;p&gt;Since then, I’ve been using it daily.&lt;/p&gt;

&lt;p&gt;And as expected, the real improvements didn’t come while building it — they came while using it.&lt;/p&gt;

&lt;p&gt;v0.0.3 is now out, and this version is less about “saving tabs” and more about actually managing them properly.&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.amazonaws.com%2Fuploads%2Farticles%2Fbrxxpq2l39tp9pkwjzlh.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%2Fbrxxpq2l39tp9pkwjzlh.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What changed in v0.0.3?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Proper Snapshot Management
Saved sessions now have a structured dashboard instead of just being dumped in a list. It feels like something you can actually work with.&lt;/li&gt;
&lt;/ol&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.amazonaws.com%2Fuploads%2Farticles%2Fr96r29zh02v804bzkti8.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%2Fr96r29zh02v804bzkti8.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Search Across Snapshots
You can search by snapshot name or even URL keywords. This was a big one. If you save often, scrolling doesn’t scale.&lt;/li&gt;
&lt;/ol&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.amazonaws.com%2Fuploads%2Farticles%2Ft5et9abduuk1w8l5gpnf.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%2Ft5et9abduuk1w8l5gpnf.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Domain Filtering (with quick chips)
Filtering by domain makes it much easier to find context-specific work. If I was researching one tool across multiple sessions, I can now isolate that quickly.&lt;/li&gt;
&lt;/ol&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.amazonaws.com%2Fuploads%2Farticles%2Fmsah249nfh5jyk1y4k2y.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%2Fmsah249nfh5jyk1y4k2y.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Safer Save &amp;amp; Close
Pinned tab protection + confirmation flows. No accidental nuking of important tabs.&lt;/li&gt;
&lt;/ol&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.amazonaws.com%2Fuploads%2Farticles%2Fofcyz3cf7qlf4xn83rwt.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%2Fofcyz3cf7qlf4xn83rwt.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are smaller UX refinements too — rename snapshots, copy individual links, safer deletes — but the main goal was reducing friction.&lt;/p&gt;

&lt;p&gt;Still:&lt;/p&gt;

&lt;p&gt;No accounts&lt;/p&gt;

&lt;p&gt;No cloud sync&lt;/p&gt;

&lt;p&gt;No tracking&lt;br&gt;
Everything stays local in your browser.&lt;/p&gt;

&lt;p&gt;It’s still intentionally simple.&lt;br&gt;
But now it feels stable enough to actually rely on.&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/mohitgauniyal/tabledger" rel="noopener noreferrer"&gt;https://github.com/mohitgauniyal/tabledger&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love to hear how others manage tab overload — I’m already thinking about what v0.0.4 should look like.&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>productivity</category>
      <category>showdev</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>Tab overload, built a snapshot tool (classic dev move)</title>
      <dc:creator>Mohit Gauniyal</dc:creator>
      <pubDate>Mon, 02 Feb 2026 15:24:19 +0000</pubDate>
      <link>https://dev.to/mohitgauniyal/tab-overload-built-a-snapshot-tool-classic-dev-move-4o2i</link>
      <guid>https://dev.to/mohitgauniyal/tab-overload-built-a-snapshot-tool-classic-dev-move-4o2i</guid>
      <description>&lt;p&gt;Like many here, I end up with way too many tabs/windows open in Chrome, and my “save for later” links never get revisited &lt;/p&gt;

&lt;p&gt;I used to group tabs, move them into another window, or dump links into a file… but it never really solved the “I’ll come back to it” problem.&lt;/p&gt;

&lt;p&gt;So I built a tiny Chrome extension to save tab snapshots and reopen them anytime.&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.amazonaws.com%2Fuploads%2Farticles%2Fp8zghc7xmx38m0sploe8.jpeg" 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%2Fp8zghc7xmx38m0sploe8.jpeg" alt=" " width="640" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Didn’t even research other tools (classic dev ego).&lt;br&gt;
It’s already working great for me, but I’m sure there’s a better way to do this.&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%2Fed3xqvvkfzbbac0o8v15.jpeg" 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%2Fed3xqvvkfzbbac0o8v15.jpeg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How do you manage your tabs? Anything you’d want in something like this? I already have some more updates on my mind once the extension gets approved  in google dev dash.&lt;/p&gt;

&lt;p&gt;Btw, feel free to checkout and leave your suggestions, always welcome!&lt;/p&gt;

</description>
      <category>chromeextension</category>
      <category>opensource</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
