Founder stories
Milestone achieved March 2021. Current revenue not tracked.
An interactive online course that teaches CSS to developers who already know a JavaScript framework, built on a custom platform with articles, videos, exercises and mini games.
How Josh acquired customers
Tools used to build CSS for JavaScript Developers
A repetitive strain injury pushed Josh Comeau out of a $165,000 engineering job. Seven months later he opened pre-orders for an unfinished CSS course, aimed at $50,000, and closed the week at $577,000.
Josh Comeau did not set out to run a business. In March 2020 he developed cubital tunnel syndrome in both elbows, a repetitive strain injury bad enough that a few minutes at the keyboard sent burning pain down his arms. He later wrote that after failed attempts at physiotherapy, braces, medication and surgical consultations, the only setup that let him work at all was a microphone and an eye tracker running Talon Voice. At the time he was a staff software engineer at Gatsby Inc on $165,000 a year. Months away from the keyboard gave him time to think, and what he decided he wanted was to teach.
He left the job and started building CSS for JavaScript Developers in August 2020. Every date in this story is one Josh states himself in his Indie Hackers post of 17 March 2021, and the day counts are measured from the start of August 2020, the month he says he began.
The topic came from a pattern he had watched for years. Developers who were fluent in React or Vue would still describe CSS as the part of the job they hated. His diagnosis, published on his blog on 3 March 2021, one week before the launch, was that CSS is an implicit language. When TypeScript goes wrong, a tooltip explains why. When z-index goes wrong, nothing does, because the behavior lives in a mechanism called a stacking context that most tutorials never mention. He argued that CSS gets taught as a bag of tricks rather than as a system, and that a developer who actually understands the system stops guessing.
The plan was three or four months of work. Instead he built his own course platform first, on Next.js, React, MDX and MongoDB, hosted on Vercel. He estimates that decision doubled the development time. He wanted interactive articles, in-browser exercises, workshops and mini games, none of which fit into Podia or Teachable, and he wanted to apply the CSS ideas he was teaching to the platform teaching them. By January 2021 he was roughly halfway through, working 40 to 50 hours a week on the course plus another 10 to 15 on his blog, and watching his savings drop.
That is the honest reason for the pre-sale. Asked on Indie Hackers whether the early access model was a clever move, he answered that it was less about being clever and more that he was burning through his life savings too quickly. He opened orders on Wednesday 10 March 2021 and closed them the following Tuesday, 16 March. One week, no extension. The window was not a scarcity tactic. He wanted a fixed cohort so he could spend the rest of the year finishing the course instead of onboarding new students every day.
Early access cost $129 plus tax, against a planned full price of $349. Buyers got the first modules immediately and everything else as it shipped. His target was 380 copies, about $50,000, a number he picked because it would tell him he had not been stupid to quit a $165,000 job. By the time orders closed, his Paddle dashboard showed $577,000 in revenue across 4,773 orders, with $3,108 refunded and an average transaction of $120. That is roughly ten times the goal.
The distribution was almost entirely owned. He launched to about 31,000 Twitter followers and around 28,000 email subscribers spread across three lists: his main newsletter, a course waitlist, and everyone who had downloaded a free 70 page book on developer portfolios he had written the previous year. Twelve months earlier those numbers had been roughly 10,000 followers and 1,000 subscribers. The growth came from publishing more on his blog, where his best posts passed 100,000 visits, from the free book, which added around 8,000 subscribers on its own, and from a small animated character that pops out mid-scroll to offer the newsletter, which lifted signups by 50 percent compared with a plain form at the end of a post.
The channels people usually reach for did nothing. He posted on Hacker News and got three upvotes. He posted on Product Hunt and it went nowhere. His own summary was blunter than any tactic: he had spent a few years helping the community without asking for anything in return.
The week itself was rough. His custom platform had bugs, and the first 48 hours went on fixing them and failing to keep up with support email, while some people who had paid could not get into the course for a day or more. He also flagged the obvious risk in what he did: he spent seven months building before he had any real proof anyone would pay, which he called the number one mistake indie hackers make.
The pre-sale funded the business for years, which changed what the September 2021 full launch had to do. As of his blog's December 2025 update, more than 18,000 developers have gone through the course, it is still sold in three tiers with regional pricing, and Josh has since shipped The Joy of React and, in 2026, a course on whimsical animations.
Pre-selling an unfinished product is a real validation step, but it only works if the audience already exists. Josh's list and following were built over years of free writing, not during the launch.
Set a target low enough that missing it teaches you something. His $50,000 goal was designed to answer one question: was quitting a $165,000 job a mistake?
A closed one week window can be about focus rather than scarcity. He wanted one cohort so the rest of the year could go into finishing the course.
Owned distribution beat every launch channel. Hacker News gave him three upvotes and Product Hunt gave him nothing, while Twitter and three email lists carried the whole week.
Building his own course platform doubled the development time and was still the differentiator. The interactive exercises and mini games were the reason the course did not look like a Teachable upload.
Expect the launch to break. His platform had bugs, the first 48 hours went on firefighting, and some paying customers could not get in for over a day.
See what it covers before you sign up: the pattern worth copying, the channel to test, and the risk to avoid when you adapt this story.
$100K ARR
Twitter / X
Action checklist
See what it covers first. Create an account only if you choose to unlock.
Inspired by Josh's journey? Generate a business idea in the Education space using AI and real founder data.
Josh achieved 2 milestones on the path to $100K ARR
$577,000
The journey, decisions, and context behind this milestone
See the complete breakdown: launch strategy, validation methods, startup costs, expert analysis, replication playbook, and more actionable insights.
Upgrade to PremiumInstant access to all founder journeys
Founders with similar journeys or strategies
In 2013, I sold all my possessions, packed a backpack and a laptop, and flew to Thailand to begin my digital nomad life. I was once a lost musician ea...
On March 1st 2023, OpenAI announced the ChatGPT API. Right on that day, I came up with the idea to create a new UI to solve my own pain points with th...
My journey took me from being a Paris waiter to an $80,000/month solopreneur over seven years of persistence. After 17 failed projects, I found succes...
Get more founder journeys like this delivered to your inbox every week.