JLツTrade – Hybrid Trading System
- TypeScript 38.7%
- Python 37.1%
- Go 19.6%
- Shell 1.8%
- CSS 1.8%
- Other 1%
| api | ||
| bots | ||
| config | ||
| deploy | ||
| ui | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| AGENTS.md | ||
| AI-INTEGRATION.md | ||
| ARCHITECTURE.md | ||
| check_login.py | ||
| check_nan.sh | ||
| check_watchlist.py | ||
| docker-compose.yml | ||
| Dockerfile.api | ||
| Dockerfile.bots | ||
| drop_user.sh | ||
| fix_password.py | ||
| fix_password.sh | ||
| FIX_PLAN.md | ||
| JL-SPARK.md | ||
| Makefile | ||
| README.md | ||
| reset_user.sh | ||
| test_wl.sh | ||
jltrade
Trading Dashboard – React (KendoReact Free) + Go API + Postgres + NATS + Python Bots
Projektstruktur
jltrade/
├── ui/ # React Frontend (Vite + KendoReact)
│ ├── src/ # Quelltext
│ │ ├── pages/ # Login, Dashboard, Admin
│ │ ├── components/ # SettingsModal u.a.
│ │ ├── api.ts # REST-Client
│ │ └── NotificationContext.tsx
│ ├── vite.config.ts
│ └── package.json
├── api/ # Go API
│ ├── main.go # Server mit embedded UI
│ ├── internal/ # auth, db, handlers, models, nats, ws
│ ├── bots/ # Python-Bots (deploy)
│ └── ui/dist/ # Build-Artefakt (generiert)
├── bots/ # Python-Bots (Quelle)
├── deploy/ # systemd services, SQL-Schema, deploy.sh
├── config/ # settings.yaml
├── Makefile # Build + Deploy
└── README.md
Entwicklung auf SMB (CIFS)
Wichtig: CIFS blockt Symlinks. Daher:
npm install --no-bin-links(stattnpm install)node node_modules/vite/dist/node/cli.js build(stattnpx vite build)
Build-Befehle
# Alles bauen
make
# Nur UI
make ui
# UI + Go + Deploy nach nofx
make deploy
# Aufräumen
make clean
Manuell
cd ui
npm install --no-bin-links --include=dev
node node_modules/vite/dist/node/cli.js build
cd ../api
go build -o jltrade-api .
OpenCode auf Windows
- SMB-Freigabe als Netzlaufwerk verbinden:
\\192.168.99.45\Agent Hermes\trading\jltrade ui/als Projektordner in OpenCode öffnen- OpenCode führt hier Änderungen im Quelltext durch
- Build-Pipeline bleibt auf dem Linux-Host (Hermes/Makefile)
Deployment
make deploy
Erzeugt ein neues Binary und schiebt es per scp auf nofx (192.168.99.75).