qdanik/react-clean-architecture-boilerplate
54.6
Adequate · 21 September 2026
3k
lines of production code
TypeScript
with JavaScript
4
measurements over time
What this system is
Features
Added Docker configuration for serving web and mobile frontends via Nginx
The project now includes Docker configuration files to containerize the application using Nginx. A new Dockerfile builds an Nginx image, while docker-compose.yml defines services for an Nginx proxy and the main Nginx container, which serves the web application at fe.loc and the mobile application at m.fe.loc. Separate Nginx configuration files (web.conf and mobile.conf) are provided to route traffic to the respective frontend build directories (dist/web and dist/mobile). Additionally, a .dockerignore file and an nginx.conf template have been added to the docker directory to support this setup.
docker · high confidence
Added Jest configuration and test setup files
The project now includes a dedicated Jest configuration (\setup/jest/config.ts\) that sets up test environments, coverage thresholds, and file transformations. Additionally, new files have been added to support testing infrastructure: \setup/jest/plugins/fileTransformer.js\ handles static asset imports, \setup/jest/setup-after-env.ts\ imports necessary testing libraries like \@testing-library/jest-dom\ and \jest-styled-components\, and \setup/jest/setup.ts\ exports React Testing Library utilities. These changes establish the foundational setup for running tests with TypeScript and JSX support.
setup/jest · high confidence
Added authentication domain entities
Introduced new domain entities for the authentication module: AuthFormFields to represent login and password inputs, and AuthToken to manage access tokens, token types, refresh tokens, and expiration times.
src/domain/auth/entities · high confidence
Added authentication token data transfer object
Introduced a new AuthTokenDto class in the data layer to map raw authentication responses (containing access\_token, token\_type, refresh\_token, and expires\_in) into a domain AuthToken entity. This change adds the necessary DTOs and index exports to support the new auth page and entity structure.
src/data/dto · medium confidence
Added core dependency injection bindings
The application's core module now registers key service bindings for logging, state management, storage, HTTP client, form handling, and internationalization. This establishes the foundational infrastructure for these services within the application's dependency injection container.
src/containers/core · high confidence
Added date formatting utilities
Introduced a new date domain module that provides a DateEntity class for formatting dates using the date-fns library. The module exports a DateFormats enum defining standard date and datetime patterns, allowing users to easily format Date objects into human-readable strings.
src/domain/date · high confidence
Added notification and error handling domains
Introduced new domain modules for error handling and notifications. The error domain provides an \Error\ entity and \ErrorService\ to manage HTTP error states and trigger notifications. The notification domain introduces a \Notification\ entity and \NotificationService\ that supports success, error, info, and warn message types, with automatic dismissal after a default delay. These changes enable the application to display user-facing alerts and handle errors consistently.
src/domain/notification · high confidence
Added notification data access layer
Introduced a new data access object (DAO) for notifications, including the interface, implementation, and dependency injection container registration. This provides a standardized way to list, save, and remove notification entities via the MobX store.
src/data/dao · high confidence
Added plopjs generators for domain, entities, services, and repositories
The setup/plopjs directory now includes a complete scaffolding system for generating domain-layer code. This adds four new plop generators: 'domain' (creates the domain index), 'entity' (generates entity classes and DTOs), 'service' (creates service interfaces and implementations), and 'repo' (produces repository interfaces, implementations, and container bindings). These generators use Handlebars templates to produce TypeScript files with dependency injection and HTTP client integration.
setup/plopjs · high confidence
Added token-based authentication for HTTP client
The application now automatically attaches a Bearer access token to outgoing HTTP requests via a new TokenAxiosAdapter. This adapter intercepts requests to inject the Authorization header using a stored access token, ensuring authenticated API calls are properly authorized.
src/data/repositories/auth/token-axios · high confidence
Introduce auth domain structure and type definitions
The auth domain now exposes a structured module with a new \auth.types.ts\ file defining \AuthTokens\ and an \index.ts\ that re-exports entities, services, and types. This change establishes the public API for the auth domain, allowing consumers to import auth-related types and services in a single location.
src/domain/auth · medium confidence
Introduce domain-level route management and service layer
A new route domain is introduced, providing a structured way to manage application routes and navigation. This includes a \Route\ entity class that handles URL construction and safe URL generation, along with a set of predefined route constants (e.g., \/sign-in\, \/users/list\). Additionally, a \RouteService\ interface and its implementation are added, registering the service in the application container to handle route-related logic such as redirection to sign-in.
src/domain/route · high confidence
Introduces the Auth module with a repository pattern for authentication
The authentication capability is now structured around a repository interface (AuthRepo) and its implementation (AuthRepoImpl), which handles login requests via an injected HttpClient and Logger. The module includes a dependency injection container setup to bind the repository, and the response types have been simplified to a single Login interface, removing the previous OAuth and Axios-specific response structures.
src/data/repositories/auth · high confidence
New Vite build configuration and environment setup
The Vite build system has been restructured with a new configuration in the setup/vite directory. This includes environment variable templates for mobile and web applications across dev, stage, and prod environments, along with a SWC configuration for faster compilation. The build process now supports both web and mobile platforms, utilizing plugins for React (via @vitejs/plugin-react-swc), HTML injection, and asset compression. Additionally, the setup includes server proxy configurations and TypeScript path resolution, enabling a more robust and scalable development and build experience.
setup/vite · high confidence
Removals
Removal of common UI components and settings templates
The common UI component library has been removed, specifically deleting the Box, Button, Form (including FormButton, helpers, and types), and ThemeSwitcher components. Additionally, the Settings module's Theme presenter and the project's main HTML template (templates/index.html) have been deleted, indicating a significant restructuring or simplification of the application's UI and entry point.
src/components, src/presentation/modules/Settings, templates · high confidence
Behavioural changes
Added API endpoint definitions for authentication and user settings
A new endpoints configuration file was introduced to define the structure of API routes, specifically including a login endpoint and a user endpoint with nested settings, establishing the data layer for the authentication module.
src/data/repositories · high confidence
Added git commit message validation and SVG component transformation
Developers will now see their commit messages validated against a conventional commit format before allowing the commit to proceed, and SVG files can be imported as React components or URLs via a new Vite plugin that transforms them using @svgr.
setup/husky, setup/vite/plugins/react-svg · medium confidence
Added localized translation files for mobile and web platforms
New translation files have been added for English and Russian, each containing separate entries for mobile and web interfaces. This allows the application to display distinct UI text for different platforms, such as 'Sign In \[Mobile\]' versus 'Sign In \[WEB\]' in English, and specific Russian translations for login and welcome messages.
public · medium confidence
Introduced new authentication service implementation and dependency injection wiring
The authentication module now includes a concrete \AuthServiceImpl\ that handles user login by delegating to an \AuthRepo\. This implementation is bound to the \AuthService\ interface via a new container configuration (\auth.service.container.ts\), enabling the application to inject and use the new authentication logic through a standardized interface.
src/domain/auth/services · high confidence
Migrated ESLint configuration to the new flat config format
The project's ESLint configuration has been migrated from the legacy \.eslintrc\ JSON format to the new flat config format (\eslint.config.js\). This change updates how linting rules, plugins, and parser settings are defined, which may affect how developers configure or extend linting rules in the future.
(repo-wide) · high confidence
Redesigned presentation layer with new component architecture
The presentation layer has been restructured to support a new modular architecture. The old \App\ component and legacy \SignIn\ page were removed and replaced with a new \App\ component that integrates an \IoC\ (Inversion of Control) provider for dependency injection. A new \Auth\ module was added, featuring a \Form\ component that wraps \react-hook-form\ and provides a consistent interface for form state, validation, and submission. Shared utilities were introduced, including an \ErrorBoundary\ component, an \i18n\ hook for localization, and a \ProtectedRoute\ component for access control. The routing system was updated to use \react-router-dom\ v6 syntax, and common UI elements like \Box\ and \Button\ were refactored to align with the new structure.
src/presentation · high confidence
Refactored core infrastructure with new adapter and storage abstractions
The core module has been restructured to introduce a formalized adapter pattern for HTTP, storage, and internationalization. New implementations include \AxiosAdapter\ for HTTP requests, \BrowserCookieAdapter\ and \LocalStorageAdapter\ for storage, and \I18nextAdapter\ for localization. These adapters implement shared interfaces (\HttpClient\, \Storage\, \I18n\) and are registered via the \inversify\ dependency injection container. The previous ad-hoc configuration files (\env.ts\, \url/\) and legacy API classes (\AuthApi\, \RefreshTokenApi\) have been removed in favor of this new modular architecture.
src/core · high confidence
Removed legacy Webpack configuration and build utilities
The project's Webpack build configuration has been removed. This includes the main config file, environment-specific build scripts (development and production), and all associated utility modules (assets, defines, dev/prod HTML templates, dev server, resolve, and uglification). As a result, the application no longer uses Webpack for bundling or optimization.
webpack · high confidence
Dependencies
Upgrade project dependencies and switch build tooling to Vite
The project's dependency graph has been significantly updated. Key library versions have been upgraded, including React 17 to 18.3.1, MobX 6.1.5 to 6.13.0, and styled-components 5.2.1 to 6.1.11. Additionally, the build system has been migrated from Webpack to Vite 5.3.3, introducing new Vite plugins and dev dependencies while removing older Webpack-related packages. The project also now requires Node.js version 20 or higher.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 54 → 55 (+0.6)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 84 → 79 (-5.6)
- Architecture 83 → 70 (-13.3)
- Maturity 62 → 65 (+2.8)
- Readiness 36 → 38 (+1.6)
- Security 64 → 79 (+14.7)
Resolved (48)
- Change coupling: build.ts ↔ plugins.ts (setup/vite/build.ts)
- Coverage not included — suite not readable by the collector
- Critical CVE: [GHSA redacted] (package-lock.json)
- Critical CVE: [GHSA redacted] (package-lock.json)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- …and 28 more
New (81)
- Coverage not measured — JavaScript/TypeScript suite
- Critical CVE: [GHSA redacted] (package-lock.json)
- Critical CVE: [GHSA redacted] (package-lock.json)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- …and 61 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
qdanik/react-clean-architecture-boilerplate was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 70de87c89d0f5c4ab7e976a8767a454d7681c712 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.