# Plugin Architecture This directory contains the contracts and utilities that power Coop's pluggable infrastructure story. Adapters implement small TypeScript interfaces and are loaded dynamically at runtime, which keeps the core service independent from any particular warehouse or analytics vendor. The goals of this layout are: - Allow first-party adapters (Clickhouse, Postgres, etc.) to live alongside community-provided ones without touching core code - Make it trivial for deployers to publish and consume custom adapters via NPM - Keep the contracts minimal so the abstractions do not leak complex vendor-specific behaviour ## Directory Layout ``` server/plugins/ ├── analytics/ # Analytics logging/querying contracts │ ├── IAnalyticsAdapter.ts │ ├── types.ts │ └── examples/ ├── warehouse/ # OLTP warehouse interfaces │ ├── IWarehouseAdapter.ts │ ├── types.ts │ └── examples/ └── utils/ # Shared helper utilities for adapter authors ``` The `examples` folders intentionally ship tiny reference implementations (for instance a no-op adapter) so that authors can copy/paste a starting point.