magnusandClaude Opus 4.6 3e5fd490b4 Move HTML rendering to btcprice, send raw JSON over both WebSockets
Price and Strike WebSockets now emit JSON instead of HTML fragments.
Added Strike WebSocket endpoint and wired strike/ticker into API routes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 10:18:48 +01:00
2026-03-06 09:17:29 +01:00

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 WebSocket for live price streaming.

API

Endpoint Description
GET /api/price/ws WebSocket — sends HTML fragments with live price updates (HTMX-compatible)
GET /api/price/latest Latest price as JSON
GET /api/health Health check

Quick Start

# 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

S
Description
Bitcoin data backend — BTC price API with WebSocket streaming
Readme
220 KiB
Languages
Clojure 97.5%
Shell 1.3%
Dockerfile 0.8%
Makefile 0.4%