Investing Lab

Research automation workspace for Finnhub-driven diagnostics, ticker screening, and curated analytics.

Investing Lab

About the Project

Investing Lab is a research automation workspace built with modern Angular SSR practices where NgRx powers every screen, routes stay hydration-ready, and service-worker updates keep the UI polished like a production site.

The Express server bundles SEO-safe robots.txt/sitemap.xml, rate limiting, and TLS-protected Mongo pipelines while live-only data transfers flow through upserts and cache snapshots.

Background jobs continuously refresh Finnhub fundamentals and the ticker registry, and the UI polls their state to surface diagnostics, company-level analytics, and a roadmap-focused dashboard that is easy to share and monitor.

Key Features

  • Live Finnhub metrics ingestion loops through ticker batches with 3-second pacing, retries/resume hooks, cycle logging, and snapshot pruning so only the latest ticker state is retained.
  • Company screening offers filterable dividend/FCF/BV/sales thresholds plus optional coverage checks, with NgRx-driven actions updating filters, sort order, and result sets.
  • Finnhub dashboard renders script status, cycle progress, error logs, and restart controls so operators monitor diagnostics in real time.
  • Custom calculations synthesize growth composites, cash-flow signals, valuation multiples, dividend profiles, EPS-vs-sales notes, and quality ratings derived from stored fundamentals.
  • Ticker registry data stays shareable through search query strings, limit controls, and cached snapshots that fall back to local files when the database is unavailable.
  • API pending indicator compiles every outstanding request (ticker summary/list, Finnhub status/start, screening/details/lookup) to show accurate loading feedback in the UI.
  • Rate limiting, TLS-enforced Mongo connections, and SEO controls secure the stack while diagnostics remain accessible via logs and UI banners.
  • Dockerized build flow installs only runtime dependencies (Chromium/graphics helpers), exposes a single port, and mirrors production workloads.
  • Service worker plus SwUpdate keep the client refreshed without manual reloads and align cache updates with queueing strategies.
  • Every route-level screen relies on NgRx selectors/effects, keeping components thin, cache-safe, and ready for future provider integrations.

Screenshots

Dashboard showing Finnhub cycle progress, diagnostics, and restart controls.
Dashboard showing Finnhub cycle progress, diagnostics, and restart controls.
Zoom
Company screening and analytics with filter controls and result summaries.
Company screening and analytics with filter controls and result summaries.
Zoom

Technologies Used

Frontend: Angular 19 standalone components/router/service worker, NgRx store/effects/selectors, RxJS, Angular Universal SSR, SwUpdate integrations.
Backend: Node, Express with CommonEngine, Axios-based Finnhub ingestion, TLS-protected MongoDB pipelines, TypeScript-heavy service layer, rate limiting middleware, SEO helpers.
Infra/DevOps: Multi-stage Docker targeting Node, npm scripts for build/serve/deploy, Chromium/graphics tooling for PDF/image helpers, ngsw service worker registration, npm CI asset pipeline.
Security: IP rate limiting, TLS-protected Mongo clients, SEO-safe robots.txt/sitemap.xml, minimal persistence via upserts/cache TTL, diagnostics-focused logging for operational visibility.
Data reliability: Background jobs refresh Finnhub fundamentals and the ticker registry with cache snapshots and live-only upserts.
Experience: Service worker updates, hydration-ready routes, and NgRx selectors keep every screen cache-safe and ready for future integrations.