The starting point
The aim was a calm, honest tracker: record trades, see holdings at current prices, and never show a missing or stale number as if it were real — while keeping market-data costs close to zero.
What we were responsible for
We built the product end to end: the app, the market-data job, the marketing site and hosting.
What we built
-
Transactions as the source of truth
Users record buys and sells; holdings are rebuilt from them on every write, and every read and write is scoped to the signed-in user.
-
Hourly market data on a budget
An hourly job prices around a thousand tickers within a free price API's limits — held tickers first, continuing where the last run stopped — and pulls history and fund details from paid scrapers only for what people actually hold.
-
Honest about missing data
Unknown, stale or unavailable data is shown as such, never as a zero, and a product promise is switched on only once the feature behind it is built and verified.
-
One design system for app and site
The app and the marketing site share one set of design tokens and brand geometry.
Where it stands
Sign-in, transactions, holdings and the hourly market-data job are built and deployed: the marketing site on Cloudflare Pages, the app and the job on Railway.