Skip to content

Sprint 4 frontend - #6

Merged
carolina-kp merged 8 commits into
masterfrom
sprint-4-frontend
Jul 18, 2026
Merged

carolina-kp merged 8 commits into
masterfrom
sprint-4-frontend

Conversation

@carolina-kp

Copy link
Copy Markdown
Owner

No description provided.

Establish the frontend design system for the regulatory terminal:
Ink/Slate/Parchment/Seal/Glacier palette, Spectral serif + IBM Plex
Mono, a persistent jurisdiction rail (EU-blue to CH-amber) and the
disclaimer footer on every page. Visible keyboard focus states and
reduced-motion handling throughout. Landing page routes into the
four terminal sections.

Correct the CLAUDE.md frontend stack line to match reality
(Next.js 16 / React 19 / Tailwind v4).
The unlock_events table and UnlockEvent model existed (Sprint 1) and
the daily brief already reads them, but no read endpoint exposed
upcoming unlocks. Add GET /market/unlocks (next N days, joined to
watchlist symbol/name) so the dashboard unlock calendar renders real
curated data instead of a stub.
Server-side Argus API client (src/lib/api.ts) reading ARGUS_API_URL
and ARGUS_API_TOKEN — token stays server-only, never shipped to the
browser. TS types mirror the Pydantic schemas (src/lib/types.ts);
shared display formatters for USD, percentages and dates. Document
both env vars in frontend/.env.example.
Server-rendered dashboard on the real API: watchlist ledger with
hand-rolled SVG sparklines and inline anomaly badges, DeFi TVL panel,
BTC on-chain tiles, and the 7-day unlock calendar. Resilient loading
(per-asset fetches use allSettled; watchlist doubles as the API
reachability probe with an honest unreachable banner) plus a skeleton
loading state.
Client chat over /research/ask via a server-side route-handler proxy
that keeps the bearer token off the browser. Citation seals render
each source as a numbered chip with document, article/section ref and
EU/CH jurisdiction glyph, linking to the real EUR-Lex / FINMA URL.
Honest 'outside corpus confidence' state when the API declines to
answer. The answer reveal is a client-side typewriter over the
complete returned answer (not token streaming) and collapses to
instant under prefers-reduced-motion.
Chronological dispatch list (GET /briefs) linking to a memo-style
detail reader (GET /briefs/{date}) that renders body_markdown via a
small dependency-free markdown renderer. Honest unreachable/empty
states; 404 for a missing date. Brief-date route param uses the
backend's YYYY-MM-DD date format.
Server-rendered anomaly register over GET /anomalies with filter chips
that drive URL search params (shareable, no client fetch): kind
(all/zscore/depeg) and window (24h/7d/30d/90d). Depeg vs z-score
severity colour-coding, honest empty and unreachable states.
@carolina-kp
carolina-kp merged commit ca069c7 into master Jul 18, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant