# btcdata Bitcoin data backend service. Fetches BTC prices from Binance (WebSocket) and Kraken (HTTP polling), stores them in PostgreSQL, and exposes a JSON API with Server-Sent Events for live price streaming. ## API | Endpoint | Description | |---|---| | `GET /api/price/stream` | SSE stream — emits `price-update` events with JSON `{price, prev_price, recorded_at}` | | `GET /api/price/latest` | Latest price as JSON | | `GET /api/health` | Health check | ## Quick Start ```bash # Local dev (requires PostgreSQL) cp .env.example .env # edit JDBC_URL make run # starts on port 4100 # Docker docker compose up -d # starts on port 4101 ``` ## Environment Variables | Variable | Default | Description | |---|---|---| | `BTCDATA_PORT` | `4100` | HTTP server port | | `JDBC_URL` | — | PostgreSQL connection string | | `CORS_ORIGIN` | `*` | Allowed origin for CORS headers | ## Data Sources - **Binance** — WebSocket trade stream (`btcusdt@trade`), throttled to 5s writes - **Kraken hourly** — OHLC candles polled at HH:01:00 UTC - **Kraken daily** — OHLC candles polled at 00:01:00 UTC ## Tech Stack Clojure · Kit · Undertow · Reitit · PostgreSQL · conman · Migratus