Báo cáo đồ án 2: Xây dựng ứng dụng hỗ trợ học nhảy - SV. Nguyễn Thị Ngọc Hân

Tải báo cáo đồ án xây dựng ứng dụng hỗ trợ học nhảy trên di động. Tài liệu tham khảo cho sinh viên CNTT với công nghệ React Native và Nodejs.

2024

75
1
0

Phí lưu trữ

30 Point

Tóm tắt

I. Tổng quan về Đồ án Ứng dụng Hỗ trợ Học Nhảy trên Di động

Đồ án ứng dụng hỗ trợ học nhảy trên di động là một giải pháp công nghệ hiện đại được phát triển bằng React Native, giúp người học tiếp cận các khóa học nhảy một cách linh hoạt và hiệu quả. Ứng dụng này được xây dựng tại Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM, với mục đích cung cấp một nền tảng học tập tương tác giữa huấn luyện viênhọc viên. Thông qua công nghệ React Native, ứng dụng có thể chạy trên cả hệ điều hành iOS và Android, mang lại sự thuận tiện cho người dùng. Hệ thống được tích hợp với backend Node.js và cơ sở dữ liệu Supabase, đảm bảo quản lý dữ liệu an toàn và hiệu quả. Đây là giải pháp toàn diện cho những ai yêu thích học nhảy và muốn nâng cao kỹ năng của mình.

1.1. Lý do chọn đề tài

Với sự phát triển của công nghệ di động và nhu cầu học tập linh hoạt ngày càng tăng, việc xây dựng ứng dụng hỗ trợ học nhảy trở nên cần thiết. Nhảy là một hoạt động yêu thích nhưng không phải ai cũng có điều kiện tiếp cận các lớp học truyền thống. Ứng dụng di động cho phép người học tự học theo lịch trình của mình, tiết kiệm thời gian và chi phí. React Native được chọn vì khả năng phát triển nhanh cho cả iOS và Android với một codebase duy nhất.

1.2. Mục tiêu và Đối tượng sử dụng

Mục tiêu chính là tạo một nền tảng học nhảy toàn diện với giao diện thân thiện, hỗ trợ quản lý tiến độ học tập và tương tác giữa giảng viên-học viên. Ứng dụng hướng tới hai đối tượng chính: sinh viên/người học muốn nâng cao kỹ năng nhảygiáo viên/huấn luyện viên muốn quản lý lớp học hiệu quả. Hệ thống cung cấp tính năng lập lịch, theo dõi tiến độ, phân loại nội dung theo trình độ từ cơ bản đến nâng cao.

II. Công nghệ và Kiến trúc Hệ thống

Ứng dụng được xây dựng dựa trên kiến trúc Client-Server hiện đại, với các thành phần công nghệ được lựa chọn kỹ lưỡng. Phía frontend sử dụng React Native - framework tối ưu cho phát triển ứng dụng đa nền tảng. Phía backend được xây dựng với Node.js, cung cấp API mạnh mẽ và linh hoạt. Cơ sở dữ liệu Supabase được tích hợp để quản lý dữ liệu người dùng, khóa học, lớp học và thông tin tương tác. Kiến trúc này đảm bảo khả năng mở rộng, bảo mật cao và hiệu suất ổn định. Hệ thống được thiết kế với các Use case chi tiết cho cả huấn luyện viên và học viên, đáp ứng đầy đủ yêu cầu chức năng và phi chức năng của ứng dụng.

2.1. React Native Framework phát triển ứng dụng

React Native là framework JavaScript cho phép phát triển ứng dụng di động natively cho iOS và Android. Ưu điểm chính bao gồm viết một lần, chạy khắp nơi, tiết kiệm thời gian phát triển và chi phí. Cộng đồng React Native rất lớn, cung cấp nhiều thư viện hỗ trợ. Tuy nhiên, một số tính năng nâng cao có thể cần native code, và hiệu suất đôi khi thấp hơn ứng dụng native thuần.

2.2. Node.js và Supabase Backend và Database

