npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@legible-sync/example-eda

v1.3.1

Published

Event-Driven Architecture example with plugin-based modules

Readme

Event-Driven Architecture Example

This example demonstrates how to build an Event-Driven Architecture (EDA) system using LegibleSync with a plugin-based modular architecture.

Architecture Overview

The system is composed of independent plugins that communicate through events:

  • Users Plugin: User management and authentication
  • Products Plugin: Product catalog management
  • Orders Plugin: Order processing and lifecycle
  • Inventory Plugin: Stock management and alerts
  • Notifications Plugin: Multi-channel notifications
  • Analytics Plugin: Event tracking and reporting

Event Flow

User Registration → Welcome Email → Analytics Track
    ↓
Product Added → Inventory Update → Low Stock Alert
    ↓
Order Created → Inventory Deduct → Payment Process → Order Confirmed
    ↓
Notification Sent → Analytics Update

Plugin Structure

Each plugin follows the same structure:

plugin-name/
├── concepts/     # Business logic components
├── syncs/        # Event-driven rules
└── index.ts      # Plugin registration

Key EDA Patterns Demonstrated

1. Event Sourcing

  • All business events are captured as ActionRecords
  • Complete audit trail of system activity

2. CQRS (Command Query Responsibility Segregation)

  • Commands: Write operations (create, update, delete)
  • Queries: Read operations with filtering

3. Event-Driven Orchestration

  • Declarative sync rules define event flows
  • Automatic execution of business processes

4. Plugin Isolation

  • Each plugin is independently deployable
  • Loose coupling through event contracts

Running the Example

cd packages/example-eda
npm run dev

This will start the EDA system and demonstrate various event flows.

Testing

The example includes comprehensive test suites:

Unit Tests

# Run all unit tests
npm test

# Run specific test file
npm test -- EventBus.test.ts

# Run with coverage
npm run test:coverage

# Run tests in watch mode
npm run test:watch

Test Structure

  • Unit Tests (__tests__/unit/): Test individual components

    • PluginManager.test.ts: Plugin loading and management
    • EventBus.test.ts: Event publishing and subscription
    • concepts/User.test.ts: User concept business logic
  • Integration Tests (__tests__/integration/): Test complete workflows

    • ecommerce-flow.test.ts: End-to-end e-commerce scenarios

Test Coverage

The test suite covers:

  • ✅ Plugin loading and initialization
  • ✅ Event publishing and subscription
  • ✅ Business logic validation
  • ✅ Cross-plugin communication
  • ✅ Error handling
  • ✅ Async operation handling