Chương 1. Lý do chọn đề tài. Anime, hay phim hoạt hình Nhật Bản, đã và đang trở thành một hiện tượng văn hóa thu hút hàng triệu người hâm mộ trên toàn thế giới, không chỉ giới hạn ở trẻ em mà còn lan tỏa đến mọi lứa tuổi. Anime sở hữu kho tàng nội dung vô cùng đa dạng, phong phú, đáp ứng mọi sở thích và nhu cầu của người xem.
Nghệ thuật sáng tạo độc đáo là một điểm nhấn khác biệt, tạo nên sức hút riêng biệt cho loại hình giải trí này. Với những nét vẽ tinh tế, đầy cảm xúc, cùng sự sáng tạo vô bờ bến, Anime mang đến cho người xem những hình ảnh ấn tượng, khó phai. Hơn thế nữa, Anime xây dựng những nhân vật đa chiều, đáng nhớ. Âm nhạc đóng vai trò quan trọng trong việc tạo nên bầu không khí và truyền tải cảm xúc cho Anime.
Những bản nhạc OP (Opening) và ED (Ending) sôi động, hay những giai điệu du dương, da diết trong phim luôn khiến người xem nhớ mãi. Ẩn sau những câu chuyện giải trí, Anime thường mang theo những thông điệp sâu sắc về cuộc sống, con người và xã hội. Qua những tình huống và thử thách mà các nhân vật trải qua, Anime khuyến khích người xem suy ngẫm về các giá trị đạo đức, tình bạn, tình yêu và ý nghĩa của cuộc sống. Bên cạnh sự phát triển của phim Anime, truyện tranh cũng được giới trẻ ngày nay ưu chuộng, giống như Anime, truyện tranh cũng có những nội dung tương tự phong phú và hấp dẫn được phát hành dưới dạng truyện, rút ngắn thời gian chờ phát hành của độc giả giúp các bạn có thể trải nghiệm giải trí sớm nhất có thể.
Với sự phát triển của internet và các nền tảng streaming, Anime và truyện tranh ngày càng dễ dàng tiếp cận với độc giả trên toàn cầu. Chúng ta có thể xem phim đọc truyện Anime mọi lúc mọi nơi, chỉ cần một chiếc smartphone hoặc máy tính có kết nối internet. 2 Nhìn chung, Anime là một loại hình giải trí mang đến nhiều giá trị và lợi ích cho người xem. Với sức hút đa chiều, Anime đã và đang chinh phục trái tim của hàng triệu người hâm mộ trên toàn thế giới.
Tuy nhiên, việc tiếp cận Anime một cách thông minh và có chọn lọc sẽ giúp bạn tận hưởng trọn vẹn những giá trị mà loại hình nghệ thuật này mang lại. Và để hỗ trợ những bạn trẻ có thể dễ dàng tiếp cận với loại hình giải trí này, chúng em quyết định chọn đề tài: “Xây dựng ứng dụng giải trí xem phim, đọc truyện”. Mục tiêu của đề tài. Mục tiêu chung: Nâng cao kiến thức về xây dựng ứng dụng và tổ chức cơ sở dữ liệu hợp lí, cũng như hiểu rõ hơn về các chiến lược giữ chân khách hàng được sử dụng trong các doanh nghiệp giải trí cùng lĩnh vực.
Áp dụng kiến thức đã được học để tạo ra sản phẩm có tính thực tiễn phục vụ đời sống con người. Mục tiêu cụ thể: Xây dựng ứng dụng cung cấp cho người dùng kho truyện phim đa dạng cũng như danh sách các Album và bảng xếp hạng giúp người dùng dễ dàng lựa chọn nội dung phù hợp với bản thân. Ngoài ra, ứng dụng có áp lược một số chiến lược như nhiệm vụ thử thách để thu hút người dùng sử dụng ứng dụng thường xuyên. Để hỗ trợ hoạt động của ứng dụng, chúng em còn xây dựng thêm các Website hỗ trợ quản lý nội dung phim truyện, người dùng… và hỗ trợ thanh toán.
Nội dung nghiên cứu. Cơ sở lý thuyết về Flutter, Dart, NodeJS, Typescript, MongoDB. Cơ sở lý thuyết về NextJS, Firebase Cloud Messaging. Phân tích nghiệp vụ quản lý và thiết kế hệ thống.
Nghiên cứu công thức tính điểm xếp hạng truyện và phim. Nghiên cứu hệ thống thanh toán ZaloPay, VNPay. Tìm hiểu video file và image file hosting tương thích với Typescript ở server side và các công nghệ, framwork hỗ trợ xây dưng user interface. Phương pháp nghiên cứu.
Tìm hiểu công nghệ: Flutter, Dart, NodeJS, Typescript, MongoDB, NextJS, Firebase Cloud Messaging. Phân tích các giải pháp của các ứng dụng tương tự trên thị trường. Thực hiện khảo sát nhu cầu, tình trạng thực tế của người dùng. Phân tích và xác định yêu cầu.
Lên kế hoạch. Thiết kế: o Thiết kế cơ sở dữ liệu. o Thiết kế đối tượng. Hoàn thiện sản phẩm.
Công cụ sử dụng. Trong quá trình thực hiện đề tài, chúng em đã sử dụng một số công cụ để phục vụ cho việc triển khai đề tài, bao gồm: Hệ điều hành: Windows 11. Công cụ quản lý CSDL: MongoDB Atlas. Công cụ gửi thông báo thời gian thực: Firebase notifications.
Công cụ lưu trữ hình ảnh và video phim: Uploadthing. Công cụ xây dựng ứng dụng: Visual Studio Code. Công cụ vẽ sơ đồ phân tích thiết kế hệ thống: StarUML. Tổng quan về Flutter 2.
Flutter là gì? Hình CƠ SỞ LÝ THUYẾT.1: Hình ảnh logo Flutter Flutter là một framework phát triển ứng dụng di động mã nguồn mở được phát triển bởi Google. Framework này cho phép bạn xây dựng các ứng dụng đa nền tảng với giao diện người dùng tương tự trên 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 để phát triển ứng dụng. Ưu điểm và nhược điểm của Flutter Ưu điểm: - Đa nền tảng: Flutter cho phép phát triển ứng dụng di động cho cả iOS và Android từ một mã nguồn duy nhất, giúp tiết kiệm thời gian và công sức.
- Hiệu suất cao: Flutter sử dụng kỹ thuật rendering riêng biệt và cấu trúc widget để cải thiện hiệu suất ứng dụng. Điều này đảm bảo cho trải nghiệm người dùng mượt mà và đáng tin cậy. 5 - Giao diện người dùng tương tự: Flutter cung cấp một bộ các widget thích ứng phong phú, cho phép bạn tạo ra giao diện người dùng đẹp và tương tự trên cả hai nền tảng. - Cộng đồng phát triển mạnh mẽ: Flutter hiện có một cộng đồng lớn và nhiều tài nguyên hữu ích, giúp dễ dàng tìm kiếm hỗ trợ và giải quyết vấn đề.
Nhược điểm: - Kích thước ứng dụng lớn: do tích hợp một bộ thư viện đồ sộ, kích thước của ứng dụng Flutter có thể lớn hơn so với ứng dụng native truyền thống. - - Hạn chế của các plugin: một số plugin của Flutter có thể hạn chế chức năng so với các phiên bản native tương ứng. Tổng quan về ngôn ngữ Dart 2. Dart là gì? Hình CƠ SỞ LÝ THUYẾT.2: Hình ảnh logo Dart Dart là một ngôn ngữ lập trình được phát triển bởi Google, được sử dụng chủ yếu 6 trong việc phát triển ứng dụng di động và web.
Dart kết hợp tính năng của ngôn ngữ tĩnh và động, và tập trung vào hiệu suất và tốc độ trong việc xây dựng ứng dụng. Nó cung cấp một cú pháp gọn nhẹ và hỗ trợ việc phát triển ứng dụng di động với Flutter. Ưu điểm và nhược điểm của ngôn ngữ Dart Ưu điểm: - Hiệu suất cao: Dart được thiết kế để cung cấp hiệu suất tốt và thời gian chạy nhanh. Nó có thể xử lý tốt trong việc xây dựng ứng dụng di động và web.
- -Tính nhất quán: Dart cung cấp một cú pháp gọn nhẹ và có cấu trúc rõ ràng, giúp làm cho mã nguồn dễ đọc, hiểu và bảo trì. - Hỗ trợ đa nền tảng: Dart không chỉ được sử dụng trong Flutter, mà còn có thể sử dụng để phát triển ứng dụng web thông qua framework AngularDart. Nhược điểm: - Hạn chế trong môi trường phát triển: so với một số ngôn ngữ lập trình khác, Dart có một cộng đồng phát triển nhỏ hơn và ít tài liệu hơn, điều này có thể làm cho việc tìm kiếm hỗ trợ và thông tin khó khăn hơn. - Cú pháp riêng: Dart có cú pháp riêng và khá khác biệt so với các ngôn ngữ lập trình phổ biến khác.
Tổng quan về MongoDB 2. MongoDB là gì? Hình CƠ SỞ LÝ THUYẾT.3: Hình ảnh logo MongoDB MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và được hàng triệu người sử dụng. MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh. Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định.
Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB [3]. Ưu điểm và nhược điểm của MongoDB Ưu điểm: - Do mongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu. - MongoDB rất dễ mở rộng (Horizontal Scalability). Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm một node với vào cluster 8 - Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS).
Với một lượng dữ liệu đủ lớn thì thử nghiệm cho thấy tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL. Nhược điểm: - MongoDB không có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải hết sức cẩn thận. - Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về value do đó key sẽ bị lặp lại. Không hỗ trợ join nên dễ bị dữ thừa dữ liệu.
- Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống ổ cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng điêù này sẽ là nhược điểm vì sẽ có nguy cơ bị mất dữ liệu khi xảy ra các tình huống như mất điện. Tổng quan về NextJS 2. NextJS là gì? Hình CƠ SỞ LÝ THUYẾT.4: Hình ảnh logo NextJS 9 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. NextJS được ra đời vào năm 2016, thuộc sở hữu của Vercel.
NextJS bắt đầu trở nên phổ biến vào năm 2018 và tiếp tục tăng trưởng mạnh mẽ trong cộng đồng phát triển web vào những năm sau đó. Sự kết hợp của các tính năng như Server-side Rendering (SSR) với Static Site Generation (SSG) đã giúp NextJS trở thành sự lựa chọn hấp dẫn cho nhiều dự án phát triển ứng dụng web.