Back to work
Case study
IndependentProduction

Independent Build

BetterTrade

A public iOS and Android trade journal and analytics app that turns raw trade logs into structured review loops, behavioral insights, and decision-grade reporting.

Period2026 - Present
PlatformsiOS · Android
SignalLive on the App Store and Google Play
My role

Product engineer owning architecture, analytics systems, integrations, and release delivery across iOS and Android.

BetterTrade secondary preview
BetterTrade product preview
iOS + Androidpublic mobile releases
4analytics areas in the main engine
MT5manual, import, and auto-sync workflows

01 · Context

The problem was not another screen. It was making the whole workflow hold together.

BetterTrade started as a way to keep trade records useful after a position was closed. The product grew from a journal into a review and analytics system that connects capture, reflection, behavior, and the next decision.

That evolution meant the engineering problem was no longer simply storing trades. Manual entry, CSV and statement imports, MT5 Auto Sync, reviews, analytics, notifications, and cross-device services all needed to feed one consistent domain model.

02 · Constraints

What shaped the engineering choices.

  1. 01

    Trade history can arrive through several formats and workflows, so imported and synced data has to land in a consistent model before analytics can be trusted.

  2. 02

    The analytics surface needed enough depth to be useful without turning every new calculation into a tightly coupled screen-specific implementation.

  3. 03

    A Flutter client, Firebase services, Cloudflare Worker/R2 infrastructure, and two mobile stores all have different failure modes and release concerns.

03 · Ownership

Built end to end, with the product and engineering decisions connected.

Designed the app architecture and Riverpod state boundaries around domain, data, and presentation layers rather than growing features directly inside screens.

Built the analytics and review system across performance, risk, behavior, insights, daily journaling, weekly reports, and structured post-trade review flows.

Implemented import/export and MT5-related workflows, Firebase integrations, Cloudflare Worker/R2 services, release hardening, and public delivery on both mobile stores.

04 · Engineering decisions

The choices that made the product dependable.

01

Normalize first, analyze second

Manual entries, imports, and MT5 workflows feed the same trade model before they reach reporting. That keeps analytics rules independent from where a trade originated and makes the review system easier to extend.

02

Keep analytics in domain-shaped boundaries

Performance, risk, behavior, and insights are treated as related analytical areas rather than calculations embedded inside widgets. The UI consumes structured results while the analytical logic stays testable and reusable.

03

Build review loops, not a dashboard collection

Daily journaling, post-trade review, weekly reports, notifications, and analytics are connected around a repeatable review loop. The product architecture follows that workflow instead of presenting isolated charts with no next action.

04

Split service responsibilities deliberately

Firebase handles identity, application data, analytics, crash reporting, and app protection while Cloudflare Worker and R2 services cover supporting server and media workloads. The mobile client keeps those boundaries explicit.

05 · Hard parts

The work that mattered after the happy path was done.

Heterogeneous trade history

Imports and automated capture are valuable only if duplicate handling, field normalization, and downstream analytics remain consistent. The ingestion layer had to protect the rest of the product from source-specific quirks.

Analytics correctness as the product expands

New review and insight surfaces depend on the same underlying trade history. Keeping calculations centralized reduces the risk that two screens explain the same trading data differently.

Repeated production shipping

The product has been iterated through many releases, so release work includes crash monitoring, store hardening, backward-compatible data handling, and keeping cross-platform behavior aligned while features continue to move.

06 · Outcome

What the work left behind.

BetterTrade is publicly available on both the App Store and Google Play.

Manual entry, import/export, and MT5 Auto Sync all feed the same journaling and review model.

The architecture supports four main analytics areas alongside review workflows without relying on a hard-coded public version number as a proof point.

07 · Product walkthrough

The interface, not just the bullet points.

7 published screenshots from the product. Open any frame to inspect it at full size.

Stack

The tools behind the decisions.

FlutterRiverpodFirebaseCloudflare WorkersR2MT5 workflowsCI/CD

Related work

Keep following the engineering thread.

All featured work