Your side project doesn't need a landing page yet

Your side project is three weeks old.
It has a name. It has a logo you made in Figma at 1am and then remade twice. It has a landing page with a gradient headline, a "Trusted by" section with four grayscale logos of companies that have never heard of you, and a waitlist form that goes into a Google Sheet.
It does not have the product.
The product is a folder called src with one file in it that says // TODO.
"I just need to get the branding right first."
~ someone who will never ship
I am not making fun of you. I am making fun of me. I have done this so many times that I can now recognise the exact moment it starts. I mean look at Forke right now. We are building it in the background but none of you are able to use it right now.
The productive procrastination loop
Here is the thing about building a landing page. It feels like work.
It is not like scrolling Twitter, where you at least know you are avoiding something. You are in your editor. You are writing code. Tailwind classes are going in. The dark mode toggle works. By any observable metric, you are being a developer.
But you have not touched the hard part.
The hard part is the bit you are not sure you can do. The sync logic. The parser. The thing where you genuinely do not know if the approach works until you try it. That part has no dopamine in it. That part is just you, a blank file, and the growing suspicion that you might not be smart enough for your own idea.
So you go and pick a font instead.
And the beautiful thing about picking a font is that it is never done. There is always another font. There is always a slightly better shade of the accent colour. You can spend an entire Saturday on the hover state of a button that leads to a page that does not exist.
This is what I mean by productive procrastination. It is procrastination that produces artifacts, which is what makes it so hard to catch.
The tells
You can usually spot it. Some greatest hits:
You have a domain but no running code. You bought the .io because the .com was taken, and you have been telling people the name for two weeks.
You have set up analytics on a page with no users. You will know, with beautiful precision, that nobody came.
You are choosing a database. Not using one. Choosing one. There is a comparison tab open.
You have written the README for a feature you have not built. It has usage examples. The examples are aspirational fiction.
You have designed the pricing page. Three tiers. The middle one is highlighted as "Most popular." Popular among whom.
You are refactoring the folder structure of a project with four files.
If more than two of those landed, you are not building a product. You are building the museum gift shop for a museum that has not been constructed.

Why we actually do it
It would be easy to call this laziness, but it is not. Laziness would be doing nothing, and you are doing a lot. You are working quite hard, just in the wrong direction, and there is a reason for that.
The landing page is safe.
When you build a landing page, you cannot fail. There is no test that goes red. Nothing is broken because nothing is running. You get to feel the satisfaction of shipping without any of the risk of being wrong.
The core feature is not safe. The core feature can defeat you. You can spend six hours on it and end the day with less working code than you started with and a much worse opinion of yourself.
So the brain, which is a coward, routes around it. It finds the nearest task that looks like the real task but cannot hurt you. And then it lets you feel great about the day.
That is not a character flaw. That is just what avoidance looks like when you are good at CSS.
The fix is annoyingly simple
Build the scary part first.
Not the whole thing. Just the one piece you are least sure about. The bit where, if it does not work, the entire project is pointless.
No UI. No styling. Put it in a file called scratch.ts and print things to the console like an animal.
You are not trying to build a product. You are trying to answer one question: is this thing possible, and can I be the one who does it?
If the answer is yes, everything after that is just work, and work is the easy part. You know how to do work.
If the answer is no, you just found out in an afternoon instead of finding out in month three, after the logo, the domain, the pricing page, and the tweet where you announced you were building something.
Both outcomes are good. Only one of them costs you a weekend.
And then, genuinely, make it ugly
Once the scary part works, resist the upgrade.
Your first version should be embarrassing. Unstyled buttons. Default browser fonts. A form that reloads the whole page like it is 2009. Times New Roman is fine. Times New Roman has shipped more working software than your design system ever will.
Ugly is a feature at this stage, because ugly is fast, and fast means you find out whether the thing is any good while you still care about it.
The polish is not wasted work. It is just work with a prerequisite. Design the page once you know what the page is for.
Where Forke fits
This is the muscle that scoped work builds, and it is why bounties are weirdly good for you.
When you claim a bounty on Forke, there is no landing page to hide behind. Nobody wants your logo. Nobody is going to look at your folder structure. There is a defined problem, someone on the other end who needs it fixed, and a fairly binary outcome: it works or it does not.
You cannot productively procrastinate your way through that. The task is the task.
And the thing you notice, after a few of them, is that the scary part was never as scary as the avoidance made it look. It was four hours of confusion followed by a small, specific fix. It usually is. The dread scales with how long you look at it from across the room.
So go open the project. Skip the landing page. Skip the name, honestly, you will change it anyway.
Open one file, write the ugliest possible version of the part you are afraid of, and find out whether you have a product or an idea.
You can pick the font when there is something to put it on.



