All Work

Fintech · 2026 · Current role

EC Markets

EC Markets runs a consumer investing app for UK stocks, ETFs, ISAs and SIPPs, live on iOS and Android since September 2026. I work across five layers of the platform: the website, the React Native app, the Java backend, the messaging platform, and the cloud and third-party services that tie them together.

EC Markets product mockup
Role
Senior Web Developer
Launched
September 2026
Platforms
iOS, Android, web
Shipped
155 merged PRs

The Problem

What Needed Solving

A regulated investing app is far more than its screens. Orders, margin and positions have to be right to the penny and stay in sync with the trading platform. Every order fill, deposit and expiring document has to reach the customer on the right channel, account changes have to be secure, and compliance tasks like tax-form renewals can't rely on someone reading an email.

Growth depends on the same plumbing. Marketing needs to know which campaigns bring in real investors, and every link in an email or ad has to open the right screen in the app.

What I Did

Key Decisions

  • React Native · Java

    Trading Flows That Behave

    Fixes across the order ticket and positions: a submitting state while orders place, Max sized on the broker's unrounded margin rate, margin positions valued at their closing price, live Net P&L on the close sheet, and Position Closing Only status mirrored to TraderEvolution.

  • Java · Novu

    One Messaging Platform

    I wired the Novu workflows for onboarding, funding, payment review, document expiry and CRM email, and gave trade notifications their size, price, direction and P&L. Fixing a workflow ID typo restored order-fill notifications that had been silently dropping.

  • AWS · Terraform

    Auth Emails That Reach the Inbox

    Verification, password-reset and 2FA emails were plain text and landing in junk. They now go out on branded templates through a Cognito CustomMessage Lambda, with Cognito's managed login branded too, all defined in Terraform.

  • React Native · Java

    App Tracking and Analytics

    I built most of the app's tracking stack: AppsFlyer, Meta, Firebase Analytics and Crashlytics, Google Ads and Apple Search Ads, behind an App Tracking Transparency prompt and iOS privacy config. On the server, one dispatcher sends conversions to Meta CAPI, AppsFlyer and GA4 with a shared event ID, so each purchase is counted once.

  • React Native · Java

    Security Built Into Account Changes

    Email change follows an OWASP-compliant flow with confirmation on both addresses. A "this wasn't me" link cancels it and raises a CRM case, and a session revocation filter rejects any access token issued before the change.

  • React Native · Java

    Compliance and Stability After Launch

    In-app W-8BEN renewal replaced the email reminder and files the form with WealthKernel. Legal documents and Key Information Documents are ordered and shown per product. After launch I fixed production crashes found in Sentry, from push-token registration to live chat.

  • TypeScript
  • React Native
  • Expo
  • Java
  • Spring Boot
  • PostgreSQL
  • AWS
  • Terraform

How It Works

Architecture

  1. Website
    UK site · EC Academy
  2. Mobile App
    React Native · Expo
  3. Backend
    Java · Spring · Postgres
  4. Messaging
    Novu · email · push
    Cloud & Partners
    AWS · AppsFlyer · Meta

The five layers I work across, from first visit to a delivered notification.

Screens

Inside the Product

  • ecmarkets.co.uk
    ecmarkets.co.uk, where new investors land

    ecmarkets.co.uk, where new investors land

  • Portfolio home in the app

    Portfolio home in the app

Outcome

Results

  • 155
    Merged pull requests in four months
  • 100%
    Of order-fill notifications restored after a silent drop
  • 4
    Ad platforms attributed, each purchase counted once
  • Customers now hear about every fill, deposit and expiring document, on email, push and in-app, instead of some order fills never arriving.
  • Sign-in codes and verification emails land in the inbox with EC Markets branding, rather than as plain text in junk.
  • Marketing can see which channels bring in funded investors across AppsFlyer, Meta, Google Ads and Apple Search Ads, without double-counted conversions.
  • A changed email address can no longer be used to keep a hijacked session alive, and suspicious changes reach the support team as CRM cases.
  • The team trusts me with production: I'm the first escalation point for notifications and customer-support tooling.
Next Case StudyCoLab Portal

Let's Build Something Together

Hiring for a front-end or full-stack role, or need a product built? Email is the quickest way to reach me.