Back to writing

Why I built this site

Putting work, consulting, content, and billing on one domain with no hops in between. Sounds simple — turns out no existing tool does it.

Three years into indie work and I started noticing that “scattered across tools” was itself a problem.

Notion for notes. Shopify for the store. Gumroad for product pages. Calendly for booking. Substack for the newsletter. Each one works great in isolation, but combined they become: a visitor lands on Notion from a social post, clicks to Gumroad, then to Calendly, then to Stripe, then to PayPal. Every hop drops a fraction of people.

A visitor who’s already interested needs six clicks to pay me. Every reload asks them to rebuild context, rebuild trust that this is the same person. Any hesitation along the way is a lost sale.

What I actually wanted

One domain. Visit it, see the work, read the proof, pick one, pay, done. No third-party logos along the way.

Sounds straightforward. In practice:

  • Payments: Stripe for international cards, Creem for WeChat / Alipay. Both wired up.
  • Digital delivery: R2 stores the file; post-purchase a signed URL is emailed, valid for 10 minutes.
  • Booking: Cal.com embedded inline. 1v1 sessions sit on the same page as the product list.
  • Testimonials: written in MDX alongside the products, not in a separate “social proof” block.

Why not a CMS

I looked at Framer, Webflow, Carrd, Typedream. All of them would get a site online faster — at the cost of: content locked in the platform, monthly fees to change styles, SEO controlled by someone else.

I didn’t want to find myself a month in, with some platform policy change, watching my entire checkout flow break.

So I wrote an Astro site. All content is MDX files. All config is TypeScript. Deploys to Cloudflare Pages. Ownership is mine.

Who this is for

Primarily me — I needed a place that wouldn’t change out from under me, that I owned, that collected the things I make.

But if you’re also building something independent, the source is on GitHub. Fork it. Drop in your Stripe keys, edit the MDX, deploy. Done.

The tech is secondary. The point is: keep the distance between a visitor recognizing you and paying you as short as possible.

— Lao Wei

键盘快捷键

先按 g 再按下面的键。? 打开这个面板。