Current Tech Stack

TechStack

I like to experiment with technologies, but the last year I found that if you want to build ideas more quickly it's better to stick to one stack and build a solid foundation in it. Even within your stack, there is enough room to try different things out.

Quick Overview of My Current Tech Stack

  • NextJS - Frontend
  • Backend - Python / FastAPI
  • Backend Services (eg. Storage, Authentication) - Firebase

NextJS

Lately, for any front-end work, I have been using NextJS. I've used to use plain old HTML, CSS & Javascript for quite a while. Then I moved to VueJS followed by React for work. NextJS give me everything I had in React and takes away a lot of the downsides of using default React.

NextJS is more of a framework where React is a library. A framework forces you more in a structure. A library you can implement the way you want. This might feel like a downside for NextJS but in my experience, it takes away a lot of the "Am I doing this right?" feeling. It also becomes easier to get into other people's codebases because the structure is generally the same.

NextJS takes away a lot of overhead. It has routing built-in, no need to specify a router in your project. You can also specify different ways of fetching data. It has Server Side Rendering and static rendering built-in.

Python w/ FastAPI

For my back-end, I like to use Python. I like Flask, but lately, I have been using FastAPI. It's based on Flask but it has a lot of extra features. It forces me in a habit of documenting my code which is something I do less often on my personal projects.

But it's better to have some proper documentation if I can back after a long time. It's a good mix between the rigidity of Django and the freedom of Flask.

Firebase

I've never been a fan of using off-the-shelf products. I'd always like to set up my own things. Be in control of everything and maintain everything myself. The predictability of costs was also a huge factor.

But recently I’ve seen the added value of using third-party services to shave off development time and get products out there quicker. If any of them grow big enough that bills could be a problem I can always change it up later. But if the goal is to validate an idea, it’s better to get them out faster. And in the long run, I also save a lot of time not having to maintain anything.

Firebase is an ideal platform because it provides a lot of features that otherwise would be spread over multiple services. Database? Firestore. File hosting? Cloud Storage. Website Hosting? Firebase Hosting! And the developer experience of implementing authentication becomes a breeze with Firebase Auth. I’m still not a big fan of the vendor lock-in. But in terms of building software, it’s a winner.

Bringing It All Together with DivJoy

One of the purchases I made this year was a DivJoy license. DivJoy is great to get a project set up in a matter of minutes. The code is of good quality. And they are actively working on new features. I’m personally looking out for the Tailwind integration.

A few years ago I would've thought that spending 200 euros on a template that I could build myself was insane and a total waste of money. This year I started to value my time. Even if I would’ve valued my time at 10 euro an hour, DivJoy already saved me multiples of that.