Bối cảnh và vấn đề nghiên cứu

Đề tài khóa luận tốt nghiệp "Xây dựng website đọc sách Mori sử dụng Nextjs và Nodejs" do sinh viên Nguyễn Thị Bích Liên (MSSV: 20110335) và Phạm Quỳnh Hương (MSSV: 20110141) thực hiện dưới sự hướng dẫn của TS. Huỳnh Xuân Phụng, thuộc Bộ môn Công nghệ Phần mềm, Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (khóa học 2020 – 2024, bảo vệ tháng 07/2024).

Lý do chọn đề tài và bối cảnh thực tiễn

Theo số liệu từ Hiệp hội Xuất bản Việt Nam được nhóm tác giả trích dẫn, năm 2022 Việt Nam ghi nhận hơn 50 triệu độc giả, tăng trưởng 10% so với năm 2021. Mặc dù nhu cầu tiếp cận tri thức gia tăng, thói quen đọc sách của người dân nói chung và giới trẻ nói riêng vẫn đối mặt với nhiều rào cản trong bối cảnh bùng nổ công nghệ thông tin và truyền thông số. Xu hướng chuyển đổi số trong lĩnh vực xuất bản và văn hóa đọc trở thành nhu cầu thiết yếu nhằm giúp độc giả tiếp cận nguồn sách linh hoạt, mọi lúc, mọi nơi thông qua các thiết bị điện tử. Bên cạnh đó, các dịch vụ đọc sách truyền thống còn thiếu tính năng hỗ trợ người khiếm thị tiếp cận tri thức thông qua hình thức sách nói (audiobook) và chuyển đổi văn bản thành giọng nói. Nhóm tác giả định hướng xây dựng website đọc sách mang tên "Mori" nhằm giải quyết các tồn tại trên, tích hợp đọc sách điện tử (ebook), nghe sách nói và cung cấp môi trường tương tác xã hội cho người đọc.

Mục tiêu và nhiệm vụ nghiên cứu

Đề tài xác lập hệ thống mục tiêu theo 3 nhóm cụ thể:

  1. Mục tiêu về công nghệ:
    • Ứng dụng framework Next.js để xây dựng giao diện người dùng hiện đại, tối ưu hóa hiệu suất hiển thị và tương tác.
    • Sử dụng Node.js kết hợp framework Express.js nhằm thiết kế hệ thống xử lý phía máy chủ (backend) theo kiến trúc RESTful API, đảm bảo khả năng chịu tải và mở rộng hệ thống.
    • Khai thác hệ quản trị cơ sở dữ liệu phi quan hệ MongoDB nhằm lưu trữ dữ liệu phi cấu trúc và bán cấu trúc linh hoạt.
    • Tích hợp mô hình xử lý ngôn ngữ tự nhiên (NLP) phục vụ việc lọc và kiểm duyệt nội dung bình luận tự động.
  2. Mục tiêu về quy trình phần mềm:
    • Áp dụng mô hình Agile/Scrum vào quản lý dự án: phân chia khối lượng công việc thành các Sprint ngắn từ 1 đến 4 tuần.
    • Sử dụng công cụ Jira Backlog để theo dõi, quản lý danh sách yêu cầu sản phẩm.
    • Thực hiện Sprint Review sau mỗi chu kỳ để thu thập phản hồi, thường xuyên tái cấu trúc mã nguồn (code refactoring) nhằm đảm bảo tiêu chuẩn chất lượng.
  3. Mục tiêu về sản phẩm:
    • Hoàn thiện website đọc sách trực tuyến với 34 chức năng phục vụ 3 phân hệ người dùng (khách vãng lai, người dùng đã đăng ký và quản trị viên).
    • Đảm bảo các yêu cầu phi chức năng về hiệu năng xử lý, tính bảo mật dữ liệu, độ ổn định hệ thống và khả năng đáp ứng trên các trình duyệt web phổ biến cũng như thiết bị di động.

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Các quy trình nghiệp vụ của nền tảng đọc sách điện tử trực tuyến (quản lý thư viện số, phân phối nội dung ebook/audiobook, đánh dấu trang, đánh giá - bình luận, giao dịch thanh toán gói cước và mua sách lẻ); các công nghệ lập trình web hiện đại bao gồm Next.js, Node.js, Express.js, MongoDB và quy trình CI/CD.
  • Phạm vi nghiên cứu:
    • Không gian: Môi trường web ứng dụng, khảo sát các nền tảng đọc sách trực tuyến tại thị trường Việt Nam.
    • Thời gian: Dữ liệu nghiên cứu, thống kê và khảo sát được thu thập trong giai đoạn từ năm 2021 đến đầu năm 2024; kế hoạch phân chia cấu trúc công việc (WBS) được lập từ ngày 26/01/2024.

