# Architecture

```text
Telegram User
  -> apps/bot
  -> packages/core
  -> packages/provider-adapters
      -> DexScreener
      -> Trade Executor optional
      -> GitHub Models optional

Admin/API Client
  -> apps/api
  -> same core/provider packages

apps/worker
  -> Redis BullMQ queues
  -> scanner, analysis, alert scan jobs
```

Core package owns domain logic: scoring, filtering, signal generation, validation, and Telegram formatting.

Provider adapters own external boundaries: DexScreener HTTP API, trade executor HTTP API, and AI review provider.

Live trading is intentionally separated behind `TRADE_EXECUTOR_URL` so wallet custody and transaction signing can be audited independently.
