Real Decision

Domain Events

How modules communicate without turning the platform into a dependency graph.

Problem

Business modules need to react to invoices, recurring tasks, privacy requests and workspace activity without becoming tightly coupled to each other's internal implementations.

Decision

Introduced durable domain events as an integration mechanism between modules, allowing new workflows to be added without changing existing services or expanding direct service dependencies.

Why Not

Connect modules through direct synchronous calls everywhere.

Share internal domain logic across modules to avoid integration contracts.