Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tickr

A real-time, web-based stock ticker app with configurable user profiles, multi-style charts, an anomaly dashboard (spikes / drops / volume surges), and per-symbol news.

Features

  • Real-time quotes — live trades streamed from Finnhub over websocket, with 15s REST polling as fallback
  • Charts — Candles, Bars, Line, Area, and Baseline views across 1D / 5D / 1M / 6M / 1Y / 5Y timeframes (TradingView lightweight-charts)
  • Anomaly dashboard — scans the last trading session (5-min bars) for statistically significant price spikes, drops, and volume surges (z-score based) across your whole watchlist
  • News — last 7 days of company news for the selected symbol
  • Profiles — multiple local user profiles, each with its own watchlist, default chart type, and timeframe (stored in browser localStorage)
  • Ticker tape — scrolling marquee of your watchlist

Setup (first time)

  1. Install Node.js 18 or newer.
  2. Get a free API key at finnhub.io.
  3. In this folder:
    copy .env.example .env
    
    then edit .env and paste your key into FINNHUB_API_KEY=.
  4. Install dependencies:
    npm install
    

Run locally

npm run dev

Then open http://localhost:5173. This starts the Express backend (port 3001) and Vite dev server together.

Deploying to the cloud later

The app is already structured for it:

npm run build     # builds the frontend into /dist
npm start         # Express serves /dist + the API + websocket on one port

So any Node host (Render, Railway, Fly.io, AWS, Azure App Service…) just needs npm install && npm run build && npm start with the FINNHUB_API_KEY env var set. The API key stays server-side — it's never exposed to the browser.

Architecture

Browser (React + lightweight-charts)
   │  /api/*  (REST: quotes, candles, news, search)
   │  /ws     (websocket: live trades)
   ▼
Express server (server/index.js)
   ├─ Finnhub — real-time quotes, websocket trades, company news, symbol search
   └─ Yahoo Finance — historical candles (Finnhub candles are paid-only)

Responses are cached briefly in memory to stay inside Finnhub's free-tier rate limit (60 calls/min).

Notes

  • Live websocket trades only flow while US markets are open; outside market hours prices come from REST quotes.
  • Profiles are stored in the browser (localStorage). When you move to the cloud and want real accounts, swap src/lib/profiles.js for an API backed by a database.

About

Web-based stock ticker app with real-time data, charts, and news

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages