DiniGo: trợ lý ăn uống AI
Ăn gì đó? Đừng lo, có DiniGo!
DiniGo là app mobile (iOS và Android) giúp trả lời câu hỏi muôn thuở “tối nay ăn ở đâu?”. Người dùng nói dịp đi ăn bằng lời hoặc bằng giọng nói. AI hỏi lại vài chi tiết rồi trả về đúng 3 nơi hợp gu nhất, mỗi nơi có điểm “% hợp gu” kèm lý do. Sau bữa ăn, người dùng chấm điểm nhanh; phản hồi đó nuôi hồ sơ khẩu vị Dining DNA để lần gợi ý sau trúng hơn.
Trạng thái ngày 29/10/2026: app chạy được đầy đủ 12 màn hình trên dữ liệu mẫu, chưa nối backend.
Vấn đề và cách DiniGo giải quyết
| Vấn đề hiện nay | DiniGo làm khác |
|---|---|
| Chọn quán mất thời gian, lướt hàng chục review mà vẫn phân vân. | Chỉ đưa 3 lựa chọn, đủ để quyết nhanh. |
| App review xếp hạng chung cho mọi người, không hiểu gu từng người. | Mỗi gợi ý có % hợp gu riêng và giải thích vì sao hợp. |
| Mỗi dịp cần một kiểu quán khác nhau (hẹn hò khác tiếp khách). | Bắt đầu từ dịp đi ăn: hẹn hò, bạn bè, gia đình, tiếp khách, ăn nhanh, thử điều mới. |
| Đi du lịch, tới thành phố lạ thì không biết ăn gì. | Dùng vị trí hiện tại, tới thành phố mới thì gợi ý tự đổi theo. |
| Gợi ý không học được từ trải nghiệm thật. | Phản hồi sau bữa ăn cập nhật Dining DNA, càng dùng càng đúng gu. |
Người dùng mục tiêu
- Người trẻ đi làm ở thành phố lớn, hay phải chọn chỗ cho hẹn hò, gặp bạn, đi cùng gia đình hoặc tiếp khách.
- Người đi du lịch hoặc công tác, cần tìm quán ngon quanh nơi đang ở.
- Mặc định giao diện tiếng Việt, có tiếng Anh.
Luồng sử dụng chính
flowchart TD A[Mở app<br/>splash + kiểm tra vị trí] --> B[01 Trang chủ<br/>chọn dịp hoặc nhập yêu cầu] B --> C[02 Hội thoại AI<br/>xác nhận giờ, khu vực, số người, ngân sách] C --> D[03 Ba nơi dành cho bạn<br/>% hợp gu + lý do] D --> E[04 Chi tiết nhà hàng] E --> F[07 Vì sao AI chọn] E --> G[05 Tối nay ở đây<br/>đông/vắng, chờ, đỗ xe] E --> H[08 Lưu vào kế hoạch<br/>lịch, chia sẻ, nhắc] H --> I[Đi ăn] I --> J[09 Phản hồi sau bữa ăn] J --> K[10 Dining DNA<br/>cập nhật gu] K -. gợi ý sau trúng hơn .-> B B --> L[06 Bản đồ quanh bạn] B --> M[11 Gợi ý chủ động] B --> N[12 Hỏi AI tự do]
Giao diện hiện tại
Ảnh chụp từ app thật trên iPhone 18 Pro Max (simulator), dữ liệu mẫu. Mỗi tấm: hàng trên giao diện sáng, hàng dưới giao diện tối. Xem từng màn ở cỡ lớn và chuyển Sáng/Tối trong design “Màn hình app DiniGo (hiện trạng)”. Nút bánh răng “Tools” ở góc ảnh là của bản dev, không có trong app thật.
Luồng tìm chỗ ăn
01 Trang chủ · 02 Hội thoại AI · 03 Ba nơi dành cho bạn · 04 Chi tiết nhà hàng · 07 Vì sao AI chọn nơi này