Node.js được chọn cho backend vì tốc độ phát triển cao, khả năng xử lý yêu cầu bất đồng bộ hiệu quả. Supabase là giải pháp Firebase open-source, cung cấp authentication, database real-timestorage tích hợp. Điều này cho phép phát triển nhanh với infrastructure đã sẵn, giảm chi phí quản lý server. Kết hợp hai công nghệ này tạo nên một backend mạnh mẽ và dễ bảo trì.

III. Các Tính năng Chính của Ứng dụng

Ứng dụng hỗ trợ học nhảy cung cấp một bộ tính năng toàn diện để phục vụ cả người dạy và người học. Huấn luyện viên có thể tạo và quản lý khóa học, lớp học, bài học, với khả năng theo dõi tiến độ của từng học viên và tương tác trực tiếp thông qua các tin nhắn. Học viên được hỗ trợ tra cứu khóa học, đăng ký lớp học, xem chi tiết bài học, lập lịch học tập cá nhântheo dõi tiến độ học tập. Hệ thống cung cấp phân loại nội dung theo trình độ (cơ bản, trung cấp, nâng cao) và phân loại theo thể loại nhảy khác nhau. Ngoài ra, ứng dụng hỗ trợ quản lý tài khoản người dùng với các tính năng đăng nhập, đăng ký, quên mật khẩu an toàn.

3.1. Tính năng cho Huấn luyện viên

Giáo viên/huấn luyện viên có quyền truy cập vào bảng quản lý (Manage) để thêm, sửa, xóa khóa học và lớp học. Tính năng Add Lesson cho phép tạo nội dung bài học chi tiết. Có khả năng xem danh sách học viên, tương tác qua tin nhắn, quản lý hồ sơ cá nhântheo dõi thống kê về hiệu quả học tập. Tính năng kiểm duyệt nội dung đảm bảo chất lượng nội dung trước khi công bố.

3.2. Tính năng cho Học viên

Học sinh/học viên có thể duyệt thư viện khóa học (Library), xem chi tiết bài học với video hướng dẫnmô tả chi tiết. Tính năng Add Schedule giúp lập kế hoạch học tập cá nhân. Danh mục (Category) cho phép lọc khóa học theo loại nhảy yêu thích. Học viên có thể xem hồ sơ giáo viên, quản lý thông tin cá nhân, cài đặt sở thích nhảyđiều chỉnh cài đặt tài khoản.

IV. Kết quả Nhược điểm và Hướng phát triển

Đồ án đã hoàn thành thành công một ứng dụng di động đầy đủ chức năng để hỗ trợ học nhảy. Ứng dụng tích hợp đầy đủ tính năng cho cả hai vai trò: huấn luyện viênhọc viên, với giao diện thân thiện người dùng được thiết kế trên React Native. Hệ thống xác thực an toàn được triển khai, quản lý dữ liệu có cấu trúc rõ ràng. Tuy nhiên, ứng dụng vẫn còn một số nhược điểm cần cải tiến để trở thành sản phẩm chuyên nghiệp hoàn thiện hơn. Hướng phát triển trong tương lai bao gồm tích hợp video streaming, thêm tính năng thanh toán, phát triển AI hỗ trợ đánh giá động tác, và mở rộng thị trường quốc tế.

4.1. Kết quả đạt được

Ứng dụng thành công cung cấp nền tảng học nhảy toàn diện trên di động. Giao diện người dùng được thiết kế trực quan và dễ sử dụng. Hệ thống quản lý khóa học hoạt động ổn định, cho phép huấn luyện viên quản lý dễ dàng. Tính năng theo dõi tiến độ giúp học viên nhận thức được tiến bộ của mình. Cơ sở dữ liệu Supabase cung cấp lưu trữ an toàntruy cập nhanh.

4.2. Nhược điểm và Hướng phát triển tương lai

Nhược điểm hiện tại bao gồm chưa có tính năng video streaming trực tiếp, chưa hỗ trợ thanh toán online. Hướng phát triển bao gồm tích hợp AI để đánh giá động tác nhảy, thêm tính năng cộng đồng (forum, bình luận), phát triển ứng dụng web để tiếp cận người dùng rộng hơn, mở rộng hệ thống thanh toántối ưu hóa hiệu suất.

