ninggiangboy / Full-stack Developer

Ha Duy Khanh

Full-stack developer building distributed backends. Modular monoliths, transactional outbox, and the boundaries between modules.

Portrait of Ha Duy Khanh

What we need is not sensitivity but a measuring stick.

A full-stack developer from Ha Noi. I build distributed backends in Go and Spring, and the React or Vue frontends that talk to them.

I like systems you can reason about. Clear contracts, honest metrics, code that stays legible after the third refactor, and an observability stack that tells the truth.

Toolbox

The tools I reach for across the whole stack, from Postgres and Kafka to the React UI.

Backend

Java and Kotlin in the Spring ecosystem, Go for production services.

  • Java
  • Spring Boot
  • Kotlin
  • Go

Data

Postgres for truth, Redis for hot paths, Kafka for events, ClickHouse for analytics.

  • PostgreSQL
  • Redis
  • Kafka
  • ClickHouse

Frontend

React and Vue, depending on the project. TypeScript always.

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

Platform

Containers, orchestration, and an observability stack I actually use.

  • Docker
  • Kubernetes
  • Prometheus
  • Grafana

Approach

The architecture I reach for, on anything bigger than a script. Not dogma, just the patterns that have stayed useful.

Modular monolith

Bounded contexts in one deployable, with seams wide enough to split when the load asks for it.

Event-driven

Kafka and a transactional outbox, with Debezium CDC so the database and the bus never disagree.

Clean architecture

Domain at the center, use cases around it, ports and adapters outward. Frameworks stay on the edge.

Observability first

Prometheus, Grafana, Loki, and Tempo wired in from the first commit, not bolted on before launch.

Selected work

A few things I have built or am building. Most of it lives on GitHub.

  • send-flow-backend

    Go · Kafka · PostgreSQL · ClickHouse

    A modular monolith email delivery platform in Go. Clean architecture, event-driven with a Kafka and Debezium outbox, ClickHouse analytics, and an API plus worker split.

  • send-flow-frontend

    TypeScript · React · Vite

    The dashboard for send-flow. React, TanStack Router, and Vite, organized feature-first to mirror the backend's bounded contexts.

Experience

Where I have worked and studied.

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, Computer Software Engineering

2021 - 2025

Now

What I am doing at the moment. Less a status board, more a note to myself.

Role
Started a new full-stack role. Settling in, shipping the first tickets.
Learning
Going deeper on domain-driven design, event-driven design, and running distributed systems in production.
Building
send-flow, an email delivery platform. Kafka outbox, ClickHouse analytics, an API and a worker.