Skip to content
Shahab Hassan
All projects

Portfolio tracking for the PSXWeb Development · 2026

Qvestify

An app that helps Pakistani stock investors track what they own, what it is worth and how it is doing.

The Qvestify holdings dashboard, showing positions with live profit and loss
01Overview

Overview

Investors in Pakistan had no proper tool for keeping track of their shares. The choices were a spreadsheet, an old brokerage portal, or an expensive platform built for banks and funds rather than for one person. Qvestify was built to fill that gap: a clean, focused way to see what you own and how it is actually doing, made specifically for the Pakistan Stock Exchange.

The idea is simple. You record every share purchase, sale and dividend you receive. Qvestify then prices all of it against the live market and shows you what it is worth today, how much you put in, what you have made or lost overall, and what changed just today. A chart tracks the portfolio over any period from one day to a year, a donut chart shows how much is sitting in each industry, and a table lists every holding with its average buy price, current price, market value and return.

Beyond that there is a watchlist for shares you do not own yet but want to follow, a page tracking the main market indexes side by side, and a dividends view showing what you have received and what that works out to as a yield. The analytics section goes deeper: returns broken down by period, monthly bars, daily profit charts, and a risk view flagging when too much money is concentrated in one industry or one company. You can hold several portfolios at once, each with its own type, risk level and time horizon, and switch between them.

Qvestify runs as a responsive website and as a native phone app for Android and iPhone. Both talk to the same interface and the same database, so a feature is built once and appears in both. The phone app has its own design system built first, shared colour, type, spacing, corner and shadow scales, then 24 reusable components on top including proper loading placeholders, which is what keeps 20 plus screens looking like one app rather than twenty.

The business side is a three tier model: a free plan, and two paid plans that raise the portfolio limit, unlock the full analytics and allow downloadable reports. Paddle handles the checkout and the subscription messages that follow, and the plan limits are defined once in a typed file that drives both the server side checks and the upgrade prompts users see, so the rules cannot disagree with each other. Portfolio reports are produced as branded PDFs entirely inside the browser, capturing the live chart as an image and building the holdings table underneath it, which means there is no report server to run or pay for. Holdings can also be exported as an image to share.

There are also public calculators for regular monthly investing, one off investing and working backwards from a savings goal, which need no account and exist to bring in search traffic. Behind the scenes, PostHog tracks a dozen events with signup and activation funnels, and an admin panel covers users, feedback, subscriptions and growth charts. Qvestify is live and used by more than 1,000 investors.

02Features22

Features

  • Record every share purchase, sale and dividend you receive
  • Search any Pakistan Stock Exchange symbol from a local list of around 500
  • See what your portfolio is worth today against live market prices
  • Cards for total value, amount invested, overall profit and today's change
  • A performance chart over one day, week, month, three months, six months or a year
  • A holdings table with average buy price, current price, value and return
  • A donut chart showing how your money is split across industries
  • Edit or delete any transaction, with a full history you can search and filter
  • Run several portfolios at once and switch between them
  • Each portfolio has its own type, risk level and time horizon
  • A watchlist for shares you do not own yet, sorted by any return column
  • Track the main market indexes side by side on one chart
  • Dividend history with total received and the yield it works out to
  • Risk view that flags too much money sitting in one industry or company
  • Download a branded PDF report of your portfolio
  • Export your holdings as an image to share
  • Free calculators for monthly investing, one off investing and savings goals
  • Sign in by email with a verification code, or with a Google account
  • Native phone app for Android and iPhone, on the same data as the website
  • Dark mode and proper loading placeholders throughout the phone app
  • Three plans, with limits enforced on both the app and the server
  • Admin panel for users, feedback, subscriptions and growth charts
03Challenges & solutions5

Challenges and solutions

  1. 01
    Challenge

    The exchange serves live intraday prices and end of day prices through separate feeds, and neither one alone can answer what a share is worth right now.

    Solution

    Built one price layer that reads intraday quotes while the market is open, falls back to the latest stored close when it is not, caches current prices in memory for 60 seconds, and writes end of day rows to the database in bulk batches of 500 with a daily dedupe.

  2. 02
    Challenge

    The website and the phone app had to stay in step without maintaining two backends.

    Solution

    Pointed the Flutter app at the same Next.js routes and MongoDB database the website uses, with tokens kept in secure storage on the device. New features land once and both clients pick them up.

  3. 03
    Challenge

    Plan limits had to hold even if someone called the interface directly, while still showing helpful upgrade prompts in the app.

    Solution

    Defined the plans in one typed place and derived the entitlement checks from it, so the same rules drive the server side guards and the locked content components that explain which plan unlocks a feature.

  4. 04
    Challenge

    Portfolio reports needed charts and tables inside a PDF, without running a report service on the server.

    Solution

    Generated the whole report in the browser, capturing the live chart with html-to-image and building the holdings table with jsPDF autoTable, so there is no server rendering step to maintain or pay for.

  5. 05
    Challenge

    The phone app grew past 20 screens and started to look inconsistent.

    Solution

    Built a design system first, with shared colour, typography, spacing, radius and shadow scales, then 24 reusable widgets including skeleton loading states, so every new screen inherits the same look and dark mode works everywhere.


04The product16 screens

Qvestify screens