ninggiangboy / Full-Stack Developer
HaDuyKhanh
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.
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
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.