/* ============================================================
VYOVAM Homepage — AI-Powered Algorithmic Trading Infrastructure
============================================================ */
const { useState: useS, useEffect: useE, useRef: useR, useMemo: useM } = React;
/* ---------- Helpers ---------- */
function MiniLine({ seed = 1, color = '#3B82F6', height = 40, points = 24 }) {
const data = useM(() => {
let rng = seed;
const rand = () => { rng = (rng * 9301 + 49297) % 233280; return rng / 233280; };
const arr = []; let v = 50;
for (let i = 0; i < points; i++) {
v += (rand() - 0.5) * 14 + 0.6;
arr.push(Math.max(8, Math.min(92, v)));
}
return arr;
}, [seed, points]);
const w = 200;
const path = data.map((p, i) => {
const x = (i / (data.length - 1)) * w;
const y = height - (p / 100) * height;
return `${i === 0 ? 'M' : 'L'} ${x.toFixed(1)} ${y.toFixed(1)}`;
}).join(' ');
const area = `${path} L ${w} ${height} L 0 ${height} Z`;
const gid = `mlg-${seed}`;
return (
);
}
function PnLChart() {
const data = useM(() => {
const arr = []; let v = 30;
for (let i = 0; i < 60; i++) {
v += Math.sin(i * 0.3) * 1.8 + (i / 60) * 1.6 + (Math.random() - 0.4) * 2.6;
arr.push(Math.max(8, Math.min(95, v)));
}
return arr;
}, []);
const w = 400, h = 100;
const path = data.map((p, i) => {
const x = (i / (data.length - 1)) * w;
const y = h - (p / 100) * h;
return `${i === 0 ? 'M' : 'L'} ${x.toFixed(1)} ${y.toFixed(1)}`;
}).join(' ');
const area = `${path} L ${w} ${h} L 0 ${h} Z`;
const [drawn, setDrawn] = useS(false);
useE(() => { const t = setTimeout(() => setDrawn(true), 200); return () => clearTimeout(t); }, []);
return (
);
}
function Donut() {
const slices = [
{ label: 'Equities', pct: 42, color: '#3B82F6' },
{ label: 'Futures', pct: 28, color: '#10B981' },
{ label: 'Crypto', pct: 18, color: '#A78BFA' },
{ label: 'FX', pct: 12, color: '#F59E0B' }
];
const r = 30, c = 38, sw = 12;
const circ = 2 * Math.PI * r;
let off = 0;
return (
{slices.map((s, i) => {
const len = (s.pct / 100) * circ;
const dash = `${len} ${circ - len}`;
const el = (
);
off += len;
return el;
})}
{slices.map((s, i) => (
{s.label}
{s.pct}%
))}
);
}
function OrderFeed() {
const baseOrders = useM(() => ([
{ side: 'buy', sym: 'BTC-USDT', qty: '0.42', px: '67,842' },
{ side: 'sell', sym: 'AAPL', qty: '120', px: '218.40' },
{ side: 'buy', sym: 'NIFTY', qty: '2 lots', px: '24,832' },
{ side: 'buy', sym: 'ETH-USDT', qty: '4.10', px: '3,521.4' },
{ side: 'sell', sym: 'TSLA', qty: '80', px: '245.10' },
]), []);
return (
{baseOrders.map((o, i) => (
{o.sym}
{o.side.toUpperCase()} {o.qty}
{o.px}
))}
);
}
/* ---------- Heatmap ---------- */
function Heatmap() {
// 48 cells, deterministic colors
const cells = useM(() => {
const arr = [];
let rng = 17;
const rand = () => { rng = (rng * 9301 + 49297) % 233280; return rng / 233280; };
for (let i = 0; i < 48; i++) {
const v = (rand() - 0.45) * 2; // -0.9 to 1.1
let color, alpha;
if (v > 0) {
alpha = Math.min(0.7, Math.max(0.12, v * 0.6));
color = `rgba(16,185,129,${alpha})`;
} else {
alpha = Math.min(0.7, Math.max(0.12, -v * 0.6));
color = `rgba(239,68,68,${alpha})`;
}
arr.push(color);
}
return arr;
}, []);
return (
{cells.map((c, i) => (
))}
);
}
/* ---------- Execution feed (timestamped) ---------- */
function ExecutionFeed() {
const rows = useM(() => ([
{ t: '14:32:11', s: 'BTC-USDT', a: 'BUY', q: '0.42', v: '67,842.10' },
{ t: '14:32:08', s: 'AAPL', a: 'SELL', q: '120', v: '218.40' },
{ t: '14:31:54', s: 'NIFTY 24K', a: 'BUY', q: '2 lots', v: '24,832.05' },
{ t: '14:31:42', s: 'ETH-USDT', a: 'BUY', q: '4.10', v: '3,521.40' },
{ t: '14:31:30', s: 'TSLA', a: 'SELL', q: '80', v: '245.10' },
{ t: '14:31:22', s: 'SPY', a: 'BUY', q: '50', v: '574.85' },
]), []);
return (
{rows.map((r, i) => (
{r.t}
{r.s}
{r.a} {r.q}
{r.v}
))}
);
}
/* ---------- Count-up metric ---------- */
function CountUp({ value }) {
// parse "99.9%", "< 40ms", "500+", "24/7"
const m = String(value).match(/^([^0-9]*)([\d.]+)(.*)$/);
const ref = useR(null);
const [display, setDisplay] = useS(value);
useE(() => {
if (!m) return;
const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
if (reduced || value === '24/7') { setDisplay(value); return; }
const target = parseFloat(m[2]);
const decimals = (m[2].split('.')[1] || '').length;
const el = ref.current;
if (!el) return;
const obs = new IntersectionObserver(([entry]) => {
if (!entry.isIntersecting) return;
obs.disconnect();
const t0 = performance.now();
const dur = 1200;
const tick = (t) => {
const p = Math.min(1, (t - t0) / dur);
const eased = 1 - Math.pow(1 - p, 3);
setDisplay(`${m[1]}${(target * eased).toFixed(decimals)}${m[3]}`);
if (p < 1) requestAnimationFrame(tick);
};
requestAnimationFrame(tick);
}, { threshold: 0.4 });
obs.observe(el);
return () => obs.disconnect();
}, [value]);
return {display} ;
}
/* ---------- One core, three products diagram ---------- */
function CoreBranches({ setPage }) {
return (
);
}
/* ---------- HERO Dashboard mock ---------- */
function HeroDashboard() {
return (
{/* P&L hero card */}
Daily P&L
▲ +4.82%
+$14,283.40
{/* Sharpe */}
{/* Risk meter */}
Risk Exposure
MED
Low Medium High
{/* Order log */}
{/* Allocation donut */}
Portfolio Allocation
$1.42M
{/* Broker status */}
Broker Status
● 5 / 5
ZERODHA
IBKR
BINANCE
ALPACA
KOTAK
{/* Floating widgets */}
Strategy live
VYO-04 · paper → live
Latency · 38ms
all regions healthy
);
}
/* ---------- Reveal ---------- */
function FinReveal({ children, delay = 0 }) {
const ref = useR(null);
const [shown, setShown] = useS(false);
useE(() => {
const el = ref.current; if (!el) return;
const obs = new IntersectionObserver(([entry]) => {
if (entry.isIntersecting) { setTimeout(() => setShown(true), delay); obs.unobserve(el); }
}, { threshold: 0.12 });
obs.observe(el);
return () => obs.disconnect();
}, [delay]);
return {children}
;
}
/* ---------- Icons ---------- */
const Ic = {
bolt: ,
brain: ,
shield: ,
chart: ,
cloud: ,
network: ,
lock: ,
globe: ,
pulse: ,
layers: ,
check: ,
};
/* ============================================================
HOMEPAGE
============================================================ */
function HomePage({ setPage }) {
return (
{/* live global market ticker */}
{/* ============ HERO ============ */}
AI Engineering · Three business lines in production
AI engineering for markets — and for everyday life.
Vyovam builds real-time AI infrastructure that powers an institutional-grade trading platform, full-service e-commerce operations, and FluentMe — a consumer language-speaking app.
{Ic.check} Real-Time Infrastructure
{Ic.check} AI-Assisted Systems
{Ic.check} Multi-Market Support
Illustrative sample data — not actual performance.
{/* ============ OUR PRODUCTS ============ */}
Our Products
Three business lines. One AI engineering core.
Trading infrastructure, e-commerce operations, and consumer AI — engineered on the same real-time core.
{/* ============ ARCHITECTURE ============ */}
How it works
Built like infrastructure, not like a bot.
Every order flows through five validated stages — strategy, risk, brokerage, execution, monitoring — with full observability at each step.
{[
{ t: 'Strategy Engine', s: 'signals', i: Ic.brain, det: 'ML-validated signals generated on tick data' },
{ t: 'Risk Validation', s: 'pre-trade', i: Ic.shield, det: 'Limits and circuit breakers checked before routing' },
{ t: 'Broker API Layer', s: 'routing', i: Ic.network, det: 'Smart order routing across five broker venues' },
{ t: 'Execution Engine', s: 'fills', i: Ic.bolt, det: 'Sub-40ms round-trip execution and fills' },
{ t: 'Monitoring', s: 'dashboards', i: Ic.chart, det: 'Live P&L, latency, and health observability' },
].map((n, i) => (
0{i + 1}
{n.i}
{n.t}
{n.s}
{n.det}
))}
{/* ============ SECURITY ============ */}
Security & Stability
Built to operate, not just to launch.
Defensible infrastructure with the operational rigor expected of an institutional desk.
{[
{ i: Ic.lock, t: 'Encrypted Infrastructure', d: 'TLS in transit, AES-256 at rest, broker credentials in HSM-backed vaults.' },
{ i: Ic.pulse, t: 'High Availability', d: 'Multi-AZ, auto-failover, with quarterly DR drills and 99.9% SLA targets.' },
{ i: Ic.cloud, t: 'Cloud-Native Deployment', d: 'Containerized services, declarative config, zero-downtime rollouts.' },
{ i: Ic.shield, t: 'Risk-Controlled Execution', d: 'In-line risk gateways enforce limits before any order reaches a broker.' },
{ i: Ic.chart, t: 'Monitoring Architecture', d: 'Distributed traces, structured logs, and PagerDuty-grade alerting.' },
{ i: Ic.network, t: 'Broker API Stability', d: 'Rate-limit aware retries, idempotent submissions, and venue-side reconciliation.' },
].map((s, i) => (
))}
{/* Final CTA removed */}
);
}
Object.assign(window, { HomePage });