HB's Thoughts

I try to think really hard.


Hello World

I stopped blogging a long time ago. I am currently writing various articles in the GitHub repositories, but they are not intended to reach the end user. They're more for people who are just passing through for information and I'm not trying too hard because they're aimed at the tech savvy I'm writing about.

I'm starting this blog to share my experience with a wonderful technology stack that can do anything, well...almost anything. Vue, Nuxt, TailwindCSS and TypeScript. These will be the main topics of my reflections. Strongly focused on the front-end and complemented by the back-end. It seems to me that the community around these technologies in Bulgaria is small and I hope to help its development over time.


If we exclude jQuery - Sometime around 2012 I started using "reactive" JavaScript libraries. One of the first was Knockout. Great one. Anyone starting with the Observable model, and generally anyone starting with "reactive" JavaScript libraries, should go through it. Many more followed after that, including Angular and React. I even briefly wrote my own based on jQuery and Mustache. Finally, I came across Vue.

At the time, I wrote a lot of CSS and used ASP.NET and Razor to create the front-end. I also used quite a few CSS libraries, such as 960.gs, Bootstrap, Foundation and more. and Vue somehow naturally entered my daily life with separated writing in components somewhat resembling the file organization model I was used to.

When you add Vue Router and Pinia (Vuex before it) and the picture becomes even better. Vue + Vue Router + Pinia = MVC in front-end. I will write further how I build MVC (Model View Controller) with them.


Nuxt is based on Vue. Apart from the many facilities it gives like automatic imports, automatic routing, plugins, modules, etc. - also adds a back-end server (Nitro) and you work as a single system, without the need to create a second server application, without the need for super knowledge of Node & Express operation. This is the tool that took .NET & C# out of my sight. With Nitro you can build server middleware, API endpoints, database connection - everything you need from the back-end.


After Just-in-Time Mode - TailwindCSS completely replaced Bootstrap and more. I no longer use massive CSS libraries with included UI components. I separate them. Even the component libraries are also built with TailwindCSS. Maybe lately I'm betting more on Nuxt UI and that's mostly to support the ecosystem.


JavaScript gives enormous freedom in writing, declaring, calling, binding, concurrency, async, etc. There are a lot of patterns for all aspects of programming models. You use it for beck & front at the same time. There are pretty massive organizations and a huge community developing it.

But this freedom also has its drawbacks. There is no compiler to protect you. There is no unified debugging model. There is no correct way to generate the final/production code. TypeScript helps alleviate some of the problems of JavaScript. It is not a panacea and sometimes it is not easy to configure, especially when working with shared data models between front-end and back-end, but it provides a much more structured approach to the development, maintenance, and delivery of code.

The others

Vite, Node, Express, MongoDB, NPM, Firebase round out my current technology stack.

Vite is my personal choice for development. And not just for Vue projects. Sometimes I use Parcel but for specific solutions.

I also work with other "metro" technologies like Nest, ElectonJS & React Native, Bun etc. but most are for small or personal projects.

If you have an opinion or questions about the article, don't hesitate to share them.

Join the open discussion on GitHub.

Competence: None
Tags: Thoughts