28/12/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1.GIỚI THIỆU ĐỀ TÀI 1. Lý do chọn đề tài Ngày nay, nhu cầu học nhảy tăng cao trong cộng đồng, đặc biệt là lứa tuổi trẻ. Học nhảy truyền thống thường đòi hỏi thời gian và nguồn lực đáng kể, cũng như giới hạn địa lý và thời gian. Và điện thoại di động và các thiết bị thông minh đã trở thành một phần không thể thiếu trong cuộc sống hàng ngày của chúng ta.

Việc phát triển một ứng dụng di động hỗ trợ học nhảy sẽ giúp mở rộng phạm vi tiếp cận và thu hút được nhiều người dùng. Ứng dụng học nhảy giúp người học có thể truy cập vào nội dung học tập bất cứ khi nào họ muốn và từ bất kỳ địa điểm nào. Điều này giúp họ linh hoạt trong việc tổ chức thời gian và không gian học tập. Ngoài ra, ứng dụng cung cấp các video dạy nhảy theo nhiều cấp độ và thể loại khác nhau với huấn luyện viên cụ thể, cùng với đó là mạng xã hội cho các học viên có thể đăng tải các video thành quả của mình, từ đó tạo ra sân chơi mới cho cộng đồng dancer giao lưu kết bạn với nhau.

Mục tiêu đề tài - Cung cấp người dùng nền tảng để học nhảy theo nhiều cấp độ và thể loại đa dạng. - Cung cấp nền tảng cho các giáo viên dạy nhảy và học viên giao lưu học hỏi với nhau. - Tạo nên nhiều cách học nhảy mới năng động, linh hoạt. - Cung cấp trải nghiệm trực tuyến mới, hấp dẫn.

Phạm vi - Nền tảng hỗ trợ: Triển khai trên nền tảng di động. - Chức năng: ● Phân chia cấp độ học: Ứng dụng cho phép phân chia các cấp độ học như mới bắt đầu, cơ bản, nâng cao để người dùng có thể chọn phù hợp với trình độ của mình. Học viên cũng có thể thay đổi cấp độ học trong quá trình học. 1 ● Phân chia thể loại nhảy: Ứng dụng cung cấp phân loại các thể loại nhảy như múa, ballet, hiphop, wacking, locking… để người dùng có thể lựa chọn theo sở thích cá nhân.

● Quản lý lớp học, khóa học: người dùng đăng ký học các lớp học, khóa học được phân loại theo cấp độ và thể loại phù hợp. ● Theo dõi tiến độ học, hỗ trợ lập lịch học. ● Quản lý thông tin học viên: học viên có thể tạo tài khoản để lưu thông tin cá nhân và lịch sử khóa học. ● Trang cá nhân của giáo viên: Mỗi giáo viên có một trang cá nhân riêng, hiển thị thông tin cá nhân, danh sách khóa học của họ và nút theo dõi để học viên có thể theo dõi giáo viên đó.

● Thông báo: thông báo các thông tin về khóa học, giáo viên… cho học viên. ● Chức năng mở rộng: mạng xã hội giao lưu giữa các huấn luyện viên, học viên. Người dùng được đăng video, nội dung… để chia sẻ. Đối tượng sử dụng - Học viên: Họ sẽ có thể đăng ký khóa học, lớp học, theo dõi những huấn luyện viên mình yêu thích để nhận được thông báo, lựa chọn trình độ bản thân, thể loại nhảy hứng thú để được cung cấp khóa học lớp học một cách cá nhân hóa.

Họ cũng có thể theo dõi tiến độ học và được hỗ trợ lên kế hoạch học nếu có nhu cầu. - Huấn luyện viên: Họ cung cấp các khóa học để học viên có thể đăng ký. - Quản trị viên: Họ sẽ có thể quản lý tài khoản và quyền của người dùng, đồng thời thực hiện các nhiệm vụ bảo trì ứng dụng. Phương pháp thực hiện - Tìm hiểu công nghệ: React, Supabase.

