I've been developing apps for over a decade and created so many projects, including side projects and commercial products. Every time I create a new project, I ask myself the same question: which tech stack should I use.
I am an "underdog" person, going with the non-popular framework every time. Never use the same stack twice. But let me tell you this, it comes with a price.
It is super fun and exciting to learn new technologies, but the thing is that you never become an expert. You always start from scratch and learning to do your first steps. Getting to know the eco-system and community of these new tools takes time. It comes with so much overhead.
Going with the underdog means that there is not much tooling or knowledge available and you will have to answer your questions, the hard way!
Don't get me wrong, there is so much potential in choosing the underdog. I've been using Nodejs ever since its early days when Ruby on Rails was the only thing developers talked about. Eventually, it turned out to be brilliant. When everyone just started to get into it, I had a year or so of practical experience. But I also made some wrong choices with Polymer, for example. I put my bet on web components and Polymer, and a few years later, we are still not there, and no one talks about Polymer anymore.
Maybe it's me getting older, but I've decided I need to settle down. Fewer adventures equal to more things done. There is nothing wrong with following the community's path. On the contrary, it takes a greater man. I think part of "leveling-up" as a developer is to choose the "not-so-cool" stack just because you can get the work done and be complete with this decision.
And here is what you expected to get from this post:
Front-end
Front-end is where I can never find my balance - always going from one stack to another. As I mentioned, I went hard on web components and Polymer and moved on to Vue, due to lack of support and community. I've been working with Vue for two years while keeping my eyes on React. Recently I decided to move on to React. For the simple reason, there is so much knowledge about React, and the tooling and eco-system available is not something Vue can compete with. There are many examples of platforms that choose to embrace React and leave the Vue community empty-handed. Although the Vue community is not small, it's still a few steps beyond. Maybe it's because Vue is much younger. And honestly, I love Vue. It's super easy to get on board and build performant apps.
So here is my front-end list:
- React - for all I mentioned above.
- Nextjs - De-facto standard for server-side rendering (SSR) React apps.
- Styled components - I had a hard time settling on this one because Tailwind seems so attractive, but again Styled components community is much more significant.
- Vercel - Again the standard for deploying Nextjs apps (for an obvious reason 😉)
Back-end
Compared to front-end, I'm very steady on my back-end stack for a while now and feeling very complete with it.
- Node - This is by far the most prominent community out there with so much knowledge
- Typescript - After years of using Javascript, it's super hard to maintain a project without types. Typescript is my way to go.
- Fastify - Ok, I admit, you got me here. Fastify is an underdog compared to Express, but it's just fantastic, and it has everything I need.
- Apollo Server - I've been using GraphQL for over a year and recently started to get hardcore. Just like I will prefer Typescript over Javascript. GraphQL is a typed way to implement your API and get so much flexibility for your front-end apps. Apollo is the most popular framework to implement a GraphQL server and client.
- PostgreSQL - You can brag about your NoSQL database all you want, but most of us simply don't need it. Going with the old school SQL is probably the best choice for most use-cases. Super easy to use, it is battle-tested, and many services offer managed servers. I feel very confident about the decision here, and it never failed me down for years now.
- Kubernetes - For the DevOps among you, this decision might be controversial, but honestly, it's the best platform out there. I'm using Kubernetes since its beta days and even contributed some code. It has an active community and, by far, the biggest one for DevOps tooling. This platform can simply do anything in terms of deployment. If you have a complex architecture for your back-end, this is the way to go, at least for me. With the rise of managed Kubernetes clusters, it is now much easier to get on board.
Here you go, this is my tech stack in a nutshell, pretty happy about it now. Hopefully, I will serve me well.
I would be happy to take any question here or on Twitter.
Daily delivers the best programming news every new tab. We will rank hundreds of qualified sources for you so that you can hack the future.