Logistics SaaS Platform
Nền tảng logistics nhiều dịch vụ với định danh tập trung, phân quyền theo vai trò và đồng bộ dữ liệu thời gian thực, phục vụ khoảng 1.000 người dùng mỗi ngày.
- Java
- Spring Boot
- Kafka
- Debezium

Kỹ sư backend & platform (Java) kiêm trưởng nhóm · Spring Boot, Kafka, Keycloak, React
Tôi xây nền tảng phía sau một SaaS logistics có khoảng 1.000 người dùng mỗi ngày: định danh, microservices, micro-frontend và dữ liệu event-driven.
Dẫn việc chuyển một nền tảng SaaS logistics/vận tải (~1.000 người dùng mỗi ngày) từ monolith sang microservices: thiết kế hệ thống, migrate database, tích hợp Keycloak, Kafka và các service nội bộ.
Thiết kế và duy trì tầng platform dùng chung cho mọi service: định danh và SSO (Keycloak, OAuth2/OIDC), phân quyền theo role/permission/phạm vi dữ liệu, truy cập dữ liệu, lưu trữ file, webhook và federation giữa các service.
Dựng frontend dạng micro-frontend bằng Webpack Module Federation: một host shell nạp động các app React deploy riêng theo từng domain (CRM, vận tải, nhân sự, vận chuyển, chứng từ).
Xây luồng dữ liệu event-driven với Apache Kafka và Debezium CDC trên PostgreSQL, JPA/Hibernate và Liquibase.
Đưa sản phẩm CRM từ thiết kế tới lúc người dùng dùng thật; hiện vận hành, maintain và phát triển mobile app của nền tảng.
Nền tảng logistics nhiều dịch vụ với định danh tập trung, phân quyền theo vai trò và đồng bộ dữ liệu thời gian thực, phục vụ khoảng 1.000 người dùng mỗi ngày.
API HTTP bóc tách chứng từ tiếng Việt (hoá đơn VAT, biên lai, tờ khai hải quan, lệnh giao hàng, CV, bảng tính) thành JSON có cấu trúc, phần OCR/LLM nặng chạy trên GPU Modal.

Công cụ đa agent LLM phân tích cổ phiếu Việt Nam, từ báo cáo phân tích tới tranh luận mua/bán và quyết định đã qua kiểm soát rủi ro.
Các hook guard, handoff gate, bộ phát hiện vòng lặp và file state tôi dựng quanh coding agent để việc chạy nền dài vẫn an toàn, kèm phần nào đã kiểm chứng và phần nào chưa.
Khi nào nên dùng CDC, outbox pattern, và các bẫy tôi gặp với replication slot, snapshot, thứ tự event và consumer nhận trùng trên PostgreSQL và SQL Server.
Tôi bọc IMAP trong một MCP server TypeScript nhỏ: cách thiết kế tool, ranh giới an toàn (chỉ tạo nháp, không gửi) và những gì tôi sẽ sửa.
Gửi tôi JD, tên công ty và khoảng lương. Nếu phù hợp, tôi phản hồi trong vài ngày.