← Syntra Logic

A portfolio tracker for Android

Four asset classes, five data providers, one watchlist. Built to answer a question a lot of free apps answer badly: what is everything I hold actually worth right now, without an account, an ad, or a subscription.

This is our own product, not client work. We are saying so plainly because a build example and a case study are different things, and dressing one up as the other is the sort of thing you would rightly hold against us. What it does show is how we build: the decisions, the failure handling, and what happens when a free API misbehaves.

Watchlist screen: a market summary card, asset-class filters, and rows for EPAM, GOOG and BTC/USD with live prices and percentage change
GOOG detail screen on the 1D range: intraday candlesticks with volume bars, open, high, low and previous close

The watchlist, and one holding at intraday resolution. Candles and volume are drawn on Canvas rather than pulled in from a charting library — which is why the app carries no chart dependency at all.

What it does

The interesting part is what goes wrong

Anyone can call a price API. The engineering is in what happens when one of five free providers is slow, rate-limited, or quietly returns the wrong shape of data — which, on free tiers, is often.

StallsOne provider routinely takes nine seconds instead of two hundred milliseconds. Each asset class is fetched independently and painted as it lands, so one slow feed no longer holds up the other three.
Cold startLast known prices are cached locally and shown immediately, clearly labelled as remembered rather than live. A blank list is a worse answer than an honest stale one.
Closed marketsA stock's "1D" chart was empty every weekend, because the upstream range means today's session, not the last 24 hours. It now asks for five days and trims.
Rate limitsSymbol lookups are cached for the process, collapsing four calls per screen into one. Free tiers drop bursts, and that showed up as charts that were empty at random.

How it is built

Stack

Around 27 Kotlin files. Small enough that one person holds all of it in their head, which is deliberate: the same property is what makes a handover to your team realistic rather than theoretical.

What this says about a build for you

The same approach applies to work we do for clients: fixed scope agreed up front, running on your own accounts and keys, source and documentation handed over, and honest handling of the cases where a dependency lets you down — because it will.

Want something like this built? Tell us what it needs to do. You will get a straight answer on whether it is worth building — and a rough number — usually within one business day.

Get your free review