ESLint plugin that enforces architectural boundaries between code elements in JavaScript and TypeScript projects.
ESLint Plugin Boundaries is an ESLint plugin that enforces architectural boundaries in JavaScript and TypeScript projects. It helps developers define architectural layers and dependency rules, then automatically checks imports to ensure they comply with the defined architecture, preventing violations that lead to messy codebases.
JavaScript and TypeScript developers working on medium to large projects who need to maintain clean architecture, especially in monorepos, modular applications, or projects following layered patterns like MVC.
Developers choose this plugin because it provides automated, real-time enforcement of architectural rules directly within ESLint, eliminating manual reviews and preventing architectural decay as projects scale.
Eslint plugin checking architecture boundaries between elements
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows defining custom elements and dependency rules to match project architecture, as shown in the README example where controllers can only import models and views.
Adapts to various structures like monorepos and layered patterns with configurable element patterns, supporting any organizational scheme.
Provides immediate ESLint errors during development when imports violate boundaries, preventing architectural drift early in the workflow.
Fully compatible with TypeScript projects, ensuring boundary enforcement works seamlessly in typed codebases without extra setup.
Requires detailed upfront setup of elements and rules, which can be time-consuming and error-prone for complex or large codebases.
Only checks static import statements, missing dynamic imports or runtime dependencies that could violate architectural boundaries.
Full documentation is hosted on a separate website (JS Boundaries), which may be less accessible or could become outdated if not maintained alongside the code.