AlphaOpsDash is a full-stack trading operations dashboard built with React, TypeScript, Vite, Tailwind, Node.js and Express.
It demonstrates a layered backend architecture, typed API clients, EVM wallet connectivity, automated testing, CI, and real market-data integration.
- Frontend (Vercel): https://alpha-ops-dash.vercel.app
- Backend Health (Render): https://alpha-ops-dash.onrender.com/api/health
- Portfolio overview (equity, 24h PnL, open risk, strategies)
- Equity history chart
- Recent signals feed
- Trades table (WIP)
- Infra / ops health panel
- Wallet connect button (EVM providers)
Data is currently provided by an in-memory connector designed to be replaced by real exchange or chain modules.
- Full-stack TypeScript (frontend + backend)
- Layered backend architecture with clear separation of concerns
- Frontend consuming a typed API layer
- Environment-based configuration (local vs production)
- Automated tests on both sides (Vitest + Jest/Supertest)
- Production deployment (frontend on Vercel, backend on Render)
- React + TypeScript
- Vite
- Tailwind CSS
- Recharts
- Vitest + React Testing Library
- Node.js + Express
- Layered architecture:
routes/controllers/services/connectors/middleware/
- Jest + Supertest
- Structured logging middleware
backend/
src/
config.js
middleware/
requestLogger.js
connectors/
mockExchangeConnector.js
services/
portfolioService.js
signalService.js
tradeService.js
opsService.js
controllers/
portfolioController.js
signalController.js
tradeController.js
opsController.js
routes/
portfolioRoutes.js
signalRoutes.js
tradeRoutes.js
opsRoutes.js
server.js
frontend/
src/
components/
charts/PortfolioEquityChart.tsx
layout/Sidebar.tsx
layout/Topbar.tsx
hooks/
useWallet.ts
pages/
Dashboard.tsx
Signals.tsx
Infra.tsx
services/
mockApi.ts
setupTests.ts
git clone https://github.com/franklinzerocr/Alpha-Ops-Dash.git cd Alpha-Ops-Dash
`cd backend npm install
npm run dev
npm start`
The backend listens on PORT in backend/.env (default: 4000).
`cd frontend npm install
npm run dev`
Vite runs at:
PORT=4000 CORS_ORIGIN=http://localhost:5173 LOG_LEVEL=info
-
Render overrides
PORTautomatically. -
In production, set
CORS_ORIGINto the deployed frontend URL.
VITE_API_BASE=/api # local dev with Vite proxy VITE_API_BASE=https://alpha-ops-dash.onrender.com/api # production
In Vercel, VITE_API_BASE is configured as a project Environment Variable.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/portfolio |
Portfolio summary |
| GET | /api/portfolio/history |
Equity history |
| GET | /api/signals |
Recent signals |
| GET | /api/trades |
Executed trades (mock) |
| GET | /api/ops |
Ops health |
| GET | /api/health |
Simple health check |
Responses are currently provided by connectors/mockExchangeConnector.js.
cd backend npm test
cd frontend npm test
Tests are excluded from the production TypeScript build.
-
Root:
/backend -
Build:
npm install -
Start:
npm start -
Env:
CORS_ORIGIN,LOG_LEVEL,PORT(Render-managed)
-
Root:
/frontend -
Build:
npm run build -
Output:
dist -
Env:
VITE_API_BASE=https://alpha-ops-dash.onrender.com/api