InternalADRs
ADR-0016: store-* and db-* Packages Own Backend/Runtime Dependencies
Runtime-specific deps (SQLite, Postgres, etc.) must live outside core/client/server in store-* and db-* packages.
Status
Accepted
Context
Concrete implementations require dependencies (SQLite driver, Postgres client, etc.). We want to avoid pulling these into the core dependency tree.
Decision
All runtime-/backend-specific dependencies live in persistence packages, for example:
@rippledb/store-sqlite@rippledb/db-postgres
Core/orchestration packages depend only on interfaces, never on implementations:
@rippledb/core,@rippledb/client,@rippledb/servermust not depend on anystore-*ordb-*package.
Alternatives Considered
- A single
@rippledb/adapterspackage - Core selecting implementations via optional dependencies
Consequences
- Users install only what they need
- Dependency tree stays clean
- Clear responsibility separation
ADR-0015: Core Package Must Be Pure and Dependency-Minimal
@rippledb/core contains only pure logic/types and must not depend on UI, runtime APIs, or DB drivers.
ADR-0017: UI Integrations Live in bind-* Packages
Cache invalidation wiring is UI-specific; ship it as optional bind-* packages (e.g. bind-tanstack-query).