About
I'm a Melbourne-based software developer who works mostly on the backend. Most of what I do sits around commerce, payments, subscriptions, and the internal systems businesses actually run on. I care about APIs, databases, and how the parts of a system fit together, especially when money is involved and the code has to be right.
Right now I'm at Air Aroma, building B2B commerce systems. The main project is an invite-only ordering portal on Medusa v2 and Next.js that scaled from a single-country store into a multi-region, multi-currency platform for hotel groups. That covers region-aware Stripe billing, recurring subscriptions, per-region tax and pricing, and the idempotency and fail-closed checks that keep the payment side correct. I also help move an older order-management system off a legacy PHP app onto a Fastify API over PostgreSQL.
Before this I built payment infrastructure at YemeCompany using NestJS, PostgreSQL, and TypeScript, and did research work in Python on signal analysis and mobile integration. On my own time I've built a real-time chat platform and a full-stack ecommerce app, which is where a lot of my work with GraphQL, Redis, WebSockets, RBAC, and CI/CD comes from.
I finished my software engineering degree at Swinburne and I'm comfortable working full-stack with React and Next.js when a project needs it. Lately I've been deepening Go, Linux, Docker, infrastructure as code, and system design, since that's the direction I want my work to keep heading.
Tech Stack
Experience
Sep 2025 - PRESENT
Junior IT / Web Developer · Air Aroma
I do backend-heavy full-stack work on Air Aroma's B2B commerce systems. My main project is an invite-only ordering portal built on Medusa v2 and Next.js 15 that took a single-country store and scaled it into a multi-region, multi-currency platform for hotel groups like Accor, Quest, and Oaks. That meant region-aware Stripe billing across separate merchant accounts, recurring subscriptions with Stripe as the source of truth, and per-region tax and entitlement rules, with idempotency and fail-closed checks so the money side stays correct. I also work on the company's older order-management system, gradually moving order, product, and pricing flows off a legacy PHP app onto a Fastify API over PostgreSQL without breaking what still runs.
Jun 2024 - Sep 2025
Junior Software Engineer · YemeCompany
I built payment infrastructure for a platform connecting vendors and clients. The work covered multi-party transaction authorisation, order states, payouts, and real-time status updates, with REST APIs for checkout and settlement. Most of it was backend business logic, database design, payments, and authentication, though I also rebuilt the company website in Next.js and React and wrote tests with Jest, Cypress, and React Testing Library.
Oct 2024 - Mar 2025
Software Research Assistant · Haemograph
I developed Python algorithms for blood coagulation analysis using Short-Time Fourier Transform and Wavelet Transform techniques. I integrated the processing workflows with a Flutter mobile app and AWS, and improved performance through parallelisation and algorithmic optimisation.
Projects

Apollo Chat
A modern real-time chat platform built with React, NestJS, GraphQL, and MongoDB. Features include real-time messaging, WebSocket presence system, role-based access control, and secure authentication with JWT rotation.

Apollo Chat
A modern real-time chat platform built with React, NestJS, GraphQL, and MongoDB. Features include real-time messaging, WebSocket presence system, role-based access control, and secure authentication with JWT rotation.

Auralia Ecommerce
Full-stack Next.js ecommerce platform with PayPal & Stripe integration, admin dashboard with analytics, role-based authentication, and comprehensive order management system.

Auralia Ecommerce
Full-stack Next.js ecommerce platform with PayPal & Stripe integration, admin dashboard with analytics, role-based authentication, and comprehensive order management system.

Renewly Subscription Tracker
Backend Node.js application for subscription management with automated email reminders using Upstash QStash. Features JWT authentication, role-based access, and comprehensive REST API with Swagger documentation.

Renewly Subscription Tracker
Backend Node.js application for subscription management with automated email reminders using Upstash QStash. Features JWT authentication, role-based access, and comprehensive REST API with Swagger documentation.

Disability Care Datalogger
Real-time health monitoring system integrating machine learning with ESP32-C6 hardware. Features PPG signal processing, LSTM-based stress detection, and multi-model anomaly detection deployed on AWS.

Disability Care Datalogger
Real-time health monitoring system integrating machine learning with ESP32-C6 hardware. Features PPG signal processing, LSTM-based stress detection, and multi-model anomaly detection deployed on AWS.

Spirit Studio
React-based cocktail finder SPA using TheCocktailDB API. Features advanced search functionality, detailed recipe information, and newsletter subscription with React Router 6.4+ and React Query caching.

Spirit Studio
React-based cocktail finder SPA using TheCocktailDB API. Features advanced search functionality, detailed recipe information, and newsletter subscription with React Router 6.4+ and React Query caching.
View Full Résumé
Built with Next.js and deployed on Vercel