I'm Elvan. I build the frontend for two fintech products under one roof: Transfez, a consumer cross-border remittance app, and Jack, a B2B platform for company spend, payroll, and banking automation. They're built differently on purpose — one has to be obvious to someone sending money home for the first time, the other has to be dense enough for a finance team living in it all day. I move between both.
The UI is the easy part. The hard part is everything a user never sees: a transfer that's submitted but not yet confirmed, a status webhook that lands before the response does, a payroll run of up to 1,000 rows where row 47 fails and the other 999 still have to go through, an FX rate that expires while someone is still typing the amount. In fintech the frontend isn't a view layer — it's one step in a money movement that can't be half-done.
Fully remote for my entire career — comfortable with async collaboration, written decision-making, and owning work end to end without anyone checking in. Before the code, I worked in banking ops — so yes, I actually understand the domain I build for.
Built frontend for a B2B international transfer product. Each corridor has its own recipient form schema and validation rules. Features real-time FX rates that expire mid-session and multi-method payments — Jack Pocket, Danamon, and Virtual Account.
[Next.js, TypeScript, TanStack Query]
02 Bulk Transfer & Payroll fintech · b2b
Built the frontend for batch disbursement across two products — bulk upload of up to 1,000 rows, per-row and bulk validation, partial-failure recovery so one bad row doesn't sink the batch, and real-time polling for processing status.
[Next.js, TypeScript, TanStack Query]
03 Transfer Security security · consumer
Implemented the security layer for consumer money transfers — PIN entry with state machine, crypto-hashed submission, fingerprint authentication, and OTP with timer and resend logic. Shipped across two corridors: Malaysia → Indonesia and Singapore → Indonesia.
[Next.js, TypeScript]
04 Architecture Firm ERP side project · full-stack
Designed and shipped a full internal ERP solo for an architecture firm — live in production. Covers project tracking across architecture, civil, and interior divisions, client management, A4 quotation & invoice editor with QR verification, role-based dashboards with Gantt chart, and financial reporting with PDF export. Custom RBAC with granular per-role permissions.
jan 2021 — now · remote · jakarta · consumer cross-border remittance
// runs concurrently with the Jack role below — total tenure is 5 yrs 8 mos, not 11
Built the international and local transfer flows end to end — quote, rate lock, recipient validation, submit, and the long tail of pending, partially-settled, and failed states.
Shipped iOS, Android, and web from React Native + Next.js, with a deliberate line between what's worth sharing across platforms and what's better written natively.
Rebuilt server-state handling on TanStack Query — cache invalidation, retry policy, and optimistic updates that roll back cleanly when a bank says no. Cut redundant API calls by ~60%.
Handled FX rates that expire mid-session — the amount a user typed 30 seconds ago may no longer be the amount they'll pay, and the UI has to say so before they commit.
jan 2021 — now · remote · jakarta · B2B spend, payroll & banking automation
// runs concurrently with the Transfez role above — same company, two products
Built the payroll frontend — bulk upload of up to 1,000 rows, per-row validation, and partial-failure recovery so one bad row doesn't sink the batch.
Own the client side of our banking integrations. The integrations themselves belong to backend; my job is what happens when they misbehave — normalising inconsistent error shapes and handling webhook updates that arrive out of order or twice.
Made submission idempotent at the UI level, so a double-click never becomes a double-payment.
Established the internal component library and CSS architecture now used across all B2B surfaces. Make the day-to-day frontend architecture calls on this product, with larger decisions reviewed alongside our senior frontend.