Cơ sở lý thuyết và phương pháp tiếp cận

Khung công nghệ và nền tảng kỹ thuật

Đề tài xây dựng trên nền tảng các công nghệ phần mềm chuyên biệt:

  • MongoDB: Hệ quản trị cơ sở dữ liệu hướng tài liệu (NoSQL) mã nguồn mở viết bằng C++, quản lý dữ liệu theo dạng document với định dạng BSON/JSON-like. Cơ sở dữ liệu hoạt động qua tiến trình ngầm lắng nghe tại cổng mặc định 27017, sử dụng trường khóa chính _id kiểu ObjectId được lập chỉ mục (index) tự động. Cơ chế ghi đệm trên bộ nhớ RAM giúp tăng tốc độ truy vấn, thực hiện đồng bộ dữ liệu thay đổi từ RAM xuống ổ đĩa cứng theo chu kỳ mặc định 60 giây.
  • Node.js & Express.js: Nền tảng thực thi JavaScript phía máy chủ xây dựng trên JavaScript runtime Chrome V8, vận hành theo kiến trúc hướng sự kiện (event-driven) và xử lý bất đồng bộ I/O không chặn (non-blocking I/O) trên một luồng đơn (single-thread). Framework Express.js được tích hợp để định nghĩa hệ thống định tuyến (routing), triển khai các lớp middleware xử lý yêu cầu trung gian và xây dựng các dịch vụ RESTful API phục vụ trao đổi dữ liệu định dạng JSON.
  • Next.js: Framework mở rộng từ thư viện React, cung cấp cơ chế dựng trang tĩnh (Static Site Generation - SSG) và dựng trang phía máy chủ (Server-Side Rendering - SSR), tối ưu hóa tốc độ tải trang, cấu hình routing tự động và hỗ trợ phân tách mã nguồn hiệu quả.
  • Framework kiểm thử: Framework Jest được lựa chọn để thực thi kiểm thử đơn vị (unit test) trên nền tảng JavaScript với các cơ chế giả lập (mocking) và assertion (describe, it, expect). Công cụ Selenium đóng vai trò thực thi kiểm thử tự động (automated UI test) thông qua việc điều khiển các hành vi người dùng trên trình duyệt web.

Phương pháp nghiên cứu thực tế

Nhóm tác giả phối hợp các phương pháp nghiên cứu kỹ thuật và thu thập dữ liệu thực nghiệm:

  1. Phương pháp phân tích tài liệu và nghiên cứu đối chuẩn (Benchmarking): Khảo sát 5 website và nền tảng đọc sách phổ biến gồm Sachtot.vn, Waka, Gacsach.com, Docsachhay và Wattpad để so sánh các đặc tính giao diện, mô hình kinh doanh, tính năng chức năng và hạn chế kỹ thuật.
Nền tảng Màu sắc chủ đạo Tính năng nổi bật Nhược điểm ghi nhận
Sachtot.vn Xanh lá cây đậm Đọc sách, nghe sách nói, mua sách, tương thích đa nền tảng Hạn chế số lượng đầu sách mới, chất lượng hình ảnh chưa sắc nét
Waka Xanh lá cây nhạt Chỉnh sửa giao diện đọc (font, màu nền), gói hội viên, bảng xếp hạng Phải trả phí theo gói hoặc mua lẻ đối với các đầu sách đặc biệt
Gacsach.com Đen, trắng, xanh biển Đọc sách miễn phí, cộng đồng truyện tự sáng tác Font chữ thiếu tính đồng bộ, đầu sách bán chạy còn hạn chế
Docsachhay Xanh biển, trắng Đọc ebook miễn phí, hỗ trợ chế độ tối (dark mode) Nội dung sách bản quyền chủ yếu ở dạng tóm tắt ngắn
Wattpad Cam, trắng Tự sáng tác, tạo bìa sách, tương tác mạng xã hội Nội dung không đồng đều, thiếu cơ chế kiểm duyệt nội dung chặt chẽ
  1. Phương pháp phân tích nghiệp vụ: Mô hình hóa các yêu cầu nghiệp vụ phức tạp của nền tảng đọc sách số thành 34 use case chức năng chi tiết, đặc tả luồng sự kiện chính, luồng phụ, điều kiện tiên quyết và kết quả đầu ra.
  2. Phương pháp khảo sát người dùng: Phân phối biểu mẫu khảo sát trực tuyến qua công cụ Google Forms nhằm thu thập phản hồi định lượng về thói quen đọc sách, nhu cầu nghe sách nói và các tiêu chí ưu tiên đối với trải nghiệm giao diện người dùng.

