Projects

Portfolio Tracker

A portfolio management application for tracking trades, holdings, and investment performance.

2026

Portfolio Tracker Holdings View

Portfolio Holdings Dashboard

Tech Stack

Angular.NETPostgreSQLRabbitMQDocker

Overview

Portfolio Tracker is a personal project built primarily for learning modern Angular and ASP.NET Core development. The application allows users to track trades, manage holdings, and monitor portfolio performance while exploring common backend architecture patterns used in production systems.

The goal was to gain hands-on experience with Angular, Entity Framework Core, PostgreSQL, API design, deployment, and event-driven processing.

Key Features

  • Create, edit, and delete stock trades.
  • Automatically maintain portfolio holdings based on trade activity.
  • Portfolio dashboard showing allocations, market value, and unrealized profit/loss.
  • Historical trade and position tracking by ticker.
  • Live market price refreshes using the Finnhub API.
  • User authentication and secure portfolio isolation.

Technical Highlights

The backend follows a layered architecture using Controllers, Services, Repositories, DTOs, and Entity Framework Core. Business logic such as portfolio calculations and holdings management is isolated within the service layer while repositories handle database access.

To improve resilience around external API limits, price refresh requests are routed through a RabbitMQ queue and processed asynchronously by background consumers. Combined with caching and rate limiting, this allows refresh requests to be handled safely and without excess request dropping while still avoiding overwhelming third-party providers.

The frontend is built with Angular using standalone components, reactive forms, Angular Material, and RxJS. The project also includes Docker-based deployment, automated CI/CD pipelines, PostgreSQL hosting through Supabase, and VPS deployment for the API.