RippleDB
RippleDB
InternalADRs

ADR-0019: Strict Dependency Graph Between Packages

Enforce a strict package dependency graph to prevent architectural erosion.

Status

Accepted

Context

Even with multiple packages, accidental imports can break layering and portability.

Decision

We enforce the following dependency graph:

  • @rippledb/core
    • depends on nothing (or only tiny pure deps)
  • @rippledb/client and @rippledb/server
    • depend on @rippledb/core
  • @rippledb/store-*
    • depend on @rippledb/core (and optionally @rippledb/client interfaces)
  • @rippledb/db-*
    • depend on @rippledb/core (and optionally @rippledb/server interfaces)
  • @rippledb/bind-*
    • depend on @rippledb/core (for types like DbEvent) and on their UI library
    • must not be required by core/client/server

Alternatives Considered

  • Free-form dependency structure
  • Everything depends on everything

Consequences

  • Prevents architectural erosion
  • Enables use in many environments
  • Requires linting or workspace constraints (recommended)

On this page