Thiết kế và triển khai hệ thống

Kiến trúc hệ thống và phân hệ chức năng

Hệ thống website Mori được cấu trúc thành các dịch vụ độc lập bao gồm phân hệ Frontend người dùng (Next.js), phân hệ quản trị Frontend Admin (Next.js/React), phân hệ Backend xử lý nghiệp vụ (Node.js/Express.js) và phân hệ NLP chuyên trách nhiệm vụ kiểm duyệt nội dung.

Danh mục 34 chức năng của hệ thống được nhóm tác giả chuẩn hóa và phân loại theo đối tượng sử dụng:

STT Tên chức năng Nhóm người dùng áp dụng Kế thừa từ giai đoạn
1 - 3 Đăng ký, Đăng nhập, Đăng xuất Khách vãng lai, Người dùng, Quản trị viên TLCN
4 - 5 Tìm kiếm sách, Xem thông tin sách Khách vãng lai, Người dùng TLCN
6 - 7 Đọc sách, Nghe sách nói Khách vãng lai, Người dùng TLCN
8 - 9 Xem review sách, Xem bảng xếp hạng Khách vãng lai, Người dùng TLCN
10 - 11 Quản lý trang cá nhân; Lưu ý, đánh dấu trang Người dùng TLCN / KLTN
12 - 13 Review sách, Chấm điểm sách theo sao Người dùng TLCN / KLTN
14 - 15 Đăng ký gói cước; Thêm/xóa sách trong thư viện Người dùng TLCN
16 - 20 Quản lý tài khoản, sách, loại sách, tag, sách nói Quản trị viên TLCN
21 - 23 Đăng bài, chỉnh sửa bài, tương tác bài viết (like, comment, share) Người dùng KLTN
24 - 25 Theo dõi/hủy theo dõi người dùng, Hệ thống thông báo Người dùng KLTN
26 - 28 Chế độ tối, Dùng voucher giảm giá, Chuyển ebook sang giọng nói Khách vãng lai, Người dùng KLTN
29 - 31 Thiết lập mục tiêu đọc sách, Thanh toán mua lẻ, Gợi ý sách Người dùng KLTN
32 - 34 Quản lý thu chi, Quản lý bình luận (AI filter), Quản lý voucher Quản trị viên KLTN

(Ghi chú: TLCN: Kế thừa từ đề tài Tiểu luận chuyên ngành; KLTN: Phát triển mới trong Khóa luận tốt nghiệp).

Thiết kế cơ sở dữ liệu

Cơ sở dữ liệu MongoDB lưu trữ thông tin dưới dạng các collection với 3 thực thể dữ liệu nòng cốt được đặc tả chi tiết cấu trúc thuộc tính:

  • Bảng Account (Tài khoản): Lưu trữ định danh người dùng (_id), thông tin xác thực (email, mật khẩu mã hóa), phân quyền vai trò (role: user/admin), thông tin cá nhân (họ tên, ảnh đại diện) và trạng thái kích hoạt tài khoản.
  • Bảng Book (Sách): Chứa các thuộc tính về tiêu đề sách, tác giả, nhà xuất bản, thể loại, danh mục tag, định dạng tệp ebook, tệp âm thanh sách nói, giá bán lẻ, trạng thái thuộc gói cước hội viên, số lượt đọc và số lượt nghe.
  • Bảng Transaction (Giao dịch): Ghi nhận mã giao dịch, định danh người mua, loại thanh toán (mua gói cước hội viên hoặc mua sách lẻ), mã giảm giá (voucher) áp dụng, số tiền thanh toán, thời gian giao dịch và trạng thái xử lý giao dịch.

