InternalADRs
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.
Status
Accepted
Context
The core package is the foundation. If it depends on environment-specific libraries (TanStack Query, Node APIs, SQLite drivers), the whole ecosystem becomes coupled and less reusable.
Decision
@rippledb/core must:
- contain only pure logic and types
- have no dependency on UI libraries
- have no dependency on runtime-specific APIs (Node, DOM)
- have no dependency on database drivers
Alternatives Considered
- Core includes adapters and integrations
- Core includes a default SQLite implementation
Consequences
- Maximum portability
- Smaller surface area
- Adapters live in separate packages
ADR-0014: Monorepo Package Structure and Layering
Lock in package boundaries so core stays runtime/UI agnostic while optional layers provide great DX.
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.