Available for work!

Hello,
I'm a Backend Engineer building scalable backend and full-stack apps.

A software engineer based in Ho Chi Minh, Vietnam. Specializing in Java/Spring Boot, RESTful APIs, and PostgreSQL.

About Me

I'm Duy Thong (Jayson) Phan, a software engineer based in Ho Chi Minh, Vietnam. I hold a Bachelor's in Computer Science from HCMUT and am working toward a Master's in Cybersecurity there, expected 2027. For the past 4+ years I've built production backend systems in the insurance domain, mostly with Java and Spring Boot, master-data services, KPI and payment engines, and the APIs and message-driven workflows behind them. I care about systems that stay correct under load, so I lean on careful API design and integration testing.

My day-to-day stack is Java, Spring Boot, PostgreSQL, and RabbitMQ, with Docker holding it all together. Outside of work I build full-stack and mobile projects to round things out a FastAPI music-recognition platform, a Flutter map app, and a few Python and AI experiments. I'm currently open to backend and software engineering roles; feel free to reach out.

My Experience

Professional experience that I have accumulated over several years.

FPT Software - Insurance Domain, Nha Trang, Vietnam

Software Engineer

Nov. 2024 - Present
  • Built MDM, the Master Data Management service that the platform treats as the single source of truth for the agency network (agents, org hierarchy, users, roles, permissions). Spring Boot / Java 17, now 140+ controllers and 500+ REST endpoints on PostgreSQL.
  • Built DMS, the Distribution Management System running the agent-compensation lifecycle, also on Spring Boot.
  • Led MDM’s migration off Oracle onto PostgreSQL (schema, data, perf tuning), which cut licensing and infra costs.
  • Wrote secure REST APIs with JPA and MyBatis, using stateless JWT/OAuth2, @PreAuthorize role checks, and app-key/secret service-to-service auth.
  • Set up an async RabbitMQ publisher/worker so heavy imports and document generation run off the request path, producing PGP-encrypted PDF/Excel with iText, Apache POI and JXLS.
  • Added a full Hibernate Envers audit trail across 170+ entities for the insurance side’s compliance needs.
  • Wrote a configurable KPI/bonus engine with user-defined formulas, multi-dimensional schemes and Oracle stored procedures, producing monthly and quarterly numbers across channels.
  • Built a reusable OkHttp auth library other microservices drop in to validate JWTs and resolve roles/permissions from the master-data service.
  • Added a multi-level payment-approval flow (submit/approve/reject) with configurable approver levels, so nothing pays out until finance signs off.
  • Integrated Databricks for the heavier KPI and payment calculations, triggering and polling the jobs from the API.
Java
Spring Boot
PostgreSQL
RabbitMQ
JPA
OAuth2
DXC Technology - Insurance Domain, Ho Chi Minh, Vietnam

Software Engineer

Feb. 2022 - Sep. 2024
  • Built the Spring MVC layer in front of Integral, DXC’s policy administration system whose old COBOL core was being moved to Java, for a life-insurance client.
  • Reworked a multi-screen policy application into a single page (Single UI), with Spring MVC controllers that bind and validate the JSON (Jackson) before anything hits the core.
  • Built the policy creation/modification APIs that validate the Single UI’s JSON and orchestrate calls into Integral per the FD specs, mapping DTOs onto its policy models.
  • Wired up Integral’s premium calculation per request (age, health, cover amount), returning the core-computed premium so quotes and policies match the actuarial rules.
  • Centralized error handling with @ControllerAdvice / @ExceptionHandler for clean responses instead of raw Integral exceptions.
  • Wrote JUnit and Mockito unit tests covering the orchestration logic.
Java
Spring MVC
Jackson
JUnit
Mockito
REST APIs

My Projects

Projects I worked on. Each of them containing its own case study.

Mixtape: Music Streaming PlatformMixtape: Music Streaming Platform

Full-stack music platform with Shazam-style audio recognition: tracks are FFT-transformed into spectrograms whose loudest peaks become fingerprint hashes in PostgreSQL, matched on a consistent time offset and robust to noise. Adds streaming uploads, dual-token JWT auth, and a social layer (follows, likes, comments, feeds).

Stack & deploy: FastAPI + SQLAlchemy 2 · PostgreSQL 16 · MinIO (S3) object storage · Next.js 16 / React 19 · TanStack Query + Zustand · Dockerized multi-service stack behind Caddy auto-HTTPS on a single VM.

PythonFastAPIPostgreSQLNext.jsReactDocker
IceCream Pusher: Sokoban AI SolverIceCream Pusher: Sokoban AI Solver

A playable Sokoban puzzle game with a built-in AI solver: A* search with a Manhattan-distance heuristic and deadlock pruning, benchmarked against a blind BFS baseline on states explored, time, and memory.

Stack & deploy: Python + Pygame · A* with admissible heuristic & deadlock detection · refactored to an async game loop and compiled to WebAssembly with pygbag (Pyodide) · runs fully in-browser, deployed as a static build on Vercel.

PythonPygameWebAssemblyA* Search
Veyo: Spatial Memory AppVeyo: Spatial Memory App

A social map app for remembering the places you have been and want to go, with a Spring Boot 3.5 / Java 21 backend and a Flutter client. PostGIS powers location-based "nearby" search; auth uses single-use rotating refresh tokens with session revocation on replay. The Flutter app wraps a custom Mapbox map where photos appear as pins and a tap uploads a new one to Cloudinary.

Stack & deploy: Spring Boot 3.5 / Java 21 · PostgreSQL + PostGIS (geospatial) · Flyway migrations · single-use rotating JWT refresh tokens · 80+ Testcontainers integration tests · CI via GitHub Actions · Flutter mobile (Riverpod, go_router, Dio) with a custom Mapbox map and Cloudinary uploads.

JavaSpring BootPostgreSQLPostGISFlutterJWT

Get In Touch

Please contact me directly at hello@jayphan.dev or through this form.