Kiểm thử phần mềm

  • Kiểm thử đơn vị (Unit Testing) với Jest: Thiết lập các bộ kiểm thử tự động cho các API backend. Quy trình kiểm thử thực hiện giả lập (mocking) các tầng phụ thuộc dữ liệu, khởi tạo request giả lập, thực thi API và kiểm tra kết quả đầu ra (assertion) thông qua hàm expect nhằm xác minh tính đúng đắn của logic mã nguồn và xử lý ngoại lệ.
  • Kiểm thử tự động (Automation Testing) với Selenium: Xây dựng kịch bản kiểm thử giao diện tự động trên trình duyệt web, giả lập chuỗi thao tác của người dùng từ đăng nhập, tìm kiếm sách, chuyển đổi chương đọc cho đến các thao tác tương tác mạng xã hội nhằm kiểm tra độ phản hồi và tính toàn vẹn của luồng nghiệp vụ.

Quy trình đóng gói và CI/CD

  • Container hóa: Xây dựng 4 tệp cấu hình Dockerfile riêng biệt phục vụ đóng gói môi trường độc lập cho từng phân hệ: project frontend, project admin, project backend và project nlp.
  • Tích hợp và triển khai liên tục (CI/CD): Cấu hình tự động hóa thông qua GitHub Actions với hệ thống workflow chi tiết (Workflow 1 và Workflow 2 cho từng dự án con: backend, frontend, admin, nlp). Mỗi khi có sự kiện đẩy mã nguồn (push) hoặc gửi yêu cầu hợp nhất (pull request), GitHub Actions sẽ tự động kích hoạt tiến trình cài đặt thư viện phụ thuộc, chạy bộ kiểm thử tự động, xây dựng Docker image và triển khai lên máy chủ ứng dụng.

Nội dung chính theo từng chương

Phần Mở đầu (Chương 1 đến Chương 5)

Phần mở đầu gồm 5 chương đặt nền móng cho đề tài:

  • Chương 1. Tính cấp thiết của đề tài: Phân tích nhu cầu văn hóa đọc tại Việt Nam và sự cần thiết của chuyển đổi số nền tảng đọc sách hỗ trợ đa phương tiện.
  • Chương 2. Mục tiêu đề tài: Xác định các mục tiêu cụ thể về mặt công nghệ web, tuân thủ quy trình Agile/Scrum và chuẩn đầu ra của sản phẩm phần mềm.
  • Chương 3. Cách tiếp cận và phương pháp nghiên cứu: Xác định đối tượng nghiên cứu gồm kiến trúc RESTful API, Node.js, Express.js, Next.js, cơ sở dữ liệu MongoDB và phương pháp khảo sát người dùng.
  • Chương 4. Ý nghĩa khoa học và thực tiễn: Nêu rõ giá trị của đề tài trong việc thúc đẩy phát triển sách điện tử, hỗ trợ đối tượng độc giả trẻ và người khiếm thị.
  • Chương 5. Kế hoạch quản lý đề tài: Thiết lập cấu trúc phân chia công việc (WBS) gồm 6 giai đoạn chính và xây dựng lược đồ Gantt biểu diễn tiến độ triển khai từ khâu khảo sát, thiết kế lược đồ, lập trình API, phát triển giao diện, kiểm thử đến triển khai hệ thống.

Phần Nội dung - Chương 1. Next JS

Chương này tập trung trình bày tổng quan về các công nghệ cốt lõi của đề tài. Nhóm tác giả phân tích cơ chế vận hành của cơ sở dữ liệu NoSQL MongoDB, so sánh tốc độ chèn bản ghi giữa MongoDB và cơ sở dữ liệu quan hệ SQL, đồng thời chỉ ra các ưu điểm (linh hoạt, tốc độ truy vấn cao do lưu cache trên RAM) và nhược điểm (tiêu tốn bộ nhớ RAM, thiếu cơ chế transaction phức tạp cho tài chính ngân hàng). Tiếp đó, chương giới thiệu nền tảng Node.js với Chrome V8 engine, kiến trúc hướng sự kiện, mô hình middleware trong Express.js, đặc tính kiểm thử của Jest, Selenium và khả năng hỗ trợ render hỗn hợp (SSR/SSG) của framework Next.js.

