Command Palette

Search for a command to run...

Back to Projects
Stock-Sense
CompletedNext.jsTypeScriptReact+3 more

Stock-Sense

A stock screening application that helps you analyze and decide which stocks to invest in using real-time data.

Timeline

Sep 2025 - Dec 2025

Role

Full Stack Developer

Status
Completed

Technology Stack

Next.js
TypeScript
React
MongoDB
Tailwind CSS
shadcn/ui

Key Challenges

  • Integrating and normalizing financial market data from multiple third-party API providers with different schemas.
  • Designing a fast filtering and search engine on the frontend that processes thousands of stocks smoothly.
  • Implementing secure and performant caching structures in MongoDB to avoid hitting API rate limits.

Key Learnings

  • Gained proficiency in constructing efficient MongoDB aggregation pipelines for complex financial metrics.
  • Utilized debounced search queries and virtual lists in React to handle rendering massive stock tables.
  • Learned how to set up robust error recovery mechanisms for external data feed disruptions.

Stock-Sense

Stock-Sense is a robust equity research and stock screening application designed for retail investors. By aggregating key performance indicators, financial statements, and valuation multiples into a single interface, Stock-Sense enables users to run complex query criteria (such as P/E ratio, market cap, dividend yield) to find investment opportunities.

Key Capabilities

  • Multi-Factor Screening: Search and filter stocks across sectors using custom criteria.
  • Detailed Financial Charts: Dynamic charts showing historical revenue, net income, and profit margins.
  • Custom Watchlists: Track specific equities and receive updates on earnings announcements.
  • Data Normalization: Cleaned data schema that makes it easy to compare companies in different sectors.

System Architecture

Stock-Sense is powered by a Next.js frontend and backend API. Caching is handled on MongoDB to prevent database lookup latency and external API rate limit consumption.

Query Pipeline

The database aggregation query looks like this:

const filterQuery = {
    marketCap: { $gte: minMarketCap },
    peRatio: { $lte: maxPeRatio, $gt: 0 },
    dividendYield: { $gte: minDividendYield }
};

const stocks = await db.collection("stocks")
    .find(filterQuery)
    .sort({ marketCap: -1 })
    .limit(50)
    .toArray();

Design & Developed by Om Varma
© 2026 All rights reserved.