# HB's Thoughts > Articles mostly about Vue, Nuxt, TailwindCSS, and TypeScript, but not limited to — more on the front-end and less on the back-end. ## Documentation Sets - [HB's Thoughts](https://thoughts.bizarre.how/llms-full.txt): Articles mostly about Vue, Nuxt, TailwindCSS, and TypeScript, but not limited to — more on the front-end and less on the back-end. ## BgStatic - [Какво е компетентност?](https://thoughts.bizarre.how/bg/static/help): Компетентността показва, колко трябва да сте на ти с технологиите в статията. ## EnStatic - [What is competence?](https://thoughts.bizarre.how/en/static/help): Competence shows how familiar you should be with the technologies mentioned in the article. ## BgArticles - [Здравей Свят](https://thoughts.bizarre.how/bg/articles/hello-world): Преди много време спрях да поддържам блог. В момента пиша разни статии към репозиторитата в GitHub, но те не целят да достигнат крайния потребител. Повече са за хора, които преминават на бързо за информация и не се старая много, защото са насочени към разбиращите технологиите, за които пиша. - [Google Fonts в Nuxt с TailwindCSS](https://thoughts.bizarre.how/bg/articles/google-fonts): Услугата на Google за шрифтовете е страшно удобна за използване. Има голям избор от шрифтове и лесен начин да ги филтрираш спрямо нуждите ти. В екосистемата на Nuxt има много добър модул за интегриране на Google шрифтове в приложението Ви, но аз ще Ви покажа малко по-различен подход. - [Наследството на Бари](https://thoughts.bizarre.how/bg/articles/the-legacy-of-barry): Моето семейството имаше куче. Казваше се Бари Наит. Викахме му още Баритош, Баритошев, Баритошко, Торонгаш, Пальок, Черньо, мр. Президент и др. Черен среден пудел. Около 12 килограма. Живя точно 3 години. Почина на рождения си ден. Нашето прекрасно пале вече го няма, но то ни остави наследство, което ще споделя с всички Вас, попаднали на тази страница. - [Една входна точка за множество сайтове](https://thoughts.bizarre.how/bg/articles/one-entry-point-multiple-sites): Имаме приложение, което представлява микросайт и когато го заредите, виждате страница за вход. Нашите клиенти го предоставят на своите потребители и след като потребител влезе, се зареждат данни, свързани, както с клиента, към който принадлежат, така и с правата, зададени му от нашия клиент. - [Parcel & Robots](https://thoughts.bizarre.how/bg/articles/parceljs-and-robotstxt): Има различни начини, да окажете на ParcelJS, кои файлове са статични и не трябва да преминават през билд трансформацията, но ако са малък брой, можете да активирате transformers плъгина и след това да ги окажете директно в билд скрипта в package.json файла. - [Vue emits с параметри](https://thoughts.bizarre.how/bg/articles/vue-emits-parameters): Предаването на събитията във Vue от компонент, обратно към този, който го извиква става с emits. Предаването може да се направи и с Pinia или друга библиотека за управление на 'състоянието', но това ще е за някоя друга статия. - [Nitro, i18n and Dev Proxy](https://thoughts.bizarre.how/bg/articles/nitro-i18n-proxy): Когато ползвате Nuxt, нормално е да използвате и Nitro, но понякога това не влиза в сценария, който са Ви подготвили. За API заявките отговаря друг beck-end сървър и за да може да си разработвате локално приложението, трябва да се настрои прокси. - [Динамичен manifest.json](https://thoughts.bizarre.how/bg/articles/dynamic-manifest): Ако желаете потребителите на вашето уеб приложение да го „инсталират“ на своите устройства, достатъчно е да попълните manifest.json файла. Има широка поддръжка от всякакви браузъри и операционни системи и е елементарно да се направи, за да се пропуска. - [Премахване на наклонената черта от адресната линия в Nuxt](https://thoughts.bizarre.how/bg/articles/remove-trailing-slash): Всяка страница във Вашия уеб сайт трябва да е с уникално съдържание. Ако имате втора страница с същото съдържание, то тежестта на информацията за търсачките се разделя между двете и това силно намалява шансовете им за по-ранно показване в резултатите от търсенето. - [Логване на информация с Web Workers от Vue 3 към сървъра](https://thoughts.bizarre.how/bg/articles/log-web-workers-vue-server): Web Workers са малки, но мощни скриптове, които работят на 'заден план' в браузъра. И понеже не пречат на рендирането на приложението Ви, може да ги товарите с разни задачи, които да изпълняват. - [Electron, TypeScript и Parcel](https://thoughts.bizarre.how/bg/articles/electron-typescript-parcel): Документацията на Electron е изцяло за JavaScript, но това не пречи да си използвате TypeScript, с който да генерира този JavaScript. Трябва да се спазват няколко простички правила, и то основно в пътищата на зареждане на файловете. Подготвил съм и малко допълнение за front-end частта. Вместо стандартната за Electron HTML страница ще направя малка компилация с Parcel. - [Vue Router и Main файла](https://thoughts.bizarre.how/bg/articles/vue-router-main): При стартиране на нов Vue проект, използвам Quick Start секцията на сайта на Vue. След това, задължително, правя няколко малки промени, преди да добавя проекта към Source Control банката. - [Простичък Vue плъгин за гео локация](https://thoughts.bizarre.how/bg/articles/vue-plugin-geo-location): Когато пиша плъгин, мисля за него, като самостоятелно парче код, което има собствена логика на работа и е независимо от мястото, на което ще се ползва. Това разбира се не е съвсем вярно, но при проектирането на плъгин, винаги изхождам от тази идея. Все пак всяка система има своя логика и архитектура, която трябва да се спазва - особено за изходящите данни. - [HB's Thoughts](https://thoughts.bizarre.how/bg/articles/hbs-thoughts): Малка блог система построен с Nuxt 4, фокусиран върху статии за Vue, Nuxt, TailwindCSS, TypeScript и фронт-енд разработка. - [Cloudflare и Email Binding](https://thoughts.bizarre.how/bg/articles/cloudflare-email-binding): Не е нужно да имате имейл сървър, за да изпращате писма с Cloudflare Worker. Достатъчно е Cloudflare да валидира ваш имейл адрес, който ползвате и той ще изпрати входящите имейли към него. - [Cloudflare Tail Worker](https://thoughts.bizarre.how/bg/articles/cloudflare-tail-worker): С Cloudflare Tail Worker насочвате логването на едно място - всичко е в екосистемата и в реално време. До скоро ползвах само външни инструменти като Sentry, LogRocket или Loki с Grafana, но подкарването им изисква да познаваш процесинга и отнема време. - [Динамично зареждане на Vue плъгини в main файл](https://thoughts.bizarre.how/bg/articles/dynamically-loading-vue-plugins): Разработвам В2В приложение, което има една входна точка, но се ползва от различни клиенти с различни домейни, различна визии и собствени функционалности. На базата на домейна и още няколко хитрини, разпознавам коя конфигурация да се зареди и така, макар и една, входната точка и всичко след нея е силно персонализирано. ## EnArticles - [Hello World](https://thoughts.bizarre.how/en/articles/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. - [Google Fonts in Nuxt with TailwindCSS](https://thoughts.bizarre.how/en/articles/google-fonts): The Google Fonts service is very easy to use. There is a large selection of fonts and an easy way to filter them according to your needs. The Nuxt ecosystem has a very good Google Fonts module you can easily integrate into your app, but I will show you a slightly different approach. - [The legacy of Barry](https://thoughts.bizarre.how/en/articles/the-legacy-of-barry): My family had a dog. His name was Barry Night. We also called him Baritosh, Baritoshev, Baritoshko, Torongash, Paliok, Chernio, Mr. President, and others. A black standard poodle. About 12 kilograms. He lived exactly 3 years. He passed away on his birthday. Our beautiful pal is no longer here, but he left us with a legacy that I will share with all of you who have come across this page. - [One entry point for multiple sites](https://thoughts.bizarre.how/en/articles/one-entry-point-multiple-sites): We have an application that represents a microsite, and when you load it, you see a login page. Our clients provide it to their users. After a user logs in, data related to the client they belong to and the permissions assigned by our client are loaded. - [Parcel & Robots](https://thoughts.bizarre.how/en/articles/parceljs-and-robotstxt): There are different ways to tell ParcelJS which files are static and should not go through the build transformation, but if there are only a few, you can activate the transformers plugin and then include them directly in the build script in the package.json file. - [Vue emits with parameters](https://thoughts.bizarre.how/en/articles/vue-emits-parameters): Passing events in Vue from a component back to the one that calls it is done with emits. The emits can also be done with Pinia or another library for state management, but this will be for another article. - [Nitro, i18n and Dev Proxy](https://thoughts.bizarre.how/en/articles/nitro-i18n-proxy): When you use Nuxt, it is normal to use Nitro as well, but sometimes this does not fit into the scenario you have been prepared for. The API requests are handled by another back-end server and in order to develop the application locally, a proxy must be set up. - [Dynamic manifest.json](https://thoughts.bizarre.how/en/articles/dynamic-manifest): If you want the users of your web application to "install" it on their devices, it is enough to fill in the manifest.json file. It is already widely supported by the browsers and the operating systems and it is very easy to do it, so you should not skip it. - [Removing the trailing slash from the URLs in Nuxt](https://thoughts.bizarre.how/en/articles/remove-trailing-slash): Every page on your website should have unique content. If you have a second page with the same content, the weight of the information for the search engines is divided between the two, and this greatly reduces their chances of appearing earlier in the search results. - [Log info with Web Workers from Vue 3 to the server](https://thoughts.bizarre.how/en/articles/log-web-workers-vue-server): Web Workers are small, powerful scripts that run in the browser's background. And because they don't interfere with the rendering of your application, you can load them with various tasks to perform. - [Electron, TypeScript & Parcel](https://thoughts.bizarre.how/en/articles/electron-typescript-parcel): Documentation for Electron is entirely in JavaScript, but that doesn't stop you from using TypeScript to generate that JavaScript. A few simple rules must be followed, mainly in the file loading paths. I have also prepared a small addition for the front-end part. Instead of the standard Electron HTML page, I will make a small compilation with Parcel. - [Vue Router & Main file](https://thoughts.bizarre.how/en/articles/vue-router-main): When starting a new Vue project, I use the Quick Start section of the Vue website. Then, I make a few small changes before adding the project to the Source Control bank. - [Simple Vue plugin for geo location](https://thoughts.bizarre.how/en/articles/vue-plugin-geo-location): When I write a plugin, I think of it as a standalone piece of code that has its own logic and is independent of where it will be used. This is not entirely true, of course, but when designing a plugin, I always start from this idea. After all, every system has its own logic and architecture that must be followed - especially for outgoing data. - [HB's Thoughts](https://thoughts.bizarre.how/en/articles/hbs-thoughts): A simple blog system built with Nuxt 4, focused on articles about Vue, Nuxt, TailwindCSS, TypeScript, and front-end development. - [Cloudflare & Email Binding](https://thoughts.bizarre.how/en/articles/cloudflare-email-binding): You don't need to have an email server to send emails with Cloudflare Worker. Just let Cloudflare validate the email address you're using and Cloudflare will forward incoming emails to it. - [Cloudflare Tail Worker](https://thoughts.bizarre.how/en/articles/cloudflare-tail-worker): With Cloudflare Tail Worker you direct logging to one place - everything is in the ecosystem and in real time. Until recently I only used external tools like Sentry, LogRocket or Loki with Grafana, but setting them up requires knowing the processing and takes time. - [Dynamically loading of Vue plugins in the main file](https://thoughts.bizarre.how/en/articles/dynamically-loading-vue-plugins): I am developing a B2B application that has a single entry point but is used by different clients with different domains, appearances, and custom functionalities. Based on the domain and a few other tricks, I identify which configuration to load, and thus, although there is a single entry point, everything after it is highly personalized. ## Sitemap - [Здравей Свят](https://thoughts.bizarre.how/bg/articles/hello-world): Преди много време спрях да поддържам блог. В момента пиша разни статии към репозиторитата в GitHub, но те не целят да достигнат крайния потребител. Повече са за хора, които преминават на бързо за информация и не се старая много, защото са насочени към разбиращите технологиите, за които пиша. - [Google Fonts в Nuxt с TailwindCSS](https://thoughts.bizarre.how/bg/articles/google-fonts): Услугата на Google за шрифтовете е страшно удобна за използване. Има голям избор от шрифтове и лесен начин да ги филтрираш спрямо нуждите ти. В екосистемата на Nuxt има много добър модул за интегриране на Google шрифтове в приложението Ви, но аз ще Ви покажа малко по-различен подход. - [Наследството на Бари](https://thoughts.bizarre.how/bg/articles/the-legacy-of-barry): Моето семейството имаше куче. Казваше се Бари Наит. Викахме му още Баритош, Баритошев, Баритошко, Торонгаш, Пальок, Черньо, мр. Президент и др. Черен среден пудел. Около 12 килограма. Живя точно 3 години. Почина на рождения си ден. Нашето прекрасно пале вече го няма, но то ни остави наследство, което ще споделя с всички Вас, попаднали на тази страница. - [Една входна точка за множество сайтове](https://thoughts.bizarre.how/bg/articles/one-entry-point-multiple-sites): Имаме приложение, което представлява микросайт и когато го заредите, виждате страница за вход. Нашите клиенти го предоставят на своите потребители и след като потребител влезе, се зареждат данни, свързани, както с клиента, към който принадлежат, така и с правата, зададени му от нашия клиент. - [Parcel & Robots](https://thoughts.bizarre.how/bg/articles/parceljs-and-robotstxt): Има различни начини, да окажете на ParcelJS, кои файлове са статични и не трябва да преминават през билд трансформацията, но ако са малък брой, можете да активирате transformers плъгина и след това да ги окажете директно в билд скрипта в package.json файла. - [Vue emits с параметри](https://thoughts.bizarre.how/bg/articles/vue-emits-parameters): Предаването на събитията във Vue от компонент, обратно към този, който го извиква става с emits. Предаването може да се направи и с Pinia или друга библиотека за управление на 'състоянието', но това ще е за някоя друга статия. - [Nitro, i18n and Dev Proxy](https://thoughts.bizarre.how/bg/articles/nitro-i18n-proxy): Когато ползвате Nuxt, нормално е да използвате и Nitro, но понякога това не влиза в сценария, който са Ви подготвили. За API заявките отговаря друг beck-end сървър и за да може да си разработвате локално приложението, трябва да се настрои прокси. - [Динамичен manifest.json](https://thoughts.bizarre.how/bg/articles/dynamic-manifest): Ако желаете потребителите на вашето уеб приложение да го „инсталират“ на своите устройства, достатъчно е да попълните manifest.json файла. Има широка поддръжка от всякакви браузъри и операционни системи и е елементарно да се направи, за да се пропуска. - [Премахване на наклонената черта от адресната линия в Nuxt](https://thoughts.bizarre.how/bg/articles/remove-trailing-slash): Всяка страница във Вашия уеб сайт трябва да е с уникално съдържание. Ако имате втора страница с същото съдържание, то тежестта на информацията за търсачките се разделя между двете и това силно намалява шансовете им за по-ранно показване в резултатите от търсенето. - [Логване на информация с Web Workers от Vue 3 към сървъра](https://thoughts.bizarre.how/bg/articles/log-web-workers-vue-server): Web Workers са малки, но мощни скриптове, които работят на 'заден план' в браузъра. И понеже не пречат на рендирането на приложението Ви, може да ги товарите с разни задачи, които да изпълняват. - [Electron, TypeScript и Parcel](https://thoughts.bizarre.how/bg/articles/electron-typescript-parcel): Документацията на Electron е изцяло за JavaScript, но това не пречи да си използвате TypeScript, с който да генерира този JavaScript. Трябва да се спазват няколко простички правила, и то основно в пътищата на зареждане на файловете. Подготвил съм и малко допълнение за front-end частта. Вместо стандартната за Electron HTML страница ще направя малка компилация с Parcel. - [Vue Router и Main файла](https://thoughts.bizarre.how/bg/articles/vue-router-main): При стартиране на нов Vue проект, използвам Quick Start секцията на сайта на Vue. След това, задължително, правя няколко малки промени, преди да добавя проекта към Source Control банката. - [Простичък Vue плъгин за гео локация](https://thoughts.bizarre.how/bg/articles/vue-plugin-geo-location): Когато пиша плъгин, мисля за него, като самостоятелно парче код, което има собствена логика на работа и е независимо от мястото, на което ще се ползва. Това разбира се не е съвсем вярно, но при проектирането на плъгин, винаги изхождам от тази идея. Все пак всяка система има своя логика и архитектура, която трябва да се спазва - особено за изходящите данни. - [HB's Thoughts](https://thoughts.bizarre.how/bg/articles/hbs-thoughts): Малка блог система построен с Nuxt 4, фокусиран върху статии за Vue, Nuxt, TailwindCSS, TypeScript и фронт-енд разработка. - [Cloudflare и Email Binding](https://thoughts.bizarre.how/bg/articles/cloudflare-email-binding): Не е нужно да имате имейл сървър, за да изпращате писма с Cloudflare Worker. Достатъчно е Cloudflare да валидира ваш имейл адрес, който ползвате и той ще изпрати входящите имейли към него. - [Cloudflare Tail Worker](https://thoughts.bizarre.how/bg/articles/cloudflare-tail-worker): С Cloudflare Tail Worker насочвате логването на едно място - всичко е в екосистемата и в реално време. До скоро ползвах само външни инструменти като Sentry, LogRocket или Loki с Grafana, но подкарването им изисква да познаваш процесинга и отнема време. - [Динамично зареждане на Vue плъгини в main файл](https://thoughts.bizarre.how/bg/articles/dynamically-loading-vue-plugins): Разработвам В2В приложение, което има една входна точка, но се ползва от различни клиенти с различни домейни, различна визии и собствени функционалности. На базата на домейна и още няколко хитрини, разпознавам коя конфигурация да се зареди и така, макар и една, входната точка и всичко след нея е силно персонализирано. - [Какво е компетентност?](https://thoughts.bizarre.how/bg/static/help): Компетентността показва, колко трябва да сте на ти с технологиите в статията. - [Hello World](https://thoughts.bizarre.how/en/articles/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. - [Google Fonts in Nuxt with TailwindCSS](https://thoughts.bizarre.how/en/articles/google-fonts): The Google Fonts service is very easy to use. There is a large selection of fonts and an easy way to filter them according to your needs. The Nuxt ecosystem has a very good Google Fonts module you can easily integrate into your app, but I will show you a slightly different approach. - [The legacy of Barry](https://thoughts.bizarre.how/en/articles/the-legacy-of-barry): My family had a dog. His name was Barry Night. We also called him Baritosh, Baritoshev, Baritoshko, Torongash, Paliok, Chernio, Mr. President, and others. A black standard poodle. About 12 kilograms. He lived exactly 3 years. He passed away on his birthday. Our beautiful pal is no longer here, but he left us with a legacy that I will share with all of you who have come across this page. - [One entry point for multiple sites](https://thoughts.bizarre.how/en/articles/one-entry-point-multiple-sites): We have an application that represents a microsite, and when you load it, you see a login page. Our clients provide it to their users. After a user logs in, data related to the client they belong to and the permissions assigned by our client are loaded. - [Parcel & Robots](https://thoughts.bizarre.how/en/articles/parceljs-and-robotstxt): There are different ways to tell ParcelJS which files are static and should not go through the build transformation, but if there are only a few, you can activate the transformers plugin and then include them directly in the build script in the package.json file. - [Vue emits with parameters](https://thoughts.bizarre.how/en/articles/vue-emits-parameters): Passing events in Vue from a component back to the one that calls it is done with emits. The emits can also be done with Pinia or another library for state management, but this will be for another article. - [Nitro, i18n and Dev Proxy](https://thoughts.bizarre.how/en/articles/nitro-i18n-proxy): When you use Nuxt, it is normal to use Nitro as well, but sometimes this does not fit into the scenario you have been prepared for. The API requests are handled by another back-end server and in order to develop the application locally, a proxy must be set up. - [Dynamic manifest.json](https://thoughts.bizarre.how/en/articles/dynamic-manifest): If you want the users of your web application to "install" it on their devices, it is enough to fill in the manifest.json file. It is already widely supported by the browsers and the operating systems and it is very easy to do it, so you should not skip it. - [Removing the trailing slash from the URLs in Nuxt](https://thoughts.bizarre.how/en/articles/remove-trailing-slash): Every page on your website should have unique content. If you have a second page with the same content, the weight of the information for the search engines is divided between the two, and this greatly reduces their chances of appearing earlier in the search results. - [Log info with Web Workers from Vue 3 to the server](https://thoughts.bizarre.how/en/articles/log-web-workers-vue-server): Web Workers are small, powerful scripts that run in the browser's background. And because they don't interfere with the rendering of your application, you can load them with various tasks to perform. - [Electron, TypeScript & Parcel](https://thoughts.bizarre.how/en/articles/electron-typescript-parcel): Documentation for Electron is entirely in JavaScript, but that doesn't stop you from using TypeScript to generate that JavaScript. A few simple rules must be followed, mainly in the file loading paths. I have also prepared a small addition for the front-end part. Instead of the standard Electron HTML page, I will make a small compilation with Parcel. - [Vue Router & Main file](https://thoughts.bizarre.how/en/articles/vue-router-main): When starting a new Vue project, I use the Quick Start section of the Vue website. Then, I make a few small changes before adding the project to the Source Control bank. - [Simple Vue plugin for geo location](https://thoughts.bizarre.how/en/articles/vue-plugin-geo-location): When I write a plugin, I think of it as a standalone piece of code that has its own logic and is independent of where it will be used. This is not entirely true, of course, but when designing a plugin, I always start from this idea. After all, every system has its own logic and architecture that must be followed - especially for outgoing data. - [HB's Thoughts](https://thoughts.bizarre.how/en/articles/hbs-thoughts): A simple blog system built with Nuxt 4, focused on articles about Vue, Nuxt, TailwindCSS, TypeScript, and front-end development. - [Cloudflare & Email Binding](https://thoughts.bizarre.how/en/articles/cloudflare-email-binding): You don't need to have an email server to send emails with Cloudflare Worker. Just let Cloudflare validate the email address you're using and Cloudflare will forward incoming emails to it. - [Cloudflare Tail Worker](https://thoughts.bizarre.how/en/articles/cloudflare-tail-worker): With Cloudflare Tail Worker you direct logging to one place - everything is in the ecosystem and in real time. Until recently I only used external tools like Sentry, LogRocket or Loki with Grafana, but setting them up requires knowing the processing and takes time. - [Dynamically loading of Vue plugins in the main file](https://thoughts.bizarre.how/en/articles/dynamically-loading-vue-plugins): I am developing a B2B application that has a single entry point but is used by different clients with different domains, appearances, and custom functionalities. Based on the domain and a few other tricks, I identify which configuration to load, and thus, although there is a single entry point, everything after it is highly personalized. - [What is competence?](https://thoughts.bizarre.how/en/static/help): Competence shows how familiar you should be with the technologies mentioned in the article.