ASHA — Nền tảng đặt lịch massage & trị liệu tại nhà
Nền tảng kết nối khách với kỹ thuật viên massage và trị liệu tại nhà: app khách và app kỹ thuật viên viết bằng Flutter, trang quản trị Next.js và API NestJS, dựng theo đặc tả nghiệp vụ và mockup khách đã duyệt.
- Năm
- 2026
- Bộ công nghệ
- 21 công nghệ
Xem qua sản phẩm
Bản desktop

Bản mobile

Phạm vi & vai trò của mình
Fullstack & Mobile Developer (Solo / End-to-End)
Phạm vi sản phẩm
API NestJS + Prisma: đăng nhập OTP, danh mục dịch vụ, đặt lịch và ghép kỹ thuật viên, thanh toán, ví, đánh giá, khiếu nại, thông báo.
App khách: khám phá và tìm kiếm dịch vụ, bản đồ chọn địa chỉ, đặt lịch, theo dõi đơn, thanh toán phần còn lại, đổi lịch, sổ địa chỉ, hộp thư.
App kỹ thuật viên: đăng ký nhiều bước, nhận đơn, lịch chạy, thu nhập, rút tiền và trả nợ hoa hồng.
Trang quản trị: booking, kỹ thuật viên, Spa đối tác, chăm sóc khách hàng, thanh toán, báo cáo, khuyến mãi, cài đặt hệ thống.
Bộ kiểm thử: unit test và e2e cho API, widget test cho hai app Flutter.
Bộ triển khai bằng Docker, CI bằng GitHub Actions.
Luồng chính
Khách chọn dịch vụ và thời lượng, chọn kỹ thuật viên cụ thể, Spa hoặc để hệ thống tự tìm, chọn địa chỉ, áp voucher hoặc điểm rồi đặt cọc bằng mã QR.
Đơn được bắn cho kỹ thuật viên ở gần; người nhận trước di chuyển, cập nhật trạng thái, thu phần còn lại bằng tiền mặt hoặc QR rồi hoàn thành đơn.
Thu nhập vào ví kỹ thuật viên, sau thời gian chờ khiếu nại thì rút được; kế toán duyệt và xuất file chi hộ trên trang quản trị.
Công nghệ
- Flutter
- Dart
- Riverpod
- NestJS
- TypeScript
- PostgreSQL
- Prisma
- Redis
- BullMQ
- Socket.IO
- Next.js
- React
- Tailwind CSS
- shadcn/ui
- TanStack Table
- Zod
- OpenStreetMap
- SePay
- Turborepo
- Docker
- GitHub Actions
Cách mình giải quyết
Bài toán cần giải quyết
ASHA kết nối khách với kỹ thuật viên massage, bấm huyệt và chăm sóc da đến tận nhà. Nghiệp vụ có nhiều quy tắc: bắn đơn cho kỹ thuật viên ở gần ai nhận trước thì được, đặt cọc online, phí di chuyển theo khoảng cách, chia doanh thu, ví và rút tiền của kỹ thuật viên, voucher, điểm thưởng, hủy và hoàn cọc. Khách đã có bộ đặc tả và mockup được duyệt; việc cần làm là dựng trọn sản phẩm trên cả mobile, web và backend.
Quyết định kỹ thuật
Trang quản trị dùng server component và một lớp BFF, phần xác thực xử lý phía máy chủ.
Job định kỳ (quét đơn quá hạn, nhắc lịch, kiểm tra nợ, hết hạn điểm) chạy trong một tiến trình worker riêng; sự kiện thời gian thực đi qua Redis để cả API lẫn worker cùng phát được.
Bản đồ dùng OpenStreetMap theo lựa chọn của khách; tra địa chỉ đi qua API, có cache, và tách thành một lớp riêng để đổi nhà cung cấp mà không sửa app.
Bài toán phức tạp
Vòng đời booking có nhiều nhánh: đặt ngay hoặc đặt giờ, kỹ thuật viên cá nhân hoặc nhân viên Spa, hủy và hoàn cọc theo từng thời điểm.
Thanh toán đến cùng lúc phải được xử lý an toàn khi có tranh chấp; số tiền thừa chuyển thành yêu cầu hoàn tiền.
Đưa giao diện hai app về khớp mockup đã duyệt, từ cỡ chữ đến từng thẻ, trên nhiều kích thước màn hình.
Kết quả đạt được
Một monorepo gồm app khách (ASHA) và app kỹ thuật viên (ASHA Pro) viết bằng Flutter, trang quản trị Next.js và API NestJS trên PostgreSQL. API có cập nhật thời gian thực qua Socket.IO và các job định kỳ chạy bằng BullMQ. Hai app hỗ trợ tiếng Việt, tiếng Anh, tiếng Hàn và tiếng Trung. Sản phẩm đang chạy thử trên môi trường staging, chờ khách hoàn tất tài khoản dịch vụ trước khi ra mắt.
Điểm nổi bật
Tính giá, cọc, phí di chuyển và chia doanh thu viết thành logic thuần có unit test; các tỉ lệ và mức phí chính là tham số admin sửa được, không nằm cứng trong code.
Thanh toán cọc bằng mã VietQR, giao dịch được đối soát tự động; giao dịch báo về trùng lặp chỉ được ghi nhận một lần.
Vị trí kỹ thuật viên hiển thị cho khách đã được làm lệch có chủ đích, nên không suy ngược ra vị trí thật.
Package Flutter dùng chung cho theme, widget, API client và đa ngôn ngữ, giữ hai app đồng bộ giao diện.
Kết nối với mình
Cảm ơn bạn đã ghé thăm góc nhỏ của mình. Rất mong chúng ta sẽ có dịp trò chuyện và hợp tác!
Mình luôn cởi mở với những cuộc trò chuyện về phát triển sản phẩm, ứng dụng AI hay các ý tưởng khởi nghiệp. Cứ thoải mái ném thẳng một tin nhắn cho mình nhé!
Nhận hợp tác chọn lọc · trả lời trong ngày