- 01 Trang chủ: lời chào, ô nhập yêu cầu có mic, 6 dịp đi ăn, “Có thể bạn sẽ thích”, thanh tab 5 mục.
- 02 Hội thoại AI: AI tách yêu cầu thành các ô sửa được (giờ, khu vực, số người, ngân sách) và chip ưu tiên.
- 03 Ba nơi dành cho bạn: 3 tab Hợp bạn nhất / Thử điều mới / Chắc chắn hợp gu, thẻ vuốt 1/3 với badge “94% hợp gu”.
- 04 Chi tiết nhà hàng: thư viện ảnh, 4 tab Tổng quan / Thực đơn / Đánh giá / Hình ảnh, nút Lưu cho tối nay và Chỉ đường.
- 07 Vì sao AI chọn: điểm theo từng tiêu chí (ẩm thực, dịp, không gian, ngân sách, vị trí, trải nghiệm mới) và lưu ý nhỏ.
Tại quán và sau khi ăn
05 Tối nay ở đây · 06 Bản đồ & khu vực · 08 Lưu vào kế hoạch · 09 Sau khi đi ăn

- 05 Tối nay ở đây: độ đông, thời gian chờ, thời tiết, bãi đỗ xe, biểu đồ đông khách theo giờ, quán tương tự.
- 06 Bản đồ: chuyển bản đồ / danh sách, marker quán, bảng trượt các quán gần hợp gu. Bản đồ hiện là ảnh mẫu.
- 08 Lưu vào kế hoạch: thêm vào lịch, chia sẻ Zalo / Messenger / WhatsApp / link, ghi chú, nhắc trước giờ đi.
- 09 Sau khi đi ăn: chấm 5 mức bằng biểu tượng cảm xúc, chọn điều thích nhất, có muốn quay lại không.
Cá nhân hoá
10 Dining DNA · 11 Gợi ý cho bạn · 12 Hỏi AI · Cá nhân / Cài đặt

- 10 Dining DNA: thẻ persona (“Người khám phá tinh tế”), chip khẩu vị, số tín hiệu đã học, xếp hạng dịp hay đi.
- 11 Gợi ý cho bạn: tab Dành cho bạn / Khai trương / Sự kiện / Xu hướng, thẻ gợi ý chủ động.
- 12 Hỏi AI: chat tự do với các câu gợi ý sẵn.
- Cá nhân: chọn giao diện Sáng / Tối / Hệ thống, ngôn ngữ Tiếng Việt / English, lịch sử đi ăn.
Splash và quyền vị trí
Splash gốc · Splash animation · Chưa hỏi quyền · Hộp thoại iOS · Đã từ chối · Có quyền và đổi thành phố

- Splash: splash gốc chỉ có logo ghim, chuyển liền mạch sang animation (ghim nảy, sóng lan, chữ DiniGo và slogan hiện lên, khoảng 1,8 giây). Tắt animation khi máy bật Reduce Motion.
- Quyền vị trí: kiểm tra mỗi lần mở app và khi quay lại từ nền. Chưa hỏi thì giải thích rồi mới mở hộp thoại thật của hệ điều hành. Đã từ chối thì hướng dẫn 3 bước và nút “Mở Cài đặt”. Bấm “Để sau” thì 3 ngày sau mới nhắc lại bằng bảng to, trong lúc đó trang chủ có thẻ nhắc nhẹ. Có quyền thì góc trên hiện thành phố đang đứng, sang thành phố khác có thẻ “Chào mừng tới …”.
- Hộp thoại iOS và màn “đã từ chối” mới chụp được bản tối, nên hàng trên của hai ô này dùng ảnh tối.
Nhận diện thương hiệu
| Thành phần | Quy ước |
|---|---|
| Tên | DiniGo |
| Slogan | “Ăn gì đó? Đừng lo, có DiniGo!” |
| Logo | Ghim bản đồ màu tím, bên trong là chiếc đĩa có đồ ăn: tìm quán ăn ngay nơi bạn đứng. |
| Font | Fraunces (tiêu đề serif), Be Vietnam Pro (nội dung) |
| Nền sáng / tối | Kem #FBF7F2 / Mực #0F0E13 |
| Màu chính | Nút đen #17150F ở giao diện sáng, tím #B7A4F4 ở giao diện tối |
| Màu nhấn | Tím lavender #9A82EC, cam #EE8A2A, xanh “hợp gu” #E4F4E0 / #2F6B3A, đào #F9DCCA |
| AI orb | Quả cầu chuyển màu hồng, tím, xanh ở các màn có AI (02, 09, 12) |
Màn hình trong kế hoạch 2 tháng
Mockup đề xuất cho các màn chưa có, bản sáng và tối. Xem chi tiết trong design “Mockup màn hình mới (kế hoạch 2 tháng)”.

