import Link from "next/link"; import { ChangesPanel } from "@/components/market/changes-panel"; import { HealthPanel } from "@/components/market/health-panel"; import { InstrumentTable } from "@/components/market/instrument-table"; import { LiveEvents } from "@/components/market/live-events"; import { PulseRow } from "@/components/market/pulse-grid"; import { RedundancyPanel } from "@/components/market/redundancy-panel"; import { LiveTape } from "@/components/market/tape"; import { TelemetryStrip } from "@/components/market/telemetry-strip"; import { WorldMap } from "@/components/market/world-map"; import { SearchButton } from "@/components/layout/search-dialog"; import { Section } from "@/components/ui/section"; import { api, apiOptional } from "@/lib/api"; import type { Changes, DataHealth, MarketEvent, MarketsOverview, Stats } from "@/lib/types"; export const dynamic = "force-dynamic"; export default async function HomePage() { const [stats, markets, events, health, changes] = await Promise.all([ api("/v1/stats"), api("/v1/markets"), apiOptional("/v1/events?limit=30"), apiOptional("/v1/data-health"), apiOptional("/v1/changes?window=1h"), ]); const movers = [...markets.gainers.slice(0, 5), ...markets.losers.slice(0, 5)]; return (
{/* Hero */}

Market Atlas

The live map of global markets.

Thousands of instruments. Independent sources compared in real time. One continuously updating, provenance-backed market graph — every quote carries its freshness, its sources and its confidence.

Open the live feed How prices are formed →
{/* Pulse */}
{/* Source redundancy — the mesh is the product */} {stats.coverage && (

One instrument → many observers → one canonical state

Market Atlas does not trust a quote. Each instrument is observed through independent paths — exchange feeds, official publishers, public quote pages — and only comparable observations are compared: a live trade is never measured against an official fixing or last week's close.

Real markets vote; stablecoin markets and crosses confirm; restricted-rights sources validate without ever setting or showing a value. Sources that statistically mirror each other are counted as one family.

Targets: tier A majors ≥ 3 independent families and 5 observations · tier B ≥ 2 / 3 · tier C 1 / 2 · tier D one official source. See the expansion queue →

)} {/* Tape + events */}
{/* Map */}
{/* Movers + health + changes */}
{markets.breadth.instruments > 0 && (

Breadth: {markets.breadth.advancers} advancing · {markets.breadth.decliners} declining · median {markets.breadth.median_change_percent?.toFixed(2)}% across {markets.breadth.instruments} quoted names.

)}
{health && } {changes && }

Multi-source by design

Prices are a weighted median of comparable, independent observations — one vote per upstream family, proxies and validators as confirmations. Open “Why this price?” on any instrument to see the full source coverage matrix.

Honest freshness

Live, delayed, at-close, end-of-day or stale — every value is labelled with its status and the age of its newest observation. Nothing stale is ever shown as live.

A growing memory

Every observation, event and filing is recorded with its provenance. The historical dataset grows every second the atlas runs.

); }