Đồ án 2: Xây dựng ứng dụng Fastfood kết hợp gợi ý món ăn cho người dùng

MỤC LỤC

Typescript

– Là một ngôn ngữ được Microsoft tặng free cho chúng ta, nền tảng của TypeScript ít nhiều cũng có sự liên quan đến JavaScript vì nó là một ngôn ngữ mã nguồn mở của JavaScript. Khác với sự đơn giản của JavaScript, du TypeScript cũng đồng thời kế thừa nhiều định nghĩa, khái niệm của đa dạng các ngôn ngữ C#, Java,… nhưng TypeScript lại có yêu cầu cao về trật tự rừ ràng. TypeScript được xem là một phiên bản nâng cao hơn của JavaScript vì nó được thiết kế thêm nhiều chức năng tiện lợi hơn, cải tiến hơn từ những điểm yếu của JavaScript như các lớp hướng đối tượng và Static Structural typing, bên cạnh đó TypeScript còn có thể hoạt động rộng rãi cho các ứng dụng của ngôn ngữ Angular2 và Nodejs.

● Giúp bạn tiết kiệm lượng lớn thời gian, công sức trong việc kiểm tra code và làm giảm tối đa phần trăm va chạm lỗi trong quá trình vận hành mà không cần thông qua bất kỳ.

NodeJS

● Mọi thao tác của Typescript không những đơn giản, nhanh chóng và tiết kiệm mà lại còn đem lại cho bạn những hiệu quả bất ngờ trong việc khắc phục lỗi và dễ đọc hơn nhiều. ● Để sử dụng được Typescript một cách hiệu quả, bạn cần đảm bảo rằng trình thử nghiệm, máy chủ node.js và webpack đều có thể hoạt động được với Typescript. ● Đa luồng kém: Node.js sử dụng mô hình đơn luồng (single-threaded), điều này có nghĩa rằng nếu một phần của mã gặp lỗi, toàn bộ ứng dụng có thể bị tắc nghẽn.

● Không phù hợp cho các ứng dụng CPU-bound: Node.js thường tốt cho các ứng dụng I/O-bound, nhưng nó không thích hợp cho các ứng dụng CPU-bound (cần xử lý tính toán nặng).

Hệ quản trị cơ sở dữ liệu Firebase 2.1 Firebase là gì?

Ngoài ra, Nodejs còn được biết tới là một mã nguồn mở và là một môi trường cho các máy chủ và ứng dụng mạng. Nhờ đó, hệ thống xử lý sẽ sử dụng ít lượng RAM nhất và giúp quá trình xử Nodejs lý nhanh hơn rất nhiều. ● Khả năng bảo mật yếu: Mặc dù Node.js có nhiều cải tiến về bảo mật, nhưng việc xử lý các vấn đề bảo mật đòi hỏi kiến thức sâu về cách làm việc của nó.

● Hạn chế trong việc sử dụng một số thư viện cần kiến thức phức tạp hơn về bất đồng bộ (asynchronous) và callback.

Firestore database

CDN chính là cụm từ viết tắt của Content Delivery Network chính là một mạng lưới máy chủ giúp lưu giữ lại các bản sao của các nội dung tĩnh, Những nội dung tĩnh này nằm ở bên trong website và trực tiếp phân phối đến các máy chủ PoP khác. - Đơn giản, dễ dàng trong sử dụng: Người dùng có thể tạo tài khoản Firebase bằng tài khoản Google và cũng như sử dụng nền tảng này trong phát triển ứng dụng một cách dễ dàng. - Tập trung phát triển chủ yếu về giao diện người dùng: Firebase cho phép lập trình viên tập trung chủ yếu vào phát triển phần giao diện người dùng nhờ kho Backend mẫu phong phú đa dạng.

- Tạo ra lưu lượng truy cập: Với khả năng hỗ trợ tạo lập các chỉ mục, Firebase giúp nâng cao thứ hạng của ứng dụng trên bảng xếp hạng Google, từ đó tăng lượt traffic.

Hình 3. Cấu trúc Firebase
Hình 3. Cấu trúc Firebase

Bootsrap

● Tùy chỉnh có thể tốn thêm công sức: Mặc dù Tailwind rất linh hoạt, nhưng để tạo ra một giao diện hoàn toàn độc đáo và phù hợp với thương hiệu, bạn có thể cần phải tùy chỉnh nhiều hơn so với việc sử dụng Bootstrap.

OpenAI - Chat GPT

Do đó, các câu trả lời của nó luôn chính xác và đáp ứng nhanh yêu cầu của người dùng. ● Hiểu biết sâu sắc về nhiều lĩnh vực: ChatGPT được huấn luyện trên một lượng dữ liệu lớn về nhiều lĩnh vực khác nhau, chẳng hạn như tài chính, khoa học, lịch sử, văn hóa và nhiều hơn nữa. Nó có thể trả lời câu hỏi về bất kỳ lĩnh vực nào mà người dùng muốn.

● Tương tác tự nhiên: ChatGPT có thể tương tác với người dùng một cách tự nhiên, giống như một người bạn thật. Điều này giúp cho người dùng cảm thấy dễ chịu và dễ dàng trò chuyện với ChatGPT. ● Mở rộng kiến thức: Vì ChatGPT được huấn luyện trên nhiều nguồn dữ liệu, nó có thể giúp người dùng mở rộng kiến thức của mình trên nhiều lĩnh vực khác nhau.

