Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
Smart Food Recommendation System
Translation pending
LifestyleTypeScript · CSSGitHub @ddanh2436OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗VietNomNom giúp bạn trả lời câu hỏi muôn thuở "hôm nay ăn gì, ăn ở đâu". Bạn chỉ cần gõ như đang nói chuyện, ví dụ "bún bò quận 3 dưới 50k" hay "nhóm 5 người, tối nay, lẩu 150k/người", và web sẽ gợi ý quán dựa trên đánh giá thật của thực khách, không phải quảng cáo.
🌐 Dùng thử: https://project-smart-food-recommendation-f.vercel.app
Hơn 5.500 quán ở Hà Nội, TP.HCM, Đà Nẵng và nhiều tỉnh khác, với hơn 26.000 review đã được AI đọc và tóm tắt.
Không cần chọn từng bộ lọc. Web tự hiểu món, khu vực, mức giá, buổi trong ngày và số người trong câu bạn gõ, kể cả khi gõ không dấu ("bun bo q3"). Có vị trí của bạn thì quán gần được ưu tiên trước.
Trợ lý trò chuyện nổi ở mọi trang, nhớ ngữ cảnh: hỏi tiếp "rẻ hơn đi" hay "còn quán nào khác" là trợ lý sửa lại kết quả cũ. Trợ lý hiểu "tối nay" là phải còn mở cửa lúc tối, "nhóm 5 người" thì nhắc gọi đặt bàn trước. Khi chỉ còn ít quán, trợ lý nói rõ đã lọc theo điều kiện nào. Khi chưa có dữ liệu, trợ lý nói thẳng là chưa có thay vì bịa.
Mỗi quán có phần tóm tắt món ăn, giá, phục vụ, không gian, vệ sinh, chỗ để xe: khía cạnh nào được khen, bị chê hay ý kiến còn chia đôi, kèm câu trích nguyên văn từ review. Bạn biết quán này "ngon nhưng chỗ để xe chật" chỉ trong vài giây.
Ngay trong trang quán, hỏi "giá ở đây thế nào?" hay "có chỗ đậu ô tô không?" và nhận câu trả lời dựa trên review thật. Có sẵn câu hỏi gợi ý để bấm, không cần nghĩ cách hỏi.
Điểm được hiệu chỉnh theo số lượt đánh giá, nên quán chỉ có vài review 10 điểm không vượt được quán đã giữ chất lượng qua hàng trăm lượt. Mọi nơi trên web (thẻ quán, trang chi tiết, trợ lý AI) hiện cùng một con số, và điểm gốc bên Foody vẫn được ghi rõ để đối chiếu.
Chụp hoặc tải ảnh món ăn lên, AI nhận ra món (phở, bún, bánh mì, gỏi cuốn, bột chiên) rồi gợi ý quán bán món đó. Ảnh chưa rõ thì AI gợi ý các món gần giống để bạn bấm chọn.
Trang chủ gợi ý quán đang mở cửa, hợp với bữa hiện tại (sáng, trưa, chiều, tối, khuya) và gần bạn. Còn phân vân thì bấm 🎲 "Hôm nay ăn gì?" để web bốc ngẫu nhiên một quán phù hợp. Mỗi quán hiện trạng thái thời gian thực: đang mở, sắp đóng cửa, hay mấy giờ mở lại.
Website (Next.js, Vercel) → API (NestJS, Render) → AI service (FastAPI, Hugging Face) → MongoDB Atlas
Toàn bộ AI (hiểu câu hỏi, xếp hạng, đọc review, nhận diện ảnh) dùng model mã nguồn mở chạy trong AI service. Chi tiết kỹ thuật nằm ở các repo:
Dữ liệu quán và review được thu thập từ Foody.vn cho mục đích học tập. Mỗi trang quán đều có link về nguồn gốc.
Công nghệ: Next.js 16 (App Router), React 19, TypeScript strict, Tailwind v4 cho phần chat, Leaflet + leaflet-routing-machine (OpenStreetMap / OSRM), axios.
cp .env.example .env.local # NEXT_PUBLIC_API_URL = địa chỉ Backend, NEXT_PUBLIC_SITE_URL = địa chỉ web
npm install
npm run dev # http://localhost:3000
npm run build && npx tsc --noEmit && npm run lint
Một vài quy ước trong code:
app/lib/api.ts là nơi duy nhất gọi Backend. Client tự refresh token khi gặp 401, và thay mọi điểm bằng điểm đã
hiệu chỉnh (điểm gốc giữ ở rawScores).app/lib/i18n.ts, đọc qua useTranslation().Math.random(), Date.now() hay localStorage trong lần render đầu,
nếu không sẽ gặp lỗi hydration #418.images.remotePatterns lẫn imageHosts của Content-Security-Policy trong
next.config.ts.Triển khai: xem DEPLOY.md.