Phần Nội dung - Chương 2. Khảo sát hiện trạng

  • Khảo sát nghiệp vụ: Khảo sát chi tiết 5 website đọc sách gồm Sachtot.vn, Waka, Gacsach.com, Docsachhay và Wattpad. Đánh giá toàn diện các tiêu chí thiết kế, màu sắc, bố cục, tính năng, nhược điểm và trải nghiệm người dùng thực tế của từng trang web.
  • Xác định yêu cầu: Xác lập chi tiết các yêu cầu chức năng cho 3 đối tượng sử dụng (khách vãng lai, người dùng đã đăng ký và quản trị viên) cùng 5 tiêu chuẩn phi chức năng gồm hiệu suất xử lý đồng thời, tính an toàn - bảo mật dữ liệu, độ ổn định của hệ thống, tính thân thiện của giao diện người dùng và độ phong phú của kho dữ liệu sách.

Phần Nội dung - Chương 3. Phân tích thiết kế

  • Mô hình hóa yêu cầu: Xây dựng hệ thống sơ đồ ca sử dụng (Use Case Diagram) tổng thể cho phía người dùng và quản trị viên; chi tiết hóa các kịch bản sử dụng qua 29 bảng đặc tả use case (Bảng 2 đến Bảng 30). Thiết lập hệ thống sơ đồ tuần tự (Sequence Diagram) và sơ đồ hoạt động (Activity Diagram) từ Hình 6 đến Hình 56 cho toàn bộ các quy trình nghiệp vụ trọng yếu (quên mật khẩu, đổi mật khẩu, đăng bài viết, tương tác xã hội, thanh toán sách lẻ, chuyển đổi ebook sang giọng nói, quản lý thu chi, duyệt bình luận qua AI).
  • Thiết kế cơ sở dữ liệu: Trình bày các lược đồ lớp chi tiết (Class Diagram) liên quan đến quản lý sách (Hình 57), tài khoản người dùng (Hình 58), thanh toán giao dịch (Hình 59) và cấu trúc 3 bảng dữ liệu chính (Account, Transaction, Book).
  • Thiết kế giao diện: Mô tả chi tiết cấu trúc thành phần và hình ảnh của 25 màn hình giao diện (từ Hình 60 đến Hình 84) bao gồm trang chủ, trang đọc sách có chế độ tối, thư viện cá nhân, lịch sử đọc, bảng điều khiển quản trị, quản lý sách, quản lý voucher và giao diện duyệt bình luận.

Phần Nội dung - Chương 4. Kiểm thử phần mềm

  • Mục tiêu, phạm vi và quy trình kiểm thử: Đặt ra mục tiêu xác định lỗi logic mã nguồn và đảm bảo hệ thống vận hành chính xác theo đúng đặc tả yêu cầu chức năng.
  • Kiểm thử đơn vị với Jest: Đặc tả quy trình thiết lập môi trường test, phương thức tạo request API giả lập, cơ chế mock các hàm xử lý dữ liệu và xuất báo cáo kết quả kiểm thử đơn vị (Hình 85 đến Hình 92).
  • Kiểm thử tự động với Selenium: Trình bày cấu hình kịch bản kiểm thử tự động, hàm thực thi và kết quả đánh giá độ ổn định của các chức năng giao diện (Hình 93 đến Hình 95).

Phần Nội dung - Chương 5. Cài đặt và triển khai

  • Cài đặt ứng dụng: Liệt kê bảng thông số phiên bản các phần mềm phụ thuộc (Bảng 59) và cấu hình chi tiết các biến môi trường cho 3 dự án thành phần gồm Server backend (Bảng 60), Frontend người dùng (Bảng 61) và Frontend quản trị viên (Bảng 62).
  • Quy trình CI/CD: Trình bày chi tiết mã nguồn đóng gói container qua 4 tệp Dockerfile (frontend, admin, backend, nlp) và thiết lập quy trình tự động hóa CI/CD với GitHub Actions thông qua các tệp workflow chuyên biệt cho từng phân hệ (Hình 96 đến Hình 110).

