<?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: Chunhua Zheng</title>
    <description>The latest articles on DEV Community by Chunhua Zheng (@zhengchh).</description>
    <link>https://dev.to/zhengchh</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%2F4209652%2F60d6ea89-67b9-4fc1-ae5f-cef20e6cee12.png</url>
      <title>DEV Community: Chunhua Zheng</title>
      <link>https://dev.to/zhengchh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zhengchh"/>
    <language>en</language>
    <item>
      <title>LaunchShelf is on AI Tools Capital this week</title>
      <dc:creator>Chunhua Zheng</dc:creator>
      <pubDate>Tue, 27 Oct 2026 10:23:57 +0000</pubDate>
      <link>https://dev.to/zhengchh/launchshelf-is-on-ai-tools-capital-this-week-4209</link>
      <guid>https://dev.to/zhengchh/launchshelf-is-on-ai-tools-capital-this-week-4209</guid>
      <description>&lt;p&gt;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 &lt;strong&gt;The Capital&lt;/strong&gt; this week; a vote helps visibility: &lt;a href="https://aitoolscapital.com/the-capital" rel="noopener noreferrer"&gt;https://aitoolscapital.com/the-capital&lt;/a&gt; · live demo &lt;a href="https://ai.i258.cn/launchshelf/" rel="noopener noreferrer"&gt;https://ai.i258.cn/launchshelf/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I stopped rebuilding landing pages in Next.js for every micro-launch</title>
      <dc:creator>Chunhua Zheng</dc:creator>
      <pubDate>Mon, 26 Oct 2026 23:48:29 +0000</pubDate>
      <link>https://dev.to/zhengchh/i-stopped-rebuilding-landing-pages-in-nextjs-for-every-micro-launch-13b4</link>
      <guid>https://dev.to/zhengchh/i-stopped-rebuilding-landing-pages-in-nextjs-for-every-micro-launch-13b4</guid>
      <description>&lt;p&gt;I used to open a fresh Next.js app every time I had a small idea to validate.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;If that sounds familiar, this is the note I wish I’d written to myself a year ago.&lt;/p&gt;

&lt;h2&gt;
  
  
  The actual job of a launch page
&lt;/h2&gt;

&lt;p&gt;For a micro-launch — a waitlist, a $19–$49 digital kit, a course teaser — the page has one job:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get someone from “curious” to “email or payment” without making you rebuild a frontend repo.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That’s it. It does not need auth. It does not need a CMS. It does not need a design system with 40 tokens.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Static HTML + Tailwind is boring on purpose. One folder. Edit copy. Host anywhere. Ship the same afternoon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why static HTML + Tailwind wins for waitlist / Gumroad launches
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Time-to-first-visitor drops from days to hours&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You clone or unzip, replace headlines and prices, drop in a Gumroad embed or a Tally/Formspree action, push to any static host. No &lt;code&gt;npm run&lt;/code&gt; rabbit hole unless you want it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The cost model matches the product&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. You can change the offer without touching an app&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Swap “Join waitlist” for “Buy · $39.” Add an AI-tool vertical without forking a monorepo. Indie launches iterate on &lt;em&gt;positioning&lt;/em&gt; more than on &lt;em&gt;architecture&lt;/em&gt; in week one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Buyers of digital kits understand “download and edit”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;I’m not saying never use Next. I’m saying: don’t start the Next project until the static page has proven anyone cares.&lt;/p&gt;

&lt;h2&gt;
  
  
  The structure of a page that converts (enough)
&lt;/h2&gt;

&lt;p&gt;You don’t need twelve sections. You need a clear path:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hero&lt;/strong&gt; — who it’s for + the outcome in one breath. One primary CTA. Secondary can be “see demo” or “join waitlist,” not five competing buttons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benefits&lt;/strong&gt; — three to five outcomes, not feature laundry lists. “Ship a pricing page today” beats “uses Tailwind v3.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How it works&lt;/strong&gt; — three short steps. Edit → host → collect emails or take payment. Reduce imagined complexity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social proof / honesty&lt;/strong&gt; — if you don’t have testimonials yet, don’t invent them. Say you’re a solo maker, link a live demo, invite a roast. Trust compounds from honesty faster than from fake logos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing&lt;/strong&gt; — one clear price. “$39 one-time” is easier to decide on than “starter / pro / agency” when you’re selling a kit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FAQ&lt;/strong&gt; — answer the objections you already hear: “Is this a SaaS boilerplate?” “Can I use my own form?” “Where do I host?”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Final CTA&lt;/strong&gt; — repeat the one action. Buy, or waitlist. Not both equally loud.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Typography and contrast matter more than fancy motion. Big gray slogan text that fails WCAG contrast loses people who never scroll. Flat, dark, readable beats purple glow balls for a tool aimed at builders.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploy options that don’t eat the weekend
&lt;/h2&gt;

