Add docker-compose, README, fix SSE dispatch
Use Undertow dispatch for SSE handler to avoid Ring adapter conflict. Add docker-compose.yml (port 4101 to coexist with local dev on 4100). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user