2 - Tìm hiểu các công cụ hỗ trợ: Figma,. - Môi trường làm việc: Notion, Google Sheet. - Thu thập yêu cầu thông qua: ● Tạo phiếu khảo sát khảo sát nhu cầu người dùng. ● Tạo phiếu trắc nghiệm, bài phỏng vấn nghiệp vụ tại các cộng đồng dancer, các mạng xã hội.

● Tìm hiểu các ứng dụng hiện có trên thị trường. - Phân tích và xác định yêu cầu. - Thiết kế: ● Thiết kế đối tượng. ● Thiết kế dữ liệu.

● Thiết kế giao diện. - Hoàn thiện sản phẩm. Công cụ sử dụng - Công cụ thiết kế UI/UX: Figma. - Ngôn ngữ sử dụng: React.

- Xây dựng app: React Native. - Cơ sở dữ liệu: Supabase. - Source Control: Github.TÌM HIỂU CƠ SỞ LÝ THUYẾT 1. Tổng quan về React Native 1.

Giới thiệu Hình 2.1 React Native - React Native là một framework mã nguồn mở được sáng tạo bởi Facebook. Nó được sử dụng để phát triển ứng dụng di động Android, iOS, Web và UWP bằng cách cho phép các nhà phát triển sử dụng React cùng với môi trường ứng dụng gốc. - React Native hoạt động dựa trên 3 threads (chuỗi) sau: ● UI Thread (Main Thread): đây là chuỗi chính chịu trách nhiệm xử lý giao diện và truy cập giao diện người dùng để thực hiện các tác vụ liên quan. ● Shadow Thread: chuỗi này dùng React Native để tính toán bố cục của ứng dụng và cập nhật giao diện mà không làm ảnh hưởng đến UI Thread.

Mã của chuỗi này thực thi trong một môi trường độc lập và đảm bảo ứng dụng chạy mượt mà. Ưu điểm - Khả năng tái sử dụng mã: khoảng 90% mã có thể được sử dụng lại giữa hai nền tảng Android và iOS, giúp tăng tốc độ phát triển và mang đến hiệu quả đáng kể cũng như giảm chi phí và tăng hiệu quả hơn. - Live reload: cho phép xem và làm việc với các thay đổi ngay lập tức. Điều này giúp tiết kiệm rất nhiều thời gian và công sức tổng hợp lại app khi có thay đổi.

- Tập trung vào giao diện người dùng. - Rút ngắn thời gian học: vì React Native giúp làm quen với việc tạo ứng dụng di động trên cả hai hệ điều hành iOS và Android. - Plugin của bên thứ ba: React Native cung cấp một số tùy chọn plugin của bên thứ ba bao gồm các native mô-đun và JavaScript-based. - Cộng đồng người dùng lớn.

Nhược điểm - Hiệu suất thấp hơn các ứng dụng gốc: React Native không thể sử dụng tất cả các tiềm năng của một nền tảng cụ thể trong khi đó ứng dụng gốc có thể tối đa hóa các chức năng và mang lại trải nghiệm người dùng tốt nhất. - Không hiệu quả đối với các giao diện phức tạp. - Thiếu một số mô-đun tùy chỉnh. Tổng quan về Nodejs 2.

Giới thiệu Hình 2.2 NodeJS - NodeJs là một môi trường chạy JavaScript mã nguồn mở và đa nền tảng, cho phép bạn thực thi mã JavaScript bên ngoài trình duyệt web. 5 - NodeJs hoạt động trên nền tảng V8 JavaScript engine, một công nghệ của Google để biên dịch và tối ưu hóa mã JavaScript. Ưu điểm - Tốc độ xử lý nhanh, do sử dụng cơ chế xử lý bất đồng bộ (non-blocking) và V8 engine. - Khả năng mở rộng cao, do có thể xử lý nhiều kết nối cùng lúc và tương thích với nhiều nền tảng.

Nhược điểm - Hiệu suất khi xử lý các tác vụ máy tính nặng bị giảm, do NodeJs được viết bằng C++ và JavaScript nên phải thông qua một trình biên dịch của NodeJs. - API đôi lúc không ổn định, do NodeJs là một nền tảng mới và đang liên tục cập nhật, nên có thể có những thay đổi không tương thích với các phiên bản trước. Cần theo dõi và cập nhật API thường xuyên để tránh gặp lỗi. Tổng quan về Supabase 3.

