CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. CÔNG NGHỆ SỬ DỤNG 1. Flutter Flutter là một framework phát triển ứng dụng di động giao diện người dùng (UI) đa nền tảng được phát triển bởi Google. Với Flutter, bạn có thể xây dựng các ứng dụng di động đẹp, tương tác và hiệu suất cao cho cả iOS và Android từ một mã nguồn duy nhất.
Flutter sử dụng ngôn ngữ lập trình Dart, được tối ưu hóa để xây dựng giao diện người dùng nhanh chóng và mượt mà. Đặc điểm nổi bật: − Giao diện người dùng tương tự trên nhiều nền tảng: Flutter cho phép bạn xây dựng giao diện người dùng đẹp và tương tự trên cả iOS và Android từ một mã nguồn duy nhất. Bạn không cần phải viết mã riêng cho mỗi nền tảng, giúp tiết kiệm thời gian và công sức phát triển. − Hot Reload: Flutter cung cấp tính năng Hot Reload cho phép bạn thay đổi mã nguồn và xem kết quả ngay lập tức trên thiết bị hoặc máy ảo.
Điều này giúp tăng tốc quá trình phát triển và kiểm thử ứng dụng. − Đồng bộ với nền tảng: Flutter cung cấp các widget và các thành phần giao diện tương tự như giao diện người dùng trên các nền tảng iOS và Android. Điều này giúp bạn xây dựng ứng dụng với trải nghiệm người dùng tốt trên cả hai nền tảng mà không cần nhiều công cụ bổ sung. − Hiệu suất cao: Flutter sử dụng khung Render Engine riêng biệt để vẽ giao diện người dùng, giúp cải thiện hiệu suất và tốc độ của ứng dụng.
Bạn có thể xây dựng các ứng dụng đa nhiệm, mượt mà và phản hồi nhanh. − Cộng đồng lớn và hỗ trợ mạnh mẽ: Flutter có một cộng đồng lớn và sôi nổi, với rất nhiều tài liệu, các package và các công cụ hỗ trợ sẵn sàng. Bạn có thể tận dụng những tài nguyên này để giúp xây dựng ứng dụng của mình nhanh chóng và hiệu quả. Khóa luận tốt nghiệp Công nghệ phần mềm 5 Xây dựng hệ thống mua bán cho cửa hàng cafe 1.
NuxtJS NuxtJS là một framework mã nguồn mở dựa trên Vue.js, được tạo ra để giúp bạn xây dựng ứng dụng web chuyên nghiệp và hiệu quả. Với việc kết hợp những tính năng mạnh mẽ của Vue.js và các khả năng bổ sung như routing tự động, server-side rendering (SSR) và cấu hình dựa trên tệp, NuxtJS cung cấp một cách tiếp cận linh hoạt cho việc phát triển ứng dụng web. Điểm nổi bật: − Vue.js cốt lõi: NuxtJS được xây dựng dựa trên Vue.js, một trong những framework JavaScript phổ biến nhất và có cộng đồng lớn. Sự kết hợp này mang lại cho bạn sự linh hoạt và khả năng mở rộng khi phát triển ứng dụng web.
− Server-side rendering (SSR): Với SSR, NuxtJS cho phép tạo ra các ứng dụng web với trang tĩnh được tạo ra từ máy chủ trước khi gửi tới trình duyệt. Điều này cung cấp trải nghiệm nhanh chóng và cải thiện khả năng tìm kiếm của ứng dụng web của bạn. − Routing tự động: NuxtJS giúp bạn quản lý routing một cách dễ dàng và tự động dựa trên cấu trúc thư mục của ứng dụng. Bạn không cần phải cấu hình routing một cách thủ công, điều này giảm bớt công việc lặp lại và tăng khả năng duy trì của dự án.
− Cấu hình dựa trên tệp: Với NuxtJS, bạn có thể quản lý cấu hình ứng dụng của mình thông qua các tệp tin. Điều này cho phép bạn tùy chỉnh các thiết lập một cách dễ dàng, như cấu hình máy chủ, biến môi trường và nhiều hơn nữa. − Quản lý trạng thái ứng dụng: NuxtJS tích hợp sẵn Vuex, một thư viện quản lý trạng thái mạnh mẽ cho ứng dụng Vue. Điều này giúp bạn quản lý trạng thái ứng dụng một cách hiệu quả và dễ dàng.
Tích hợp và mở rộng: NuxtJS hỗ trợ nhiều plugin và module từ cộng đồng Vue.js, giúp bạn tích hợp các tính năng phổ biến như quản lý trạng thái với Vuex, xử lý HTTP với Axios và quản lý metadata với Vue Meta. Bên cạnh đó, bạn cũng có thể sử dụng các module mở rộng của NuxtJS để tăng khả năng và linh hoạt của ứng dụng của mình. Khóa luận tốt nghiệp Công nghệ phần mềm 6 Xây dựng hệ thống mua bán cho cửa hàng cafe 1. NestJS NestJS là một framework phát triển ứng dụng server-side đa nền tảng (cross- platform) và hiệu suất cao cho Node.
Được xây dựng trên cấu trúc module của Angular, NestJS cung cấp một cách tiếp cận tương tự và cú pháp tương đồng với Angular, giúp bạn xây dựng ứng dụng server-side một cách dễ dàng và nhất quán. Điểm nổi bật: − Kiến trúc module và Dependency Injection: NestJS sử dụng kiến trúc module để tổ chức và chia nhỏ ứng dụng thành các phần độc lập và có khả năng tái sử dụng. Nó cũng hỗ trợ Dependency Injection, cho phép bạn quản lý các phụ thuộc và tạo mối quan hệ giữa các thành phần một cách dễ dàng. − Phát triển ứng dụng hiệu quả: Với cú pháp tương tự Angular, NestJS cung cấp một mô hình lập trình rõ ràng và dễ hiểu.
Nó cho phép bạn phát triển ứng dụng một cách nhanh chóng, tối ưu hóa hiệu suất và quản lý mã nguồn một cách dễ dàng. − Hỗ trợ TypeScript: NestJS được viết bằng TypeScript và hoàn toàn hỗ trợ ngôn ngữ này. TypeScript giúp bạn viết mã dễ đọc, dễ bảo trì và giảm thiểu lỗi trong quá trình phát triển. − Hỗ trợ GraphQL và RESTful API: NestJS hỗ trợ cả GraphQL và RESTful API, giúp bạn xây dựng các ứng dụng API mạnh mẽ và linh hoạt.
Bạn có thể dễ dàng định nghĩa các resolver, controller và service để xử lý yêu cầu API từ client- side. − Thành phần Ecosystem mạnh mẽ: NestJS có một cộng đồng lớn và sôi động, với nhiều thành phần, module và middleware mạnh mẽ sẵn có. Bạn có thể tận dụng các thành phần này để tăng khả năng và linh hoạt của ứng dụng của mình. MongoDB MongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL) phổ biến và mạnh mẽ.
Nó được xây dựng trên kiến trúc document-oriented, cho phép lưu trữ dữ liệu dưới dạng tài liệu JSON linh hoạt và có khả năng mở rộng. MongoDB được sử dụng rộng rãi Khóa luận tốt nghiệp Công nghệ phần mềm 7 Xây dựng hệ thống mua bán cho cửa hàng cafe trong các ứng dụng web hiện đại và là một lựa chọn phổ biến cho việc lưu trữ và truy vấn dữ liệu. Điểm nổi bật: − :Hướng tài liệu (Document-oriented)**: MongoDB lưu trữ dữ liệu dưới dạng tài liệu JSON (BSON), thay vì lưu trữ dữ liệu trong các bảng và hàng như trong hệ quản trị cơ sở dữ liệu quan hệ truyền thống. Điều này giúp MongoDB linh hoạt hơn khi làm việc với dữ liệu không đồng nhất và có cấu trúc thay đổi.
− Khả năng mở rộng dễ dàng: MongoDB được thiết kế để mở rộng dễ dàng, cho phép bạn mở rộng hệ thống theo yêu cầu tải lên và số lượng dữ liệu. Bạn có thể thêm các node mới vào cluster hoặc sử dụng các tính năng replica set và sharding để tăng cường khả năng chịu tải và đảm bảo sẵn sàng. − Truy vấn mạnh mẽ: MongoDB cung cấp một ngôn ngữ truy vấn linh hoạt và mạnh mẽ để truy xuất và xử lý dữ liệu. Bạn có thể sử dụng truy vấn đa dạng, chỉ định các tiêu chí tìm kiếm phức tạp, tạo ra các truy vấn liên quan và thực hiện các phép tính phức tạp trên dữ liệu.
− Khả năng tìm kiếm toàn văn (Full-text search): MongoDB hỗ trợ tìm kiếm toàn văn tích hợp sẵn, cho phép bạn thực hiện các truy vấn tìm kiếm văn bản đầy đủ và nhanh chóng trên dữ liệu của mình. − Tích hợp dễ dàng: MongoDB tích hợp tốt với các công nghệ web và framework phổ biến khác. Nó cung cấp các driver cho nhiều ngôn ngữ lập trình, bao gồm JavaScript, Python, Node.js và Java. Ngoài ra, MongoDB cũng hỗ trợ các công cụ quản lý và trực quan để làm việc với cơ sở dữ liệu.
Các dịch vụ thứ 3 − Twilio: là một dịch vụ viễn thông qua để hỗ trợ các ứng dụng tương tác qua tin nhắn, cuộc gọi điện thoại, video và các hình thức liên lạc khác. Twilio cho phép các nhà phát triển tích hợp chức năng như gửi tin nhắn văn bản, cuộc gọi thoại, quản lý số điện thoại và nhiều dịch vụ khác vào ứng dụng của họ thông qua các API. Khóa luận tốt nghiệp Công nghệ phần mềm 8 Xây dựng hệ thống mua bán cho cửa hàng cafe − AWS S3: là dịch vụ lưu trữ đám mây của Amazon cung cấp không gian lưu trữ linh hoạt, scalable và dễ quản lý. Với độ tin cậy cao, khả năng mở rộng linh hoạt, và tính năng quản lý truy cập, S3 là giải pháp phổ biến cho việc lưu trữ và quản lý dữ liệu trong môi trường đám mây.
− Momo Business: là dịch vụ cung cấp các API cho doanh nghiệp sử dụng Momo cung cấp các tính năng tạo yêu cầu thanh toán Momo, thông báo tình trạng thanh toán Momo,… và có thể tích hợp vào ứng dụng, website cho việc thanh toán online. − Google Map Platform: là bộ công cụ và dịch vụ của Google, cung cấp API cho việc tích hợp bản đồ, tìm kiếm địa điểm, chỉ đường, thông tin giao thông, và nhiều tính năng địa lý khác vào ứng dụng và trang web. KIẾN TRÚC HỆ THỐNG Khóa luận tốt nghiệp Công nghệ phần mềm 9 Xây dựng hệ thống mua bán cho cửa hàng cafe Hình 1. Kiến trúc hệ thống mua bán cho cửa hàng cafe Trong đề tài này, kiến trúc của hệ thống gồm 3 phần chính là Front-end, Back-end và Database.
các ứng dụng sử dụng RESTful API cung cấp từ server, và server sử dụng ODM (Object Data Model) kết nối với cơ sở dữ liệu MongoDB để xử lý dữ liệu.