module-federation/aegis-app
45.9
Weak · 21 September 2026
164.2k
lines of production code
JavaScript
primary language
4
measurements over time
What this system is
This system is a Node.js-based microservices application that manages customer and order domains with a focus on event-driven architecture. It integrates WebAssembly for computation, utilizes Apache Kafka for messaging, and supports remote module federation via Webpack. The codebase provides adapters for various data sources and services, including payment, shipping, and inventory management, while also exposing real-time updates via WebSocket.
How it got here
2020 — Event-driven architecture and Node.js migration
7 changes.
This period focused on modernizing the project's infrastructure by migrating to Node.js 16 and adopting an event-driven architecture using WebSockets and Kafka. The team implemented new domain services and adapters for order, payment, and shipping, while also enabling WebAssembly support and remote module imports via HTTP.
2021–2022 — Domain model and infrastructure expansion
11 changes.
This period focused on expanding the application's domain layer by introducing comprehensive model specifications and data source adapters for customer, order, and inventory entities. Concurrently, the codebase integrated new infrastructure scripts for Kafka and WebAssembly modules, while establishing a robust testing suite with mock services and configuration files.
Features
Add host-config for remote module federation and WebAssembly support
The host-config directory now includes a comprehensive setup for loading remote modules and WebAssembly files at runtime. This includes a new fetch-remotes.js utility to download remote entry files from GitHub or HTTP sources, a remote-entries-type.js for type definitions, and a remote-entries directory containing configuration files for various remote modules (e.g., 'bli', 'customer', 'wasm'). Additionally, custom webpack plugins (NodeTemplatePlugin, ReadFileChunkLoadingRuntimeModule) and a webpack.config.local.js are added to support Node.js-based module federation and async chunk loading.
host-config · high confidence
Added Kafka infrastructure scripts
Added shell scripts to manage the local Kafka development environment. The new scripts allow users to create and delete four specific topics (orderChannel, shippingChannel, inventoryChannel, broadcastChannel) and to start or stop the local Zookeeper and Kafka servers.
scripts · high confidence
Added Node.js template and HTTP-based chunk loading for remote module imports
A new Node.js build template has been introduced, enabling the bundler to target Node.js environments with asynchronous chunk loading. This change adds a dedicated entry point (webpack/http-node.js) that configures the Node template and target plugins. The implementation includes a custom chunk loading runtime module that supports fetching remote modules via HTTP requests, with specific logic to handle GitHub-based URLs by integrating an Octokit client for API interactions. This allows users to import remote modules over HTTP rather than relying solely on the filesystem, facilitating remote model and datasource imports.
webpack · high confidence
Added WebAssembly module with Fibonacci computation and event handling
Introduced a new WebAssembly component built with AssemblyScript, providing a 'runFibonacci' function that calculates the Fibonacci sequence and returns results including the input number, computed result, and execution time. The module also exposes utility functions for model management, port configuration, and event emission, along with an HTML page and test suite to verify the basic 'add' functionality.
src/wasm · high confidence
Added customer and order domain models to the compiled bundle
The compiled output now includes new JavaScript modules for customer and order domain models. The customer model provides a factory for creating customer objects and includes logic to validate if a customer can be deleted based on open orders. The order model exports numerous functions for managing order states, such as approval, cancellation, payment handling, and total calculation. These changes indicate the application now bundles logic for managing customer and order data structures and their associated business rules.
dist · high confidence
Added domain logic for payload checking, customer management, and order processing
The cache was updated to include new domain modules: a payload validation function, a customer factory with deletion and Fibonacci calculation logic, and extensive order processing utilities including status management, item validation, and shipping handling.
cache · high confidence
Domain model specifications and port configurations for core services
The domain layer now includes comprehensive configuration files for multiple services, including Account, Customer, Order, Inventory, and User, each defining their model specifications, validation rules, and port definitions. New model specifications have been added for Digital Asset Management (DAM), MLOps, Query Engine, and Ticket Master, each with their respective inbound and outbound port configurations. The domain index exports all model specifications, and the ports.js file centralizes the export of model functions for various services. Additionally, utility functions for binding adapters and checking payloads have been introduced to support these domain models.
src/domain · high confidence
Introduce event-driven architecture with WebSocket support
The application now supports an event-driven communication model via a new \EventDispatcher\ and \ServiceRegistry\ that publish and subscribe to events (e.g., \shipOrder\, \trackShipment\). This is exposed to the frontend via a new WebSocket server that forwards published events to connected clients. The \index.js\ entry point has been refactored to initialize the event system, handle WebSocket upgrades, and manage session-based connections.
src · high confidence
Introduce new domain services and event bus infrastructure
Added new service modules for address validation, event bus, event handling, federated client, order processing, payment, shipping, and todo management. The event bus and event service integrate with Kafka for message publishing and consumption. The order service now uses a REST adapter for remote or local operation. Payment service stubs for authorization, completion, and refund are added. Shipping service formats and parses event messages for order tracking and delivery verification. A WebSocket server for 'webswitch' connections is introduced, and the old 'publish-event' service is removed.
src/services · high confidence
New adapters for order, payment, shipping, and event handling
The src/adapters directory now includes new adapter modules for managing orders, payments, shipping, inventory, and event-based communication. Specifically, the codebase adds src/adapters/order-adapter.js (with REST and GraphQL implementations), src/adapters/payment-adapter.js (for authorization, completion, and refunding payments), src/adapters/shipping-adapter.js (for shipping, tracking, and delivery verification), src/adapters/inventory-adapter.js (for order picking), src/adapters/event-adapter.js (for subscribing to and publishing events), src/adapters/address-adapter.js (for address validation), src/adapters/dam-api.js (for digital asset management operations), src/adapters/service-locator.js (for DNS-based service discovery), and src/adapters/websocket-adapter.js (for WebSocket connections). The src/adapters/index.js file has been updated to export all these new modules, making them available for use throughout the application.
src/adapters · high confidence
New data source adapters for DynamoDB, MongoDB, and customer/order entities
Added new data source adapters for AWS DynamoDB, MongoDB, and specific entity types (customer, order) to support different storage backends. The DynamoDB adapter extends an in-memory base class to provide persistent storage with caching, while the MongoDB adapter adds archive functionality. Additionally, new adapters for customer and order data sources were introduced, each extending a base file or memory source to handle save operations. An index file exports the DynamoDB and MongoDB adapters.
src/adapters/datasources · high confidence
Restored Apache Kafka distribution files and scripts
The Apache Kafka distribution directory has been restored, including the Apache 2.0 license and NOTICE files, along with the full set of shell and batch scripts for managing Kafka components (such as the broker, console producers/consumers, Connect, and various admin tools). This change reinstates the standard Kafka distribution structure, allowing users to run and manage Kafka services on both Unix-like and Windows environments.
kafka · high confidence
Behavioural changes
Migrate to @module-federation/node and add WebAssembly support
The build system has been updated to use the \@module-federation/node\ package (specifically \UniversalFederationPlugin\) instead of the standard \webpack\ container plugin, changing the federation plugin name from \fedmonserv\ to \microservices\ and exposing new modules like \./models\, \./adapters\, and \./event-bus\. Additionally, the configuration now includes \asyncWebAssembly\ in the experiments and adds rules to handle \.py\ and \.wasm\ files, enabling WebAssembly and Python-based module loading in the build output.
(repo-wide) · high confidence
Test coverage
Added mock service implementations for testing; Added test configuration files for cache, customer, and order modules; Added unit tests for order, shipping, and event services; Added unit tests for the parseKeys mixin.
Dependencies
Upgrade to Node.js 16 and modernize project structure
The project has been upgraded to support Node.js 16, addressing compatibility issues with newer Node versions. The main \package.json\ has been renamed to \aegis-app\ and updated with a new set of dependencies including \@module-federation/node\, \fastify\, and \kafkajs\. Additionally, a new \host-config\ package was added to manage Webpack 5.0.0-beta.28, and a \src/wasm\ directory was introduced to support WebAssembly compilation using AssemblyScript. The \package-lock.json\ was regenerated to reflect these structural and dependency changes.
(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 42 → 46 (+3.4)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 60 → 61 (+1.1)
- Architecture 92 → 62 (-30.1)
- Maturity 40 → 40 (+0.0)
- Readiness 29 → 40 (+11.2)
- Security 58 → 66 (+8.5)
Resolved (69)
- Change coupling: address-adapter.js ↔ shipping-adapter.js (src/adapters/address-adapter.js)
- Change coupling: index.js ↔ user.js (src/domain/index.js)
- Change coupling: inventory-adapter.js ↔ shipping-adapter.js (src/adapters/inventory-adapter.js)
- Change coupling: order.js ↔ address-service.js (src/domain/models/order.js)
- Change coupling: order.js ↔ payment-service.js (src/domain/models/order.js)
- Change coupling: order.js ↔ service-registry.js (src/domain/models/order.js)
- Change coupling: order.js ↔ user.js (src/domain/models/order.js)
- Coverage not included — suite not readable by the collector
- Critical CVE: [GHSA redacted] (package-lock.json)
- Critical CVE: [GHSA redacted] (package-lock.json)
- Critical CVE: [GHSA redacted] (package-lock.json)
- Critical CVE: [GHSA redacted] (package-lock.json)
- 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
- FileTooLong: cache/main.js (cache/main.js)
- 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 49 more
New (93)
- Change coupling: customer.js ↔ mixins.js (src/domain/models/customer.js)
- Change coupling: event-adapter.js ↔ order.js (src/adapters/event-adapter.js)
- Coverage not measured — JavaScript/TypeScript suite
- Critical CVE: [GHSA redacted] (package-lock.json)
- Critical CVE: [GHSA redacted] (package-lock.json)
- Critical CVE: [GHSA redacted] (package-lock.json)
- Critical CVE: [GHSA redacted] (package-lock.json)
- Critical CVE: [GHSA redacted] (package-lock.json)
- Critical CVE: [GHSA redacted] (package-lock.json)
- Documentation: no contributor guidance (README.md)
- 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)
- …and 73 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
module-federation/aegis-app 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 944dcea8c1190814fb10730f02f6fb92fcadc405 — 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-fa71c66cabd8.