<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Axtric's Blog]]></title><description><![CDATA[Axtric's Blog]]></description><link>https://axtric.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>Axtric&apos;s Blog</title><link>https://axtric.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 16:58:23 GMT</lastBuildDate><atom:link href="https://axtric.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How I Built ToolHub: A 138-Tool Static PWA That Stays Sub-Second]]></title><description><![CDATA[Hi everyone! 👋 I recently published a full architecture retrospective on building ToolHub — a clean, privacy-first, zero-bloat suite of 138+ in-browser web utilities.
Here is a summary of the key eng]]></description><link>https://axtric.hashnode.dev/how-i-built-toolhub-a-138-tool-static-pwa-that-stays-sub-second</link><guid isPermaLink="true">https://axtric.hashnode.dev/how-i-built-toolhub-a-138-tool-static-pwa-that-stays-sub-second</guid><category><![CDATA[Next.js]]></category><category><![CDATA[PWA]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[showcase]]></category><dc:creator><![CDATA[ɐ ℒℯℯ]]></dc:creator><pubDate>Tue, 04 Aug 2026 07:57:36 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a7197fa41b6b1d844b19164/8d1e7788-fa03-4056-89ef-f6fc37bbaffd.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone! 👋 I recently published a full architecture retrospective on building ToolHub — a clean, privacy-first, zero-bloat suite of 138+ in-browser web utilities.</p>
<p>Here is a summary of the key engineering tradeoffs and technical decisions that allowed us to keep the site sub-second fast and fully offline-capable.</p>
<p>🚀 Key Architectural Highlights</p>
<p>⚡ 1. Next.js Static Export (output: 'export')<br />Instead of running a node server for SSR/ISR, we opted for a 100% static export model hosted on edge CDN.<br />👉 Why: Zero server maintenance, ultra-low TTFB, infinite scaling.<br />👉 Tradeoff: Everything dynamic executes strictly on the client side in browser memory.</p>
<p>📲 2. Custom Service Worker Caching Strategy<br />We built a custom SW strategy specifically for PWA caching:</p>
<p>stale-while-revalidate for static assets (_next/static/*).</p>
<p>network-first for HTML document navigations (ensures users always see the latest release when online).</p>
<p>Complete offline capability across all 138 tools once cached.</p>
<p>🔍 3. pSEO Engine (Programmatic SEO)<br />Generating 138+ static tool pages with full JSON-LD structured data and automated internal linking meshes, all baked into static HTML at build time without runtime database lookups.</p>
<p>📐 4. Zero-CLS Ad Strategy<br />Preventing layout shifts (CLS) by reserving explicit fixed-height layout slots for ad units before they load.</p>
<p>🛠️ Try ToolHub Live:<br />👉 <a href="https://toolhub.axtrivc.com/">https://toolhub.axtrivc.com/</a></p>
<p>📖 Read the full engineering deep-dive on my blog:<br />👉 <a href="https://toolhub.axtrivc.com/blog/how-i-built-toolhub/">https://toolhub.axtrivc.com/blog/how-i-built-toolhub/</a></p>
<p>I'd love to hear your thoughts, feedback on the architecture, or suggestions for new tools! 💬</p>
]]></content:encoded></item></channel></rss>