Bỏ qua và đến nội dung
Nhat Nguyen (Nate)

2024–2025

WebView đặt tàu

Vexere.com · Full-stack Developer · Kênh doanh thu tàu mới, không phải viết lại app native

ReactReduxRedux-Saga

Vấn đề

App đại lý trước đó chỉ đặt xe. Vé tàu cần UI mobile trong shell native sẵn có: tìm kiếm, sơ đồ ghế, khóa ghế độc quyền, khứ hồi, và timer vẫn đúng khi app bị đưa xuống nền.

Phần tôi làm

Phiên bản đầu của train WebView: tuyến, ghế, thông tin hành khách và giữ chỗ, nói chuyện với routing engine và order service.

Kiến trúc

App native inject identity đại lý, rồi load WebView. Request được ký để backend tin session. Redux-Saga giữ nhánh async: lấy tuyến, khóa ghế, theo timer, nhả khi hết giờ, và phối hợp chiều đi với chiều về.

Khóa ghế dùng countdown. setInterval trên mobile dừng khi app xuống nền, nên timer chạy trong Web Worker; saga đổi message từ worker thành action nhả ghế khi hết giờ.

Copy giảm giá của Đường sắt Việt Nam tới bằng tiếng Việt. Template đã biết map sang English bằng regex; còn lại fallback sang translation API.

Kết quả

Đại lý đặt tàu qua một URL trong app sẵn có. Sales có kênh mới mà không viết lại native.