Kết quả và đóng góp

Kết quả kỹ thuật đạt được

  1. Hoàn thiện hệ thống phần mềm: Xây dựng thành công website đọc sách Mori với đầy đủ 34 chức năng nghiệp vụ, phân định rõ ràng giữa các quyền hạn của khách vãng lai, người dùng thông thường và quản trị viên hệ thống.
  2. Triển khai kiến trúc đa phân hệ: Tách biệt độc lập giữa phân hệ giao diện người dùng (Next.js), phân hệ quản trị (Admin) và phân hệ dịch vụ máy chủ (Node.js/Express.js), kết hợp với phân hệ xử lý ngôn ngữ tự nhiên (NLP) phục vụ lọc bình luận độc hại.
  3. Đảm bảo chất lượng bằng kiểm thử và CI/CD: Xây dựng hoàn chỉnh bộ kiểm thử đơn vị với Jest, kiểm thử giao diện tự động với Selenium và tự động hóa toàn bộ quy trình kiểm tra - triển khai hệ thống thông qua Docker và GitHub Actions.

Đóng góp thực tiễn so với các nghiên cứu và hệ thống hiện hành

  • Tích hợp tính năng chuyển đổi từ sách điện tử (ebook) sang giọng nói trực tiếp trên trình duyệt, mở rộng khả năng tiếp cận nội dung số cho người khiếm thị hoặc độc giả có nhu cầu nghe sách rảnh tay.
  • Kết hợp chức năng đọc sách truyền thống với mạng xã hội chia sẻ chuyên biệt: cho phép người dùng đăng bài review, tương tác bài viết (thích, bình luận, chia sẻ), theo dõi người dùng khác và thiết lập mục tiêu đọc sách cá nhân hóa có khả năng chia sẻ thành tựu lên mạng xã hội Facebook.
  • Ứng dụng mô hình AI (NLP) vào quy trình quản trị nội dung nhằm tự động phân loại, hỗ trợ quản trị viên duyệt hoặc từ chối các bình luận không phù hợp trên diễn đàn.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên nội dung đánh giá và phần định hướng phát triển được nêu trong văn bản khóa luận:

  • Hạn chế:
    • Quy mô kho sách có bản quyền còn khiêm tốn, chủ yếu tập trung vào thử nghiệm giải pháp công nghệ và mô phỏng nghiệp vụ.
    • Mô hình xử lý ngôn ngữ tự nhiên (NLP) phục vụ lọc bình luận dừng ở mức thử nghiệm phân loại văn bản cơ bản, cần tối ưu thêm về độ chính xác ngữ cảnh tiếng Việt.
    • Hệ thống mới triển khai trên nền tảng ứng dụng web, chưa xây dựng ứng dụng di động gốc (native mobile app) cho hệ điều hành Android và iOS.
  • Hướng phát triển:
    • Nâng cấp thuật toán và mô hình gợi ý sách (Recommendation System) dựa trên lịch sử đọc và sở thích cá nhân của người dùng.
    • Cải tiến và tối ưu hóa mô hình NLP nhằm nâng cao hiệu quả lọc bình luận và tự động hóa hoàn toàn quy trình kiểm duyệt nội dung.
    • Mở rộng hợp tác liên kết với các nhà xuất bản để mở rộng kho sách điện tử và sách nói bản quyền.
    • Nghiên cứu phát triển ứng dụng di động chuyên biệt nhằm đồng bộ trải nghiệm đọc sách đa nền tảng.

Giá trị tham khảo

Đề tài cung cấp tài liệu tham khảo có giá trị học thuật và kỹ thuật thực hành cho các đối tượng:

  • Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Là tài liệu tham khảo toàn diện về cấu trúc của một đồ án tốt nghiệp kỹ thuật, từ bước khảo sát hiện trạng, mô hình hóa use case, thiết kế cơ sở dữ liệu NoSQL MongoDB, đến xây dựng RESTful API bằng Express.js và phát triển giao diện Next.js.
  • Người nghiên cứu và phát triển ứng dụng web full-stack: Cung cấp mẫu thiết kế thực tế về việc áp dụng quy trình kiểm thử tự động hai tầng (Unit test với Jest và UI test với Selenium), cũng như cách cấu hình đường ống CI/CD bằng Docker và GitHub Actions đa dịch vụ (frontend, backend, admin, nlp).