&lt;p&gt;Anything that serves static files works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Pages / Cloudflare Pages / Netlify / Vercel static&lt;/strong&gt; — push a folder, get HTTPS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A cheap VPS + nginx&lt;/strong&gt; — fine if you already have one; overkill if you don’t.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Even a simple object store + CDN&lt;/strong&gt; — if that’s your comfort zone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Wire the form to Tally, Formspree, or your email tool. Wire the buy button to Gumroad or Lemon Squeezy. You’re done. The “backend” for a micro-launch is someone else’s form and checkout.&lt;/p&gt;

&lt;p&gt;Save Next.js / full-stack boilerplates for the day after you have emails or sales and a reason to authenticate users.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built after getting tired of rebuilding
&lt;/h2&gt;

&lt;p&gt;I packaged the pattern I kept rebuilding into &lt;strong&gt;LaunchShelf&lt;/strong&gt;: a static HTML + Tailwind landing kit with hero, benefits, how-it-works, pricing, FAQ, waitlist slot, and a Gumroad/Lemon buy-button slot — plus short deploy notes.&lt;/p&gt;

&lt;p&gt;Live demos (HTTPS, no signup wall):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;General kit: &lt;a href="https://ai.i258.cn/launchshelf/" rel="noopener noreferrer"&gt;https://ai.i258.cn/launchshelf/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AI-tool vertical copy: &lt;a href="https://ai.i258.cn/launchshelf-ai/" rel="noopener noreferrer"&gt;https://ai.i258.cn/launchshelf-ai/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the demos are useful and you’d rather not assemble the same page again: &lt;strong&gt;$39 one-time&lt;/strong&gt; on Gumroad — &lt;a href="https://zhengchh.gumroad.com/l/launchshelf" rel="noopener noreferrer"&gt;https://zhengchh.gumroad.com/l/launchshelf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No affiliate tricks. No “limited seats.” Just a template I wish I’d bought instead of rebuilding.&lt;/p&gt;

&lt;p&gt;If you’re not buying yet but want vertical packs later (AI / course-waitlist / changelog-style), the waitlist is here: &lt;a href="https://tally.so/r/2jj45e" rel="noopener noreferrer"&gt;https://tally.so/r/2jj45e&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No fake “10k makers trust us” line. I’m a solo maker. Early views, zero sales as of writing — which is exactly why I’m shipping the page and asking for signal instead of polishing another Next shell.&lt;/p&gt;

&lt;h2&gt;
  
  
  When you should &lt;em&gt;not&lt;/em&gt; buy a kit
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You already have a design system and a marketing site in production.&lt;/li&gt;
&lt;li&gt;You’re launching a real multi-tenant SaaS next week and need auth, billing, and admin on day one — buy a serious boilerplate.&lt;/li&gt;
&lt;li&gt;You enjoy building the landing as much as the product. That’s a valid hobby; skip the kit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When static is enough
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You’re validating a micro-tool, course, or digital download this month.&lt;/li&gt;
&lt;li&gt;Your “site” is still a Notion doc or a Google Doc link in Discord.&lt;/li&gt;
&lt;li&gt;You need emails or one payment before you write another &lt;code&gt;layout.tsx&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stop rebuilding the front door. Put something live, collect the signal, then earn the right to a heavier stack.&lt;/p&gt;

&lt;p&gt;If you roast the demos in the comments — what’s unclear, what’s missing, which vertical you’d actually pay for — that’s more useful to me than a silent scroll. Thanks for reading.&lt;/p&gt;

</description>
      <category>landingpage</category>
      <category>webdev</category>
      <category>html</category>
      <category>indiehackers</category>
    </item>
  </channel>
</rss>
