Market intelligence for stocks & ETFs — a polished demo app.
Track symbols, watch daily movement, and surface momentum & unusual-volume insights in a market-terminal-meets-editorial interface.
Demo only. Not investment advice.
- Web — Next.js 15 (App Router), React 19, Tailwind, Recharts, Space Grotesk + IBM Plex Sans
- API — Fastify 5 + TypeScript, Zod validation, Redis caching, freshness metadata
- ELT — TypeScript ingest + transform jobs (raw → staging → marts), idempotent
- DB — Postgres 16 + Prisma
- Cache — Redis 7
- Provider — Alpha Vantage (behind an adapter in
packages/market-data)
# 1. Install
pnpm install
# 2. Configure environment
cp .env.example .env
# (optional) add a real Alpha Vantage key; without one the app uses seeded data
# Get a free key: https://www.alphavantage.co/support/#api-key
# 3. Infra
docker compose up -d
# 4. Database
pnpm db:migrate
pnpm db:seed
# 5. ELT (ingest + transform). Uses live provider if a key is set, else sample data.
pnpm elt:run
# 6. Run everything
pnpm devThen open:
- Web app — http://localhost:3000
- API health — http://localhost:4000/health
The dashboard shows live quotes, a freshness timestamp, provider status, and your watchlist with momentum & unusual-volume insights.
| Command | Description |
|---|---|
pnpm dev |
Run web + api in parallel |
pnpm test |
Run all package tests |
pnpm lint |
Lint all packages |
pnpm format |
Prettier-format the repo |
pnpm db:migrate |
Apply Prisma migrations |
pnpm db:seed |
Seed symbols + sample data |
pnpm elt:run |
Run ingest + transform jobs |
AAPL, MSFT, NVDA, TSLA, AMZN, META, SPY, QQQ
See CLAUDE.md for architecture and project conventions.