Câu hỏi thường gặp

1. Khóa luận sử dụng hệ quản trị cơ sở dữ liệu nào và cơ chế lưu trữ dữ liệu ra sao?
Khóa luận sử dụng hệ quản trị cơ sở dữ liệu NoSQL MongoDB. Dữ liệu được tổ chức dưới dạng document có cấu trúc JSON-like, lắng nghe truy vấn tại cổng mặc định 27017. Các bản ghi được tự động gắn mã định danh _id kiểu ObjectId có đánh chỉ mục. Dữ liệu truy vấn được ghi đệm (cache) lên bộ nhớ RAM và sau 60 giây hệ thống mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ đĩa cứng.

2. Hệ thống Mori được phân quyền cho những đối tượng người dùng nào?
Hệ thống phân chia quyền hạn rõ ràng cho 3 nhóm đối tượng: Khách vãng lai (tìm kiếm sách, đọc/nghe sách thử, chỉnh chế độ tối, chuyển ebook sang giọng nói); Người dùng đã đăng ký (sở hữu toàn bộ quyền của khách vãng lai, bổ sung quyền mua gói cước, mua lẻ ebook, quản lý thư viện cá nhân, đăng bài review, tương tác xã hội, thiết lập mục tiêu đọc); Quản trị viên (quản lý tài khoản, quản lý sách, loại sách, tag, quản lý thu chi, quản lý voucher và duyệt bình luận lọc từ AI model).

3. Khóa luận triển khai những phương pháp kiểm thử phần mềm nào?
Nhóm tác giả thực hiện hai phương pháp kiểm thử: Kiểm thử đơn vị (Unit Testing) sử dụng framework Jest để kiểm tra các API backend thông qua kỹ thuật mock và assertion; Kiểm thử tự động (Automation Testing) sử dụng Selenium để mô phỏng các thao tác của người dùng trên giao diện web nhằm kiểm tra tính đúng đắn của quy trình chức năng.

4. Kiến trúc CI/CD của đề tài được cấu hình như thế nào?
Quy trình CI/CD được thiết lập tự động hóa thông qua GitHub Actions kết hợp công nghệ container Docker. Nhóm tác giả xây dựng 4 tệp Dockerfile độc lập cho 4 phân hệ: frontend người dùng, frontend admin, backend API và dịch vụ nlp. Mỗi phân hệ được điều khiển bằng các workflow riêng biệt trên GitHub Actions để tự động build và triển khai khi có thay đổi mã nguồn.

5. Đề tài áp dụng mô hình quản lý dự án phần mềm nào và tiến độ được chia ra sao?
Đề tài áp dụng mô hình Agile/Scrum, sử dụng Jira Backlog để theo dõi công việc và phân chia các giai đoạn theo các Sprint ngắn từ 1 đến 4 tuần. Cấu trúc phân chia công việc (WBS) gồm 6 phần việc chính: Thiết kế phần mềm, Lựa chọn công cụ, Lập trình ứng dụng, Xây dựng API và Client server, Kiểm thử phần mềm và Triển khai hệ thống.


Kết luận

Đồ án tốt nghiệp "Xây dựng website đọc sách Mori sử dụng Nextjs và Nodejs" của sinh viên Nguyễn Thị Bích Liên và Phạm Quỳnh Hương đã giải quyết trọn vẹn bài toán xây dựng nền tảng đọc sách trực tuyến đa phương tiện phục vụ cộng đồng. Bằng việc kết hợp hệ công nghệ hiện đại Next.js, Node.js, Express.js và MongoDB, hệ thống đã đáp ứng đầy đủ 34 chức năng từ đọc sách, nghe sách nói đến tương tác mạng xã hội và quản trị giao dịch. Toàn bộ quy trình phát triển được thực hiện bài bản theo mô hình Scrum, có kiểm thử nghiêm ngặt bằng Jest, Selenium và tự động hóa triển khai bằng Docker cùng GitHub Actions. Khóa luận là tài liệu tham khảo kỹ thuật chuẩn mực cho các đề tài phát triển ứng dụng web thương mại điện tử và dịch vụ nội dung số.