A trading engine that learns. Powered by ML and local LLMs.
.
├── server/ # Rust (Actix-Web)
│ ├── Cargo.toml
│ ├── Dockerfile
│ └── src/
│ ├── main.rs # HttpServer entry
│ ├── config.rs # AppConfig, CORS
│ ├── state.rs # PgPool, cache, KuCoin client
│ ├── routes.rs
│ ├── handlers/user/auth.rs # EIP-191 auth endpoints
│ └── models/ # DTOs, AppError
│
├── react/ # Vite + React 19 + TS
│ ├── Dockerfile
│ ├── nginx.conf
│ ├── package.json
│ └── src/
│ ├── App.tsx # Routes: /, /trading, /dashboard
│ ├── components/ # topbar, auth_guard, dashboard/, landing/, trading/
│ ├── hooks/ # useAuth, useTheme, useScrollAnimation
│ ├── pages/ # homePage, dashboard, tradingPage
│ ├── services/ # connectWallet, kucoin
│ └── styles/
│
└── system_architecture/
└── trader_agent_blueprint.md
- EIP-191 wallet-based authentication (challenge → sign → session)
- Session cookie management (Moka cache, TTL-based)
- CI pipeline (fmt, clippy, cargo test)
- ML signal pipeline (see
system_architecture/) - Local LLM trade agent
- Strategy backtesting engine
- Wallet connect / disconnect flow (ethers.js + EIP-191)
- TradingView chart integration
- Portfolio dashboard (balance stats, P&L chart, contract cards)
- Landing page (hero, pipeline animation, feature cards)
- Dark/light theme toggle
- Auth-guarded routing (redirect if unauthenticated)
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/user/auth |
Request EIP-191 signing challenge (nonce) |
POST |
/api/user/auth |
Submit signed message → session cookie |
POST |
/api/user/logout |
Invalidate session |
POST |
/api/user/verify |
Check session validity |