Designing a SaaS in 2023 - Tooling
In the last article, we discussed tech stacks. Here is my preferred tech stack for the project. As a quick reminder, I'm building an IoT service with a web dashboard.
Frontend: Nuxt 3, Bulma CSS, no component library
Middle Tier: Nuxt 3 (Nitro/h3)
Database: Redis Cloud
Microservice infrastructure, services written in .NET 6.0 running in Kubernetes
Logging: Custom (Winston in nuxt3, ILogger in .NET)
With these example technologies, let's look at the tooling I'm going to need to install to get up and running.
My (and I would imagine most people's) choice for coding front-end is Visual Studio Code. Since Nuxt is both the front-end middle tier, VS Code will cover both!
For the database, I chose Redis Cloud. I don't want to host my own Redis server and the Cloud option is free to start and cheap regardless. I will use RedisInsight to work with Redis since it's honestly the best tool out there.
I'll build out a set of microservices to support the application. Hosting microservices is best done in Kubernetes (even though there are some cool Level 2 options out there), so I'll install the necessary tooling:
If you know anything about Kubernetes, you may be wondering where HELM tools are at. In this case, my project is not big enough to necessitate using HELM. One of the big lessons I took away from the past 3 years of working with Kubernetes is that it's extremely easy to over-engineer infrastructure -- especially Kubernetes. In my experience, building up to 20-25 microservices does not warrant anything more than basic levels of orchestration via YAML.
For writing .NET I'll use Visual Studio. Yes, theoretically I could just use VS Code, but the proper VS experience is better than VS Code. The community edition is free.
Working with REST and GraphQL services is best done with a tool like Postman, but my personal preference is Insomnia.REST ... their free version is good enough for what I need. If you can recommend something else, I'm open to suggestions in the comments!
Some other not completely related tools I like to use are Windows Terminal, Notepad++, and Whimsical. I have several CLIs open in the Terminal, keep quick notes or open random files in Notepad++, and create designs and share with my team in Whimsical.
Side note: On personal projects I like to use Notion and Penpot. Though I don't use them daily at work, they're very cool and I recommend checking them out if you're a one-stop-shop full-stack engineer.
These are all the tools I can recommend at this time. I'm always looking for cool new tools, so if you have any suggestions, please leave them in the comments!
Did you find this article valuable?
Support Paul K by becoming a sponsor. Any amount is appreciated!