DEV Community

Tomek Skupiński
Tomek Skupiński

Posted on • Originally published at wetwaresnippets.com

Choosing tech stack for side project

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.

Top comments (7)

Collapse
 
mickmister profile image
Michael Kochell

it's a good opportunity to dive deeper into Hotwire (a modern HTML-over-the-wire solution)

I feel that's a big undertaking. Learning a framework like that I think would require a lot of new abstractions, best practices, and pitfalls to know about. If you're committing to using rails and want to double down on that, then I think hotwire may be useful here.

If the goal is to deliver, I would focus on a workflow you're already familiar with. Keep it "stupid simple". I recommend pursuing a workflow where you're able to easily write tests as you work.

Collapse
 
tomekskupinski profile image
Tomek Skupiński

Good point. The thing with Hotwire is that we already use it to build some views at my work. I haven't got space to work with, but I have some good examples on how to integrate it correctly.

I'm still going to just build simple HTML server rendered views in the beginning and then try to add some upgrades using Stimulus and Hotwire to make user experience better, but this assumes I'll already have something working.

Collapse
 
intermundos profile image
intermundos

Vue 3 front if SPA needed. If SSR/SEO Astro.js.

Backend Directus for almost every need. If performance is the key, Rust.

Collapse
 
petezahad profile image
Mathias Stocker

Hotwire was mentioned. It is a great tool for creating SPAs without the need of writing any JS.

hotwired.dev/
turbo.hotwired.dev/

If you use Hotwire and still want to write JS, have a look at Stimulus:

stimulus.hotwired.dev/

Collapse
 
fr0z3nrebel profile image
John Adams

Excellent post. I thoroughly enjoyed reading about your journey in the decision making process. Best of luck on your new work!

Collapse
 
rolfmadsen profile image
Rolf Madsen • Edited

I chose Rust + Nextjs with GitHub and each commit deploys the application on Koyeb (migrated from Vercel for European ownership and hosting).

Collapse
 
tomekskupinski profile image
Tomek Skupiński

If I wanted to focus on learning in this project, that would be my stack of choice. Had opportunity to touch Rust a bit at my work and really like it. Definitely would like to add it to my toolbox.