TỔNG QUAN
Đặt vấn đề
Hoạt động từ thiện và thiện nguyện tại Việt Nam đã có những bước phát triển đáng kể, mang lại lợi ích cho cộng đồng và được xã hội ghi nhận Tuy nhiên, tình nguyện viên gặp khó khăn trong việc tìm kiếm thông tin về các tổ chức và hoạt động tình nguyện trên Google, vì nhiều kết quả chỉ liên quan đến dự án mà thiếu thông tin tuyển tình nguyện viên Thông tin về các hoạt động cũng không được phân loại rõ ràng, khiến việc tìm kiếm trở nên khó khăn hơn Hơn nữa, các bài đăng về hoạt động tình nguyện thường bị che lấp trên các mạng xã hội như Facebook và Tiktok Để giải quyết vấn đề này, cần xây dựng một mạng xã hội ứng dụng công nghệ, giúp tình nguyện viên, tổ chức và nhà hảo tâm dễ dàng kết nối và hỗ trợ lẫn nhau, từ đó khắc phục nhược điểm hiện tại của các hoạt động từ thiện tại Việt Nam.
Hiện nay, nhiều hoàn cảnh khó khăn đang cần sự hỗ trợ từ tình nguyện viên, trong khi đó, có rất nhiều người mong muốn tham gia vào các hoạt động tình nguyện để cống hiến cho cộng đồng và xã hội.
Tổ chức tình nguyện gặp khó khăn lớn nhất là cần sự tham gia tích cực từ tình nguyện viên và các nhà hảo tâm Sự đóng góp từ cộng đồng không chỉ giúp chiến dịch của tổ chức trở nên thành công hơn mà còn nâng cao uy tín của họ trong mắt người dân.
Một trong những khó khăn lớn mà các nhà hảo tâm và tình nguyện viên gặp phải là sự thiếu tin tưởng vào các tổ chức và cá nhân khi họ muốn đóng góp công sức và tài sản cho cộng đồng, đặc biệt là trong bối cảnh hiện nay có nhiều tổ chức và cá nhân lợi dụng hoạt động từ thiện để trục lợi cá nhân.
Sự phát triển mạnh mẽ của mạng xã hội đã dẫn đến sự gia tăng hoạt động từ thiện trực tuyến, trở thành một vấn đề quan trọng cần được chú ý Tại Việt Nam, hiện có hơn 70 triệu người dùng các nền tảng mạng xã hội, theo báo cáo của Hootsuite vào tháng 1 năm 2021.
Hình 1.1: Hình ảnh thống kê của “We are social Hootsuite”
Nhóm chung em đã phát triển ứng dụng spVolunteer, nhằm kết nối tình nguyện viên và phục vụ cho các hoạt động xã hội Ứng dụng này giúp người dùng dễ dàng đăng thông tin để kêu gọi sự ủng hộ và quyên góp cho các dự án cộng đồng Điểm nổi bật của spVolunteer là cung cấp công cụ miễn phí cho các tổ chức từ thiện, giúp họ quản lý, kêu gọi và công bố minh bạch các khoản thu-chi với nhà hảo tâm Điều này tạo ra sự khác biệt so với các ứng dụng khác như Facebook, hiến máu hay s4lie.
Các ứng dụng hiện có
1.2.1 Group Facebook “Tặng đồ từ thiện - kết nối yêu thương”
Là một nhóm từ thiện quy mô lớn với hơn 50.000 thành viên, chúng tôi kêu gọi quyên góp và chia sẻ những đồ dùng đã qua sử dụng nhưng vẫn còn giá trị sử dụng.
Người dùng đến group này để xin hỗ trợ trong tình trạng khó khăn hoặc đăng bài để chia sẻ quần áo, giày dép cho những người thiếu thốn
Liên kết group: Go Volunteer Ưu điểm:
- Group đáp ứng được nhu cầu kết nối việc thiện nguyện với mọi người
- Cập nhật nhanh chóng thông tin nhờ tính năng notification của facebook
- Dễ dàng tham gia group và dễ sử dụng
- Có thể nhắn tin trao đổi trực tiếp với nhau
- Vì những bài đăng là tự do nên các bài đăng không có cấu trúc rõ ràng
- Không thể xác thực được độ uy tín của người đứng ra tổ chức dự án thiện nguyện
- Thiên về mảng chia sẻ là chính, chưa hỗ trợ đầy đủ cho việc thiện nguyện
1.2.2 “Zalo Connect” của ứng dụng Zalo
Zalo cung cấp tính năng hỗ trợ người dùng xin giúp đỡ hoặc giúp đỡ người khác trong khu vực gần nhất Tính năng này mang lại nhiều lợi ích cho cộng đồng, giúp kết nối những người cần hỗ trợ với những người sẵn sàng giúp đỡ, tạo ra sự gắn kết và tương tác tích cực trong xã hội.
− Có thể gửi yêu cầu giúp đỡ để mọi người gần bạn thấy và hỗ trợ
− Có thể nhắn tin trực tiếp người người cần hỗ trợ hoặc người hỗ trợ
− Vị trí hiển thị chính xác trên bản đồ
− Hiển thị trạng thái của người được hỗ trợ
− Phân loại các danh mục cần hỗ trợ như:
• Hỗ trợ nhu yếu phẩm
• Hỗ trợ vật dụng y tế Nhược điểm:
− Khó tìm thấy tính năng này
1.2.3 Hiến máu Ứng dụng tra cứu thông tin của người hiến máu, địa điểm hiến máu, trò chuyện trên ứng dụng Ưu điểm:
− Tra cứu thông tin người Hiến máu
− Tra cứu địa điểm hiến máu
− Trò chuyện trên ứng dụng
− Hiện tại app chỉ hướng đến việc hiến máu
1.2.4 Be My Eyes - Helping the blind
Hỗ trợ người mù thông qua kết nối video trực tiếp hoặc được hỗ trợ thông qua mạng lưới người dùng khiếm thị Ưu điểm:
− Kết nối trò chuyện video trực tiếp giữa người mù và những tình nguyện viên
− Hỗ trợ đa ngôn ngữ
− Tình nguyện viên chưa thể chọn khung giờ nhận cuộc gọi
− Chất lượng video có thể chưa được cao
Tính năng "Ví nhân ái" của ứng dụng MoMo cho phép người dùng theo dõi các bài đăng về quyên góp và tiến độ của chúng, đồng thời cung cấp thông tin rõ ràng về mục đích và tổ chức nhận quyên góp.
− Dễ dàng quyên góp tiền thông qua giao dịch trên ví MoMo
− Giao diện rõ ràng, dễ sử dụng
− Nhờ việc hiển thị rõ ràng tên cũng như thông tin của tổ chức từ thiện nên khá uy tín
Vì là một tính năng của ứng dụng MoMo, người dùng có thể không nhận ra hoặc không biết đến các hoạt động thiện nguyện khi chỉ tập trung vào giao dịch.
Nền tảng gây quỹ và quản trị hoạt động thiện nguyện cung cấp nhiều bài đăng đa dạng về gây quỹ, sự kiện và các hoạt động tình nguyện Các hoạt động thiện nguyện được phân loại thành từng danh mục riêng biệt, giúp người dùng dễ dàng tìm kiếm và tham gia.
− Tài nguyên đất Ưu điểm:
− Giao diện rõ ràng, dễ sử dụng
− Dễ dàng tạo bài đăng
− Người dùng có thể tự tạo hoạt động gây quỹ và các sự kiện
− Các bài đăng đều có tag mục đích để dễ dàng theo dõi bài đăng có mục đích gì.
Tóm lược
Sau khi khảo sát các ứng dụng thiện nguyện hiện có trên thị trường, chúng ta có thể tổng hợp và so sánh các chức năng chính của chúng như sau:
Bảng 1.1: Bảng so sánh chức năng của các ứng dụng thiện nguyện
Tham gia vào chiến dịch ✓ x ✓ x ✓ x ✓
Quản lý chiến dịch ✓ x x x ✓ x ✓ Đánh giá tình nguyện viên x x x x x x ✓
Xác thực độ tin cậy người dùng x ✓ ✓ ✓ x x ✓
Mục tiêu
Sau khi nghiên cứu và phân tích nhiều ứng dụng thực tế, tôi đã rút ra những tính năng hữu ích và bổ sung thêm nhiều đặc điểm mới nhằm xây dựng một mạng xã hội hiệu quả, giúp kết nối các tình nguyện viên một cách tốt nhất.
− Hỗ trợ quyên góp trực tiếp tới hoàn cảnh khó khăn
− Xác thực các tổ chức, cá nhân thành lập hoạt động tình nguyện
− Hiển thị tiến độ dự án
− Hiển thị phạm vi vùng miền được hỗ trợ với hoạt động, chiến dịch
− Phân loại danh mục tác động của chiến dịch thiện nguyện (môi trường, giáo dục, văn hóa, sức khỏe)
Bài đăng chiến dịch thiện nguyện có thể được phân loại theo nhiều mục đích khác nhau, bao gồm quyên góp tiền để hỗ trợ các hoạt động từ thiện, tìm kiếm tình nguyện viên để tham gia vào các dự án cộng đồng, kêu gọi người hiến máu nhằm đáp ứng nhu cầu cấp thiết trong y tế, và quyên góp những vật phẩm cũ như sách, quần áo để giúp đỡ những người có hoàn cảnh khó khăn.
− Tạo chiến dịch tình nguyện (tạo hoạt động tình nguyện)
− Tham gia chiến dịch tình nguyện (đóng góp tài sản, quyên góp vật phẩm như sách, quần áo)
− Theo dõi các sự kiện, chiến dịch đang và sắp diễn ra
− Gửi tin nhắn, nhận tin nhắn
− Đăng bài viết lên trang các nhân
− Người dùng đăng nhập và đăng ký tài khoản.
Phạm vi ứng dụng
Sản phẩm mạng xã hội dành cho thiện nguyện là ứng dụng trên nền tảng Android, giúp tổ chức kết nối với tình nguyện viên, quản lý thời gian và số lượng tham gia các hoạt động thiện nguyện Ứng dụng hỗ trợ trao đổi trực tiếp giữa tổ chức và tình nguyện viên, đồng thời kết nối tình nguyện viên với các hoạt động do nhà hảo tâm tạo ra Tình nguyện viên có cơ hội tham gia vào ban quản trị để hỗ trợ quản lý các hoạt động thiện nguyện trong chiến dịch.
Sản phẩm chủ yếu nhằm kết nối tình nguyện viên với các ban tổ chức và nhà hảo tâm, đồng thời cung cấp chức năng chat online để trao đổi trực tiếp.
TỔNG QUAN CÔNG NGHỆ
React Native, Redux Toolkit, Redux-Saga
React Native, được phát triển bởi Facebook, ban đầu nhằm phục vụ cho mạng xã hội, đã trở thành một framework mạnh mẽ cho phát triển ứng dụng di động đa nền tảng Hiện tại, React Native hỗ trợ phát triển ứng dụng cho hệ điều hành Android và iOS, ít hơn so với Ionic, vốn hỗ trợ cả Android, iOS và Windows Phone Nhiều ứng dụng nổi tiếng như Facebook, Instagram và Skype đã được xây dựng bằng React Native, nhấn mạnh tính linh hoạt và hiệu quả của framework này.
− React native có lượng người dùng là lập trình viên rất đông, vì vậy các vấn đề sẽ được giải quyết một cách nhanh chóng
Hình 2.1: Logo ứng dụng React Native
− Khả năng tái sử dụng các đoạn mã, và các thành phần được phát triển sẵn
− React native có khả năng chạy trên cả 2 môi trường hệ điều hành là Android và IOS
− Vẫn đòi hỏi native code
− Hiệu năng sẽ thấp hơn với app thuần native code
− Bảo mật không cao do dựa trên JavaScripts
− Khả năng tùy biến cũng không thực sự tốt đối với một vài module
Redux là thư viện JavaScript chuyên quản lý trạng thái ứng dụng, dựa trên kiến trúc Flux do Facebook phát triển Nhờ vào sự tương thích cao, Redux thường được kết hợp hoàn hảo với React (bao gồm cả React Js và React Native).
Redux Toolkit là một thư viện giúp mình viết Redux tốt hơn, dễ hơn và gọn gàng hơn
Redux-Saga là một middleware trong Redux, giúp đơn giản hóa việc quản lý các side effect trong ứng dụng Thư viện này tận dụng tối đa tính năng Generators (function*) của ES6, cho phép lập trình viên viết mã bất đồng bộ mà trông giống như mã đồng bộ.
Redux-Saga đơn giản được dùng để xử lý tất cả những vấn đề bất đồng bộ xảy ra ở reducer, hay đọc dữ liệu từ bộ nhớ, …
Hình 2.2: Cách hoạt động của Redux Toolkit
Hình 2.3: Cách hoạt động của Redux-Saga
NestJs và MongoDB
NestJs là một framework mạnh mẽ dành cho việc phát triển ứng dụng phía máy chủ trên nền tảng NodeJs, sử dụng JavaScript và hỗ trợ đầy đủ TypeScript Với kiến trúc hướng đối tượng (OOP), Nest cung cấp mức độ trừu tượng cao hơn so với các framework NodeJs khác như Express và Fastify, đồng thời cho phép hiển thị trực tiếp các API cho các nhà phát triển Điều này tạo điều kiện cho việc tích hợp dễ dàng các module bên thứ ba, mang lại sự linh hoạt trong quá trình phát triển ứng dụng.
MongoDB là một cơ sở dữ liệu NoSQL hướng tài liệu, sử dụng các tài liệu tương tự như JSON, mang lại tính linh hoạt và khả năng thích ứng cao với các yêu cầu của dự án Hơn nữa, MongoDB hỗ trợ tính năng Indexing, giúp cải thiện hiệu suất tìm kiếm hiệu quả trong cơ sở dữ liệu.
Firebase Cloud Messaging và SocketIO
Firebase là nền tảng cơ sở dữ liệu đám mây do Google phát triển, giúp tạo ra các ứng dụng web và di động Được thành lập vào năm 2011 như một công ty độc lập, Firebase đã được Google mua lại vào năm 2014 và trở thành sản phẩm chủ lực trong phát triển ứng dụng Nền tảng này hỗ trợ lập trình viên đơn giản hóa các thao tác liên quan đến cơ sở dữ liệu.
Firebase Cloud Messaging is a key feature of Firebase that enables the delivery of notifications along with data from the server directly to the user's app.
SocketIO là 1 module NodeJS giúp cho việc giao tiếp giữa Server và Client diễn ra tức khắc và chiếm ít tài nguyên nhất Ưu điểm:
− Kết nối tự động đến server
− Cho phép tạo kênh và phòng
− Client và Server giao tiếp ngay tức khắc
PHÂN TÍCH THIẾT KẾ ỨNG DỤNG
Phân tích ứng dụng
3.1.1 Danh sách yêu cầu của hệ thống và Use case
Bảng 3.1: Danh sách yêu cầu ứng dụng
STT Tên yêu cầu Ghi chú
1 Đăng nhập, đăng ký Được xây dựng trên nền tảng Android
2 Tạo chiến dịch thiện nguyện Được xây dựng trên nền tảng Android Ban tổ chức có thể tạo chiến dịch để tìm kiếm tình nguyện viên
3 Tham gia chiến dịch thiện nguyện Được xây dựng trên nền tảng Android Các tình nguyện viên sẽ tham gia vào các hoạt động phù hợp
Quản lý chiến dịch trên nền tảng Android cho phép ban tổ chức kiểm soát hiệu quả số lượng người tham gia và các nhóm trong chiến dịch.
5 Trao đổi trực tuyến Được xây dựng trên nền tảng Android Giúp mọi người trong chiến dịch có thể trao đổi trực tuyến với nhau
6 Đánh giá tình nguyện viên Được xây dựng trên nền tảng Android Đánh giá mức độ tham gia chiến dịch của những tình nguyện viên
Sơ đồ 3.1: Sơ đồ Use case
Bảng 3.2: Bảng danh sách Use case
STT Tên Use case Ghi chú
1 Đăng nhập, đăng kí Cho phép người dùng đăng nhập, đăng kí vào hệ thống
2 Tạo chiến dịch Khởi tạo chiến dịch thiện nguyện
Ban tổ chức chiến dịch cần thiết lập nghiệp vụ xây dựng để hiệu quả quản lý số lượng tình nguyện viên, thời gian diễn ra chiến dịch, và các nhóm tham gia.
4 Xem thông tin tình nguyện viên
Cho phép xem các thông tin cơ bản của tình nguyện viên và mức độ tin cậy của tình nguyện viên
5 Đánh giá tình nguyện viên Thực hiện đánh giá tình nguyện viên thông qua độ tích cực khi tham gia chiến dịch
6 Kết bạn Kết nối với những người tham gia hệ thống
7 Xem danh sách những chiến dịch đã tham gia
Hỗ trợ xuất danh sách, thống kê lại số lượng chiến dịch đã tham gia
Nghiệp vụ xây dựng dành cho tình nguyện viên để các tình nguyện viên có thể tìm kiếm các chiến dịch phù hợp với bản thân
9 Theo dõi chiến dịch Theo dõi những hoạt động đã và đang xảy ra trong chiến dịch
10 Đánh giá Đánh giá mức độ hỗ trợ của ban tổ chức đối với các tình nguyện viên
11 Tham gia chiến dịch Trở thành thành viên trong chiến dịch
Bảng 3.3: Đặc tả chức năng đăng nhập Đăng nhập
Tên Use case Đăng nhập
Mô tả Đăng nhập tài khoản của người dùng
Người thực hiện Người dùng Điều kiện trước xử lý Hệ thống khởi động thành công
Sau khi xử lý, nếu người dùng đăng nhập thành công, họ sẽ được phép truy cập vào hệ thống và thấy các chức năng sẵn có Ngược lại, trong trường hợp đăng nhập thất bại, hệ thống sẽ thông báo lỗi về tài khoản hoặc mật khẩu và yêu cầu người dùng quay lại trang đăng nhập.
Các bước thực hiện Chương 3 Bật ứng dụng, hiển thị màn hình đăng nhập cho người dùng
Chương 4 Người dụng nhập tên tài khoản và mật khẩu
Chương 5 Ấn nút “Đăng nhập”
Chương 6 Hiển thị kết quả đăng nhập Nếu thành công sẽ vào trang chủ của ứng dụng
Dòng sự kiện chính Hiển thị màn hình đăng nhập
Người dùng nhập tên đăng nhập và mật khẩu
Dòng sự kiện khác Hệ thống kiểm tra xem tài khoản có trong cơ sở dữ liệu hay không
Nếu sai thông tin đăng nhập sẽ báo lại cho người dùng
Yêu cầu nhập lại thông tin đăng nhập
Yêu cầu đặc biệt Tài khoản người dùng phải được xác thực số điện thoại và email đăng nhập Phi chức năng
Ghi chú và vấn đề Thực hiên trên nền tảng di động
Bảng 3.4: Bảng đặc tả chức năng tạo chiến dịch
Tên Use case Tạo chiến dịch
Mô tả Khởi tạo chiến dịch thiện nguyện
Người thực hiện Người dùng Điều kiện trước xử lý Đăng nhập thành công vào ứng dụng
Sau xử lý Thành công: chiến dịch được tạo ra và hiển thị ở trang chủ của ứng dụng
Thất bại: thông báo tạo chiến dịch thất bại
Các bước thực hiện 1 Sau khi đăng nhập thành công người dùng sẽ được chuyển đến giao diện trang chủ, ở đây sẽ có nút để khởi tạo chiến dịch
2 Ấn nút khởi tạo chiến dịch
3 Điền thông tin cho chiến dịch (ngày bắt đầu, ngày kết thúc, địa điểm bắt đầu, địa điểm kết thúc, số lượng tình nguyện viên tham gia mong muốn)
Dòng sự kiện chính Hiển thị màn hình tạo chiến dịch Điền đầy đủ thông tin chiến dịch
Chiến dịch vừa được tạo sẽ hiển thị trên trang chủ
Ghi chú và vấn đề Thực hiên trên nền tảng di động
Bảng 3.5: Đặc tả chức năng xem danh sách chiến dịch
Xem danh sách chiến dịch
Tên Use case Xem danh sách chiến dịch đã tham gia
Mô tả Cho người dùng xem dách sách những chiến dịch đã tham gia trong một khoảng thời gian lựa chọn
Người thực hiện Người dùng Điều kiện trước xử lý Đăng nhập thành công vào ứng dụng
Sau xử lý Hiển thị danh sách các chiến dịch đã tham gia
Các bước thực hiện 1 Chọn màn hình chiến dịch đã tham gia
2 Xem thông tin về chiến dịch đã tham gia
3 Chọn chiến dịch cụ thể
4 Xem chi tiết chiến dịch
Dòng sự kiện chính Chọn xem danh sách chiến dịch đã tham gia
Chọn xem chi tiết chiến dịch Dòng sự kiện khác
Yêu cầu đặc biệt Cần thông tin chi tiết của chiến dịch Phi chức năng
Ghi chú và vấn đề Thực hiên trên nền tảng di động
Bảng 3.6: Đặc tả chức năng xuất Excel
Tên Use case Xuất Excel các chiến dịch đã tham gia
Mô tả Cho phép người dùng tải file Excel danh sách chiến dịch đã tham gia theo định dạng file Excel
Người thực hiện Người dùng Điều kiện trước xử lý Đã tham gia chiến dịch
Sau xử lý Thành công: Tải xuống file Excel các chiến dịch đã tham gia
Thất bại: thông báo xuất file Excel thất bại
Các bước thực hiện 1 Chọn màn hình danh sách các chiến dịch đã tham gia
2 Chọn các chiến dịch để thêm vào file Excel
3 Tải xuống file Excel có tất cả các chiến dịch đã chọn
Dòng sự kiện chính Hiển thị màn hình danh sách các chiến dịch đã tham gia
Chọn các chiến dịch cần để thêm vào file Excel
Ghi chú và vấn đề Thực hiên trên nền tảng di động
Bảng 3.7: Đặc tả chức năng trao đổi trực tuyến
Tên Use case Trao đổi trực tuyến
Mô tả Cho phép người dùng trao đổi trực tuyến thời gian thực với tình nguyện viên hoặc với những bạn bè trong ứng dụng
Người thực hiện Người dùng Điều kiện trước xử lý Đăng nhập thành công vào ứng dụng Sau xử lý
Các bước thực hiện 1 Chọn trang tin nhắn
2 Chọn nhóm chat muốn trao đổi
3 Bắt đầu trao đổi trực tiếp thông qua nhóm chat
Dòng sự kiện chính Hiển thị màn hình tin nhắn
Chọn nhóm chat cần trao đổi
Dòng sự kiện khác Tạo nhóm chat với những người liên quan
Ghi chú và vấn đề Thực hiên trên nền tảng di động
Bảng 3.8: Đặc tả chức năng đánh giá Đánh giá
Tên Use case Đánh giá tình nguyện viên, ban tổ chức
Mô tả Cho phép người dùng đánh giá tình nguyện viên/ban tổ chức có tham gia vào chiến dịch
Người thực hiện Người dùng Điều kiện trước xử lý Đã tham gia vào chiến dịch
Các bước thực hiện 1 Sau khi đăng nhập thành công người dùng sẽ được chuyển đến giao diện trang chủ, ở đây sẽ có nút để khởi tạo chiến dịch
2 Ấn nút khởi tạo chiến dịch
3 Điền thông tin cho chiến dịch (ngày bắt đầu, ngày kết thúc, địa điểm bắt đầu, địa điểm kết thúc, số lượng tình nguyện viên tham gia mong muốn)
Dòng sự kiện chính Hiển thị màn hình tạo chiến dịch Điền đầy đủ thông tin chiến dịch
Chiến dịch vừa được tạo sẽ hiển thị trên trang chủ
Ghi chú và vấn đề Thực hiên trên nền tảng di động
Bảng 3.9: Đặc tả chức năng quản lý chiến dịch
Tên Use case Quản lý chiến dịch
Mô tả Cho phép ban tổ chức quản lý chiến dịch của mình
Người thực hiện Người dùng (ban tổ chức) Điều kiện trước xử lý Người dùng tạo thành công chiến dịch Sau xử lý
Các bước thực hiện 1 Mời người dùng tham gia chiến dịch
2 Tạo các nhóm nhỏ trong chiến dịch
3 Tạo các bài đăng cập nhật tiến độ chiến dịch
4 Tạo nhóm chat cho chiến dịch
5 Tạo thông báo cho những tình nguyện viên tham gia biết chiến dịch sắp diễn ra
6 Chấp nhận yêu cầu tham gia chiến dịch của tình nguyện viên
Dòng sự kiện chính Quản lý tình nguyện viên trong chiến dịch
Quản lý các hoạt động xảy ra trong chiến dịch
Yêu cầu đặc biệt Cần là người trong ban tổ chức
Ghi chú và vấn đề Thực hiên trên nền tảng di động
Bảng 3.10: Đặc tả chức năng kết nối
Tên Use case Kết bạn
Mô tả Cho phép người dùng kết nối với những người dùng khác sử dụng ứng dụng
Người thực hiện Người dùng Điều kiện trước xử lý Người dùng đăng nhập thành công vào chiến dịch
Sau xử lý Trở thành bạn bè với người sử dụng ứng dụng
Các bước thực hiện 1 Tìm kiếm người dùng muốn kết bạn
2 Gửi lời mời kết bạn với người dùng khác
3 Người dùng còn lại chấp nhận lời mời kết bạn
Dòng sự kiện chính Tìm kiếm người dùng
Gửi lời mời kết bạn
Ghi chú và vấn đề Thực hiên trên nền tảng di động
Bảng 3.11: Đặc tả chức năng tham gia chiến dịch
Tên Use case Tham gia chiến dịch
Mô tả Cho phép tình nguyện viên tham gia vào chiến dịch tình nguyện
Người thực hiện Người dùng (tình nguyện viên) Điều kiện trước xử lý Người dùng đăng nhập thành công vào ứng dụng
Sau xử lý Tình nguyện viên tham gia vào chiến dịch
Các bước thực hiện 1 Tìm kiếm các chiến dịch đang và sắp diễn ra
2 Gửi yêu cầu tham gia vào chiến dịch
3 Gửi thông báo yêu cầu đến ban tổ chức chiến dịch
4 Nếu ban tổ chức chấp nhận yêu cầu tham gia người dùng sẽ nhận được thông báo
Dòng sự kiện chính Tìm kiếm chiến dịch
Gửi yêu cầu tham gia chiến dịch
Ghi chú và vấn đề Thực hiên trên nền tảng di động
3.1.2 Sơ đồ hoạt động chức năng
3.1.2.1 Sơ đồ hoạt động chức năng tạo nhóm
Sơ đồ 3.2: Sơ đồ hoạt động mô tả chức năng tạo nhóm
3.1.2.2 Sơ đồ hoạt động chức năng tham gia nhóm
Sơ đồ 3.3: Sơ đồ hoạt động chức năng tham gia nhóm
3.1.2.3 Sơ đồ hoạt động chức năng tạo chiến dịch
Sơ đồ 3.4: Sơ đồ hoạt động chức năng tạo chiến dịch
3.1.2.4 Sơ đồ hoạt động chức năng tham gia chiến dịch
Sơ đồ 3.5: Sơ đồ hoạt động chức năng tham gia chiến dịch
3.1.2.5 Sơ đồ hoạt động mời tham gia chiến dịch
Sơ đồ 3.6: Sơ đồ hoạt động chức năng mời tham gia chiến dịch
3.1.2.6 Sơ đồ hoạt động chức năng thêm tình nguyện viên vào ban tổ chức
Sơ đồ 3.7: Sơ đồ hoạt động chức năng thêm tình nguyện viên vào ban tổ chức
3.1.2.7 Sơ đồ hoạt động chức năng đánh giá người tham gia chiến dịch
Sơ đồ 3.8: Sơ đồ hoạt động chức năng đánh giá người tham gia
3.1.2.8 Sơ đồ hoạt động chức năng xét duyệt tham gia chiến dịch
Sơ đồ 3.9: Sơ đồ hoạt động chức năng xét duyệt người tham gia
3.1.2.9 Sơ đồ hoạt động chức năng tạo bài đăng trong chiến dịch
Sơ đồ 3.10: Sơ đồ hoạt động chức năng tạo bài đăng trong chiến dịch
3.1.2.10 Sơ đồ hoạt động chức năng tạo bài đăng trong nhóm của chiến dịch
Sơ đồ 3.11: Sơ đồ hoạt động chức năng tạo bài đăng trong nhóm
3.1.2.11 Sơ đồ hoạt động chức năng xuất excel
Sơ đồ 3.12: Sơ đồ hoạt động chức năng xuất excel hoạt động tham gia
Thiết kế ứng dụng
3.2.1 Thiết kế cơ sở dữ liệu
Sơ đồ 3.13: Sơ đồ thiết kế cơ sở dữ liệu
1 User Bảng tượng trưng cho người dùng
2 User Friends Bảng tượng trưng cho mối quan hệ giữa các người dùng
3 User Participate Bảng tượng trưng cho việc user đã tham gia chiến dịch
4 Notification Bảng tượng trưng cho thông báo của người dùng
5 Conversation Bảng tượng trưng cho nhóm chat của người dùng
6 Message Bảng tượng trưng cho tín nhắn trong nhóm chat
7 Activities Bảng tượng trưng cho chiến dịch thiện nguyện
8 Post Bảng tượng trưng cho những bài đăng cập nhật thông tin chiến dịch
9 Comment Bảng tượng cho những bình luận trong bài đăng
10 Group Bảng tượng trưng cho các nhóm ở trong chiến dịch
11 Member Bảng tượng trưng cho người dùng đã tham gia nhóm
Bảng 3.13: Danh sách thuộc tính bảng User
STT Tên thuộc tính Kiểu Truy cập Ý nghĩa/Ghi chú
1 _ID String Private Giá trị định danh
2 Email String Private Tên tài khoản và email người dùng
3 Password String Private Mật khẩu của người dùng
4 AvatarUrl String Private Ảnh đại diện của người dùng
5 CoverUrl String Private Ảnh nền của người dùng
6 FriendCount Number Private Số lượng bạn bè của người dùng
7 ActivityCount Number Private Số lượng chiến dịch được tạo bởi người dùng
8 Gender Enum Private Giới tính
9 Intro String Private Đoạn giới thiệu bản thân
10 IsActive Boolean Private Người dùng có đang online bằng ứng dụng hay không
11 LastLogin Date Private Lần đăng nhập gần nhất
12 IdentityFront String Private Mặt trước của CMND
13 IdentityBack String Private Mặt sau của CMND
14 AverageRating Number Private Điểm đánh giá trung bình
17 Dob Date Private Ngày sinh
18 PhoneNumber String Private Số điện thoại
19 Address String Private Địa chỉ
20 IsVerifyEmail Boolean Private Xác nhận email
21 IsVerifyPhone Boolean Private Xác nhận SĐT
22 GetInfo Void Public Lấy thông tin người dùng
23 Login Void Public Đăng nhập
24 Logout Void Public Đăng xuất
Bảng 3.14: Danh sách thuộc tính bảng User Friend
STT Tên thuộc tính Kiểu Truy cập Ý nghĩa/Ghi chú
1 _ID String Private Giá trị định danh
2 SourceId String Private Mã người dùng
3 TargetId String Private Mã người dùng
4 Status Enum Private Tình trạng quan hệ giữa 2 người dùng
5 GetFriend Void Public Danh sách bạn bè
6 GetFriendRequest Void Public Danh sách lời mời kết bạn
Void Public Chấp nhận lời mời kết bạn
8 CreateFriendRequest Void Public Gửi lời mời kết bạn
9 DeleteFriend Void Public Xóa bạn
Bảng 3.15: Danh sách thuộc tính bảng User Participate
STT Tên thuộc tính Kiểu Truy cập Ý nghĩa/Ghi chú
1 _ID String Private Giá trị định danh
2 UserId String Private Mã user
3 ActivityId String Private Mã chiến dịch
4 Status String Private Trạng thái
6 GetParticipates Void Public Lấy danh sách tình nguyện viên tham gia chiến dịch
Void Public Lấy danh sách tình nguyện viên muốn tham gia chiến dịch
8 AcceptParticipate Void Public Xác nhận tình nguyện viên tham gia chiến dịch
9 Rating Void Public Đánh giá tình nguyện viên
Bảng 3.16: Danh sách thuộc tính bảng Notification
STT Tên thuộc tính Kiểu Truy cập Ý nghĩa/Ghi chú
1 _ID String Private Giá trị định danh
2 UserId String Private Mã user
3 NotificationType Enum Private Loại thông báo
String Private Nội dung của thông báo
5 IsRead Boolean Private Xác nhận đã xem thông báo
6 GetNotification Void Public Lấy danh sách thông báo
7 ReadNotification Void Public Đã xem thông báo
Bảng 3.17: Danh sách thuộc tính bảng Conversation
STT Tên thuộc tính Kiểu Truy cập Ý nghĩa/Ghi chú
1 _ID String Private Giá trị định danh
2 CreatorId String Private Mã người dùng
3 ActivityId String Private Mã chiến dịch
4 GroupId String Private Mã nhóm
5 Title String Private Tên nhóm chat
6 ParticipantIds List Private Danh sách mã người dùng có trong nhóm chat
7 LastestMessageId String Private Mã tin nhắn mới nhất trong nhóm
8 GetConversations Void Public Lấy danh sách các nhóm chat
Bảng 3.18: Danh sách thuộc tính bảng Message
STT Tên thuộc tính Kiểu Truy cập Ý nghĩa/Ghi chú
1 _ID String Private Giá trị định danh
2 ConversationId String Private Mã nhóm chat
3 SenderId String Private Mã người dùng
4 Message String Private Tin nhắn
5 GetMessage Void Public Lấy danh sách tin nhắn
6 SendMessage Void Public Gửi tin nhắn
Bảng 3.19: Danh sách thuộc tính bảng Group
STT Tên thuộc tính Kiểu Truy cập Ý nghĩa/Ghi chú
1 _ID String Private Giá trị định danh
2 CreatorId String Private Mã người dùng
3 ActivityId String Private Mã chiến dịch
4 GroupName String Private Tên nhóm
5 Info String Private Thông tin nhóm
6 TotalMember String Private Tổng thành viên trong nhóm
7 GetGroups Void Public Lấy danh sách nhóm
8 GetGroupInfo Void Public Lấy thông tin nhóm
9 GetGroupPosts Void Public Lấy danh sách bài đăng trong nhóm
Bảng 3.20: Danh sách thuộc tính bảng Member
STT Tên thuộc tính Kiểu Truy cập Ý nghĩa/Ghi chú
1 _ID String Private Giá trị định danh
2 GroupId String Private Mã nhóm
3 UserId String Private Mã người dùng
4 Role String Private Phân quyền thành viên trong nhóm
5 GetMembers Void Public Lấy danh sách thành viên trong nhóm
Bảng 3.21: Danh sách thuộc tính bảng Activity
STT Tên thuộc tính Kiểu Truy cập Ý nghĩa/Ghi chú
1 _ID String Private Giá trị định danh
2 UserId String Private Mã người dùng
3 Description String Private Mô tả chiến dịch
3 ImageUrls List Private Hình ảnh chiến dịch
4 VideoUrls List Private Video chiến dịch
5 Tag String Private Loại chiến dịch
6 CurrentProgress Number Private Chỉ tiêu hiện tại
7 Goal Number Private Chỉ tiêu cần đạt được
8 From Date Private Ngày bắt đầu
9 To Date Private Ngày kết thúc
10 StartPoint Geolocation Private Địa điểm bắt đầu
11 EndPoint Geolocation Private Địa điểm kết thúc
Number Private Số lượng tình nguyện viên trong chiến dịch
13 Latitude Location Private Vĩ độ nơi tạo bài
14 Longitude Location Private Kinh độ nơi tạo bài
15 UsersLikeActivity List Private Mã người dùng đã thích chiến dịch
List Private Mã người dùng theo dõi chiến dịch
17 UsersOrganize List Private Mã người dùng trong ban tổ chức
18 GetActivities Void Public Lấy danh sách chiến dịch
19 GetActivityInfo Void Public Lấy thông tin chiến dịch
Void Public Lấy danh sách ban tổ chức
21 FollowActivity Void Public Theo dõi chiến dịch
22 LikeActivity Void Public Thích chiến dịch
Bảng 3.22: Danh sách thuộc tính bảng Post
STT Tên thuộc tính Kiểu Truy cập Ý nghĩa/Ghi chú
1 _ID String Private Giá trị định danh
2 UserId String Private Mã người dùng
3 GroupId String Private Mã nhóm
4 ActivityId String Private Mã chiến dịch
5 Description String Private Nội dung bài đăng
6 ImageUrls List Private Hình ảnh của bài đăng
7 TotalComment Number Private Tổng lượt bình luận
8 TotalLike Number Private Tổng lượt thích
9 UsersLikePost List Private Mã người dùng đã like post
10 GetPosts Void Public Lấy danh sách bài đăng
11 GetActivityPosts Void Public Lấy danh sách bài đăng trong chiến dịch
12 GetGroupPosts Void Public Lấy danh sách bài đăng trong nhóm
13 CreatePost Void Public Tạo bài đăng
Bảng 3.23: Danh sách thuộc tính bảng Comment
STT Tên thuộc tính Kiểu Truy cập Ý nghĩa/Ghi chú
1 _ID String Private Giá trị định danh
2 PostId String Private Mã bài đăng
3 UserId String Private Mã người dùng
4 Content String Private Nội dung bình luận
3.2.2.1 Sơ đồ, danh sách màn hình liên kết
Hình 3.1: Sơ đồ màn hình liên kết
Mô tả các màn hình trên sơ đồ:
Bảng 3.24: Bảng danh sách các màn hình với quyền của người dùng hệ thống
1 Đăng nhập Thực hiện chức năng đăng nhập, có hỗ trợ xác thực tài khoản bằng email + số điện thoại
2 Trang cá nhân Hiển thị thông tin cá nhân, bài đăng của cá nhân
3 Cài đặt thông báo Cài đặt nhận thông báo từ hệ thống
4 Quản lý thông tin tài khoản
Hiển thị thông tin của người dùng hệ thống, và cho phép người dùng chỉnh sửa các thông tin này
5 Trang chủ Hiển thị các thông tin của tất cả chiến dịch gần bạn
6 Tạo chiến dịch Hiển thị màn hình tạo mới một chiến dịch
7 Chiến dịch chi tiết Hiển thị chi tiết đầy đủ của một chiến dịch như số lượng người tham gia, mô tả, thời gian biểu, …
8 Mời người tham gia chiến dịch
Mời bạn bè tham gia vào chiến dịch Và đánh giá người đã tham gia
9 Cho phép người tham gia làm ban quản trị
Những bạn bè đã tham gia có thể mời họ làm ban quản trị
10 Mời bạn bè tham gia chiến dịch
Mời bạn bè tham gia vào chiến dịch Và đánh giá người đã tham gia
11 Thời gian biểu Bảng biểu thời gian hoạt động của chiến dịch, và thông báo tới người dùng khi hoạt động sắp diễn ra
12 Tạo thời gian biểu Hiển thị màn hình tạo mới thời gian biểu dành cho chủ chiến dịch
13 Tạo bài đăng ở chiến dịch
Tạo mới bài đăng trong màn hình chi tiết chiến dịch
14 Hoạt động nhóm Danh sách màn hình các nhóm bên trong chiến dịch
15 Tạo bài đăng trong nhóm
Tạo mới bài đăng trong màn hình nhóm
16 Quản lý thành viên nhóm
Hiển thị thông tin các thành viên trong nhóm
17 Bản tin Hiển thị các bài đăng từ chiến dịch và nhóm
18 Bài đăng chi tiết Hiển thị phần bình luận từ mọi người
19 Thông báo Hiển thị tất cả thông báo từ hệ thống
20 Lời mời kết bạn Hiển thị lời mời kết bạn
21 Yêu cầu tham gia chiến dịch
Hiển thị yêu cầu tham gia chiến dịch
22 Yêu cầu tham gia nhóm Hiển thị yêu cầu tham gia nhóm
23 Hoạt động đã tham gia Hiển thị các hoạt động đã tham gia cùng phần đánh giá từ ban quản trị
24 Xuất excel Xuất ra tất cả các thông tin từ màn hình excel
25 Tìm kiếm Màn hình tìm kiếm với bộ lọc và phần từ khoá
26 Tìm kiếm bài viết Tìm kiếm bài viết với bộ lọc bài viết và từ khoá
27 Tìm kiếm người dùng Tìm kiếm bài viết với bộ lọc mọi người và từ khoá
3.2.3 Thiết kế kiến trúc hệ thống