Giới thiệu Hình 2.4 Supabase Supabase là một nền tảng cơ sở dữ liệu nguồn mở được xây dựng trên PostgreSQL. Nó được thiết kế để giúp các nhà phát triển dễ dàng tạo các ứng dụng hiện đại với khả năng tích hợp API, xác thực người dùng, lưu trữ tệp, và các chức năng thời gian thực. Supabase hoạt động như một giải pháp thay thế cho Firebase, nhưng mang lại sự linh hoạt của cơ sở dữ liệu quan hệ. Ưu điểm - Dễ sử dụng: Cung cấp giao diện trực quan và dễ thiết lập, phù hợp cho cả người mới bắt đầu và chuyên gia.

- Tích hợp thời gian thực: Hỗ trợ đồng bộ hóa dữ liệu tức thì, rất hữu ích cho các ứng dụng thời gian thực. - Dựa trên PostgreSQL: Tận dụng toàn bộ sức mạnh của PostgreSQL, bao gồm các tính năng như bảng, chỉ mục, quan hệ và tính năng mở rộng. - Nguồn mở: Supabase hoàn toàn miễn phí và có mã nguồn mở, cho phép tùy chỉnh và triển khai tự do. - Hỗ trợ xác thực: Tích hợp sẵn hệ thống xác thực mạnh mẽ với các phương thức đăng nhập đa dạng như email, OAuth, và SMS.

- Lưu trữ tệp: Hỗ trợ quản lý và lưu trữ tệp trực tiếp từ nền tảng. - Cộng đồng phát triển mạnh: Supabase có một cộng đồng nhà phát triển năng động, cung cấp nhiều tài liệu và hỗ trợ kỹ thuật. Nhược điểm ● Mới hơn Firebase: Vì là nền tảng tương đối mới, hệ sinh thái và tài nguyên hỗ trợ chưa phong phú bằng các giải pháp lâu đời như Firebase. ● Phụ thuộc vào PostgreSQL: Supabase phù hợp với các dự án sử dụng cơ sở dữ liệu quan hệ, không tối ưu cho các trường hợp cần cơ sở dữ liệu NoSQL.

● Chưa hỗ trợ một số tính năng nâng cao: Một số chức năng nâng cao hoặc phức tạp của PostgreSQL có thể chưa được tối ưu hóa hoàn toàn trong Supabase. ● Hiệu suất thời gian thực: Mặc dù có hỗ trợ thời gian thực, nhưng hiệu suất có thể bị ảnh hưởng khi xử lý lượng dữ liệu lớn so với các giải pháp chuyên dụng. ● Quản lý cơ sở hạ tầng: Đối với những ai không quen làm việc với PostgreSQL, việc tinh chỉnh cấu hình và quản lý có thể trở nên phức tạp.XÁC ĐỊNH VÀ PHÂN TÍCH YÊU CẦU 1. Khảo sát hiện trạng Thực tế hiện nay, tuy đã có những ứng dụng học nhảy trên thế giới, tuy nhiên số lượng vẫn còn rất ít và chưa thật sự nổi tiếng và phổ biến.

Các ứng dụng này thường tập trung vào việc kết hợp cùng tăng cường sức khoẻ và tập thể dục hơn là dành cho việc tập nhảy cho những người yêu thích, có đam mê hoặc những người mới tìm đến bộ môn này, chưa thật sự đa dạng và nhiều thể loại cho người dùng có nhu cầu. Xác định chức năng, yêu cầu 2. Yêu cầu chức năng - Quản lý video: tải lên, lưu trữ, chỉnh sửa, xóa, kết nối video và xem các video có trên hệ thống để phục vụ cho yêu cầu của từng loại người dùng. - Quản lý các chương trình học: có thể nhóm lại các video bài giảng được chọn để tạo thành một chương trình học hoàn chỉnh, tại đây cũng sẽ yêu cầu các chức năng cơ bản như chỉnh sửa, xoá xem, tạo mới.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