Get me a coffeeCoffee...
NGUYEN TUAN ANHNGUYEN TUAN ANH
NGUYEN TUAN ANH
Scroll Down
Work Gallery
A collection of systems and technical work I've built.
View More Projects
Courtin — Badminton Community & Online Booking Platform
CAB — Ride Booking System
Badminton Court Management System
Courtin — Badminton Community & Online Booking PlatformCAB — Ride Booking SystemBadminton Court Management System

Courtin — Badminton Community & Online Booking Platform

Solves the fragmented, double-booking-prone way local badminton courts are booked by unifying real-time slot booking, VietQR wallet payments, and skill-based matchmaking into one platform — delivered as five domain services behind an API gateway with a React web client.

View Project ↓
What I Can Do
I work across the full stack — from product discovery and domain modeling to building event-driven microservices and validating them with automated tests and access-control audits.
MY STACK
Node.jsExpressTypeScriptReactPostgreSQLPrismaRedisRabbitMQPlaywrightDockerGitFigma
01
Backend & Systems Engineering
Backend & Systems Engineering

Designing and building event-driven microservices — API gateways, domain services, message buses, and concurrency-safe data layers — with a focus on correctness, reliability, and performance under load.

Node.jsExpressTypeScriptPostgreSQLPrismaRedisRabbitMQWebSocket / Socket.IOMicroservicesDockerREST APIs
02
Business Analyst & QA
Business Analyst & QA

Turning real-world problems into documented business rules, domain models, and role-based workflows — then validating them with automated tests and access-control audits before release.

Product DiscoveryDomain ModelingFigma-informed DesignPlaywright E2E TestingRBAC / ABAC AuditingAPI Testing (Postman)Mermaid Diagrams
Featured Work
A closer look at my three most substantial projects — what I built, and the results I measured.
Courtin — Badminton Community & Online Booking Platform
Aug 2026 – Present
Full-Stack Developer & Business Analyst
  • Architected 5 Node.js/TypeScript services behind an API gateway, with schema-per-service PostgreSQL and RabbitMQ events via a transactional outbox.
  • Built a competitive-match escrow across 3 services: stakes paid via SePay/VietQR → score claim → 12-hour dispute window → admin ruling → payout, settling each match exactly once.
  • Refined a 61-use-case baseline into 40 signed-off functions and 198 acceptance criteria, adding a missed flow for unmatched bank transfers.
  • Benchmarked 2 competing platforms across 18 feature areas, finding no real-time court booking with payment and positioning Courtin to fill it.
CAB — Ride Booking System
Phase 1: Jan – Apr 2026 · Phase 2: Aug 2026
Security Engineer (team phase) → Full-Stack Developer & Project Maintainer (independent phase)
  • Optimized the booking write path with a bounded Kafka dispatcher and transactional outbox, raising throughput +74% and cutting p95 latency 41% under k6 load.
  • Built the auth service with RS256 JWT, OTP login, and admin MFA, blocking all 11 over-privileged attempts across 15 authorization scenarios.
  • Audited the pricing flow and found quoted and booked fares could differ; proposed a time-limited price lock, later built into the system.
  • Drafted a 17-flow UAT checklist for customer, driver, and admin apps: OTP login → fare quote → booking → payment → rating.
CAB — Ride Booking System 1CAB — Ride Booking System 2CAB — Ride Booking System 3CAB — Ride Booking System 15
Badminton Court Management System
Apr 2026 – Jun 2026
Full-Stack Developer & System Design
  • Designed 7 Node.js/Express microservices behind an API gateway (JWT, RBAC, rate limiting) with RabbitMQ choreography and an outbox worker, so no event is lost when the broker fails.
  • Prevented double booking with a 2-layer lock (Redis SET NX + PostgreSQL advisory lock): 1 of 1,000 concurrent requests won the slot, and idempotency keys merged 500 retries into 1 record.
  • Specified 38 use cases across 4 roles (guest, customer, staff, admin) with activity diagrams, covering booking, refunds, check-in, and revenue reports.
  • Defined SePay reconciliation rules: DH codes match incoming payments, RF codes match refunds within 7 days, and ambiguous transfers are ignored to protect the ledger.
Badminton Court Management System 1Badminton Court Management System 2Badminton Court Management System 3Badminton Court Management System 18
Information Systems Student at IUH.
Profile
NGUYEN TUAN ANH
PROJECTS13
GRADUATING2027

I’m a fourth-year Information Systems student at the Industrial University of Ho Chi Minh City (IUH), aiming to grow into a Business Analyst and Full-stack Developer. I enjoy sitting between people and technology — understanding what a product actually needs to do, then helping shape it into something people can really use.

Right now most of my energy goes into COURTIN, a badminton booking platform I’m building from the ground up — the kind of project where I turn fuzzy ideas into clear requirements, figure out how the pieces fit together, and follow the work through to a result I’m proud of. I care about clear communication, dependable delivery, and staying curious enough to keep learning. Want to know more about my experience? Download my resume.

CURRENTLY
Building
Courtin badminton platform
Exploring
Event-driven microservices
Learning
Full-stack & system design
TRAIT
Problem Solver
TRAIT
Detail-Oriented
TRAIT
Reliable
TRAIT
Open to Feedback
GET IN TOUCH

OPEN
TO
OPPORTUNITIES

I'm open to opportunities where I can contribute to backend and full-stack development, system design, business analysis, and QA.

DOWNLOAD RESUME →