I agonized over the tech stack I should use to build the project. To streamline the process and avoid falling into procrastination, I time-boxed the entire exercise. When I reached ~80% of allocated time, I knew I needed to make a decision soon. Prior to that, I tried to answer different questions:
- What should backend be written in? I recently picked up Rust, and it would be great to battle test it.
- Should this be API + client or monolith? I was tempted by Next.js as I wanted to try it for some time, and it offers a bit more sensible development experience than pure React.
- Where should I host it? I thought about using AWS as it would be a nice learning opportunity.
At some point, I realized that I couldn't answer these questions without understanding why I wanted to build this project. I knew that my project's features can be implemented with any tech I choose. Now I needed to set my own priorities, and realize what's in this project for me. The main thing here was understanding that I really care about getting this project to production. In the past, when I built something, it was because I wanted to learn or try new tech. This time, I cared about putting it out into the world.
Phrasing this as my highest priority simplified a lot of things. Now, having multiple options on the table I could simply ask myself "Which one will allow me to ship faster and not hate myself in the future if I need to extend it?". I still going to learn a lot from building it, but at least 80% of stack is familiar, which with limited resources I have gives me a good starting point to get where I wanna be with this.
As for decision itself I decided to go with Ruby on Rails. Why?
- Ruby <3
- it's framework I know best
- it offers great development experience
- it's made with bootstrapped projects in mind, perfect for solo/small team development
- with web views I can use it to develop mobile apps and I might need it for my product
- monolith just makes sense for solo development, I don't wanna jump between repos
- it's a good opportunity to dive deeper into Hotwire (a modern HTML-over-the-wire solution)
Of course Rails comes with some downsides but if I experience major ones it will mean that my project is at a stage where it is successful enough, and those are good problems to have. First I need to get there and Rails is the fastest way for me.
As for other tools, I'm gonna stick to Heroku for hosting to limit time I need to allocate into infrastructure management. Might move it to AWS at some point, but for now, my aim is to keep things simple and concentrate on development.
Let me know what is your decision process in similar situations.