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.

- 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
- WebsiteUK site · EC Academy
- Mobile AppReact Native · Expo
- BackendJava · Spring · Postgres
- MessagingNovu · email · pushCloud & PartnersAWS · 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

Portfolio home in the app
Outcome
Results
- 155Merged pull requests in four months
- 100%Of order-fill notifications restored after a silent drop
- 4Ad 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.


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.