The Tech Stack I use for my SaaS and what you can learn from it

2021-01-27 / Niclas Timm

Choosing a tech stack is never an easy choice. I use Laravel and Next.js for the feedback app because they are the ones I am comfortable with.

Programmers like to debate about the best programming languages and frameworks out there and why one should use X instead of Y. Especially for newbies this can lead to analysis paralysis as they become so scared to choose the wrong language that they fail to decide at all. The truth is, however, that your languages and frameworks don't really matter. You can accomplish almost every goal with every language which is why you should just stick to the ones you feel most comfortable with. Anything else would cost you valuable time that you probably don't have anyways. I'm doing the same thing with the feedback app for indie hackers and solopreneurs I'm currently building.

Backend: PHP & Laravel

Is PHP the fastest programming language? No. Does it have the prettiest syntax? No, but it's not that bad either. Is it as bad as so many people say? Absolutely not! And I feel really comfortable with it. Especially in combination with Laravel it 10x my productivity because it comes with so many things right out of the box. And that's probably the most important thing when building a SaaS as an indie hacker from scratch: outsource as much as possible - also in terms of frameworks. I like NodeJS and Express a lot, but the setup would have taken me much longer than with Laravel. Thanks for creating, Taylor!

Frontend: React, TypeScript, Next.js, Tailwind

I chose React for the frontend. I do know some Vue and really enjoyed working with it, but I haven't been feeling as comfortable with it as with React. It would probably be more fun to develop the frontend in Vue and to learn new stuff along the way. But again, I have to keep my priorities straight and don't have time to waste.

As a framework on top of React I use Next.js, at least for the dashboard where the user can organize the received feedback. The widget a user can integrate on his or her website will be in vanilla TypeScript. Next.js is really easy to set up and brings some huge benefits compared to "plain" React, for example Server Side Rendering and Server Side Generation. It also comes with a few plugins that make my life easier, like the image component that was introduced in Next.js 10.

As already mentioned I use TypeScript instead of vanilla Javascript in order to reduce the risk of writing buggy code. I also like that it is more object oriented in the traditional way than normal Javascript which gives me the possibility to write more modular functionality.

The styling will be done in TailwindCSS. I picked it up just recently and after a short period of scepticism and I have been starting to enjoy it a lot. For me the coolest thing about it is how small the resulting CSS file is after purging. The CSS file for this blog, for example, was also created with Tailwind and is only 4.2kB small!

Using the Laravel + Next.js Starter Kit to save time

A few weeks ago I had some free time and decided to create an open source Laravel + Next.js Starter Kit that hooks a Laravel backend up nicely to a Next.js frontend and does some heavily lifting, especially in terms of user authentication. I used that to setup the repo for the feedback app and thereby securely connected the backend to the frontend and got a full blown authentication system in just a few minutes. I was pretty proud of myself at this point 🙂.

What you can take away

I talked a lot about myself and the technology I use at this point. What can you learn from that? It's pretty simple: use what you already know, not what is the hot new technology on the block. If you are serious about creating a SaaS and not want to write code just for the sake of writing code you don't have time to learn a new technology from scratch. There will be enough stepping stones along the way that you can use as an opportunity to learn new things. I, for example, am really hyped and scared at the same time when I think about integrating a screenshot tool into the feedback widget. I have absolutely no idea how I'll do that! But I soon will find out how to do it 😎.

Shape the product & get updates

Tired of only reading about the progress? Subscribe to the mailing list & get early access to the feedback app, become a beta tester and experience how the app eveloves due to your valuable input. Plus, you'll be the first to receive updates!