Paper-trading SaaS case study

NVC Capital Lab

Invest without the scars.

A portfolio-grade practice investing application for paper orders, portfolio analytics, risk review, watchlists, lessons, and challenge-based learning. It is intentionally scoped as paper trading only, with no brokerage routing or real-money movement.

Practice portfolio

Portfolio overview

Paper trading only
9Seeded assets
32k+NVC history rows
7Timeline ranges
18Unit tests
Timeline dataMarket history linked

Product

A working practice environment, not a static dashboard mockup.

The app turns the original concept into a usable paper-trading product with real state transitions, database design, and a market-history timeline.

Portfolio overview with value, return, buying power, allocation, holdings, and watchlist views.

Paper order ticket with buy/sell support, order validation, investment thesis capture, and trade-impact preview.

Analytics surface for return, risk, allocation, drawdown, portfolio score, coach notes, and benchmark comparison.

Learning and challenge views that make the product feel like a practice environment, not just a trading screen.

Architecture

Built around paper orders, delayed data, and explicit compliance boundaries.

The implementation separates demonstration data from authenticated state and treats order execution as a controlled paper-trading workflow.

Application

Next.js App Router, TypeScript, accessible routes, responsive dashboard layout, and reusable finance UI components.

Persistence

Supabase migrations define profiles, portfolios, holdings, orders, transactions, theses, watchlists, snapshots, lessons, challenges, settings, and row-level security policies.

Market Data

Docker builds a local SQLite database and export files from reputable delayed or best-effort data sources. The app reads the NVC dataset through an API route and falls back to seeded snapshots if the database is unavailable.

Quality

The build includes linting, TypeScript checks, unit tests for portfolio and trade calculations, and an end-to-end paper buy-order flow.

Risk controls

Designed to prevent confusing paper trading with real trading.

The product language and execution model stay inside a paper-trading boundary while still giving users realistic practice.

Validation and guardrails

Blocks zero or negative share orders.

Blocks paper buys beyond available buying power.

Blocks paper sells above owned quantity.

Protects against accidental duplicate order submission with client request IDs in the database design.

Labels the product as paper trading only: no brokerage connection, no real securities, and no movement of funds.