Commit Graph
12 Commits
Author SHA1 Message Date
matitos 2a88f55689 Make the API token fully optional
CI/CD / backend (pull_request) Successful in 5m36s
CI/CD / frontend (pull_request) Successful in 5m12s
CI/CD / build (pull_request) Skipped
CI/CD / deploy (pull_request) Skipped
CI/CD / cleanup (pull_request) Skipped
The deploy job hard-failed without CRYPTO_API_TOKEN, and /api/ws (which skips
Basic auth) relied on that token. Drop the requirement: the app now works with
no token at all, matching the backend guard that was always a no-op when unset.
When a token is configured it still protects /api and /api/ws; when it is not,
/api/ws is as open as the rest of the API, which the Traefik Basic auth still
guards for everything else. Adds tests for the tokenless API and WebSocket.
2026-09-19 14:31:42 +00:00
matitos ba7a69c1ce Merge pull request 'Add a friendly GET /api/ws response' (#4) from chore/retrigger-deploy into main
CI/CD / backend (push) Successful in 5m24s
CI/CD / frontend (push) Successful in 5m14s
CI/CD / build (push) Successful in 54s
CI/CD / cleanup (push) Successful in 7s
CI/CD / deploy (push) Failing after 12s
2026-09-19 15:58:16 +02:00
matitos 386137c90e Add a friendly GET /api/ws response
CI/CD / backend (pull_request) Canceled after 0s
CI/CD / frontend (pull_request) Canceled after 0s
CI/CD / build (pull_request) Canceled after 0s
CI/CD / deploy (pull_request) Canceled after 0s
CI/CD / cleanup (pull_request) Canceled after 0s
A plain browser hit on the socket URL now returns a JSON hint instead of a
confusing 404/426. Companion to the Basic-auth bypass on /api/ws.
2026-09-19 13:41:55 +00:00
matitos d0b941e305 chore: trigger deploy after WS auth fix 2026-09-19 13:14:11 +00:00
matitos c9ee3e3aef Merge pull request 'Serve /api/ws without Basic auth so the live feed connects' (#3) from fix/websocket-basic-auth into main
CI/CD / backend (push) Canceled after 0s
CI/CD / frontend (push) Canceled after 0s
CI/CD / build (push) Canceled after 0s
CI/CD / deploy (push) Canceled after 0s
CI/CD / cleanup (push) Canceled after 0s
2026-09-19 15:11:16 +02:00
matitos 3e19612cc0 Serve /api/ws without Basic auth so the live feed connects
CI/CD / backend (pull_request) Successful in 5m58s
CI/CD / frontend (pull_request) Successful in 5m3s
CI/CD / build (pull_request) Skipped
CI/CD / deploy (pull_request) Skipped
CI/CD / cleanup (pull_request) Skipped
Browsers don't reliably replay Basic-auth credentials on a WebSocket upgrade,
so the dashboard's live feed was stuck on "reconnecting" (only the 5s REST
poll worked). Give /api/ws a higher-priority Traefik router that skips Basic
auth; the backend still requires API_TOKEN, which nginx injects on the
handshake. The deploy now fails closed unless CRYPTO_API_TOKEN is set.

Also: split the nginx /api/ws block so upgrade headers are only set there, and
add reconnect backoff (2s -> 30s) so a failing socket stops hammering.
2026-09-19 12:52:06 +00:00
matitos 97fbd5901e Merge pull request 'Bitcoin favicon, more strategies, default timeframe 5m' (#2) from feat/strategies-favicon-5m into main
CI/CD / backend (push) Successful in 5m23s
CI/CD / frontend (push) Successful in 5m3s
CI/CD / build (push) Successful in 16s
CI/CD / cleanup (push) Successful in 4s
CI/CD / deploy (push) Successful in 23s
2026-09-18 22:14:39 +02:00
matitos c500fb7572 Bitcoin favicon, more strategies, default timeframe 5m
CI/CD / backend (pull_request) Successful in 5m21s
CI/CD / frontend (pull_request) Successful in 5m4s
CI/CD / build (pull_request) Skipped
CI/CD / deploy (pull_request) Skipped
CI/CD / cleanup (pull_request) Skipped
- Add an SVG Bitcoin favicon and link it in index.html.
- New indicators: macd() and roc().
- Five new strategies: macd_trend, bollinger_reversion, donchian_breakout,
  ema_cross, momentum (plus the existing sma_cross, rsi_reversion).
- Default TIMEFRAME is now 5m (config, .env.example, compose, workflow, UI).
2026-09-18 20:03:30 +00:00
matitos 186a6949ee Merge pull request 'Risk controls, alerts, API token, more exchanges, presets' (#1) from feat/risk-notify-exchanges-presets into main
CI/CD / backend (push) Successful in 5m16s
CI/CD / frontend (push) Successful in 4m58s
CI/CD / build (push) Successful in 23s
CI/CD / cleanup (push) Successful in 4s
CI/CD / deploy (push) Successful in 23s
2026-09-18 21:39:05 +02:00
matitos 03dfa369e5 Risk controls, alerts, API token, more exchanges, presets
CI/CD / backend (pull_request) Successful in 6m18s
CI/CD / frontend (pull_request) Successful in 4m55s
CI/CD / build (pull_request) Skipped
CI/CD / deploy (pull_request) Skipped
CI/CD / cleanup (pull_request) Skipped
- RiskManager halts + flattens on max daily loss / drawdown, caps position
  size and trades per day; adds a manual kill switch (POST /api/bot/kill).
- Telegram and webhook notifications on trades, errors and halts.
- Optional API bearer token on /api, injected server-side by the frontend
  nginx so the browser never sees it.
- Kraken and Coinbase market data (public); Coinbase live broker. Live on an
  unsupported exchange now errors instead of silently falling back to paper.
- Strategy presets backed by the StrategyConfig table (CRUD API + UI).
- Idempotent additive-column migration so existing SQLite databases upgrade in
  place (fixes the new strategy_configs.name column).
2026-09-18 19:26:29 +00:00
matitos 9c3bee87ac Crypto trading bot: engine, brokers, backtester, dashboard, deploy
CI/CD / backend (push) Successful in 5m18s
CI/CD / frontend (push) Successful in 5m2s
CI/CD / build (push) Successful in 34s
CI/CD / cleanup (push) Successful in 6s
CI/CD / deploy (push) Successful in 22s
FastAPI backend with a single-strategy async engine, paper and Binance
brokers, pure-python indicators, a backtester that shares the engine's
portfolio math, and a Vue dashboard with a live WebSocket feed. Adds the
Gitea Actions CI/CD workflow that deploys to Traefik via docker_default.
2026-09-18 17:02:33 +00:00
matitos 98028248c2 Initial commit 2026-09-18 19:01:49 +02:00