My first SaaS: 62,000 sign-ups, 346 paid
Everything that brought people in was free. What I charged for didn't last. The numbers, and the five things I would do on day one.
- 62,000sign-ups
- 346paying users
- 1 in 140ever paid
- 2 yrsthe paid plan ran
In March 2021 a designer partner and I started Codewell: a site where new frontend developers practise on real design templates instead of to-do apps. You pick a design, build it in HTML and CSS, post your solution, and compare it with everyone else's. Sixteen templates were free, nine were behind a paid plan.
I wrote all the code. My partner did the designs, the templates and the community. We launched on 9 May 2021 and closed the paid plan in July 2023. Here is what the records say, now that I have gone back and read them.


The numbers
- 23,500 people signed up with GitHub in the first year. 62,000 by March 2024, when I took the last backup.
- 346 of them paid: 308 on the monthly plan at $8, 38 on the yearly at $72. At the peak, in spring 2022, about 70 subscriptions were active at the same time.
- 25 challenges: 16 free, 9 premium.
- 1,466 solutions posted by 888 different people, and 245 comments on them.
- An 8,400-reader newsletter, which I ran on Substack and later EmailOctopus.
- Search sent 56,000 clicks in the last 16 months the site was up, most of them from India and Brazil. The paying users were mostly in the US.



The decline started in January 2023, six months before I closed the plan: 51 active subscribers that month, 45 by June, and the sign-ups kept coming the whole time. So the top of the funnel was big and the paid conversion was thin: about one in 140 of the people who signed up while the paid plan existed ever paid. That ratio, more than anything else, is the story.
The stack
Everything was TypeScript from the first commit. The stack moved once, three months after launch.
| At launch, May 2021 | From August 2021 | |
|---|---|---|
| Frontend | React (Create React App) on Netlify | Next.js with server rendering, on AWS Lambda@Edge, CloudFront and S3 through the Serverless Framework |
| API | Strapi (Node.js) on AWS Elastic Beanstalk | same |
| Data | MongoDB, GraphQL through Apollo Client, uploads to S3 | same |
| Login | GitHub | same |
| Billing | FastSpring | same |
| Errors, UI | Sentry, Ant Design | same |
Billing ran through FastSpring, because Stripe was not available in my country then. A webhook handled activation and deactivation, and cancellation went through the FastSpring API. There was no handling for failed payments. I only noticed that this week, reading the code again.
In spring 2023 I started a rewrite as a Turborepo with Next.js 13, tRPC, Prisma on Postgres and NextAuth. It got as far as login, the challenge list and the editor, and then stopped after four weeks. The paid plan closed three months later.
What I would do differently
Charge for the thing people came for. People came for the templates, and 888 of them posted solutions. The paid plan gated the Figma files and the premium templates, which is reasonable, but most never needed more than the 16 free ones. A smaller free tier and a yearly-only paid plan would have converted better than $8 a month against free.

Write the webhook for the unhappy path first. Activation and cancellation are the easy events. Failed renewals are where the money leaks, and I never handled them.
Do not start a rewrite when the business is slowing. The 2023 rewrite was an engineer's answer to a product problem. Four weeks of tRPC and Prisma did nothing for conversion.
Keep the data. The only reason I can write this post is a mongodump from March 2024. Most of the numbers above came out of it in an afternoon; the search figures came from a Search Console export.
Tell people yourself. Everything that brought people to Codewell was free and repeatable: organic search, 55.9K clicks in its last sixteen months alone, building in public on X, and a community that posted 1,466 solutions and kept each other coming back. None of it needs a budget. All of it needs a weekly slot on the calendar, from day one, next to the one for building.
What it gave me
Codewell was the first SaaS product I built, and it taught me the whole flow, not one step of it. Two years of running a paid product end to end: the frontend, the API, the deployment, the billing, the newsletter, the analytics, the support emails, and the decisions in between: what to charge for, when to say no to a rewrite, what to keep when it is over.
That is what I build on now. Every product since has started from it, and so has the habit of writing this down in public.