<?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>Forem: BussardRamjet</title>
    <description>The latest articles on Forem by BussardRamjet (@bussardramjet).</description>
    <link>https://forem.com/bussardramjet</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%2F3776932%2F19adcec8-0b0e-41b0-b9a3-f0e5acdef345.png</url>
      <title>Forem: BussardRamjet</title>
      <link>https://forem.com/bussardramjet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/bussardramjet"/>
    <language>en</language>
    <item>
      <title>I Built a Privacy-First Collection of Browser-Based Dev Tools</title>
      <dc:creator>BussardRamjet</dc:creator>
      <pubDate>Tue, 17 Feb 2026 06:27:27 +0000</pubDate>
      <link>https://forem.com/bussardramjet/i-built-a-privacy-first-collection-of-browser-based-dev-tools-1bn</link>
      <guid>https://forem.com/bussardramjet/i-built-a-privacy-first-collection-of-browser-based-dev-tools-1bn</guid>
      <description>&lt;p&gt;Every developer has a handful of online tools bookmarked — JSON formatters, Base64 encoders, regex testers. I used them daily, but something always bugged me: why is my data being sent to a server just to format some JSON?&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;&lt;a href="https://toolphin.dev" rel="noopener noreferrer"&gt;Toolphin&lt;/a&gt;&lt;/strong&gt; — a collection of developer utilities that run entirely in your browser. No server calls, no accounts, no tracking. Your data never leaves the page.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's included
&lt;/h2&gt;

&lt;p&gt;There are 10 tools so far:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;JSON Formatter&lt;/strong&gt; — format, minify, and validate with syntax highlighting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Base64 Codec&lt;/strong&gt; — encode/decode with full Unicode support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;URL Encoder/Decoder&lt;/strong&gt; — for query strings and URI components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hash Generator&lt;/strong&gt; — SHA-1, SHA-256, SHA-384, SHA-512 via Web Crypto API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timestamp Converter&lt;/strong&gt; — Unix timestamps to human-readable dates and back&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Color Picker&lt;/strong&gt; — convert between HEX, RGB, and HSL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markdown Preview&lt;/strong&gt; — real-time rendering with GitHub Flavored Markdown&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regex Tester&lt;/strong&gt; — live matching with capture group highlighting and flag toggles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JWT Decoder&lt;/strong&gt; — decode headers and payloads without sending your token anywhere&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text Diff&lt;/strong&gt; — inline and side-by-side views with file upload support&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why client-side matters
&lt;/h2&gt;

&lt;p&gt;Think about the tools you use daily. Your JWT tokens contain user data. Your JSON payloads might have API keys. Your Base64 strings could be encoding anything sensitive.&lt;/p&gt;

&lt;p&gt;With Toolphin, the processing happens in JavaScript in your browser tab. There's literally no backend to leak data to. You can verify this — open the Network tab and watch. Nothing gets sent.&lt;/p&gt;

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

&lt;p&gt;For anyone curious about how it's built:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 16&lt;/strong&gt; with App Router and static site generation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript&lt;/strong&gt; for type safety&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS + shadcn/ui&lt;/strong&gt; for the UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vitest + React Testing Library&lt;/strong&gt; for unit tests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Playwright&lt;/strong&gt; for E2E tests (desktop + mobile)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel&lt;/strong&gt; for hosting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few technical decisions I'm happy with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Web Crypto API for hashing&lt;/strong&gt; — no need for a crypto library. The browser's native &lt;code&gt;crypto.subtle.digest()&lt;/code&gt; handles SHA hashing and it's fast.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regex-based syntax highlighting&lt;/strong&gt; — for the JSON formatter, I wrote a simple regex-based highlighter instead of pulling in a heavy library like Prism or Highlight.js. For a single language, it's all you need.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local fonts&lt;/strong&gt; — I use the &lt;code&gt;geist&lt;/code&gt; npm package instead of Google Fonts, eliminating external network requests on every page load.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dark mode without flash&lt;/strong&gt; — an inline script in &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; reads localStorage and sets the theme class before React hydrates, so there's no white flash when you have dark mode enabled.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;SEO matters from day one.&lt;/strong&gt; Every tool page has its own title, meta description, Open Graph tags, and JSON-LD structured data. There's an auto-generated sitemap that pulls from the tool registry. I should have done this from the start rather than retrofitting it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;"use client"&lt;/code&gt; should be a scalpel, not a sledgehammer.&lt;/strong&gt; In Next.js, only the interactive leaf components need to be client components. Keeping wrappers and layouts as server components lets everything else stay server-rendered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testing saves time.&lt;/strong&gt; Every tool has unit tests and E2E tests. Sounds like overhead, but it's caught multiple regressions when I refactored shared components.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;I'm actively adding more tools. Some ideas on my list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lorem ipsum generator&lt;/li&gt;
&lt;li&gt;CSS unit converter&lt;/li&gt;
&lt;li&gt;Cron expression parser&lt;/li&gt;
&lt;li&gt;UUID generator&lt;/li&gt;
&lt;li&gt;HTML entity encoder&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If there's a tool you'd find useful, I'd love to hear about it in the comments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check it out: &lt;a href="https://toolphin.dev" rel="noopener noreferrer"&gt;toolphin.dev&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>nextjs</category>
      <category>privacy</category>
    </item>
  </channel>
</rss>
