April 1, 2024
I've been building zenblog for months now and it's pretty much 99% there.
I could've done it in way less time but I don't spend much time on it every day to be honest. Just 4/8 hours every week. Mostly on the weekends. Anyway here's a list of things I wish I had done differently.
I started by creating a really simple platform where you could log in, create your blog, fetch content from your website, and that was it. I started using it and hated that I had to create several accounts. I ended up refactoring most of it. Keeping it really simple there
I started using supabase and clerk and managing the integration was a waste of time to be honest. I "saved" some time because clerk had those cool react components but I ended up just writing some forms and migrating away from clerk. Also clerks pricing is too expensive compared to supabase auth.
Disclaimer: I work at supabase now, but all of this happened months before I joined.
If I were to start again I'd just use supabase auth.
I'm a frontend dev so I'm not great with database stuff. I've had some problems with migrations that have taken days to fix. I should've used Prisma or Drizzle but I wanted to keep the stack as simple as possible.
So, with migrations I wish I had added more stuff to the stack, unlike with my previous point where I wish I hadn't used clerk.
Supastarter and Makerkit come to mind and there are others (but these two seem to be the most mature ones) I'd have saved 60/100hours.
Zenblog has 200+ people in the email list for early access and 80 github stars at the moment. I probably could've gotten 3 or 4 times that many people interested by just sharing more wip stuff on twitter. That's why I'm writing this post :)
I worked on features like teams, collaboration, analytics before launching and having a single user. Eventually scrapped those but the time was (kinda) wasted.
I think the hardest part of software development is not the software development part, but doing the whole process and shipping something.
Simplification of what I mean:
Deciding what you're actually gonna build
Deciding how you're gonna build it
Building it
Sharing it
Getting feedback
Deciding what you do next
I'm pretty good at phase 1. But many times, instead of doing phase 2, I overengineered phase 1 until I burn out.
Have a good one.