<?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[LaunchShelf Notes]]></title><description><![CDATA[LaunchShelf Notes]]></description><link>https://zhengchh.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 31 Oct 2026 09:09:05 GMT</lastBuildDate><atom:link href="https://zhengchh.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[LaunchShelf is on The Capital this week]]></title><description><![CDATA[Shipping LaunchShelf — a one-time static landing kit so makers can publish waitlist/pricing pages without a frontend repo. It’s on AI Tools Capital’s The…]]></description><link>https://zhengchh.hashnode.dev/launchshelf-is-on-the-capital-this-week</link><guid isPermaLink="true">https://zhengchh.hashnode.dev/launchshelf-is-on-the-capital-this-week</guid><dc:creator><![CDATA[Chunhua Zheng]]></dc:creator><pubDate>Tue, 27 Oct 2026 10:25:27 GMT</pubDate><content:encoded><![CDATA[<p>Shipping LaunchShelf — a one-time static landing kit so makers can publish waitlist/pricing pages without a frontend repo. It’s on AI Tools Capital’s The Capital this week; a vote helps visibility: <a href="https://aitoolscapital.com/the-capital">https://aitoolscapital.com/the-capital</a></p>
<p>Live demo: <a href="https://ai.i258.cn/launchshelf/">https://ai.i258.cn/launchshelf/</a></p>
<p>Optional waitlist: <a href="https://tally.so/r/2jj45e">https://tally.so/r/2jj45e</a></p>
]]></content:encoded></item><item><title><![CDATA[I stopped rebuilding landing pages in Next.js for every micro-launch]]></title><description><![CDATA[I used to open a fresh Next.js app every time I had a small idea to validate. Not because the idea needed React Server Components. Because I wanted a page…]]></description><link>https://zhengchh.hashnode.dev/i-stopped-rebuilding-landing-pages-in-next-js-for-every-micro-launch</link><guid isPermaLink="true">https://zhengchh.hashnode.dev/i-stopped-rebuilding-landing-pages-in-next-js-for-every-micro-launch</guid><category><![CDATA[webdev]]></category><category><![CDATA[indiehackers]]></category><category><![CDATA[HTML]]></category><category><![CDATA[landing page]]></category><dc:creator><![CDATA[Chunhua Zheng]]></dc:creator><pubDate>Tue, 27 Oct 2026 03:32:29 GMT</pubDate><content:encoded><![CDATA[<p>I used to open a fresh Next.js app every time I had a small idea to validate.</p>
<p>Not because the idea needed React Server Components. Because I wanted a page that looked “real” — hero, pricing, FAQ, a place for an email — and Next was the hammer I already knew.</p>
<p>Then I’d burn two evenings on layout, fonts, a half-wired form, and a deploy that still felt like a mini product. By the time the landing was “good enough,” the urge to launch had cooled. The waitlist stayed empty. The Gumroad link never went live.</p>
<p>If that sounds familiar, this is the note I wish I’d written to myself a year ago.</p>
<h2>The actual job of a launch page</h2>
<p>For a micro-launch — a waitlist, a $19–$49 digital kit, a course teaser — the page has one job:</p>
<p><strong>Get someone from “curious” to “email or payment” without making you rebuild a frontend repo.</strong></p>
<p>That’s it. It does not need auth. It does not need a CMS. It does not need a design system with 40 tokens.</p>
<p>Heavy boilerplates (the $150–$300 “Ship your SaaS” class) are excellent when you already know you’re building a multi-tenant app. They are overkill when you only need a front door while the real product is still a weekend away.</p>
<p>Static HTML + Tailwind is boring on purpose. One folder. Edit copy. Host anywhere. Ship the same afternoon.</p>
<h2>Why static HTML + Tailwind wins for waitlist / Gumroad launches</h2>
<p><strong>1. Time-to-first-visitor drops from days to hours</strong></p>
<p>You clone or unzip, replace headlines and prices, drop in a Gumroad embed or a Tally/Formspree action, push to any static host. No <code>npm run</code> rabbit hole unless you want it.</p>
<p><strong>2. The cost model matches the product</strong></p>
<p>If you’re selling a one-time ZIP for $39, your acquisition page should not cost a week of engineering. Static hosting is free or near-free. No serverless form tax unless you choose a paid form tool later.</p>
<p><strong>3. You can change the offer without touching an app</strong></p>
<p>Swap “Join waitlist” for “Buy · $39.” Add an AI-tool vertical without forking a monorepo. Indie launches iterate on <em>positioning</em> more than on <em>architecture</em> in week one.</p>
<p><strong>4. Buyers of digital kits understand “download and edit”</strong></p>
<p>Your customer is often another maker. They don’t need a dashboard. They need a clean page they can restyle and redeploy. HTML is the universal export format.</p>
<p>I’m not saying never use Next. I’m saying: don’t start the Next project until the static page has proven anyone cares.</p>
<h2>The structure of a page that converts (enough)</h2>
<p>You don’t need twelve sections. You need a clear path:</p>
<ol>
<li><strong>Hero</strong> — who it’s for + the outcome in one breath. One primary CTA.</li>
<li><strong>Benefits</strong> — three to five outcomes, not feature laundry lists.</li>
<li><strong>How it works</strong> — three short steps. Edit → host → collect emails or take payment.</li>
<li><strong>Social proof / honesty</strong> — if you don’t have testimonials yet, don’t invent them.</li>
<li><strong>Pricing</strong> — one clear price. “$39 one-time.”</li>
<li><strong>FAQ</strong> — Is this a SaaS boilerplate? Can I use my own form? Where do I host?</li>
<li><strong>Final CTA</strong> — Buy, or waitlist. Not both equally loud.</li>
</ol>
<h2>Deploy options that don’t eat the weekend</h2>
<p>GitHub Pages / Cloudflare Pages / Netlify / Vercel static, or a cheap VPS + nginx. Wire forms to Tally/Formspree and buy buttons to Gumroad.</p>
<h2>What I built after getting tired of rebuilding</h2>
<p>I packaged the pattern into <strong>LaunchShelf</strong>: static HTML + Tailwind landing kit.</p>
<p>Live demos:</p>
<ul>
<li><a href="https://ai.i258.cn/launchshelf/">https://ai.i258.cn/launchshelf/</a></li>
<li><a href="https://ai.i258.cn/launchshelf-ai/">https://ai.i258.cn/launchshelf-ai/</a></li>
</ul>
<p>$39 one-time on Gumroad: <a href="https://zhengchh.gumroad.com/l/launchshelf">https://zhengchh.gumroad.com/l/launchshelf</a></p>
<p>Waitlist for vertical packs: <a href="https://tally.so/r/2jj45e">https://tally.so/r/2jj45e</a></p>
<p>No fake “10k makers trust us” line. Solo maker. Early views, zero sales as of writing — shipping the page and asking for signal.</p>
<h2>When you should <em>not</em> buy a kit</h2>
<ul>
<li>You already have a design system and marketing site in production.</li>
<li>You’re launching multi-tenant SaaS next week and need auth/billing day one.</li>
<li>You enjoy building the landing as much as the product.</li>
</ul>
<h2>When static is enough</h2>
<ul>
<li>Validating a micro-tool, course, or digital download this month.</li>
<li>Your “site” is still a Notion doc.</li>
<li>You need emails or one payment before another layout.tsx.</li>
</ul>
<p>Stop rebuilding the front door. Put something live, collect the signal, then earn the right to a heavier stack.</p>
<p>If you roast the demos in the comments — what’s unclear, what’s missing, which vertical you’d pay for — that’s more useful than a silent scroll. Thanks for reading.</p>
]]></content:encoded></item></channel></rss>