CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1. LÝ DO CHỌN ĐỀ TÀI Trong thời đại chúng ta hiện nay, đời sống xã hội ngày càng phát triển và tiến bộ nhanh chóng, thúc giục mỗi cá nhân phải trang bị cho mình những kiến thức, kỹ năng phong phú để hòa nhập liền mạch với xã hội và góp phần mang lại hạnh phúc cho bản thân và những người thân yêu. Do đó, tầm quan trọng của việc học tập luôn được tôn vinh và củng cố. Với tầm quan trọng ngày càng tăng của giáo dục, điều tự nhiên là cách chúng ta tiếp thu kiến thức cũng đóng một vai trò quan trọng.
Điều này trở nên đặc biệt phù hợp trong thời đại có nhiều con đường học tập. Do đó, sẽ thật thiếu sót nếu không thừa nhận sự phổ biến ngày càng tăng của các phương pháp học tập trực tuyến trên toàn cầu. Với kết nối internet đơn giản trên mọi thiết bị, người học có thể tham gia vào các buổi học bất cứ lúc nào và từ bất kỳ địa điểm nào. Học trực tuyến đã trở thành một lựa chọn phổ biến cho những người đang tìm kiếm một phương tiện tiếp thu kiến thức nhanh chóng, dễ tiếp cận và tiết kiệm chi phí.
Ngày nay, nó đã khẳng định mình là một sự hiện diện đáng kể trong một số lĩnh vực phát triển mạnh trên toàn cầu. Hiện nay có rất nhiều trang học tập trực tuyến như Udemy, Coursera, W3Schools, Codecademy,. hầu như các website này đều phải thu phí để của người học và cũng chưa có tính năng tương tác giữa các người học với nhau. Vì vậy, Website này nhóm em xây dựng nhằm tạo một môi trường học tập miễn phí, mọi người có thể chia sẻ tài liệu và tương tác với nhau.
MỤC TIÊU Tìm hiểu và vận dụng công nghệ NextJS, NestJs để xây dựng website theo kiến trúc RESTful API. Tìm hiểu và kết hợp Prisma với MongoDB để giúp có thể xử lý các truy vấn một cách dễ dàng. Tìm hiểu cách hoạt động và áp dụng các API cần thiết của bên thứ ba như: AWS, GeminiAPI, LiveKit, AssemblyAPI, AzureAI, BotPress. Vận dụng các kiến thức tìm hiểu được để phân tích, thiết kế và xây dựng một website học tập trực tuyến với các tính năng cần thiết đáp ứng đủ nhu cầu người dùng.
Đồng thời, cũng sẽ tạo ra trải nghiệm học tập tương tác thông qua các tính năng như diễn đàn thảo luận, các buổi học trực tuyến. Công nghệ mới mẻ sẽ được tích hợp để tạo ra các trải nghiệm học tập độc đáo và hiệu quả. Người dùng sẽ có khả năng theo dõi tiến trình học tập của mình, môi trường học tập sẽ được thiết kế linh hoạt, cho phép người 1 dùng tùy chỉnh lộ trình học tập của mình. Cộng đồng học tập sẽ được xây dựng để kết nối và chia sẻ kiến thức giữa các thành viên.
Sự tương tác giữa người học và người dạy sẽ được khuyến khích thông qua các phương tiện hỗ trợ và tương tác trực tiếp. Không những thế còn có những bài tập trong mỗi video và các bài kiểm tra trong mỗi khóa học sẽ giúp người dùng ôn tập lại các kiến thức. Thiết kế giao diện thân thiện, và đạt hiệu suất hoạt động cao, ổn định, lâu dài. Triển khai website với Docker, Nginx.
CÔNG NGHỆ SỬ DỤNG Front-end: NextJS, Tailwindcss, ShadcnUI. Back-end: NestJs. Database: MongoDB, Prisma, Redis. Các dịch vụ khác: AWS, GeminiAPI, LiveKit, Assembly API, AzureAI, BotPress, Nginx.
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2. Giới thiệu NestJS là một framework mã nguồn mở để phát triển ứng dụng server-side (backend applications) bằng ngôn ngữ TypeScript hoặc JavaScript. Nó được xây dựng trên cơ sở của Node.js và sử dụng các khái niệm từ TypeScript để tạo ra một môi trường phát triển hiện đại và mạnh mẽ cho việc xây dựng các ứng dụng web và API. Các tính năng NestJS thúc đẩy sự phát triển của TypeScript Mã nguồn mở của Node.js được phát triển mạnh mẽ trong thời gian gần đây.
Sử dụng ngôn ngữ lập trình TypeScript và JavaScript Không tốn nhiều thời gian cho việc cài đặt và nghiên cứu sử dụng. Phát triển mạnh mẽ nhờ giao diện của dòng lệnh CLI Tài liệu phong phú, đa dạng, đầy đủ Khả năng mở rộng, phát triển và bảo trì cơ sở mã được thực hiện. 2 Hỗ trợ các modules giúp ứng dụng được tích hợp các công nghệ và khái niệm như: Caching, WebSockets, Validation, TypeORM,… (Aptech, 2023) 2. Giới thiệu NextJS là framework mã nguồn mở được xây dựng trên nền tảng của React, cho phép chúng ta xây dựng các trang web tĩnh có tốc độ siêu nhanh và thân thiện với người dùng, cũng như xây dựng các ứng dụng web React.
Các tính năng Server-Side rendering (SSR). Static site generation (SSG). Single-Page application (SPA). Development of faster application.
Optimization of pages. Automatic code splitting. Giới thiệu Prisma là một Object Relational Mapping (ORMs) được dùng để xây dựng các máy chủ như GraphQL Server, RESTful APIs, microservice,. Prisma đơn giản là 1 layer nằm giữa Web Server và Database.
Prisma giúp chúng ta giao tiếp với database một cách dễ dàng hơn. Các tính năng Prisma Schema: dùng để định nghĩa cấu trúc cơ sở dữ liệu. Có thể tạo các bảng, các trường, các ràng buộc và các quan hệ giữa các bảng trong cơ sở dữ liệu. Prisma Client: dùng để truy vấn và thay đổi dữ liệu trong cơ sở dữ liệu thông qua API của Prisma.
Prisma Client được sinh ra tử Prisma Schema và được tối ưu hóa với từng ngôn ngữ lập trình. Prisma Migrate: dùng để thay đổi cấu trúc của cơ sở dữ liệu theo thời gian, có thể tạo ra các file migration (di chuyển) từ Prisma Schema và sử dụng để truy vấn vào cơ sở dữ liệu. 3 Prisma Studio: là một giao diện web cho phép xem và chỉnh sửa dữ liệu trong cơ sở dữ liệu, dùng để kiểm tra kết quả của các truy vấn và các thay đổi của Prisma Client và Prisma Migrate. Giới thiệu MongoDB là một cơ sở dữ liệu hướng dữ liệu, một dạng NoSQL Database.
Về lịch sử, MongoDB được bắt đầu phát triển vào năm 2007 và vào năm 2009, công ty chủ quản đã biến MongoDB thành một open-source. Hiện tại MongoDB là một source- available software. Ta có thể thấy được MongoDB là cơ sở dữ liệu hàng đầu được rất nhiều người sử dụng và các ông lớn trong ngành đang hợp tác như Google, Amazon,. Các tính năng của MongoDB Truy vấn ad hoc.
Cân bằng tải. Thực thi Javascript phía máy chủ. Giới hạn kích thước collection. Giới thiệu Tập hợp những components được xây dựng bằng Radix UI và Tailwind CSS.
Các components được thiết kế đẹp mắt mà người dùng có thể sao chép và dán vào ứng dụng của mình. Có thể truy cập, tùy chỉnh và là mã nguồn mở. Lý do sử dụng ShadcnUI được hỗ trợ và thích ứng cao với NextJS, cũng như có nhiều UIcomponent đẹp và chất lượng dễ dàng sử dụng. Giới thiệu GEMINIAI API là một bộ công cụ mạnh mẽ dành cho các nhà phát triển và doanh nghiệp, cung cấp khả năng tương tác và tích hợp liền mạch với hệ thống của GEMINIAI.
4 API này cho phép bạn khai thác sức mạnh của công nghệ trí tuệ nhân tạo tiên tiến để xây dựng các ứng dụng và dịch vụ thông minh. Tính năng chính của GEMINIAI API: - Xử lý ngôn ngữ tự nhiên (NLP): Phân tích cú pháp và ngữ nghĩa của văn bản. Nhận diện và phân loại thực thể trong văn bản. Tạo văn bản tự động với chất lượng cao.
- Học máy (Machine Learning): Tích hợp các mô hình học máy tùy chỉnh. Hỗ trợ đào tạo và triển khai các mô hình dự đoán. Phân tích dữ liệu để đưa ra các dự đoán và khuyến nghị. - Tương tác giọng nói (Speech Recognition): Chuyển đổi giọng nói thành văn bản với độ chính xác cao.
Tạo giọng nói tự động từ văn bản. Phân tích và nhận diện giọng nói để cải thiện trải nghiệm người dùng. - Xử lý hình ảnh (Image Processing): Nhận diện và phân loại hình ảnh. Phân tích nội dung hình ảnh và video.
Tích hợp với các ứng dụng thị giác máy tính. - Tích hợp và bảo mật: Hỗ trợ các phương thức xác thực và ủy quyền bảo mật. Cung cấp các API RESTful dễ dàng tích hợp với các hệ thống hiện có. Quản lý dữ liệu và bảo vệ quyền riêng tư của người dùng.
Lợi ích của việc sử dụng GEMINIAI API: 2. Lý do sử dụng - Tối ưu hóa quy trình làm việc: Tự động hóa các tác vụ lặp đi lặp lại và tiết kiệm thời gian. - Cải thiện trải nghiệm người dùng: Tạo ra các ứng dụng và dịch vụ thông minh, tương tác tốt hơn với người dùng. - Tăng cường hiệu suất: Sử dụng công nghệ AI để đưa ra các quyết định thông minh và chính xác hơn.
Dễ dàng tích hợp: API linh hoạt và dễ dàng tích hợp với nhiều nền tảng và hệ thống khác nhau. Giới thiệu Amazon Simple Storage Service là một dịch vụ lưu trữ đối tượng cung cấp khả năng thay đổi theo quy mô, tính khả dụng của dữ liệu, bảo mật và hiệu năng hàng đầu trong lĩnh vực. Điều này có nghĩa là khách hàng thuộc mọi quy mô và lĩnh vực có thể sử dụng dịch vụ này để lưu trữ và bảo vệ bất kỳ lượng dữ liệu nào cho nhiều trường hợp 5 sử dụng khác nhau, chẳng hạn như trang web, ứng dụng di động, sao lưu và khôi phục, lưu trữ, ứng dụng doanh nghiệp, thiết bị IOT và phân tích dữ liệu lớn. Lý do sử dụng Hiệu năng, khả năng thay đổi theo quy mô, tính khả dụng và độ bền hàng đầu trong lĩnh vực.
Nhiều lớn lưu trữ tiết kiệm chi phí. Bảo mật, tính tuân thủ và khả năng kiểm tra chưa từng có. Các công cụ quản lý dùng để kiểm soát dữ liệu chi tiết. Dịch vụ truy vấn dùng để kiểm soát dữ liệu chi tiết.
Dịch vụ truy vấn tại chỗ cho phân tích. Dịch vụ lưu trữ đám mây được hỗ trợ nhiều nhất. Giới thiệu Docker là nền tảng phần mềm cho phép người dùng xây dựng, kiểm thử và triển khai ứng dụng một cách nhanh chóng. Docker đóng gói phần mềm vào các đơn vị tiêu chuẩn hóa được gọi là container có mọi thứ mà phần mềm cần để chạy, trong đó có thư viện, công cụ hệ thống, mã và thời gian chạy.
Bằng cách sử dụng Docker, bạn có thể nhanh chóng triển khai và thay đổi quy mô ứng dụng vào bất kỳ môi trường nào và biết chắc rằng mã của bạn sẽ chạy được. Lý do sử dụng Dễ sử dụng: Docker rất dễ cho mọi người sử dụng từ lập trình viên, sysadmin,. nó tận dụng lợi thế của container để build, test nhanh chóng. Có thể đóng gói ứng dụng trên laptop của họ và chạy trên public cloud, private cloud.
Tốc độ: Docker container rất nhẹ và nhanh, bạn có thể tạo và chạy docker container trong vài giây.