Junior Software Engineer
Feb 2026 — PresentSONIQ Digital · Richmond, VIC
- Contributing to frontend (React) and backend services (microservices-based and event-driven) within a production digital signage and content management platform (CMS) operating in a cloud-native AWS environment as a SaaS product.
- Diagnosed and resolved production issues across frontend and backend systems, ensuring reliability and minimal disruption to live digital signage deployments.
- Collaborated with product managers and engineers to define system requirements, workflows, and edge cases across multiple features in a distributed microservice environment.
- Designed and implemented a media transcoding pipeline to automatically convert 4K video assets into optimised Full HD outputs for a legacy CMS, improving playback compatibility and reducing asset delivery overhead across client deployments.
- Delivered a responsive redesign across multiple web pages by introducing mobile-first layout adjustments and reusable UI patterns, improving cross-device consistency and reducing duplicated styling logic.
- Analysed and visualised existing AWS infrastructure and service interactions to support a large-scale TypeScript migration (.js → .ts, .jsx → .tsx), improving type safety and long-term maintainability.
- Authored comprehensive technical documentation and system architecture diagrams for a complex microservice ecosystem, formalising design patterns and service flows to streamline engineering onboarding.
- Improved delivery workflow by restructuring Jira epics into smaller, iterative tasks, increasing progress visibility and supporting more continuous delivery practices within the team.
- Implemented subscription-tier enforcement across distributed microservices by fixing entitlement inconsistencies, ensuring reliable behaviour for free-tier users across interconnected services.
- Investigated and resolved a production scheduling defect where enabling monthly recurrence caused timeline events to disappear, reproducing the issue through targeted test scenarios, which were later integrated into the CI/CD pipeline, and correcting timezone-sensitive scheduling logic.
- Engineered the migration of device communication protocols to a modern cloud-native synchronisation service, improving real-time data reliability and system scalability across distributed signage displays.
- Implemented responsive layout support for portrait (1080×1920) and landscape (1920×1080) digital signage displays, ensuring consistent rendering across different screen orientations used in real-world deployments.
- Participated in debugging and resolving production issues as reported during QA, ensuring system reliability and minimal disruption to live deployments and improving UX.
- Engineered a scalable user inquiry and notification routing service using AWS Lambda, integrating with HubSpot CRM to automate and streamline customer feedback workflows.
- Designed and deployed an event-driven infrastructure scheduling service (AWS Lambda + EventBridge) to automatically shut down non-production environments, reducing development costs by 10–12% and staging costs by 33% through time-based optimisation.
- Analysed an existing data integration architecture and proposed a simplified serverless alternative to achieve eventual consistency while reducing system complexity and infrastructure cost.
- Led a TypeScript migration and architected a scalable frontend system: standardised core React Context providers (authentication, theme, layout) for cross-cutting state management, and established a layered data-flow pattern (DTO → mapper → domain → API → TanStack → manager/state hook) enforcing separation of concerns and strict type-safe boundaries.
- Built automated validation tooling to enforce architectural constraints, reducing coupling and ensuring consistent code quality, particularly for AI-assisted development.
- Implemented an event-driven integration pipeline connecting Shopify webhooks to internal microservices (EventBridge + SQS), enabling automated CMS trial activation flows and reducing customer onboarding friction between hardware purchases and software usage.
- Conducted a structured discovery phase with the managing director and engineering team to surface business context, define feature scope, and align on UX constraints and implementation best practices for a Shopify-to-CMS trial activation system — converting ambiguous requirements into a clear specification before development began.
- Implemented a no-payment Stripe trial subscription activation flow within the billing service, creating a Business Tier trial subscription at claim time without capturing payment details, and engineered deterministic idempotency key handling to safely prevent duplicate Stripe customer creation between the signup and activation flows.
- Designed and built the CMS activation claim page and end-to-end customer claim flow, handling token validation, authentication round-trips, account eligibility enforcement, and trial confirmation UI — connecting Shopify hardware purchasers to an active CMS Business Tier trial in a single email-driven interaction, successfully deployed to the development environment.
- Leveraged Claude Code with Jira MCP connectors to translate post-discussion engineering decisions into structured, PR-ready implementation plans with sequenced Jira tasks and delivery timelines, preserving decision context and enabling clearer team coordination.
- Diagnosed a silent CMS activation failure while end-to-end testing as a newly onboarded customer — hardware purchased on Shopify, activation code received, claim flow silently non-functional — inspecting CloudWatch logs across the billing and IAM microservices to trace the root cause to a JWT minter re-architecture that renamed the IAM identity-sync event topic, severing billing's subscription and blocking customer identity from syncing, then updated the billing service's event subscription and flagged event topic renames as a contract-breaking class requiring explicit versioning.
- Delivered an end-to-end device grouping feature: extended the FastAPI data model with a group association field, built group CRUD and bulk assign/unassign APIs, and shipped the complete React UI — a GroupsRail filter lens, color-coded GroupChip primitives, contextual action bars, bulk multi-select, and a React Table-based device grid redesign.
- Implemented a priority-based content fallback system: removed server-side conflict checking, built event-priority playback resolution and a per-schedule dedicated fallback field (FastAPI), and delivered the schedule editor UI — event priority selector, fallback-create affordance with informational banner, and soft-warning dialog for overlapping events.
- Authored a production-ready frontend design-system layer: established Apple-inspired semantic type and colour token systems, standardised control and icon sizes via CVA, extracted shared presentational primitives (Badge, EmptyState, StatusDot, list shell), and built opinionated form layout components (Field, Stack) to enforce consistent visual hierarchy across the codebase.
- Delivered UI improvements and accessibility upgrades for a client-facing hospital directory application (AWS Amplify): applied WCAG colour-contrast best practices, introduced alternating-row colour coding for readability, standardised typography and spacing across multi-level directory views, and added touch-interaction affordances — driven by iterative client and management feedback.
- Cut total non-production cloud spend by ~33% month-over-month (measured: 31–36% across dev, ~50% in staging) by re-architecting the transactional-outbox pipeline — replacing a managed DMS → Kinesis → Lambda fan-out with a poller sidecar co-located on each microservice's underutilised Fargate task and centralising the polling and EventBridge PutEvents logic into a shared library.
- Completed the transactional-outbox teardown by unifying three drifted vendored poller copies into a single versioned shared package across four microservices, and collapsing per-worker Fargate tasks behind a config-driven async supervisor.
- Migrated a production React codebase off freehand styling onto a centralised token system by building a custom check-styling lint guard — shipped advisory-first with an allowlist of existing offenders so CI stayed green — then eliminating inline styles, raw hex literals and arbitrary pixel utilities feature-by-feature until both allowlists were empty and the guard was promoted to a merge-blocking check.
- Collapsed two parallel React component libraries into a single barrel-exported hierarchy (primitives / composites / dialogs), retiring six duplicated components across ~80 files in sequential behaviour-neutral slices, and encoded the layering contract as ESLint rules escalated from warning to error once the last compatibility shim was deleted.
- Centralised the frontend data layer across four microservices — generating types directly from each service's live OpenAPI spec, consolidating DTO mappers, typed API functions and TanStack query/mutation hooks with query-key factories into per-service shared modules, then repointing every feature and deleting its per-feature plumbing — reducing a backend contract change to a one-place edit.
- Collaborated with a teammate on requirements analysis and domain modelling for a two-tier tenancy feature separating organisations (collections of people) from workspaces (collections of resources), then designed and built the frontend interface for managing both — turning an open-ended product concept into a defined scope and a working UI.
TypeScriptReactTailwind CSSViteNestJSPython (FastAPI)AWSDockerGit/GitHubCI/CDGitHub Actions