- Đăng nhập và onboarding (tuần 2): đăng nhập Apple / Google / số điện thoại; chọn món hay thèm và mức chi để khởi tạo Dining DNA.
- Hội thoại AI và giọng nói (tuần 3–4): màn đang nghe với chữ hiện theo lời nói tiếng Việt; AI trả lời dạng streaming, thông tin hiểu được hiện thành chip.
- Trạng thái dùng chung (tuần 1): đang tải (khung xương), không có kết quả (gợi ý nới điều kiện), AI quá thời gian (thử lại, giữ nguyên yêu cầu), mất mạng (vẫn xem được kế hoạch đã lưu và Dining DNA).
Kỹ thuật
| Phần | Lựa chọn |
|---|---|
| App | React Native + Expo SDK 58, iOS và Android, custom dev client |
| Điều hướng | Expo Router (theo file) |
| UI | HeroUI Native + Uniwind (Tailwind 4), theme sáng/tối bằng biến CSS |
| Dữ liệu | React Query + Axios; hiện là dữ liệu mẫu đặt sau lớp API |
| Trạng thái, lưu trữ | Zustand, MMKV |
| Ngôn ngữ | i18next, tiếng Việt mặc định, có tiếng Anh |
| Vị trí | expo-location, chỉ xin quyền khi đang dùng app |
| Kiểm thử | Jest, Maestro (E2E) |
| Repo | dinigo-vn/mobile |
Lộ trình 2 tháng (2/11 – 25/12/2026)
| Tuần | Trọng tâm |
|---|---|
| 1 | Lớp API, trạng thái tải/trống/lỗi/mất mạng, app icon DiniGo, rà Android |
| 2 | Đăng nhập, hồ sơ, onboarding chọn gu |
| 3–4 | Hội thoại AI streaming, 3 gợi ý từ API, nhập giọng nói tiếng Việt |
| 5 | Chi tiết quán và bản đồ thật, chỉ đường, gợi ý theo thành phố khi du lịch |
| 6 | Lưu kế hoạch, thêm vào lịch, chia sẻ, phản hồi sau bữa ăn, Dining DNA từ API |
| 7 | Push notification, gợi ý chủ động, hoàn thiện giao diện sáng/tối |
| 8 | Test E2E, rà accessibility, phát hành bản nội bộ TestFlight và Google Play |
Đích cuối là bản MVP nội bộ, chưa phát hành công khai. Bảng task chi tiết nằm trong repo mobile, file docs/roadmap-2-months.md.
Đang chờ chốt
Phần lớn câu hỏi cho backend chưa có trả lời. Ba câu ảnh hưởng timeline nhiều nhất:
- Giao thức chat AI (SSE hay WebSocket, cách trả về các phần có cấu trúc): chặn tuần 3–4.
- Nhà cung cấp bản đồ và dữ liệu quán (Google, Mapbox hay dữ liệu riêng; ai giữ API key): chặn tuần 5.
- Nhận giọng nói tiếng Việt (trên máy hay dịch vụ cloud): chặn tính năng nói.
Phía design cần chốt thêm: trạng thái trống / lỗi / mất mạng, chuyển động của AI orb, và layout nào là chuẩn khi bản sáng và tối khác nhau.