● Độ chính xác thông tin: ChatGPT được huấn luyện trên một lượng lớn dữ liệu, nhưng có thể còn bị sai sót hoặc cập nhật thông tin sai lệch. ● Giới hạn chủ đề: Mặc dù ChatGPT có thể trả lời rất nhiều câu hỏi trên nhiều chủ đề khác nhau, nhưng vẫn còn giới hạn trong một số chủ đề đòi hỏi sự tự nhiên và sáng tạo. ● Trách nhiệm: ChatGPT không có trách nhiệm với các thông tin mà nó trả lời và người dùng cần kiểm tra chính xác thông tin trước khi sử dụng.

● Tính mạng máy: ChatGPT chỉ hoạt động khi có kết nối internet và có thể bị gián đoạn hoặc chậm trễ do sự cố mạng.

THIẾT KẾ HỆ THỐNG 3.1 Sơ đồ use-case

Danh sách use-case

1 Log In Dùng tài khoản đã đăng ký để đăng nhập vào trang web với thông tin tương ứng. 2 Register Cho phép người dùng đăng ký một tài khoản để truy cập vào ứng dụng. 3 Log Out Đăng xuất ra khỏi phiên hoạt động hiện tại 4 Profile Người dùng có thể xem thông tin profile.

5 Manage Meal Người dùng quản lý các bữa ăn của mình thông qua việc cập nhật các bữa ăn để dễ dàng quản lý. 6 Food Detection Người dùng có thể đăng ảnh bữa ăn của mình để có thể phân tích lượng dinh dưỡng và calories của món ăn. 7 Nutrition Chat Room Phòng chat giúp người dùng chat với chuyên gia dinh dưỡng của open AI.

8 Exercise Chat Room Phòng chat giúp người dùng chat với chuyên gia fitness của open AI để tạo ra các bài tập thể dục phù hợp. 9 Random Meal Hệ thống sẽ gợi ý cho người dùng một vài món ăn nhất định và người dùng có thể xem chi tiết. 10 Search Meal Người dùng có thể search các món ăn có sẵn trong data của hệ thống.

11 Search By Ingredient Người dùng có thể search các món ăn có sẵn trong data của hệ thống theo nguyên liệu của món ăn.

Đặc tả use-case

Người dùng đăng nhập thành công vào hệ thống, được điều hướng đến màn hình “Random Meal”. Trạng thái hệ thống sau Người dùng đăng ký thành công vào hệ thống, được. Người dùng nhập các thông tin: tên, email, mật khẩu, xác thực mật khẩu, ngày tháng năm sinh, giới tính, vai trò sử dụng ứng dụng(các trường bắt buộc), số điện thoại(trường không bắt buộc) và nhấn “Đăng ký”.

Tài khoản đang được đăng nhập vào ứng dụng Phiên hoạt động của tài khoản còn hoạt động Trạng thái hệ thống sau. Tóm tắt Chức năng cho phép người dùng quản lý thông tin bữa ăn của mình. Tài khoản đang được đăng nhập vào ứng dụng Phiên hoạt động của tài khoản còn hoạt động Trạng thái hệ thống sau.

Các chỉ số của món ăn được đưa vào hệ thống được hiển thị đầy đủ và rừ ràng cựng với cỏc mún ăn khỏc tương tự cho người dùng có thể tham khảo. Tóm tắt Chức năng cho phép người dùng chat với chuyên gia dinh dưỡng được phát triển bởi openAI. Tóm tắt Chức năng cho phép người dùng chat với chuyên gia fitness được phát triển bởi openAI.

Tóm tắt Chức năng hỗ trợ gợi ý các món ăn cho người dùng một các ngẫu nhiên. Tóm tắt Chức năng tìm kiếm món ăn trong data của hệ thống dựa theo nguyên liệu của món ăn.

THIẾT KẾ GIAO DIỆN 5.1 Danh sách màn hình

9 Search Meals Người dùng có thể tìm kiếm các món ăn theo tên trong database của trang web 10 Meals by Ingredients Người dùng có thể tìm kiếm các món ăn. 11 Profile (Information) Thông tin các thông tin cá nhân của người dùng, người dùng có thể cập nhật thông tin để có thể tính BMI và BMR. 1 GeneratBtn Button Button generate bữa ăn theo ngày và tuần 2 DateSelector Select Select cho phép người dùng chọn giữa tạo kế.

1 ImageInput Input Input để nhập ảnh bữa ăn 2 MealName Input Input để nhập tên của bữa ăn. 3 Calories Input Input để nhập lượng calories của bữa ăn 4 BtnAddMeal Button Button để thêm bữa ăn vào quản lý bữa ăn cá. 1 ImageInput Input Input để nhập ảnh bữa ăn muốn phân tích 2 ImageDiv Div Bấm vào div để có thể có thêm nhiều thông.

1 questionText Input Input để hiển thị câu hỏi của người dùng 2 exerciseDetail Div Div để hiển thị thông tin chi tiết về các bài tập. 1 questionText Input Input để hiển thị câu hỏi của người dùng 2 exerciseDetail Div Div để hiển thị câu trả lời chi tiết về các câu. 8 mealDetail Div Div hiển thị các món ăn phù hợp, người dùng có thể nhấn vào để có thêm thông tin.

2 ingredients Button Button hiển thị tên các nguyên liệu đang có thể tìm trong hệ thống, người dùng nhấn vào button tương ứng để tìm. 3 meal Div Div hiển thị món ăn, người dùng nhấn vào để có thêm nhiều thông tin chi tiết. 11 BMI TextField TextField hiển thị chỉ số BMI của người dùng dựa trên thông tin cá nhân của họ.

12 BMR TextFeild TextField hiển thị chỉ số lượng calories hằng ngày của người dùng dựa trên thông tin cá nhân của họ.

CÀI ĐẶT VÀ KIỂM THỬ 6.1. Môi trường cài đặt và kiểm thử