Mobile-first AI trading intelligence web app. The product is public read-only for MVP, uses deterministic scoring first, and adds AI research agents after scoring v1.
- Bun + TypeScript
- React + Vite + React Router + TanStack Query
- Hono API on Bun
- Bun long-running workers
- Redis/Valkey for latest snapshots
- Postgres for durable small data
- Docker Compose for VPS backend deployment
- Cloudflare Pages for the web app
$env:Path="$env:USERPROFILE\.bun\bin;$env:Path"
bun install
bun run devWeb: http://localhost:5173
API: http://localhost:4000 locally, http://localhost:8787 through Docker Compose
Local infrastructure compose:
docker compose -f docker-compose.dev.yml upThe intended production shape is:
- Cloudflare Pages builds and hosts
apps/web. - One VPS runs API, worker, Valkey, and Postgres with Docker Compose.
- The API is bound to
127.0.0.1:8787and exposed through a reverse proxy.
Deployment guide: docs/DEPLOYMENT_VPS.md
VPS backend start command:
cp .env.production.example .env.production
docker compose up -d --buildCloudflare Pages build output: apps/web/dist
Cloudflare Pages env: VITE_API_BASE_URL=https://api.your-domain.com
Documentation index: docs/spec/SOURCE_OF_TRUTH_INDEX.md
Product specification: docs/spec/ALTINTEL_AGENT_DOCS.md
Build coordination: docs/BUILD_COORDINATION.md
VPS deployment: docs/DEPLOYMENT_VPS.md
The current product runs in live-cache mode when .env.local sets RUNTIME_MODE=live.
- Worker refreshes Binance market snapshots and keeps MEXC warm as fallback.
- CoinGlass key is probed server-side only.
- Followin recommended news is crawled server-side by the worker and exposed through
/api/news. - API reads cached scanner, dashboard, coin detail, and data health snapshots before falling back to mocks.
- Local development uses
.tmp/runtime-cachewhen Redis/Valkey is not running.