[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"contentNavigation":3,"newsletter-stats":4,"$fQa3xUpnRDPNiFFu2QS4K-DAjYmsapeR9fNhPNBdpkOc":-1,"topic-architecture":6,"articles-feed-\u002Ftopics\u002Farchitecture-1-architecture-":11,"home-tags":164},[],{"confirmedCount":5},405,{"articleCount":7,"color":8,"id":9,"name":10,"slug":10},8,"#10b981","019d9cf0-ca04-75bb-ad86-ce8da1c0be23","architecture",{"items":12,"page":161,"pageSize":162,"totalCount":163},[13,44,65,83,101,119,143],{"content":14,"createdAt":15,"id":16,"image":17,"isAffiliate":18,"isPublished":19,"publishedAt":20,"slug":21,"sourceId":22,"sourceName":23,"sourceType":24,"summary":25,"title":26,"updatedAt":27,"url":28,"urlHash":29,"tags":30},"As Vue applications grow, keeping the codebase clean becomes increasingly challenging. At first, everyone follows the same conventions. But over time, you start noticing things like: inconsistent component structure multiple ways of solving the same problem different Composition API patterns imports scattered everywhere code that's difficult to review and maintain This is where ESLint becomes much more than a tool for formatting—it becomes a way to enforce your project's architecture and design patterns. In this article, we'll explore: Why ESLint is more than a linter How it helps maintain a consistent architecture Useful Vue-specific rules Examples of enforcing project-wide patterns Best practices for scaling Vue applications Let's dive in. 🤔 ESLint Is More Than a Code Formatter Many developers think ESLint is only used to catch things like; unused variables, missing semicolons, incorrect formatting. While that's true, ESLint can do much more. With the right configuration, it can enforce: coding conventions project architecture Vue best practices Composition API patterns import organization component structure Instead of relying on code reviews to catch inconsistencies, ESLint prevents them before the code is even merged. 🟢 What Problem Does It Solve? Imagine a team of five developers. One component looks like this: &lt;script setup&gt; ... &lt;\u002Fscript&gt; &lt;template&gt; ... &lt;\u002Ftemplate&gt; &lt;style&gt; ... &lt;\u002Fstyle&gt; Another one: &lt;template&gt; ... &lt;\u002Ftemplate&gt; &lt;script setup&gt; ... &lt;\u002Fscript&gt; Someone uses: watch() Someone else always prefers: watchEffect() Some developers use relative imports: ..\u002F..\u002F..\u002Fcomponents\u002FButton.vue Others use aliases: ~\u002Fcomponents\u002FButton.vue None of these are necessarily wrong... but together they create inconsistency across the project. ESLint helps eliminate these differences by enforcing one agreed-upon way of writing code. 🟢 Enforcing Vue Block Order One of the simplest examples is keeping Vue Single File Components organized. Using the vue\u002Fblock-order rule, you can define the exact order of blocks. Example: &lt;template&gt; ... &lt;\u002Ftemplate&gt; &lt;script setup lang=\"ts\"&gt; ... &lt;\u002Fscript&gt; &lt;style scoped&gt; ... &lt;\u002Fstyle&gt; 🟢 Enforcing Composition API Patterns One of the biggest advantages of ESLint is enforcing how developers use Vue APIs. For example, you might decide that your project should always use: &lt;script setup&gt; Composition API defineProps defineEmits And avoid Options API or inconsistent component definitions. This ensures new components follow the same architecture from day one. 🟢 Restricting Specific APIs Sometimes you want to discourage certain patterns altogether. For example, you may decide: ❌ Avoid watch() unless absolutely necessary. Prefer: computed() or watchEffect() ESLint can restrict the use of specific APIs and encourage better alternatives. This keeps reactive logic predictable and easier to maintain. 🟢 Enforcing Import Conventions Large Vue projects often suffer from inconsistent imports. Example: import Button from '..\u002F..\u002F..\u002Fcomponents\u002FButton.vue' vs. import Button from '~\u002Fcomponents\u002FButton.vue' ESLint can enforce: path aliases import ordering grouped imports no duplicate imports The result is cleaner and more consistent code. 🟢 Preventing Architectural Violations ESLint can also help enforce architectural boundaries. For example: Components shouldn't access API clients directly. Feature modules shouldn't import from other features. UI components shouldn't depend on business logic. Using rules such as no-restricted-imports, you can prevent these patterns entirely. Example: 'no-restricted-imports': [ 'error', { patterns: [ '@\u002Fapi\u002F*' ] } ] Now components can't accidentally bypass your intended architecture. 🟢 Creating Custom Rules for Your Team One of ESLint's greatest strengths is extensibility. Beyond built-in rules, you can create custom rules—or use plugins—to enforce project-specific conventions. For example: composables must start with use stores must live in a dedicated folder feature modules cannot import each other utility functions must remain pure internal design system components must be used instead of native HTML elements As your project grows, these automated checks become far more reliable than relying solely on code reviews. 🟢 Why This Matters in Large Vue Applications Small projects can survive without strict rules. Large projects usually can't. Consistency helps: onboard new developers faster simplify code reviews reduce technical debt prevent architectural drift improve long-term maintainability Instead of debating coding style in every pull request ESLint enforces it automatically. 🧪 Best Practices Treat ESLint as an architecture tool—not just a linter Enable Vue-specific rules from eslint-plugin-vue Agree on project conventions early Enforce Composition API patterns consistently Use no-restricted-imports to protect architectural boundaries Automate linting in CI\u002FCD pipelines Keep rules practical—avoid overcomplicating your configuration 📖 Learn more If you would like to learn more about Vue, Nuxt, JavaScript or other useful technologies, checkout VueSchool by clicking this link or by clicking the image below: It covers most important concepts while building modern Vue or Nuxt applications that can help you in your daily work or side projects 😉 🧪 Advance skills A certification boosts your skills, builds credibility, and opens doors to new opportunities. Whether you're advancing your career or switching paths, it's a smart step toward success. Check out Certificates.dev by clicking this link or by clicking the image below: Invest in yourself—get certified in Vue.js, JavaScript, Nuxt, Angular, React, and more! ✅ Summary ESLint is much more than a tool for catching syntax errors or enforcing formatting. As Vue applications grow, consistency becomes just as important as functionality. By using ESLint to enforce architectural decisions, you ensure that every new piece of code follows the same standards—making your project easier to understand, review, and maintain for years to come. Take care! And happy coding as always 🖥️","2026-07-06T12:00:09.479Z","019f374c-d2f0-769a-8a4f-180c7f565bd4","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1200,height=627,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fevhhwr5be00v4h9dmmxi.png",false,true,"2026-07-06T08:38:53.000Z","enforce-better-vue-architecture-with-eslint","019d6bd6-7fe0-7244-80dc-9a4e8751886a","Jakub Andrzejewski","rss","This article discusses how ESLint can be leveraged to enforce a consistent architecture and coding standards in Vue applications. It highlights the importance of using ESLint beyond formatting, showcasing its ability to maintain project-wide patterns, improve code review processes, and ensure best practices in Vue development, particularly with the Composition API.","Enforce Better Vue Architecture with ESLint","2026-07-06T12:00:24.181Z","https:\u002F\u002Fdev.to\u002Fjacobandrewsky\u002Fenforce-better-vue-architecture-with-eslint-3fb0","5987f1e0425bcd09cd7e156b69730144717e56a57baa8243a9f5f2c7670170ef",[31,34,37,40,41],{"color":8,"id":32,"name":33,"slug":33},"019d6bd8-c9a8-7783-bd22-03145b355427","vue",{"color":8,"id":35,"name":36,"slug":36},"019f374d-0cc4-71ff-b906-ebaec8b0c343","eslint",{"color":8,"id":38,"name":39,"slug":39},"019d6bd8-ca21-71c5-a236-37d94fe57d24","composition-api",{"color":8,"id":9,"name":10,"slug":10},{"color":8,"id":42,"name":43,"slug":43},"019d6bd9-010e-772d-b2f0-9378a042a676","best-practices",{"content":45,"createdAt":46,"id":47,"image":48,"isAffiliate":18,"isPublished":19,"publishedAt":49,"slug":50,"sourceId":51,"sourceName":52,"sourceType":53,"summary":54,"title":55,"updatedAt":56,"url":57,"urlHash":58,"tags":59},"The Model Context Protocol (MCP), and, therefore, MCP servers, are being increasingly used to integrate AI capabilities into ...","2026-05-03T12:00:07.340Z","019dedb5-ca95-740b-aa53-523499fbd77f","https:\u002F\u002Fi.ytimg.com\u002Fvi\u002Fee6EoOpq8s8\u002Fhqdefault.jpg","2026-05-03T10:00:06.000Z","elise-patrikainen---how-to-build-an-mcp-server-for-vue","019d9ce0-e8f2-774a-ba57-a61c19469fe1","Vuejs Amsterdam","youtube","Elise Patrikainen discusses the integration of AI capabilities into Vue applications through the Model Context Protocol (MCP) and provides insights on building an MCP server specifically for Vue. This article highlights the growing relevance of MCP in enhancing Vue's functionality with AI features.","Elise Patrikainen - How to build an MCP server for Vue?","2026-05-03T12:00:17.253Z","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ee6EoOpq8s8","bc24e54d8b8c8eecbc59213aaa83bd2de58bf0ffe8c8af7a3677072fb4525846",[60,61,64],{"color":8,"id":32,"name":33,"slug":33},{"color":8,"id":62,"name":63,"slug":63},"019d6bd8-fb46-77ef-a3b6-bd2d30ab8919","api",{"color":8,"id":9,"name":10,"slug":10},{"content":66,"createdAt":67,"id":68,"image":69,"isAffiliate":18,"isPublished":19,"publishedAt":70,"slug":71,"sourceId":51,"sourceName":52,"sourceType":53,"summary":72,"title":73,"updatedAt":74,"url":75,"urlHash":76,"tags":77},"Modern Frontend Engineering: Tools, Tradeoffs, and the AI Shift. It will focus on software quality in the era of AI with the Creator of ...","2026-04-28T12:00:01.729Z","019dd3f5-e8ad-708a-8f6e-4c164bd16e7c","https:\u002F\u002Fi.ytimg.com\u002Fvi\u002FL5aJVG5g7k0\u002Fhqdefault.jpg","2026-04-28T10:00:06.000Z","jakub-andrzejewski-evan-you---panel-beyond-the-vibe-code-quality-first","The panel featuring Jakub Andrzejewski and Evan You discusses the importance of code quality in modern frontend engineering, particularly in the context of AI advancements. They explore various tools and tradeoffs that developers face today.","Jakub Andrzejewski, Evan You - Panel: Beyond The Vibe: Code Quality First","2026-04-28T12:00:12.454Z","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=L5aJVG5g7k0","eaffed00699dc730765b58457c919e290cc6cef62eeb40ad522499d42448b87f",[78,79,82],{"color":8,"id":32,"name":33,"slug":33},{"color":8,"id":80,"name":81,"slug":81},"019d6bd8-ca26-775c-b9b5-c3439dbe5789","performance",{"color":8,"id":9,"name":10,"slug":10},{"content":84,"createdAt":85,"id":86,"image":87,"isAffiliate":18,"isPublished":19,"publishedAt":88,"slug":89,"sourceId":51,"sourceName":52,"sourceType":53,"summary":90,"title":91,"updatedAt":92,"url":93,"urlHash":94,"tags":95},"Large Vue\u002FNuxt applications can quickly become a labyrinth of components, modules, and plugins. In this talk, we'll explore how ...","2026-04-24T12:00:04.207Z","019dbf5c-825c-704a-bb17-a01866ec5e99","https:\u002F\u002Fi.ytimg.com\u002Fvi\u002FGvFuUaoNt_4\u002Fhqdefault.jpg","2026-04-24T10:00:06.000Z","jakub-andrzejewski-dungeon-mastering-your-vue-app-from-chaos-to-order","This article discusses strategies for managing large Vue and Nuxt applications, focusing on organizing components, modules, and plugins to maintain order and efficiency. The talk aims to provide insights on navigating the complexities of developing with Vue and Nuxt.","Jakub Andrzejewski   Dungeon Mastering Your Vue App From Chaos to Order","2026-04-24T12:00:13.418Z","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=GvFuUaoNt_4","781306580c8d200f4cd2400045700da8ead3092ef9fcaa1f67dc2450d7019f15",[96,97,100],{"color":8,"id":32,"name":33,"slug":33},{"color":8,"id":98,"name":99,"slug":99},"019d6bd8-fad3-70a9-a74d-ab96e3a2f45d","nuxt",{"color":8,"id":9,"name":10,"slug":10},{"content":102,"createdAt":103,"id":104,"image":105,"isAffiliate":18,"isPublished":19,"publishedAt":106,"slug":107,"sourceId":51,"sourceName":52,"sourceType":53,"summary":108,"title":109,"updatedAt":110,"url":111,"urlHash":112,"tags":113},"Back in 2013, before Vue, React, and modern tooling, I built the global campaign site for Need for Speed Rivals as the only ...","2026-04-21T12:00:01.702Z","019dafe9-6493-754d-88cf-f6f14fbef71d","https:\u002F\u002Fi.ytimg.com\u002Fvi\u002FUOvBq94PM1A\u002Fhqdefault.jpg","2026-04-21T10:00:06.000Z","tim-benniks-from-vanilla-chaos-to-vue-zen-rebuilding-eas-2013-need-for-speed-rivals-web-campaign","Tim Benniks shares his journey of transforming the chaotic vanilla JavaScript web campaign for EA's 2013 Need for Speed Rivals into a streamlined Vue.js application. This transition highlights the benefits of modern frameworks in enhancing development efficiency and user experience.","Tim Benniks   From Vanilla Chaos to Vue Zen Rebuilding EA’s 2013 Need For Speed Rivals Web Campaign","2026-04-21T12:00:11.336Z","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=UOvBq94PM1A","32e7bf0e5914f3315b3ab987cf7269b14d692ab92ae8183b46af699a25357f4e",[114,115,118],{"color":8,"id":32,"name":33,"slug":33},{"color":8,"id":116,"name":117,"slug":117},"019dafe9-8a6d-7218-81f1-37052cbe9b78","development",{"color":8,"id":9,"name":10,"slug":10},{"content":120,"createdAt":121,"id":122,"image":123,"isAffiliate":18,"isPublished":19,"publishedAt":124,"slug":125,"sourceId":51,"sourceName":52,"sourceType":53,"summary":126,"title":127,"updatedAt":128,"url":129,"urlHash":130,"tags":131},"This talk explores building a production-grade Vue SPA using Vite + Rolldown for modern bundling, Nitro as a lightweight server ...","2026-04-17T19:35:11.345Z","019d9cf0-aadb-7522-87ac-9f74944f20e1","https:\u002F\u002Fi.ytimg.com\u002Fvi\u002FTlTkXI1e3xw\u002Fhqdefault.jpg","2026-04-17T10:00:06.000Z","pooya-parsa---full-stack-agnostic-apps-in-the-agentic-era-vite-nitro","The talk by Pooya Parsa delves into the development of production-grade Vue single-page applications (SPAs) utilizing Vite for modern bundling and Nitro as a lightweight server. It emphasizes the importance of building agnostic applications in the contemporary tech landscape.","Pooya Parsa - Full Stack Agnostic Apps in the Agentic Era (Vite + Nitro)","2026-04-17T19:35:19.271Z","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=TlTkXI1e3xw","6bfb508734c0bf8b15fc6b79afa7970a0ccc6e553459020a69bdbaad2faa91f1",[132,133,136,139,142],{"color":8,"id":32,"name":33,"slug":33},{"color":8,"id":134,"name":135,"slug":135},"019d9cf0-c9f8-7411-beed-02265d8271db","vite",{"color":8,"id":137,"name":138,"slug":138},"019d9cf0-c9fc-76a0-8c4e-b818a89c3774","nitro",{"color":8,"id":140,"name":141,"slug":141},"019d9cf0-ca00-749d-9101-1c63bf62e215","spas",{"color":8,"id":9,"name":10,"slug":10},{"content":144,"createdAt":145,"id":146,"image":147,"isAffiliate":18,"isPublished":19,"publishedAt":148,"slug":149,"sourceId":51,"sourceName":52,"sourceType":53,"summary":150,"title":151,"updatedAt":152,"url":153,"urlHash":154,"tags":155},"The place to be for the highly anticipated State of Nuxt for the year 2026. Previous years introduced a new architecture (Nuxt 3), ...","2026-04-17T20:27:43.053Z","019d9d20-c23d-74ce-95cd-60771aa2fe5f","https:\u002F\u002Fi.ytimg.com\u002Fvi\u002Fwe4gdQikxm8\u002Fhqdefault.jpg","2026-04-14T10:00:06.000Z","daniel-roe---state-of-nuxt-2026","The article discusses the upcoming State of Nuxt for 2026, highlighting the advancements and changes since the introduction of Nuxt 3. It sets the stage for what to expect in the future of the Nuxt framework.","Daniel Roe - State of Nuxt 2026","2026-04-17T20:27:50.743Z","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=we4gdQikxm8","cc37b2ce2cfc3070e8b7c5f75bcf018590b46fdaa43fa0b42fbb4d9d22719279",[156,157,158],{"color":8,"id":98,"name":99,"slug":99},{"color":8,"id":9,"name":10,"slug":10},{"color":8,"id":159,"name":160,"slug":160},"019d9d20-dfb9-7041-9973-39c545b33a2d","release",1,20,7,{"tags":165},[166,171,175,179,183,187,190,192,196,200,204,208,213,215,219,223,227,231,235,239,243,247,251,255,259,263,267,271,273,277,281,285,289,293,297,301,303,307,311,315,319,321,325,329,333,337,341,345,349,353,357,361,365,369,373,377,381,385,389,393,397,399,402,406,410,414,418,422,426,429,433,437,441,445,449,453,457,459,463,467,471,475,479,483,487,491,493,497,502,506,510,514,518,522,526,530,534,538,543,547,551,555,559,563,567,569,573,577,580,584,588,593],{"articleCount":167,"color":8,"createdAt":168,"id":169,"name":170,"slug":170,"updatedAt":168},0,"2026-04-30T04:19:02.605Z","019ddc9c-954c-7703-8288-76d562fec577","accelerator",{"articleCount":161,"color":8,"createdAt":172,"id":173,"name":174,"slug":174,"updatedAt":172},"2026-04-08T06:47:43.120Z","019d6bd8-caef-76b9-bacd-363e31e6d2a9","accessibility",{"articleCount":7,"color":8,"createdAt":176,"id":177,"name":178,"slug":178,"updatedAt":176},"2026-04-17T20:27:50.780Z","019d9d20-e07b-7685-9ebb-fae0b963f243","ai",{"articleCount":167,"color":8,"createdAt":180,"id":181,"name":182,"slug":182,"updatedAt":180},"2026-05-05T00:00:19.031Z","019df56f-8257-752e-a918-cdbb07c32b86","ai-agents",{"articleCount":161,"color":8,"createdAt":184,"id":185,"name":186,"slug":186,"updatedAt":184},"2026-06-01T12:00:14.713Z","019e830e-5378-722b-929b-a57d67bcf605","animation",{"articleCount":188,"color":8,"createdAt":189,"id":62,"name":63,"slug":63,"updatedAt":189},4,"2026-04-08T06:47:55.499Z",{"articleCount":7,"color":8,"createdAt":191,"id":9,"name":10,"slug":10,"updatedAt":191},"2026-04-17T19:35:19.300Z",{"articleCount":167,"color":8,"createdAt":193,"id":194,"name":195,"slug":195,"updatedAt":193},"2026-04-23T12:00:11.615Z","019dba36-435e-765d-bfb2-c5be05362c27","astro",{"articleCount":167,"color":8,"createdAt":197,"id":198,"name":199,"slug":199,"updatedAt":197},"2026-06-01T20:00:15.958Z","019e84c5-cc55-7377-9e5d-77240ea8a880","authentication",{"articleCount":167,"color":8,"createdAt":201,"id":202,"name":203,"slug":203,"updatedAt":201},"2026-05-05T00:00:19.020Z","019df56f-824c-7031-9e34-2f47ad139eb6","automation",{"articleCount":167,"color":8,"createdAt":205,"id":206,"name":207,"slug":207,"updatedAt":205},"2026-06-11T16:00:12.019Z","019eb769-9af2-7471-b482-3f1a404f802e","azure",{"articleCount":209,"color":8,"createdAt":210,"id":211,"name":212,"slug":212,"updatedAt":210},2,"2026-04-17T20:27:50.776Z","019d9d20-e077-71cc-a605-8ac2a1566143","backend",{"articleCount":188,"color":8,"createdAt":214,"id":42,"name":43,"slug":43,"updatedAt":214},"2026-04-08T06:47:56.976Z",{"articleCount":167,"color":8,"createdAt":216,"id":217,"name":218,"slug":218,"updatedAt":216},"2026-06-06T00:00:11.711Z","019e9a3a-e5be-74b3-a01a-92c1f9427a2c","beta",{"articleCount":167,"color":8,"createdAt":220,"id":221,"name":222,"slug":222,"updatedAt":220},"2026-06-10T13:53:29.711Z","019eb1cf-3e6e-70f0-a761-0fb9b61d5675","budgeting",{"articleCount":161,"color":8,"createdAt":224,"id":225,"name":226,"slug":226,"updatedAt":224},"2026-06-16T16:11:31.438Z","019ed133-c4ee-70bb-8e21-7dc86e8adee4","bun",{"articleCount":167,"color":8,"createdAt":228,"id":229,"name":230,"slug":230,"updatedAt":228},"2026-05-19T20:00:14.559Z","019e41d3-1ade-77b0-9e4f-e9b97a6361ca","cdn",{"articleCount":161,"color":8,"createdAt":232,"id":233,"name":234,"slug":234,"updatedAt":232},"2026-06-27T16:00:12.237Z","019f09cf-5bcd-751c-8d46-9e123bd784af","clean-code",{"articleCount":161,"color":8,"createdAt":236,"id":237,"name":238,"slug":238,"updatedAt":236},"2026-05-16T18:48:40.777Z","019e321e-8248-75cc-9b69-59c2db6dd846","cli",{"articleCount":167,"color":8,"createdAt":240,"id":241,"name":242,"slug":242,"updatedAt":240},"2026-05-05T00:00:19.014Z","019df56f-8246-747f-be4b-a716863a93ea","cloud-platform",{"articleCount":161,"color":8,"createdAt":244,"id":245,"name":246,"slug":246,"updatedAt":244},"2026-06-16T16:11:31.289Z","019ed133-c458-74d8-a5c9-654f77837e7c","cloudflare",{"articleCount":161,"color":8,"createdAt":248,"id":249,"name":250,"slug":250,"updatedAt":248},"2026-07-27T18:11:45.304Z","019fa4c6-93c3-76ea-baa3-7d5fe541ac5b","cms",{"articleCount":161,"color":8,"createdAt":252,"id":253,"name":254,"slug":254,"updatedAt":252},"2026-04-30T04:19:02.045Z","019ddc9c-931c-743d-a1cb-e4449630fe47","collaboration",{"articleCount":161,"color":8,"createdAt":256,"id":257,"name":258,"slug":258,"updatedAt":256},"2026-06-10T13:53:29.567Z","019eb1cf-3dde-776d-9398-4863764f9ac3","community",{"articleCount":161,"color":8,"createdAt":260,"id":261,"name":262,"slug":262,"updatedAt":260},"2026-05-06T16:00:17.128Z","019dfe04-bee8-7384-bc58-a712f677807c","comparison",{"articleCount":161,"color":8,"createdAt":264,"id":265,"name":266,"slug":266,"updatedAt":264},"2026-05-14T12:00:21.354Z","019e265b-f569-71d8-a02a-a17ec8180644","component-design",{"articleCount":161,"color":8,"createdAt":268,"id":269,"name":270,"slug":270,"updatedAt":268},"2026-07-18T20:00:18.730Z","019f76d0-bb29-72d6-8d0b-05ffd1d3c8ed","composables",{"articleCount":188,"color":8,"createdAt":272,"id":38,"name":39,"slug":39,"updatedAt":272},"2026-04-08T06:47:42.915Z",{"articleCount":161,"color":8,"createdAt":274,"id":275,"name":276,"slug":276,"updatedAt":274},"2026-06-27T12:00:13.113Z","019f08f3-a538-74ed-82c5-038edce7100a","copilot",{"articleCount":167,"color":8,"createdAt":278,"id":279,"name":280,"slug":280,"updatedAt":278},"2026-04-25T12:00:12.674Z","019dc482-ff81-73ac-9b1c-6ad47f0afde0","data-management",{"articleCount":167,"color":8,"createdAt":282,"id":283,"name":284,"slug":284,"updatedAt":282},"2026-06-04T20:00:17.367Z","019e9438-e5d7-731f-bf47-8dcd86c6655c","data-privacy",{"articleCount":161,"color":8,"createdAt":286,"id":287,"name":288,"slug":288,"updatedAt":286},"2026-05-05T12:00:17.083Z","019df802-a8bb-775a-b843-93d883c7dfc5","data-science",{"articleCount":167,"color":8,"createdAt":290,"id":291,"name":292,"slug":292,"updatedAt":290},"2026-06-11T16:00:12.028Z","019eb769-9afb-7709-8a67-2a12f5e557c7","deepseek",{"articleCount":161,"color":8,"createdAt":294,"id":295,"name":296,"slug":296,"updatedAt":294},"2026-05-25T08:00:12.834Z","019e5e26-0e21-7366-87c7-0b1334180b0a","dependency-cruiser",{"articleCount":161,"color":8,"createdAt":298,"id":299,"name":300,"slug":300,"updatedAt":298},"2026-04-18T04:30:00.710Z","019d9eda-5005-7329-a463-189572e25635","deployment",{"articleCount":209,"color":8,"createdAt":302,"id":116,"name":117,"slug":117,"updatedAt":302},"2026-04-21T12:00:11.373Z",{"articleCount":161,"color":8,"createdAt":304,"id":305,"name":306,"slug":306,"updatedAt":304},"2026-06-29T08:00:12.101Z","019f1264-9f44-762d-b5fd-837839fdc586","devtools",{"articleCount":167,"color":8,"createdAt":308,"id":309,"name":310,"slug":310,"updatedAt":308},"2026-05-29T20:00:13.197Z","019e7552-ad8c-731f-ad8b-49253ed0e1b9","docker",{"articleCount":161,"color":8,"createdAt":312,"id":313,"name":314,"slug":314,"updatedAt":312},"2026-06-27T12:00:13.081Z","019f08f3-a518-7607-aa8c-782b4f10c2ed","documentation",{"articleCount":161,"color":8,"createdAt":316,"id":317,"name":318,"slug":318,"updatedAt":316},"2026-04-30T04:19:02.055Z","019ddc9c-9327-744f-a2da-31b64c7b6ba4","editor",{"articleCount":161,"color":8,"createdAt":320,"id":35,"name":36,"slug":36,"updatedAt":320},"2026-07-06T12:00:24.261Z",{"articleCount":167,"color":8,"createdAt":322,"id":323,"name":324,"slug":324,"updatedAt":322},"2026-05-02T00:00:23.123Z","019de5fc-7e52-740a-807c-d322c373865b","firewall",{"articleCount":161,"color":8,"createdAt":326,"id":327,"name":328,"slug":328,"updatedAt":326},"2026-05-06T16:00:17.134Z","019dfe04-beee-7481-b8e7-4034640e840a","frameworks",{"articleCount":167,"color":8,"createdAt":330,"id":331,"name":332,"slug":332,"updatedAt":330},"2026-04-08T06:47:56.883Z","019d6bd9-00b2-7199-8e88-2530ef258032","generics",{"articleCount":161,"color":8,"createdAt":334,"id":335,"name":336,"slug":336,"updatedAt":334},"2026-07-27T18:11:45.390Z","019fa4c6-9419-7657-844e-58ec868ed664","git",{"articleCount":209,"color":8,"createdAt":338,"id":339,"name":340,"slug":340,"updatedAt":338},"2026-07-15T00:00:22.207Z","019f6313-12bf-7151-81f2-c8b43b09d979","html",{"articleCount":167,"color":8,"createdAt":342,"id":343,"name":344,"slug":344,"updatedAt":342},"2026-05-06T00:00:17.012Z","019dfa95-d673-71ef-be4a-8761512ffe5c","infrastructure",{"articleCount":161,"color":8,"createdAt":346,"id":347,"name":348,"slug":348,"updatedAt":346},"2026-06-16T16:11:31.264Z","019ed133-c43f-704f-8c1a-fbc299c8a3e5","javascript",{"articleCount":161,"color":8,"createdAt":350,"id":351,"name":352,"slug":352,"updatedAt":350},"2026-07-13T08:00:18.266Z","019f5a7d-bf5a-76e0-903a-c87435cc3e09","lazy-loading",{"articleCount":161,"color":8,"createdAt":354,"id":355,"name":356,"slug":356,"updatedAt":354},"2026-05-11T12:00:19.963Z","019e16e8-dbfa-76d6-bb2d-793aee049186","loading",{"articleCount":167,"color":8,"createdAt":358,"id":359,"name":360,"slug":360,"updatedAt":358},"2026-04-25T12:00:12.682Z","019dc482-ff8a-7698-8af5-95db54a26d6b","local-first",{"articleCount":161,"color":8,"createdAt":362,"id":363,"name":364,"slug":364,"updatedAt":362},"2026-05-14T12:00:21.370Z","019e265b-f579-71cd-84b2-ac385b5225ae","maintainability",{"articleCount":161,"color":8,"createdAt":366,"id":367,"name":368,"slug":368,"updatedAt":366},"2026-05-10T16:00:18.613Z","019e129e-34b4-7107-acfb-27f6b8604eb0","management",{"articleCount":161,"color":8,"createdAt":370,"id":371,"name":372,"slug":372,"updatedAt":370},"2026-06-27T12:00:13.065Z","019f08f3-a508-7334-aa03-12b281698ea8","markdown",{"articleCount":161,"color":8,"createdAt":374,"id":375,"name":376,"slug":376,"updatedAt":374},"2026-07-28T12:00:27.878Z","019fa899-02e6-758e-bdcb-8a4a923507df","mcp",{"articleCount":161,"color":8,"createdAt":378,"id":379,"name":380,"slug":380,"updatedAt":378},"2026-06-17T12:00:12.439Z","019ed574-0a96-7485-9c90-522e4be3e092","meta-tags",{"articleCount":167,"color":8,"createdAt":382,"id":383,"name":384,"slug":384,"updatedAt":382},"2026-05-26T08:00:14.598Z","019e634c-7105-7073-bc86-c32fa0a4401b","microfrontends",{"articleCount":167,"color":8,"createdAt":386,"id":387,"name":388,"slug":388,"updatedAt":386},"2026-05-19T16:00:13.516Z","019e40f7-5ccc-729c-92ba-bcc0aad8a16f","microvm",{"articleCount":167,"color":8,"createdAt":390,"id":391,"name":392,"slug":392,"updatedAt":390},"2026-05-05T00:00:19.025Z","019df56f-8250-768c-a659-b9f524ff902c","multi-tenant",{"articleCount":167,"color":8,"createdAt":394,"id":395,"name":396,"slug":396,"updatedAt":394},"2026-05-08T04:00:17.998Z","019e05be-4c4d-759e-a51e-8ac760f82f6d","nextjs",{"articleCount":161,"color":8,"createdAt":398,"id":137,"name":138,"slug":138,"updatedAt":398},"2026-04-17T19:35:19.293Z",{"articleCount":400,"color":8,"createdAt":401,"id":98,"name":99,"slug":99,"updatedAt":401},27,"2026-04-08T06:47:55.381Z",{"articleCount":161,"color":8,"createdAt":403,"id":404,"name":405,"slug":405,"updatedAt":403},"2026-04-30T04:19:02.038Z","019ddc9c-9315-735e-a7e8-8424790e8859","nuxt-ui",{"articleCount":161,"color":8,"createdAt":407,"id":408,"name":409,"slug":409,"updatedAt":407},"2026-06-08T12:00:16.030Z","019ea71a-dc9d-7607-9cfa-df0f31ab5876","observability",{"articleCount":167,"color":8,"createdAt":411,"id":412,"name":413,"slug":413,"updatedAt":411},"2026-05-04T20:00:20.503Z","019df493-ce17-76ed-bd80-2a3914e0f409","open-source",{"articleCount":161,"color":8,"createdAt":415,"id":416,"name":417,"slug":417,"updatedAt":415},"2026-06-08T12:00:16.022Z","019ea71a-dc95-72b8-a7e3-70f9e2ac3710","opentelemetry",{"articleCount":188,"color":8,"createdAt":419,"id":420,"name":421,"slug":421,"updatedAt":419},"2026-05-18T12:00:14.389Z","019e3af5-4a35-705c-8ab1-4404b653e0e8","optimization",{"articleCount":161,"color":8,"createdAt":423,"id":424,"name":425,"slug":425,"updatedAt":423},"2026-05-28T20:00:13.016Z","019e702c-50d7-74eb-8849-8b1cebcf411e","orchestration",{"articleCount":427,"color":8,"createdAt":428,"id":80,"name":81,"slug":81,"updatedAt":428},16,"2026-04-08T06:47:42.920Z",{"articleCount":161,"color":8,"createdAt":430,"id":431,"name":432,"slug":432,"updatedAt":430},"2026-06-10T13:53:29.575Z","019eb1cf-3de7-7326-87d9-c55ad1c0fa39","personalization",{"articleCount":161,"color":8,"createdAt":434,"id":435,"name":436,"slug":436,"updatedAt":434},"2026-04-17T19:35:19.263Z","019d9cf0-c9de-70b2-9057-76d771c3379e","pinia",{"articleCount":167,"color":8,"createdAt":438,"id":439,"name":440,"slug":440,"updatedAt":438},"2026-05-02T00:00:23.112Z","019de5fc-7e47-7075-8aeb-9e90f7689f57","postgres",{"articleCount":167,"color":8,"createdAt":442,"id":443,"name":444,"slug":444,"updatedAt":442},"2026-05-19T20:00:14.575Z","019e41d3-1aee-70c8-a07c-cec870115d14","pricing",{"articleCount":161,"color":8,"createdAt":446,"id":447,"name":448,"slug":448,"updatedAt":446},"2026-05-10T16:00:18.603Z","019e129e-34aa-723b-a568-45737915c7bf","qa",{"articleCount":161,"color":8,"createdAt":450,"id":451,"name":452,"slug":452,"updatedAt":450},"2026-05-08T04:00:18.013Z","019e05be-4c5c-75ad-8df5-602b3db57983","react",{"articleCount":188,"color":8,"createdAt":454,"id":455,"name":456,"slug":456,"updatedAt":454},"2026-04-20T12:00:11.653Z","019daac3-2f85-7393-b891-9da3891267ca","reactivity",{"articleCount":188,"color":8,"createdAt":458,"id":159,"name":160,"slug":160,"updatedAt":458},"2026-04-17T20:27:50.585Z",{"articleCount":167,"color":8,"createdAt":460,"id":461,"name":462,"slug":462,"updatedAt":460},"2026-05-26T08:00:14.619Z","019e634c-711a-728f-9b63-20f2c8b37ccb","routing",{"articleCount":167,"color":8,"createdAt":464,"id":465,"name":466,"slug":466,"updatedAt":464},"2026-05-19T16:00:13.509Z","019e40f7-5cc4-72e1-8f8b-692dd29fc716","sandbox",{"articleCount":161,"color":8,"createdAt":468,"id":469,"name":470,"slug":470,"updatedAt":468},"2026-05-14T12:00:21.362Z","019e265b-f571-7677-a537-2f7e96a490bf","scalability",{"articleCount":167,"color":8,"createdAt":472,"id":473,"name":474,"slug":474,"updatedAt":472},"2026-05-04T20:00:20.521Z","019df493-ce28-75e9-93d5-13251407a27b","scanning",{"articleCount":188,"color":8,"createdAt":476,"id":477,"name":478,"slug":478,"updatedAt":476},"2026-04-27T08:00:12.420Z","019dcdf3-fc84-73aa-a0be-6b7196c5a2e9","security",{"articleCount":161,"color":8,"createdAt":480,"id":481,"name":482,"slug":482,"updatedAt":480},"2026-06-17T12:00:12.428Z","019ed574-0a8b-7566-976f-8c281c820ed0","seo",{"articleCount":161,"color":8,"createdAt":484,"id":485,"name":486,"slug":486,"updatedAt":484},"2026-06-17T12:00:12.433Z","019ed574-0a91-74d8-b806-56681bb4b477","sitemap",{"articleCount":161,"color":8,"createdAt":488,"id":489,"name":490,"slug":490,"updatedAt":488},"2026-07-18T16:00:27.576Z","019f75f5-23b8-72eb-a2bf-79dd1fed3863","software-development",{"articleCount":161,"color":8,"createdAt":492,"id":140,"name":141,"slug":141,"updatedAt":492},"2026-04-17T19:35:19.297Z",{"articleCount":209,"color":8,"createdAt":494,"id":495,"name":496,"slug":496,"updatedAt":494},"2026-06-03T16:00:12.620Z","019e8e36-bd4b-740d-b23a-81858b24025b","ssg",{"articleCount":498,"color":8,"createdAt":499,"id":500,"name":501,"slug":501,"updatedAt":499},9,"2026-04-08T06:47:43.020Z","019d6bd8-ca89-735e-a52a-ee53a80a77a9","ssr",{"articleCount":167,"color":8,"createdAt":503,"id":504,"name":505,"slug":505,"updatedAt":503},"2026-04-30T04:19:02.613Z","019ddc9c-9555-7544-a3e3-0605d2c1ea82","startup",{"articleCount":188,"color":8,"createdAt":507,"id":508,"name":509,"slug":509,"updatedAt":507},"2026-04-18T12:00:12.027Z","019da076-78fb-706b-9a4c-cee0c989cfff","state-management",{"articleCount":167,"color":8,"createdAt":511,"id":512,"name":513,"slug":513,"updatedAt":511},"2026-06-06T00:00:11.717Z","019e9a3a-e5c5-76d3-86e4-576c151a87b3","storage",{"articleCount":161,"color":8,"createdAt":515,"id":516,"name":517,"slug":517,"updatedAt":515},"2026-06-17T12:00:12.446Z","019ed574-0a9e-7712-8bc5-a0102787fe48","structured-data",{"articleCount":161,"color":8,"createdAt":519,"id":520,"name":521,"slug":521,"updatedAt":519},"2026-05-10T16:00:18.597Z","019e129e-34a4-771a-844d-09a7edefcd64","tdd",{"articleCount":167,"color":8,"createdAt":523,"id":524,"name":525,"slug":525,"updatedAt":523},"2026-06-04T20:00:17.351Z","019e9438-e5c6-7681-8704-897c7b499eb4","terms-of-service",{"articleCount":209,"color":8,"createdAt":527,"id":528,"name":529,"slug":529,"updatedAt":527},"2026-04-09T06:11:45.799Z","019d70de-3c07-76bf-9688-9619e1b0d427","testing",{"articleCount":161,"color":8,"createdAt":531,"id":532,"name":533,"slug":533,"updatedAt":531},"2026-06-16T16:11:31.088Z","019ed133-c390-75bf-8f1a-5c57cd221f14","threejs",{"articleCount":167,"color":8,"createdAt":535,"id":536,"name":537,"slug":537,"updatedAt":535},"2026-05-02T00:00:23.130Z","019de5fc-7e59-7426-8d46-e79e4bcf0d56","tls",{"articleCount":539,"color":8,"createdAt":540,"id":541,"name":542,"slug":542,"updatedAt":540},10,"2026-04-08T06:47:55.591Z","019d6bd8-fba5-743f-8f9f-4e23c0b31581","tutorial",{"articleCount":188,"color":8,"createdAt":544,"id":545,"name":546,"slug":546,"updatedAt":544},"2026-04-08T06:47:56.778Z","019d6bd9-0049-72ba-8cfa-139b1c1b249d","typescript",{"articleCount":548,"color":8,"createdAt":499,"id":549,"name":550,"slug":550,"updatedAt":499},5,"019d6bd8-ca8b-709c-b9a5-77d4910da162","ui-components",{"articleCount":161,"color":8,"createdAt":552,"id":553,"name":554,"slug":554,"updatedAt":552},"2026-05-11T12:00:19.969Z","019e16e8-dc00-714d-911a-a5bf39238587","user-experience",{"articleCount":161,"color":8,"createdAt":556,"id":557,"name":558,"slug":558,"updatedAt":556},"2026-05-18T12:00:14.379Z","019e3af5-4a29-759a-81b0-b6d502b2449e","v-memo",{"articleCount":167,"color":8,"createdAt":560,"id":561,"name":562,"slug":562,"updatedAt":560},"2026-04-30T04:19:02.228Z","019ddc9c-93d3-763e-ad3c-d3ad78642de7","vercel",{"articleCount":161,"color":8,"createdAt":564,"id":565,"name":566,"slug":566,"updatedAt":564},"2026-07-13T08:00:18.274Z","019f5a7d-bf61-746b-a44b-5c0a16ff57d3","video",{"articleCount":188,"color":8,"createdAt":568,"id":134,"name":135,"slug":135,"updatedAt":568},"2026-04-17T19:35:19.289Z",{"articleCount":161,"color":8,"createdAt":570,"id":571,"name":572,"slug":572,"updatedAt":570},"2026-04-25T18:08:02.132Z","019dc5d3-c054-70e2-bca4-08e2a2b9a096","vitest",{"articleCount":161,"color":8,"createdAt":574,"id":575,"name":576,"slug":576,"updatedAt":574},"2026-06-27T12:00:13.107Z","019f08f3-a532-7049-a02c-c17a4fd99306","vscode",{"articleCount":578,"color":8,"createdAt":579,"id":32,"name":33,"slug":33,"updatedAt":579},32,"2026-04-08T06:47:42.793Z",{"articleCount":161,"color":8,"createdAt":581,"id":582,"name":583,"slug":583,"updatedAt":581},"2026-04-18T12:00:12.007Z","019da076-78e6-76bd-b0d4-4e0597d36378","vue-router",{"articleCount":167,"color":8,"createdAt":585,"id":586,"name":587,"slug":587,"updatedAt":585},"2026-05-04T20:00:20.510Z","019df493-ce1d-7039-811a-ed57bf081d26","vulnerability",{"articleCount":589,"color":8,"createdAt":590,"id":591,"name":592,"slug":592,"updatedAt":590},3,"2026-05-05T12:00:17.078Z","019df802-a8b6-74d2-a0cd-b0509cf502fa","web-development",{"articleCount":589,"color":8,"createdAt":594,"id":595,"name":596,"slug":596,"updatedAt":594},"2026-05-10T16:00:18.576Z","019e129e-3490-7739-a218-5454a8c15d6e","workflow"]