ninggiangboy / Full-Stack Developer

Ha
Duy
Khanh

I build backend systems that scale with clarity and the product interfaces that make them useful. My work centers on event-driven architecture, strong boundaries, and software teams can keep moving inside.

Portrait of Ha Duy Khanh

About

I am a full-stack developer based in Hanoi, building backend platforms in Go and Spring and the frontend experiences that sit on top of them.

I care about systems that remain understandable as they grow: clear contracts, dependable delivery pipelines, useful observability, and code that still reads cleanly after several iterations.

Toolbox

The technologies I reach for across backend, data, frontend, and platform work.

Backend

Go, Java, and Kotlin for backend services that stay clear under load and easy to evolve.

  • Java
  • Spring Boot
  • Kotlin
  • Go

Data

Data systems chosen for clear ownership, fast paths, event streams, and practical analytics.

  • PostgreSQL
  • Redis
  • Kafka
  • ClickHouse

Frontend

TypeScript-first interfaces in React or Vue, built to stay aligned with backend boundaries.

  • React
  • Next.js
  • TypeScript
  • Vue
  • Tailwind

Platform

Containerized delivery, orchestration, and observability that support day-two operations.

  • Docker
  • Kubernetes
  • Prometheus
  • Grafana

Approach

The engineering patterns I rely on most often when a project needs to stay maintainable, observable, and ready to grow.

Modular monolith

Start with well-defined domain boundaries in one deployable, then keep the seams ready for future extraction when scale or team structure demands it.

Event-driven

Use events to decouple workflows, with a transactional outbox and CDC to keep the database and message bus in sync.

Clean architecture

Keep business rules at the center, push frameworks to the edges, and make the codebase easier to test, change, and reason about.

Observability first

Add logs, metrics, and traces early so performance issues and failures are visible before they become expensive to untangle.

Selected work

A focused look at the projects that best reflect how I design systems, structure code, and ship product-facing software.

  • send-flow-backend

    Go · Kafka · PostgreSQL · ClickHouse

    An email delivery platform built in Go with a modular monolith architecture, Kafka-driven workflows, a transactional outbox with Debezium CDC, and ClickHouse for delivery analytics.

    System architecture

    Dashboard / API clientDASHBOARD / API CLIENTRecipientRECIPIENTEmail providerEMAIL PROVIDEROperatorOPERATORGatewayGATEWAYAPI serviceAPI SERVICEWorker serviceWORKER SERVICEPostgresPOSTGRESRedisREDISKafka / RedpandaKAFKA / REDPANDAClickHouseCLICKHOUSEMinIO / S3MINIO / S3ObservabilityOBSERVABILITY
  • send-flow-frontend

    TypeScript · React · Vite

    The operational dashboard for send-flow, built with React, TanStack Router, and Vite in a feature-first structure that mirrors backend domain boundaries.

Experience

The teams I have worked with and the foundation that shaped how I build software today.

Rabiloo

Full-Stack Developer

June 2024 - Present

Hanoi, Vietnam

FPT Software

Intern Developer

January 2024 - April 2024

Hanoi, Vietnam

Education

FPT University

Bachelor's degree in Software Engineering

2021 - 2025

Now

What I am focused on at the moment, from day-to-day work to the systems ideas I am actively sharpening.

Role
Working as a Full-Stack Developer, shipping product features across backend services and frontend surfaces.
Learning
Going deeper on domain-driven design, event-driven systems, and the operational tradeoffs that come with running distributed software in production.
Building
Building send-flow, an email delivery platform with Kafka-based workflows, ClickHouse analytics, and a clear split between API and worker responsibilities.

Technical Notes

Short notes on systems, product, and engineering craft

Brief technical notes on backend architecture, product engineering, and the tradeoffs that shape maintainable software.