Logistics SaaS Platform
A multi-service logistics platform with centralized identity, role-based access and real-time data sync, serving about 1,000 daily users.
- Java
- Spring Boot
- Kafka
- Debezium

Backend & Platform Engineer (Java) and Team Lead · Spring Boot, Kafka, Keycloak, React
I build the platform behind a logistics SaaS used by about 1,000 people every day: identity, microservices, micro-frontends and event-driven data.
Led the migration of a logistics/freight SaaS platform (~1,000 daily users) from a monolith to microservices: system design, database migration, and integration with Keycloak, Kafka and internal services.
Designed and maintain the shared platform layer every service relies on: identity and SSO (Keycloak, OAuth2/OIDC), role/permission/data-scope access control, data access, file storage, webhooks and service federation.
Built the web frontend as micro-frontends with Webpack Module Federation: one host shell loading independently deployed React apps per domain (CRM, freight, HR, transport, documents, e-customs).
Implemented event-driven data flows with Apache Kafka and Debezium CDC on PostgreSQL, JPA/Hibernate and Liquibase.
Took the CRM product from design to production use; now run and maintain it, and develop the platform's mobile app.
A multi-service logistics platform with centralized identity, role-based access and real-time data sync, serving about 1,000 daily users.
HTTP API that turns Vietnamese business documents (VAT invoices, receipts, customs declarations, delivery orders, CVs, spreadsheets) into structured JSON, with the heavy OCR/LLM core on Modal GPUs.

Multi-agent LLM tool that analyzes Vietnamese stocks, from analyst reports to a bull/bear debate and a risk-checked trade decision.
The guards, gates, loop detectors and state files I put around a coding agent so long background jobs stay safe, and what I could and could not verify.
When CDC is worth it, the outbox pattern, and the traps I hit with slots, snapshots, ordering and duplicate events on PostgreSQL and SQL Server.
How I wrapped IMAP in a small TypeScript MCP server: the tool design, where the safety line sits (drafts, never send), and what I would change.
Send me the job description, the company and the salary range. If it fits, I will reply within a few days.