AIRDATA · AIRLINE TICKETING
Agency & retail ticket platform
Agency and retail ticketing on Vietnam's leading airline platform: legacy SOAP wrapped in typed services, Keycloak as one identity layer, LangChain cutting 25% of manual agent time.
- Role
- Full-Stack Engineer
- Company
- Airdata
- Period
- 07/2023 — 02/2025
Problem
Two ticket-selling products — agency and retail — sat on top of legacy airline and rail APIs speaking SOAP. Auth was inconsistent across services, the frontend shipped too much JavaScript, and agents spent hours re-keying ticket data by hand.
Solution
Consolidated identity behind Keycloak for every microservice, wrapped the SOAP integrations in typed service boundaries, trimmed bundle size and API chatter on the client, and put a LangChain automation in front of ticket-data extraction and validation. ELK made production failures traceable instead of anecdotal.
Architecture
Tech stack
- NodeJS
- VueJS
- Keycloak
- ELK Stack
- LangChain
- WordPress
Impact
- 25%
- less manual agent time on ticket data
- Sprintly
- dependency upgrades closing CVEs
More work
GLORY SOFTWARE · CASH HANDLING
UBIQULAR Inform
Operator telemetry for a fleet of cash-handling machines: MQTT ingestion into Kafka, NestJS consumers, PostgreSQL read models — and a 30–50% cut in API response time.
AIARACORP · KOREAN MARKET
TIMART live auction
A real-time, map-driven commerce auction for the Korean market: Next.js and Redux holding contended bid state, Agora chat and FCM push, shipped on a rollback-safe AWS ECR pipeline.