Logo
0%

Technologies Behind My Work

I leverage a variety of tools and technologies to build scalable, efficient, and user-friendly web applications. Below is not an extensive but glimpse of my tech stack

Published on

Over time, I’ve built a diverse stack that allows me to tackle projects from start to finish. Whether it’s crafting user interfaces, architecting backend systems, or experimenting with unconventional tools, my approach is always rooted in simplicity and efficiency. Below, you’ll find a breakdown of the technologies and methodologies I use across different areas of development.

Frontend

I start by creating wireframes and skeleton mockups, and for that, my tool of choice is literally Paper&Pen and Excalidraw when collaborating. Then, I move on to designing the actual design files in Figma—this part is pretty much the same across all the products I work on.

After that, depending on the product’s needs, I choose the development tools. For web applications, I mostly use ReactJS with Vite as the build tool. Then, based on the specifics of the product—like the type of rendering strategy required—I adjust my approach. These days:

When it comes to data fetching, I rely on tools like SWR or TanStack Query (formerly React Query). For state management, I usually stick with the Context API, but sometimes I use Zustand if the project demands something more lightweight.

This list could literally go on and on because, as we all know, it’s impossible to mention every single library or tool out there. Different products have different needs, so the tools I use can vary depending on the requirements.

Backend

I start by sketching out the system architecture on Paper&Pen or on tools like Excalidraw or Figma. Then, I build either monoliths or microservices (depending on the product’s needs), with JavaScript as my backend language and Node.js as the runtime.

I prefer writing programs in TypeScript. When it comes to HTTP servers, my framework of choice is Fastify, and I typically use RESTful APIs in my applications (though I’ll admit I don’t have a Ph.D. in GraphQL—yet xD).

When it comes to databases, I’ve used both MongoDB and SQLite in production, and they both perform well—at least at my scale. Whether I’m using MongoDB or SQLite, I usually find myself leaning on an ORM like Mongoose, Drizzle, or similar tools. The list of tools and libraries could go on forever, but these are some constants across my services. Beyond these, the use of other tools highly depends on the needs of the product - like SMTP servers, proxies, mailer services, etc.

By the way, if you’re building a mail service, I’d personally recommend using a third-party service like Mailgun or Amazon SES to send emails. You might argue that something like Nodemailer works fine, but as Kent C. Dodds puts it: “It’s okay to use it if you want to send emails, but not okay if you ever want them to be read.”

For desktop applications, I’ve worked with ElectronJS. I’ve looked into other tools like Tauri or NeutralinoJS, but to use Tauri effectively, backends need to be programmed in Rust—and for now, I’m bowing out of that.

Others

Using DietPi as a wrapper, I built a custom operating system (Debian Bookworm ARMv8) for one of my products, which was deployed on clusters of Raspberry Pi 4 Model B. Personally, when it comes to SBCs (Single Board Computers), I highly prefer DietPi—it’s lightweight, efficient, and makes the process much smoother.