Skip to content

Feat/finance finviz fundamentals#114

Merged
ralyodio merged 2 commits into
masterfrom
feat/finance-finviz-fundamentals
Jun 18, 2026
Merged

Feat/finance finviz fundamentals#114
ralyodio merged 2 commits into
masterfrom
feat/finance-finviz-fundamentals

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Description

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Refactoring (no functional changes)

Submission Payout

  • PR: $100 minimum per accepted PR
  • Bug fix: $100 minimum per confirmed bug fix
  • QA run: $250 minimum per QA run (files bugs and/or fixes them)
  • Feature/fix: $100 minimum per accepted feature implementation or substantive fix

TDD Checklist (MANDATORY)

All items must be checked before merge:

  • Tests written FIRST (before implementation)
  • All new code has corresponding tests
  • All tests pass locally (pnpm test)
  • Edge cases are covered
  • No any types used (unless explicitly justified)
  • TypeScript strict mode passes (pnpm tsc --noEmit)
  • ESLint passes (pnpm lint)

Security Checklist

  • No Supabase calls from client-side code
  • No sensitive data exposed in client bundle
  • Input validation implemented
  • Rate limiting considered (if applicable)

Testing

Test Coverage

  • Number of new tests:
  • Test file(s) modified/created:

How to Test

Screenshots (if applicable)

Related Issues

Closes #

Additional Notes

ralyodio and others added 2 commits June 18, 2026 09:43
Scrape the full Finviz quote-page snapshot (valuation, performance,
technical, fund and dividend metrics) plus the company/fund description
and render it as a generic Fundamentals grid on /finance/ticker/:ticker.

- finviz.ts: getFinvizFundamentals() + testable parseFinvizSnapshot()
  (linkedom; browser UA since Finviz blocks the default undici UA)
- Fundamentals/FundamentalMetric types (ordered label/value/tone pairs,
  rendered generically so new source rows appear without code changes)
- GET /api/finance/fundamentals: paid-gated, soft-fails to null,
  read-through cached at FUNDAMENTALS_TTL_SECONDS=6h (reuses
  finance_quotes_cache — no migration)
- Stat gains an optional up/down tone prop
- Tests: parser + route

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The stream-as-available tests spawn the real ffmpeg binary; on runners
without ffmpeg, spawn('ffmpeg') ENOENT crashes the whole vitest process.
Guard those tests behind a HAS_FFMPEG check instead.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

vu1nz Security Review

0 finding(s) in PR #?

No security issues found.

@ralyodio ralyodio merged commit e6458a4 into master Jun 18, 2026
7 checks passed
@ralyodio ralyodio deleted the feat/finance-finviz-fundamentals branch June 18, 2026 10:11
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