|
All checks were successful
deploy / deploy (push) Successful in 7s
Live HL data → in-browser TA → 4-agent committee → LONG/SHORT/SKIP verdict. Terminal grid command bar + interactive agent-workflow graph. Paper-trading worker reuses the browser brain (dry-run + Telegram). Forgejo static deploy. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .agents/skills | ||
| .claude | ||
| .forgejo/workflows | ||
| .interface-design | ||
| docs | ||
| proxy | ||
| public | ||
| scripts | ||
| src | ||
| worker | ||
| .env | ||
| .env.example | ||
| .gitignore | ||
| bun.lockb | ||
| components.json | ||
| eslint.config.js | ||
| index.html | ||
| package.json | ||
| pnpm-lock.yaml | ||
| README.md | ||
| skills-lock.json | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
$QUANT — landing + live terminal
An orchestra of ~18 AI agents trading Hyperliquid perps. Marketing site (LARP) with a Living Agent Swarm aesthetic, driven by real Hyperliquid market data.
- Landing (
/) — hero swarm + 6-layer pipeline + live signal desk + agent roster + performance + tokenomics + roadmap + Telegram modes + FAQ + waitlist. - Terminal (
/terminal) — live dashboard: real price/funding/OI, in-browser TA, agent vote matrix and a LONG/SHORT/SKIP verdict.
Stack
React 19 · Vite 8 · TypeScript · Tailwind v4 · shadcn-style UI · anime.js v4 (SVG) · Recharts · React Router · Lenis. Package manager: pnpm.
Run
pnpm install
pnpm dev # dev server (http://localhost:5173)
pnpm build # production build → dist/ (deploy this only)
pnpm preview # serve the built dist/
pnpm gen:icons # regenerate favicon.ico / og.png from public/favicon.svg
Data
- Live: Hyperliquid public info API (
POST https://api.hyperliquid.xyz/info, no auth, CORS*) → live BTC/ETH/SOL price, funding, OI. Indicators (RSI/MACD/EMA/ATR/Bollinger) are computed in-browser insrc/lib/ta.ts; agent votes + verdict insrc/lib/signals.ts. - Seed fallback:
src/data/seedMarket.tsrenders deterministic data instantly (labelled non-live) so cards never hang; live data replaces it. - Honesty: anything that can't be real pre-TGE (token price/holders/PnL track record) is rendered but clearly labelled simulated.
Live paper-trading worker
worker/ is an always-on Node loop that reuses the browser brain (src/lib/ta.ts
signals.ts) server-side: real candles → real TA → 4-agent vote → verdict, then it paper-trades the verdict against live Hyperliquid prices and broadcasts every fill to Telegram. This turns the simulated PnL track record into an honest, verifiable one — no order is ever signed (dry-runonly). Seeworker/README.md.
pnpm worker # run forever (Telegram optional — prints to stdout if unset)
pnpm worker:once # single tick smoke test
⚠️ Fill these before launch
Edit src/data/site.ts:
x— the project's X/Twitter URL (manager-provided; shown in header + footer)telegram— Telegram linkcontract— $QUANT Solana mint (post-TGE)
Other:
- Wallet:
src/components/ConnectWallet.tsxis a cosmetic Solana connect modal (honest pre-TGE). To wire real Reown AppKit (Solana), add aprojectId(Reown dashboard) and swap the modal body — see the project plan. - DexScreener token strip: add the
$QUANTpair address once it lists. - The
base-verificationmeta tag is already inindex.html.
Research agent (FactsAI)
The landing has a "Research agent · L4" section that renders a real AI market brief with
cited web sources from FactsAI (src/lib/factsai.ts,
components/sections/AIBrief.tsx). It self-hides when the feed is unreachable, so the page
never looks broken.
⚠️ A static site cannot call FactsAI directly — the API returns no Access-Control-Allow-Origin
(browser blocks it) and a client key would be public. Also, at the time of building, FactsAI's
endpoint returned 500 "Service configuration error" (their backend). To enable it:
- Deploy the included proxy:
proxy/factsai-worker.js(Cloudflare Worker — holds the key + adds CORS). See the header comment forwranglersteps. - Set
VITE_FACTSAI_PROXY=https://<your-worker>.workers.devin.env.local, thenpnpm build. - FactsAI must also fix their upstream
500before real answers return.
Without a proxy, set VITE_FACTSAI_KEY in .env.local for local dev only (the key is baked into
the bundle and CORS will still block production).
Deploy
Ship dist/ only to the GitLab static host (agency templates/starter pipeline). If the
app is served without SPA fallback, deep-linking /terminal on refresh may 404 — configure the
host to fall back to index.html, or switch to HashRouter in src/App.tsx.