Software Engineer

  • Started the TypeScript refactor of Mantle, beginning with the order-management ('mantle-orders') by contributing to building its core flows, order confirmation, product-collection explosion, EBA/FRONTLIST credit order, and Action Summary, on HAPI.js v21 with Awilix for dependency injection and Objection.js (with Knex.js) for the ORM layer, and Jest for unit testing.
  • Contributed to building the 'mantle-fulfilments' SAP and A2R processes, IFC134 XML over SFTP for book orders, A2R CSV file generation, the SAP business-partner REST proxy endpoints, and the order-credit process.
  • Contributed to the creation of Lambda functions for the refactored service (using Node 18, AWS SAM, Awilix, TypeScript, and Jest), applying a tag-driven (or event-driven) architecture to decouple the domain logic from the transport layer, and using SQS as the event bus for inter-service communication.
  • Added the IDM identity proxy and product-search modules to 'mantle-backend', and shipped the 'entitlement-cancellation' endpoint.
  • Wrote the foundational service code for the new service 'mantle-ledgers' (using Fastify 5).
  • Replaced the team's Fuge local-dev stack with Docker Compose and AWS Localstack setup that boots all Mantle services and dependencies (including the localstack SQS queues) with a single shell script.
  • Wrote the team's current Claude Code SDD/TDD configuration (docs, rules, skills, agents, AGENTS.md, CLAUDE.md) to improve the developer experience with the new AI-assisted workflow. Ongoing development and improvement of Claude Code configuration is part of my responsibilities as the team's 'Claude Code SME'.
TypeScriptNode.jsAwilixFastifyHapi.jsNuxt.jsObjection.jsVue.jsVuetifyVuexMySQLNATSRedisAWS LambdaAWS SQSClaude CodeDockerJest

Junior Software Engineer

  • Maintained Mantle's legacy stack, a JavaScript, Hapi.js, NATS-Hemera microservice platform covering negotiated-sales orders for academic books and journals, patching bugs and shipping small features against JIRA tickets.
  • Implemented a SAGA-pattern flow in 'order-service' for order cancellation and 'set order to live', and shipped fixes for journal sales-model ratios, customer price overrides, and the GOBI 'Error checking PO' issue.
  • Implemented sales-rep UI changes in the legacy web (Nuxt 2, Vue 2, Vuetify), added PO-reference validation rules, set the 500-character limit for the order-comment field, and applied copy/plural fixes on the order details form.
  • Also worked across legacy Hemera services ('gobi-listener', 'a2r-service', 'comment-service', 'identity-service', 'usage-service'), added 'ILR and IXD' filters for journals, and fixed the 'customer does not have SAP BP' issue in some GOBI orders.
  • Operated within the Agile process (daily standups, refinement sessions, sprint planning, and retrospectives) and MR/peer dev-review workflow.
JavaScriptNode.jsHapi.jsNuxt.jsVue.jsVuetifyVuexMySQLNATSRedisChaiDockerMochaSinon
Goodfrontend.dev logo

Goodfrontend.dev

September 2021 โ€” February 2022

  • Completed an intensive frontend development cadetship progressing through structured individual and team-based project phases focused on modern web technologies and real-world collaborative development.
  • Built proficiency in Next.js, React, and TypeScript through structured projects including a comparative code review of 6 different implementations to evaluate best practices.
  • Improved CSS skills in Flexbox and Grid, culminating in a team-built CatWiki app integrating Apollo Client/GraphQL with the Cat API.
  • Contributed to the Goodfrontend.dev live website as part of Team Maki โ€” a 4-person team โ€” taking on tech lead responsibilities, learning Contentful CMS, and writing GraphQL queries.
  • Navigated team challenges including Git workflow conflicts and unclear task prioritisation โ€” resolved through code refactoring, role clarification, and self-organised standups.
  • Transitioned from solo academic projects to structured agile team collaboration, building practical experience in role flexibility and peer accountability.
JSNADLinux Foundation / OpenJS Foundation

OpenJS Node.js Application Developer

Languages & Runtimes

TypeScript
JavaScript
Node.js
Java
Kotlin
HTML
CSS

Frameworks & Libraries

React.js
Next.js
Vue.js
Nuxt.js
Vuex
Vuetify
Hapi.js
GraphQL
Tailwind
Laravel
Objection.js
Awilix

Data & Messaging

MySQL
MongoDB
Redis
NATS
Firebase

Cloud, DevOps & Testing

AWS
Docker
Jest
Mocha
Chai
Sinon

Lugan

Vehicle & motorcycle logbook

Closed Testing

A logbook app for vehicle and motorcycle owners โ€” track maintenance, fuel logs, expenses, and service history all in one place.

Our Wedding

Wedding RSVP & guest portal

In Development

A wedding RSVP and guest portal โ€” invite management, RSVP tracking, meal preferences, and a live guest list for the couple to manage on the day.

Petto

Pet care logbook

In Development

A logbook app for pet owners โ€” track vet visits, vaccinations, medications, feeding schedules, and milestones for your furry companions.