1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Khoá luận tốt nghiệp Đại học Đề tài tìm hiểu spring boot và Ứng dụng Để xây dựng mạng xã hội heartshare

90 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Spring Boot Và Ứng Dụng Để Xây Dựng Mạng Xã Hội Heartshare
Tác giả Nguyễn Văn Định
Người hướng dẫn TS. Nguyễn Hoàng Hà
Trường học Đại học Huế
Chuyên ngành Công nghệ thông tin
Thể loại khóa luận tốt nghiệp
Năm xuất bản 2024
Thành phố Huế
Định dạng
Số trang 90
Dung lượng 3,31 MB

Cấu trúc

  • CHƯƠNG 1 GIỚI THIỆU CÁC CÔNG NGHỆ (9)
    • 1.1. Spring Boot (9)
      • 1.1.1 Giới thiệu chung (9)
      • 1.1.2 Cấu trúc Spring Boot (9)
  • CHƯƠNG 1..................................................................................................5 (0)
    • 1.2. JPA và Hibernate (0)
      • 1.2.1 Tổng quan về JPA (0)
      • 1.2.2 Tổng quan về Hibernate (0)
  • CHƯƠNG 1..................................................................................................7 (0)
    • 1.3. RESTful Web Services (0)
      • 1.3.1 Tổng quan về RESTful Web Services (0)
      • 1.3.2 Những ưu điểm của RESTful Web Services (0)
      • 1.3.3 RESTful Web Services với Spring Boot (0)
    • 1.4. React JS (0)
      • 1.4.1 Giới thiệu về React JS (0)
      • 1.4.2 Cấu trúc React JS (0)
      • 1.4.3 Kết luận (0)
    • 1.5. PostgreSQL (0)
      • 1.5.1 Giới thiệu (0)
      • 1.5.2 Ưu điểm (0)
      • 1.5.3 Nhược điểm (0)
      • 1.5.4 Kết luận (0)
    • 1.6 Redis (0)
      • 1.6.2 Ưu điểm (0)
      • 1.6.3 Nhược điểm (0)
      • 1.6.4 Kết luận (0)
  • CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG (19)
    • 2.1 Tổng quan về đề tài (19)
      • 2.1.1 Đặt vấn đề (19)
      • 2.1.2 Đặc tả yêu cầu bài toán (20)
      • 2.1.3 Yêu cầu bảo mật (22)
    • 2.2 Khảo sát yêu cầu (23)
      • 2.2.1 Nội dung khảo sát (23)
      • 2.2.2 Mục đích khảo sát (24)
    • 2.3 Thiết kế hệ thống (25)
      • 2.3.1 Mô hình hệ thống (25)
      • 2.3.2 Mô hình triển khai (25)
      • 2.3.3 Mô hình triển khai (client-server) (26)
      • 2.3.4 Môi trường và công cụ phát triển (26)
      • 2.3.5 Biểu đồ Usecase (29)
      • 2.3.6 Các chức năng chung (35)
      • 2.3.7 Các chức năng của Admin (Quản trị viên) (37)
      • 2.3.8 Các chức năng của User (Người dùng) (41)
      • 2.3.9 Sơ đồ phân rã (44)
      • 2.3.10 Thực thể (45)
  • CHƯƠNG 3 CÀI ĐẶT (61)
    • 3.1 Giao diện Landing (61)
    • 3.2 Giao diện Người dùng (User) (66)
      • 3.2.1 Giao diện Trang chủ (66)
      • 3.2.2 Giao diện Đăng bài (69)
      • 3.2.3 Giao diện Reply bài đăng (71)
      • 3.2.4 Giao diện Thông báo (75)
      • 3.2.5 Giao diện Nhắn tin (77)
      • 3.2.6 Giao diện Giao diện tìm kiếm (79)
      • 3.2.7 Giao diện Giao diện trang cá nhân (81)
    • 3.3 Một vài chức năng nổi bật (83)
      • 3.3.1 Bảo mật (83)
      • 3.3.2 Ngăn chặn spam request tới server (84)
      • 3.3.3 Mã hóa tin nhắn (86)

Nội dung

Spring Boot cungcấp các tính năng quan trọng như chuyển đổi định dạng đa phương tiện,validation, exception handling, security, caching và logging để giúp bạn xâydựng các RESTful API và R

GIỚI THIỆU CÁC CÔNG NGHỆ

Spring Boot

Spring Boot là một module của Spring Framework, cung cấp tính năng phát triển ứng dụng nhanh (RAD) Nó cho phép tạo ứng dụng Spring độc lập mà không cần cấu hình XML, giúp giảm bớt sự phức tạp trong việc cài đặt và cấu hình so với Spring Framework truyền thống.

Hình 1.1.1: Spring Boot flow architecture

Spring Boot cung cấp các tính năng chính như sau:

- Starter Dependencies: Các gói phụ thuộc tích hợp sẵn, chẳng hạn spring-boot-starter-web cho web và spring-boot-starter-data-jpa cho

- Auto-Configuration: Tự động cài đặt các bean trong Spring dựa trên các dependency trong project.

- Spring Boot CLI: Công cụ dòng lệnh cho phép tạo ứng dụng nhanh chóng.

- Embedded Servers: Tích hợp sẵn các server như Tomcat, Jetty,

- Production Ready Features: Bao gồm monitoring, metrics và health checks thong qua Spring Boot Actuator.

1.1.3 : Cách cài đặt Spring Boot

Spring Boot cho phép cài đặt nhanh chóng bằng nhiều cách:

 Cài đặt thông qua Spring Initializr:

- Truy cập https://start.spring.io/

 Dependencies: Thêm các starter như Spring Web

- Tải file zip và mở trong IDE như IntelliJ IDEA hoặc Eclipse.

 Cài đặt thông qua Maven: Tạo một project Maven và thêm các dependency trong file pom.xml

1.1.4 : Chương trình HelloWorld trong Spring Boot

- Bước 1: Cấu trúc thư mục

• src/main/java: Chứa code Java.

• src/main/resource: Các file cấu hình như application.properties

• pom.xml: File quản lý các dependencies.

• Mở terminal hoặc IDE và chạy lệnh Maven: mvn spring-boot:run

• Mở trình duyệt và truy cập: http://localhost:8080/api/hello

Spring Boot optimizes Java application development by simplifying the configuration, installation, and deployment processes With powerful features such as Auto-Configuration, Embedded Servers, and Starter Dependencies, Spring Boot is an ideal choice for building modern applications, ranging from monolithic to microservices architectures.

JPA (Java Persistence API) là một giao diện lập trình ứng dụng Java, cung cấp cách thức quản lý mối quan hệ dữ liệu trong các ứng dụng sử dụng nền tảng Java.

JPA cung cấp một mô hình lưu trữ POJO, giúp ánh xạ các bảng và mối quan hệ giữa các bảng trong cơ sở dữ liệu sang các lớp và mối quan hệ giữa các đối tượng.

Entity là những đối tượng tương ứng với một bảng trong cơ sở dữ liệu Trong lập trình, entity thường được thể hiện dưới dạng các class POJO đơn giản, chỉ bao gồm các phương thức getter và setter.

The EntityManager is an interface that offers APIs for interacting with entities, enabling operations such as persist (to save a new object), merge (to update an existing object), and remove (to delete an object).

- EntityManagerFactory: EntityManagerFactory được dùng để tạo ra một thể hiện của EntityManager.

An EntityTransaction refers to a collection of operations where either all actions must succeed or none at all In the context of databases, a transaction consists of a set of SQL statements that are either committed or rolled back as a single unit.

Persistence defines a collection of Entity classes managed by a single instance of EntityManager within an application The Persistence class (javax.persistence.Persistence) includes static methods for obtaining an instance of EntityManagerFactory.

- Query: Đây là một interface, được mỗi nhà cung cấp JPA implement để có được các đối tượng quan hệ đáp ứng các tiêu chí (criteria) truy vấn.

Hibernate là một framework ánh xạ đối tượng quan hệ phổ biến cho Java, đóng vai trò quan trọng trong J2EE EJB và được phát triển bởi Red Hat Framework này cho phép ánh xạ các lớp Java với bảng trong cơ sở dữ liệu, cung cấp khả năng truy vấn linh hoạt và chặt chẽ Nhờ vào Hibernate, thời gian phát triển được rút ngắn đáng kể mà vẫn đảm bảo độ tin cậy cho các sản phẩm phần mềm.

Hibernate là một framework ORM (Object Relational Mapping) giúp lập trình viên tương tác với cơ sở dữ liệu một cách tự nhiên qua các đối tượng Với Hibernate, lập trình viên không cần lo lắng về loại cơ sở dữ liệu hay các câu lệnh SQL.

Hay nói các khác, hibernate chính là cài đặt của JPA (JPA là một tập các interface, còn Hibernate implements các interface ấy một cách chi tiết).

1.1.8 Tổng quan về RESTful Web Services

REST, viết tắt của Representational State Transfer, được phát triển bởi Roy Thomas Fielding nhằm mục tiêu tối ưu hóa hiệu quả cho các dịch vụ web Các dịch vụ RESTful định nghĩa các dịch vụ dựa trên các khái niệm có sẵn trong HTTP REST được xem như một cách tiếp cận kiến trúc, không phải là một giao thức.

Chúng ta có thể xây dựng các dịch vụ REST sử dụng cả XML và JSON, trong đó JSON được ưa chuộng hơn Sự trừu tượng hóa là một tài nguyên quan trọng trong REST, có thể được truy cập thông qua URI (Uniform Resource Identifier).

Tài nguyên có thể được biểu diễn dưới nhiều định dạng như XML, HTML và JSON Khi một tài nguyên được yêu cầu, hệ thống sẽ cung cấp biểu diễn tương ứng của tài nguyên đó Các phương thức HTTP quan trọng bao gồm GET, PUT, POST và DELETE.

1.1.9 Những ưu điểm của RESTful Web Services

- RESTful Web Services không phụ thuộc vào nền tảng.

- Nó có thể được viết bằng bất kỳ ngôn ngữ lập trình nào và có thể thực thi trên bất kỳ nền tảng nào.

- Nó cung cấp các định dạng dữ liệu khác nhau như JSON, text, HTML, XML.

- Nó nhanh hơn so với SOAP vì không có thông số kỹ thuật nghiêm ngặt như SOAP.

- Có thể tái sử dụng.

- Nó là ngôn ngữ trung lập.

1.1.10 RESTful Web Services với Spring Boot

Spring Boot là một framework Java mạnh mẽ để phát triển các ứng dụng web và mobile hiện đại, và hỗ trợ việc phát triển RESTful API và RESTful

Spring MVC và Spring WebFlux là những công nghệ quan trọng trong việc phát triển Web Services Spring Boot cung cấp nhiều tính năng thiết yếu như chuyển đổi định dạng đa phương tiện, xác thực, xử lý lỗi, bảo mật, lưu trữ tạm và ghi log, giúp bạn xây dựng các RESTful API và web services chất lượng và an toàn Hơn nữa, Spring Boot còn giúp đơn giản hóa quy trình phát triển RESTful API và web services, từ đó tiết kiệm thời gian và nâng cao năng suất trong việc phát triển ứng dụng web và di động.

1.1.11 Giới thiệu về React JS

React JS là một thư viện Javascript đang ngày càng phổ biến trong xu hướng phát triển Single Page Application Khác với các framework khác theo mô hình MVC, React nổi bật với sự đơn giản và khả năng tích hợp dễ dàng với các thư viện Javascript khác Trong khi AngularJS cho phép nhúng code Javascript vào HTML qua các attribute như ng-module hay ng-repeat, React sử dụng JSX để nhúng HTML vào Javascript, giúp việc lồng ghép các đoạn HTML trong JS trở nên dễ dàng và làm cho các component trở nên trực quan hơn.

Redis

Redis là một giải pháp hiệu quả cho các ứng dụng cần tốc độ cao, rất phù hợp cho việc caching, quản lý phiên và xếp hàng tin nhắn Với khả năng mở rộng tốt và nhiều tính năng phong phú, Redis trở thành công cụ quan trọng trong kiến trúc hệ thống hiện đại.

PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

Tổng quan về đề tài

Trong quá trình học, tôi đã thấy sự phát triển mạnh mẽ của các dự án website bán hàng, với nhiều người đạt được thành công đáng kể Điều này cho thấy chủ đề bán hàng không chỉ là thách thức mà còn là cơ hội để thể hiện sự sáng tạo và đổi mới.

Mặc dù có nhiều nghiên cứu về bán hàng trực tuyến, nhưng ít nhóm dám thử sức với góc nhìn mới Vì vậy, tôi quyết định tập trung vào nghiên cứu và phát triển Mạng xã hội HeartShare – một nền tảng trực tuyến giúp cộng đồng repost và tái sử dụng đồ dùng, hỗ trợ những người gặp khó khăn.

Hiện nay, tình trạng mua sắm vô tội vạ của sinh viên ngày càng gia tăng, với nhiều bạn trẻ thường mua sắm những món đồ không cần thiết, chỉ sử dụng một vài lần rồi bỏ đi Hành động này không chỉ gây lãng phí tài nguyên và tốn kém chi phí mà còn tạo áp lực tài chính cho sinh viên và ảnh hưởng tiêu cực đến môi trường sống Phát triển một nền tảng tái sử dụng đồ dùng sẽ giúp giải quyết vấn đề lãng phí, đồng thời lan tỏa tinh thần sẻ chia trong cộng đồng, đặc biệt là hỗ trợ những người gặp khó khăn.

Qua dự án này, tôi hy vọng sẽ thay đổi nhận thức của giới trẻ về thói quen tiêu dùng, khuyến khích tinh thần tiết kiệm, bảo vệ môi trường và xây dựng một cộng đồng hỗ trợ lẫn nhau.

2.1.2 Đặc tả yêu cầu bài toán

Hệ thống có 2 quyền người dùng:

- Admin: Quản trị viên, là người có quyền hạn cao nhất trong hệ thống, bao gồm các quyền hạn:

- Tổng số người dùng (ngày, tháng năm).

- Phần trăm số người dùng tăng so với ngày trước, tháng trước, năm trước.

- Tổng số người dùng theo từng tháng cho đến hiện tại.

- TOP 5 người dùng theo bài đăng (tổng số bài đăng và sao nhận được).

- Xem chi tiết người dùng.

- Tổng số người dùng bị báo cáo theo ngày, tháng năm.

- Phần trăm số người dùng bị báo cáo tăng so với ngày trước, tháng trước, năm trước.

- Danh sách các người dùng bị báo cáo theo ngày, năm và có tích hợp tìm kiếm, sắp xếp.

 Xem chi tiết người dùng:

- Tổng số lượt bài đăng, yêu thích, reply, repost, người theo dõi của người dùng.

- Xem tất cả bài đăng của người dùng.

- Thông tin cá nhân cua người dùng.

- Tổng số lượng bị báo cáo.

- Nội dung của các báo cáo đã báo cáo người dùng.

- Vô hiệu hóa người dùng.

- Danh sách các người dùng bị báo cáo theo ngày, năm và có tích hợp tìm kiếm, sắp xếp.

- Tổng số bài đăng (ngày, tháng năm).

- Phần trăm số bài đăng tăng so với ngày trước, tháng trước, năm trước.

- Tổng số bài đăng theo từng tháng cho đến hiện tại.

- TOP 5 Bài đăng có số sao và lượt like nhiều nhất.

- Xem chi tiết bài đăng.

- Tổng số bài đăng bị báo cáo (ngày, tháng năm).

- Phần trăm số bài đăng bị báo cáo tăng so với ngày trước, tháng trước, năm trước.

- Danh sách các bài đăng bị báo cáo theo ngày, năm Có tích hợp tìm kiếm, sắp xếp.

 Xem chi tiết bài đăng:

- Tổng số lượt yêu thích, reply, sao.

- Xem tất cả reply của bài đăng.

- Tổng số lượng báo cáo của bài đăng đó.

- Nội dung của các báo cáo bài đăng đó.

- Vô hiệu hóa bài đăng.

 Xem thống kê tổng hợp:

- Tổng số bài đăng (năm nay).

- Tổng số người dùng (năm nay).

- Phần trăm số bài đăng tăng so với năm trước.

- Phần trăm số người dùng tăng so với năm trước.

- Tổng số bài đăng theo từng tháng cho đến hiện tại.

- Tổng số người dùng theo từng tháng cho đến hiện tại.

- Tổng số bài đăng bị báo cáo trong năm nay.

- Tổng số người dùng bị báo cáo trong năm nay.

- Phần trăm số bài đăng bị báo cáo so với năm trước.

- Phần trăm số người dùng bị báo cáo so với năm trước

 Quản lý trang cá nhân:

- Cập nhật thông tin tài khoản.

- User: người dùng, bao gồm các quyền hạn:

 Quản lý tài khoản cá nhân:

 Xem chi tiết người dùng:

 Thích, repost, tặng sao bài đăng

 Thông báo (theo dõi, reply, nhắc đến, repost, thích, tặng sao bài đăng)

Tất cả người dùng yêu cầu phải đăng nhập.

- Sau khi đăng nhập sẽ vào trang admin.

- Có thể thực hiện các chức năng quản lý như: quản lý người dùng, quản lý bài đăng, thống kê,…

- Sau khi đăng nhập sẽ vào trang dành cho người dùng (user).

- Có thể thực hiện tất cả chức năng dành cho người dùng như: đăng bài, reply, nhắn tin, báo cáo,…

Khảo sát yêu cầu

Để nắm bắt chức năng và giao diện của các trang mạng xã hội phổ biến hiện nay, tôi đã thực hiện khảo sát kỹ thuật trên các nền tảng như Facebook, Twitter (X) và Instagram.

- Chức năng chính: Cho phép repost bài viết, hình ảnh, video, tương tác với bài viết của người khác, tham gia nhóm, và trò chuyện cá nhân.

Giao diện được tối ưu hóa với menu dễ sử dụng, giúp người dùng dễ dàng điều hướng Trang cá nhân được cá nhân hóa, mang đến trải nghiệm độc đáo cho mỗi người dùng Ngoài ra, trang tin tức hiển thị nội dung từ bạn bè, nhóm và các trang đã theo dõi, giúp người dùng cập nhật thông tin một cách thuận tiện và nhanh chóng.

- Chức năng chính: Repost trạng thái ngắn (tweet), hình ảnh, video, reply, thích (like), và retweet các bài đăng của người khác.

Giao diện của nền tảng được thiết kế đơn giản và hiện đại, tập trung vào việc hiển thị nội dung theo thời gian thực Nó hỗ trợ người dùng tìm kiếm hashtag và theo dõi các xu hướng nổi bật một cách dễ dàng.

- Chức năng chính: Repost trạng thái ngắn (tweet), hình ảnh, video, reply, thích (like), và retweet các bài đăng của người khác.

Giao diện của nền tảng này rất đơn giản và hiện đại, với trọng tâm là hiển thị nội dung theo thời gian thực Nó còn hỗ trợ người dùng tìm kiếm hashtag và theo dõi các xu hướng nổi bật, giúp nâng cao trải nghiệm sử dụng.

- Tất cả các trang mạng xã hội đều có giao diện được tối ưu hóa để phản ánh đồng thời sự đơn giản và thuận tiện.

- Chức năng repost và tương tác là chung, nhưng cách triển khai có sự khác biệt để đáp ứng đa dạng nhu cầu người dùng

Hiểu rõ chức năng của các trang mạng xã hội phổ biến như Facebook, Twitter và Instagram là rất quan trọng Việc xác định và nắm bắt các chức năng chính giúp người dùng có cái nhìn tổng quan về khả năng và tính năng cụ thể mà mỗi nền tảng cung cấp, từ đó tối ưu hóa trải nghiệm sử dụng.

Đánh giá giao diện của các trang mạng xã hội là rất quan trọng để hiểu rõ về sự thuận tiện và trải nghiệm người dùng Việc phân tích cách các nền tảng tối ưu hóa trang web và ứng dụng di động giúp chúng ta đánh giá hiệu quả tương tác giữa người dùng và giao diện.

So sánh các nền tảng mạng xã hội giúp người dùng nhận diện rõ ràng các điểm mạnh và điểm yếu của từng hệ thống Điều này không chỉ làm nổi bật sự đa dạng trong lựa chọn mà còn giúp người dùng đưa ra quyết định phù hợp với nhu cầu và sở thích cá nhân của mình Việc hiểu rõ các đặc điểm của mỗi nền tảng sẽ hỗ trợ người dùng tối ưu hóa trải nghiệm trực tuyến của họ.

Tham khảo thiết kế website bằng cách cung cấp thông tin cơ bản và ý tưởng hữu ích từ các trang mạng xã hội phổ biến Áp dụng những yếu tố thiết kế hiệu quả này sẽ giúp nâng cao chất lượng dự án của bạn.

Thiết kế hệ thống

Hình 2.3.1 : Mô hình hệ thống

- Dự án triển khai theo mô hình MVC, Client Side Rendering.

Hình 2.3.2 : Mô hình triển khai

2.3.3 Mô hình triển khai (client-server)

Hình 2.3.3 : Mô hình triển khai (client – server)

2.3.4 Môi trường và công cụ phát triển

IntelliJ IDEA là một IDE mạnh mẽ và phổ biến cho phát triển ứng dụng Java, đặc biệt hỗ trợ hiệu quả Spring Framework và Spring Boot Với tính năng gợi ý mã thông minh, công cụ debug mạnh mẽ và nhiều tính năng tối ưu tích hợp sẵn, IntelliJ giúp lập trình với Spring Boot trở nên nhanh chóng và thuận tiện hơn.

- Visual Studio Code: là một Code Editor hỗ trợ mạnh mẽ cho các dự án chạy JavaScript và các Framework liên quan đến JavaScript, TyprScript.

- Redis Insight: là một công cụ dùng để kết nối và quản lí bộ nhớ

- NodeJS: là môi trường thực thi và chạy các đoạn JavaScript, thường dùng cho các Framework của Javascript.

- Postman: là công cụ dùng để gọi các API

- Bbeaver: là công cụ kết nối, truy xuất, tùy chỉnh và cấu hình

Hình 2.3.5 : Biểu đồ Usecase Tổng quát

2.3.5.2 Quản lý thông tin cá nhân

Hình 2.3.5.2: Usecase Quản lý thông tin cá nhân

2.3.5.3 Quản lý bài đăng (Admin)

Hình 2.3.5.3: Usecase Quản lý bài đăng (Admin)

2.3.5.4 Quản lý người dùng (Admin)

Hình 2.3.5.4: Usecase Quản lý người dùng (Admin)

Hình 2.3.5.5: Usecase Thống kê (Admin)

2.3.5.6 Quản lý người dùng bị báo cáo

Hình 2.3.5.6: Usecase Quản lý người dùng bị báo cáo

2.3.5.7 Quản lý bài đăng bị báo cáo

Hình 2.3.5.7: Usecase Quản lý bài đăng bị báo cáo

Hình 2.3.5.9: Usecase Tương tác bài đăng

Hình 2.3.5.10: Usecase Nhật ký hoạt động

- Chức năng đăng ký được sử udngj trong trường hợp người dùng muốn sử dụng hệ thống trực tuyến phải tạo tài khoản mới có thể sử dụng được.

- Thông tin bao gồm: tên đăng nhập, họ và tên, email, số điện thoại, ngày sinh, mật khẩu Đối tượng sử dụng:

- Chức năng đăng nhập được sử dụng để đăng nhập vào tài khoản đã được đăng kí trước đó.

Chức năng này yêu cầu xác định tên đăng nhập và mật khẩu hợp lệ; chỉ khi tài khoản tồn tại, người dùng mới có thể truy cập vào hệ thống.

- Thông tin bao gồm: email và mật khẩu mới Đối tượng sử dụng:

- Tất cả đối tượng đã tạo tài khoản.

- Chức năng quên mật khẩu được sử dụng trong trường hợp người sử dụng

- quên mật khẩu và muốn lấy lại mật khẩu.

Chức năng này yêu cầu kiểm tra tính hợp lệ của email; nếu email hợp lệ, người dùng sẽ nhận được mã xác nhận Sau đó, người dùng cần nhập mã code để tiếp tục vào form đổi mật khẩu, nơi họ sẽ nhập và xác nhận mật khẩu mới để hoàn tất quá trình đổi mật khẩu.

- Thông tin bao gồm: tên đăng nhập, họ và tên, email, số điện thoại, ngày sinh, mật khẩu Đối tượng sử dụng:

- Cập nhật thông tin được sử dụng để người dùng cập nhật hoặc chỉnh sửa thông tin của mình.

- Có thể chỉnh sửa : banner, ảnh đại diện, giới thiệu, họ tên, tên người dùng, ngày sinh.

- Thông tin gồm: ảnh banner, ảnh đại diện, giới thiệu, họ tên, tên người dùng, email, mật khẩu, ngày sinh. Đối tượng sử dụng:

- Tất cả người dùng đăng nhập vào hệ thống.

- Chức năng này được sử dụng khi người dùng muốn thay đổi mật khẩu.

- Để thực hiện, người dùng cần nhập mật khẩu hiện tại và mật khẩu mới để đảm bảo tính bảo mật.

- Mật khẩu hiện tại: Được dùng để xác minh quyền truy cập.

- Mật khẩu mới: Được lưu vào hệ thống sau khi cập nhật. Đối tượng sử dụng:

- Tất cả người dùng đăng nhập vào hệ thống.

2.3.7 Các chức năng của Admin (Quản trị viên)

Chức năng này cho phép quản trị viên theo dõi và phân tích các báo cáo thống kê liên quan đến bài đăng, người dùng, cũng như các bài đăng và người dùng bị báo cáo.

- Tổng số bài đăng (năm nay).

- Tổng số người dùng (năm nay).

- Phần trăm số bài đăng tăng so với năm trước.

- Phần trăm số người dùng tăng so với năm trước.

- Tổng số bài đăng theo từng tháng cho đến hiện tại.

- Tổng số người dùng theo từng tháng cho đến hiện tại.

- Tổng số bài đăng bị báo cáo trong năm nay.

- Tổng số người dùng bị báo cáo trong năm nay.

- Phần trăm số bài đăng bị báo cáo so với năm trước.

- Phần trăm số người dùng bị báo cáo so với năm trước. Đối tượng sử dụng:

Chức năng này giúp quản trị viên theo dõi và phân tích các báo cáo thống kê liên quan đến bài đăng, người dùng, cũng như các bài đăng và người dùng bị báo cáo.

- Tổng số bài đăng (năm nay).

- Tổng số người dùng (năm nay).

- Phần trăm số bài đăng tăng so với năm trước.

- Phần trăm số người dùng tăng so với năm trước.

- Tổng số bài đăng theo từng tháng cho đến hiện tại.

- Tổng số người dùng theo từng tháng cho đến hiện tại.

- Tổng số bài đăng bị báo cáo trong năm nay.

- Tổng số người dùng bị báo cáo trong năm nay.

- Phần trăm số bài đăng bị báo cáo so với năm trước.

- Phần trăm số người dùng bị báo cáo so với năm trước. Đối tượng sử dụng:

2.3.7.3 Xem chi tiết bài đăng

- Chức năng này cho phép Quản trị viên xem chi tiết bài đăng đó và có thể vô hiệu hóa bài đăng.

- Tổng số lượt yêu thích, star, reply, repost.

- Xem tất cả reply của bài đăng.

- Tổng số lượng báo cáo của bài đăng đó.

- Nội dung của các báo cáo bài đăng đó.

- Vô hiệu hóa bài đăng. Đối tượng sử dụng:

- Chức năng này cho phép quản trị viên xem các thống kê, báo cáo về người dùng và xem chi tiết hơn về người dùng đó.

- Tổng số người dùng (ngày, tháng năm).

- Phần trăm số người dùng tăng so với ngày trước, tháng trước, năm trước.

- Tổng số người dùng theo từng tháng cho đến hiện tại.

- TOP 5 người dùng theo bài đăng (xếp theo số lượng post và số sao của post đó).

- Xem chi tiết người dùng.

- Tổng số người dùng bị báo cáo (ngày, tháng năm).

- Phần trăm số người dùng bị báo cáo tăng so với ngày trước, tháng trước, năm trước.

- Danh sách các người dùng bị báo cáo (ngày, năm) có tích hợp tìm kiếm, sắp xếp. Đối tượng sử dụng:

2.3.7.5 Xem chi tiết người dùng

- Chức năng này cho phép Quản trị viên xem chi tiết người dùng đó và có thể vô hiệu hóa người dùng.

- Chức năng này cho phép Quản trị viên xem chi tiết người dùng đó và có

- thể vô hiệu hóa người dùng.

- Tổng số lượt bài đăng, yêu thích, reply, repost, người theo dõi của người dùng.

- Xem tất cả bài đăng của người dùng.

- Thông tin cá nhân cua người dùng.

- Tổng số lượng bị báo cáo.

- Nội dung của các báo cáo đã báo cáo người dùng.

- Vô hiệu hóa người dùng. Đối tượng sử dụng:

2.3.7.6 Quản lý người dùng bị báo cáo

- Chức năng này cho phép kiểm duyệt viên xem thống kê, danh sách của các người dùng bị báo cáo.

- Xem chi tiết người dùng.

- Tổng số người dùng bị báo cáo (ngày, tháng năm).

- Phần trăm số người dùng bị báo cáo tăng so với ngày trước, tháng trước, năm trước.

- Danh sách các người dùng bị báo cáo (ngày, năm). Đối tượng sử dụng:

2.3.7.7 Xem chi tiết người dùng bị báo cáo

- Chức năng cho phép kiểm duyệt viên xem chi tiết người dùng bị báo cáo.

- Tổng số lượt bài đăng, yêu thích, reply, repost, người theo dõi của người dùng.

- Xem tất cả bài đăng của người dùng (công khai).

- Thông tin cá nhân cua người dùng.

- Tổng số lượng bị báo cáo.

- Nội dung của các báo cáo đã báo cáo người dùng. Đối tượng sử dụng:

2.3.8 Các chức năng của User (Người dùng)

- Chức năng đăng bài được sử dụng trong trường hợp người dùng muốn đăng bài lên hệ thống.

- Yêu cầu của chức năng này là phải nhập đầy đủ thông tin có thể để trống thông tin hoặc ảnh.

- Thông tin bao gồm: đối tượng, nội dung, địa chỉ, hình ảnh, schedule time, giff. Đối tượng sử dụng:

- Tất cả người dùng đăng nhập vào hệ thống.

- Chức năng cập nhật bài đăng được sử dụng trong trường hợp người dùng muốn chỉnh sửa bài đăng của mình.

- Thông tin bao gồm: đối tượng, nội dung, địa chỉ, hình ảnh, schedule time, giff. Đối tượng sử dụng:

- Tất cả người dùng đăng nhập vào hệ thống.

- Chức năng thích bài viết được sử dụng trong trường hợp người dùng thích đến sản phẩm được đăng trong bài viết nào đó.

- Khi nhấn thích thì sẻ có thông báo gửi đến người đăng bài. Đối tượng sử dụng:

- Tất cả người dùng đăng nhập vào hệ thống.

- Chức năng tạo reply được sử dụng trong trường hợp tạo một bình luận trong bài viết của người dùng hoặc bài biết của người dùng khác.

- Chức năng xóa reply được sử dụng khi người dùng muốn xóa reply của mình hoặc reply của người khác trong bài đăng của mình.

- Chức năng trả lời reply được sử dụng trong trường hợp người dùng muốn trả lời reply của người khác. Đối tượng sử dụng:

- Tất cả người dùng đăng nhập vào hệ thống.

- Chức năng nhắn tin được sử dụng trong trường người dùng muốn trao đổi với người dùng khác. Đối tượng sử dụng:

- Tất cả người dùng đăng nhập vào hệ thống.

- Repost bài viết về trang cá nhân là khi người dùng repost bài viết của người dùng khác về trang cá nhân của mình. Đối tượng sử dụng:

- Tất cả người dùng đăng nhập vào hệ thống.

- Báo cáo bài viết được dùng trong trường hợp người dùng muốn báo cáo bài viết của người dùng khác.

- Báo cáo tài khoản được dùng trong trường hợp người dùng muốn báo cáo bài viết của người dùng khác. Đối tượng sử dụng:

- Tất cả người dùng đăng nhập vào hệ thống.

- Chức năng theo dõi được dùng trong trường hợp người dùng thích đến những người dùng khác. Đối tượng sử dụng:

- Tất cả người dùng đăng nhập vào hệ thống.

Chức năng thông báo sẽ bao gồm 6 loại: thông báo trả lời, thông báo nhắc đến trong bài viết hoặc phản hồi, thông báo repost, thông báo thích bài đăng, và thông báo theo dõi Các loại thông báo này nhằm phục vụ cho người dùng một cách hiệu quả hơn.

- Tất cả người dùng đăng nhập vào hệ thống.

Chức năng nhật ký hoạt động cho phép người dùng xem lại các bài viết mà họ đã tương tác, bao gồm những bài viết đã trả lời và những bài viết đã chia sẻ lại.

- Tất cả người dùng đăng nhập vào hệ thống.

Hình 2.3.9: Sơ đồ phân rã

2.3.10.1 Xác định các thực thể

Hình 2.3.10.1: Bảng các thực thể

Tên thực thể và mô tả liên quan đến các thành phần trong hệ thống bao gồm bài đăng, người dùng, vai trò, thông báo và tin nhắn Các khái niệm như phường, xã, quận, huyện, tỉnh, thành phố được tổ chức theo cấp độ địa lý Các cuộc trò chuyện được quản lý thông qua các mối quan hệ giữa người dùng và vai trò, cũng như giữa người tham gia và cuộc trò chuyện Các tính năng như báo cáo bài đăng và tài khoản, theo dõi và danh sách người theo dõi, cùng với các phản hồi và tương tác của người dùng đối với tin nhắn và bài đăng cũng được ghi nhận Các lựa chọn trong cuộc bình chọn và số lượng phiếu bầu cho chúng được theo dõi để đánh giá sự tham gia của người dùng.

Bảng 2.3.10.1: Mô tả thực thể

2.3.10.2 Sơ đồ quan hệ thực thể (ERD)

Hình 2.3.10.2: Sơ đồ quan hệ thực thể ERD

2.3.10.3 Mối quan hệ giữa các thực thể

Mỗi tỉnh có thể có nhiều huyện.

Hình 2.3.1: Mối quan hệ giữa provinces – districts

Mỗi huyện có thể có nhiều xã.

Hình 2.3.2: Mối quan hệ giữa districts – wards

- user_roles_junction – users, roles

Mỗi người dùng có thể có nhiều vai trò, và mỗi vai trò có thể được gán cho nhiều người dùng.

Hình 2.3.3: Mối quan hệ giữa user_roles_junction – user, role

- conversation_user_junction – users, conversations

Mỗi cuộc trò chuyện có thể có nhiều người tham gia, và mỗi người dùng có thể tham gia nhiều cuộc trò chuyện.

Hình 2.3.4: Mối quan hệ giữa conversation_user_junciton – users, conversations

Một người dùng có thể có nhiều người theo dõi, và một người dùng cũng có thể theo dõi nhiều người khác.

Hình 2.3.5: Mối quan hệ giữa followers – users

Một người dùng có thể theo dõi nhiều người, và một người dùng khác cũng có thể được nhiều người theo dõi.

Hình 2.3.6: Mối quan hệ giữa following - users

Mỗi cuộc thăm dò (poll) có thể có nhiều lựa chọn, nhưng mỗi lựa chọn chỉ thuộc về một cuộc thăm dò duy nhất.

Hình 2.3.7: Mối quan hệ giữa poll_choices – polls

- poll_choices_votes – poll_choices, users

Một lựa chọn trong cuộc thăm dò có thể nhận được nhiều lượt bầu chọn từ nhiều người, và một người có thể bỏ phiếu cho nhiều lựa chọn.

Hình 2.3.8: Mối quan hệ giữa users - user_reported

- message_hidden_by – messages, users

Một tin nhắn (messages) có thể bị nhiều người dùng ẩn, và một người dùng có thể ẩn nhiều tin nhắn.

Hình 2.3.9: Mối quan hệ giữa message_hidden_by – messages, users

Một bài đăng (posts) có thể bao gồm nhiều hình ảnh, nhưng mỗi hình ảnh chỉ thuộc về một bài đăng.

Hình 2.3.10: Mối quan hệ giữa images – posts

- message_seen_by – messages, users

Một tin nhắn (messages) có thể bị nhiều người dùng ẩn, và một người dùng có thể ẩn nhiều tin nhắn.

Hình 2.3.11: Mối quan hệ giữa message_seen_by – messages, users

Một người dùng có thể phản ứng với nhiều tin nhắn, và một tin nhắn có thể nhận nhiều phản ứng từ các người dùng khác nhau.

Hình 2.3.12: Mối quan hệ giữa message_reactions – messages, users

- post_reply_junction – posts, users

Một bài đăng có thể nhận nhiều reply, và mỗi reply cũng có thể được liên kết với nhiều bài đăng khác.

Hình 2.3.13: Mối quan hệ giữa post_reply_junction – posts, posts

Một bài đăng có thể bị nhiều người dùng báo cáo, và một người dùng có thể báo cáo nhiều bài đăng.

Hình 2.3.14: Mối quan hệ giữa post_reported – posts, users

- post_repost_junction – posts, users

Một người dùng có thể phản ứng với nhiều tin nhắn, và một tin nhắn có thể nhận nhiều phản ứng từ các người dùng khác nhau.

Hình 2.3.15: Mối quan hệ giữa user_role - users, role

- post_star_juncitons – posts, users

Một bài đăng có thể được tặng sao bởi nhiều người dùng, và một người dùng có thể tặng sao cho nhiều bài đăng.

Hình 2.3.16: Mối quan hệ giữa users – post

- post_views_junction – posts, users

Một bài đăng có thể được nhiều người dùng xem, và một người dùng có thể xem nhiều bài đăng.

Hình 2.3.17: Mối quan hệ giữa users – post

Mỗi bài đăng có thể được liên kết với một địa điểm cụ thể (phường, quận, tỉnh).

Hình 2.3.18: Mối quan hệ giữa posts – districts, provinces, wards

Mỗi thông báo có thể được gửi đến một người nhận (recipient_user_id), liên quan đến một hành động cụ thể (bài đăng, tin nhắn).

Hình 2.3.19: Mối quan hệ giữa notifications – users, messages, posts

Một người dùng có thể bị nhiều người báo cáo, và một người dùng cũng có thể báo cáo nhiều người khác.

Hình 2.3.19: Mối quan hệ giữa user_reported – users

Mỗi cuộc trò chuyện (conversations) có thể bao gồm nhiều tin nhắn, nhưng mỗi tin nhắn chỉ thuộc về một cuộc trò chuyện.

Hình 2.3.20: Mối quan hệ giữa messages - conversations

- post_likes_junction – posts, users

Một bài đăng (posts) có thể được nhiều người dùng thích, và một người dùng có thể thích nhiều bài đăng.

Hình 2.3.21: Mối quan hệ giữa post_likes_junction – posts, users

2.3.10.4 Chi tiết các thực thể

Tên cột Kiểu Ràng buộc Ghi chú role _id int PK, not null Id vai trò authority varchar(15) not null Tên quyền

Bảng 2.3.1 : Bảng chi tiết thực thể roles

- Tên cột Kiểu Ràng buộc Ghi chú role_id int PK, not null Id vai trò user_id int FK,not null Id người dùng

Bảng 2.3.2: Bảng chi tiết thực thể user_roles_junction

The article outlines the structure of a database table used for reporting, which includes the following columns: date_report (DATE, not null) for the report date, id (int, PK, not null) as the primary key, user_reported_id (int, not null) for the ID of the reported user, user_send_report_id (int, not null) for the ID of the user submitting the report, and content_report (varchar(225), not null) for the report's content.

Bảng 2.3.3: Bảng chi tiết thực thể user_reported

Tên cột Kiểu Ràng buộc Ghi chú conversation_id int PK, not null Id cuộc hội thoại user_id int not null Id người dùng

Bảng 2.3.4: Bảng chi tiết thực thể conversation_user_junction

The article outlines the structure of a user account database, detailing various attributes essential for user management Key columns include user_id as the primary key and not null, indicating the unique identifier for each user The enabled boolean specifies whether the account is locked, while private_account denotes if the account is private The date of birth (dob) is required, alongside a verified_account boolean to confirm account authenticity Additional fields include banner_picture and profile_picture for user images, organization_id for organizational affiliation, and verification status The bio field allows for a brief user description, complemented by mandatory email, first_name, last_name, nickname, password, phone, and username fields, ensuring comprehensive user profile creation and management.

Bảng 2.3.5: Bảng chi tiết thực thể users

Tên cột Kiểu Ràng buộc Ghi chú message_id int PK, not null Id tin nhắn user_id int not null Id người dùng

Bảng 2.3.6: Bảng chi tiết thực thể message_hidden_by

Tên cột Kiểu Ràng buộc Ghi chú message_id int PK, not null Id tin nhắn user_id int not null Id người dùng

Bảng 2.3.7: Bảng chi tiết thực thể message_seen_by

- conversations tên cột kiểu ràng buộc ghi chú conversation_id int PK, not null

Id cuộc hội thoại conversation_pictur e

Varchar(255) Not null Ảnh cuộc hội thoại conversation_name Varchar(50) Not null Tên cuộc hội thoại

Bảng 2.3.8: Bảng chi tiết thực thể conversations

The table structure includes the following columns: `message_reaction_id` as an integer and primary key, which cannot be null; `message_reaction_user`, also an integer that cannot be null, representing the ID of the user reacting; and `reaction`, a non-null varchar field with a maximum length of 50 characters, indicating the name of the reaction.

Bảng 2.3.9: Bảng chi tiết thực thể message_reactions

- message_reactions_junction tên cột kiểu ràng buộc ghi chú message_id int PK, not null

Id tin nhắn reaction_id int not null Id phản ứng

Bảng 2.3.10: Bảng chi tiết thực thể message_reactions_junction

The article outlines a database schema for a messaging system, detailing the structure of a conversation table Key columns include conversation_id as a non-null integer representing the conversation ID, message_id as a primary key and non-null integer for the message ID, and message_reply_to as a non-null integer indicating the reply message Additional fields include message_type as a non-null integer for the type of message, sent_by as a non-null integer for the sender's ID, and sent_at as a non-null timestamp for the sending time The schema also includes message_image as a non-null varchar(255) for the message image and message_text as a non-null varchar(255) for the message content.

Bảng 2.3.11: Bảng chi tiết thực thể messages

Tên cột Kiểu Ràng buộc Ghi chú follower_id int PK, not null Id người theo dõi user_id int FK, not null Id người dùng

Bảng 2.3.12: Bảng chi tiết thực thể followers

- Conversations tên cột kiểu ràng buộc ghi chú conversation_id int PK, not null

Id cuộc hội thoại conversation_picture Varchar(255) Not null Ảnh cuộc hội thoại conversation_name Varchar(50) Not null Tên cuộc hội thoại

Bảng 2.3.13: Bảng chi tiết thực thể conversations

The post_reported table includes several key columns: an integer primary key (id) that cannot be null, the date of the report (date_report) which is also not null, an integer for the reported post's ID (post_reported_id) that must be provided, an integer for the reporting user's ID (user_send_report_id) that is mandatory, and a non-null varchar field (content_report) to capture the content of the report.

Bảng 2.3.14: Bảng chi tiết thực thể post_reported

Tên cột Kiểu Ràng buộc Ghi chú post_id int PK, not null id bài đăng user_id int FK, not null id người đăng

Bảng 2.3.15: Bảng chi tiết thực thể post_repost_junction

Tên cột Kiểu Ràng buộc Ghi chú post_id int PK, not null id bài đăng user_id int FK, not null id người đăng

Bảng 2.3.17: Bảng chi tiết thực thể post_views_juction

Tên cột Kiểu Ràng buộc Ghi chú post_id int PK, not null id bài đăng được đánh sao user_id int FK, not null id người đăng

Bảng 2.3.18: Bảng chi tiết thực thể post_star_junction

Tên cột Kiểu Ràng buộc Ghi chú post_id int PK, not null id bài đăng được thích user_id int FK, not null id người đăng

Bảng 2.3.19: Bảng chi tiết thực thể post_likes_junction

The table structure includes the following columns: post_id as an integer that cannot be null, serving as the ID for the post; image_id as a primary key integer that also cannot be null, representing the ID for the image; image_name as a non-null varchar(100) for the name of the image; image_path as a non-null varchar(255) for the path to the image; image_type as a non-null varchar(20) indicating the type of image; and image_url as a non-null varchar(255) providing the URL for the image.

Bảng 2.3.20: Bảng chi tiết thực thể images

The table structure includes the following columns: "acknowledged" as a boolean that cannot be null, indicating whether the notification has been acknowledged; "action_user_id" as a non-null integer representing the ID of the user who performed the action; "notification_id" as a primary key and non-null integer for the notification ID; "notification_type" as a non-null integer specifying the type of notification; "post_id" as a non-null integer for the post ID; "recipient_user_id" as a non-null integer for the recipient's user ID; "reply_id" as a non-null integer for the reply notification ID; and "timestamp" as a non-null timestamp indicating the creation date of the notification.

Bảng 2.3.21: Bảng chi tiết thực thể notifications

CÀI ĐẶT

Giao diện Landing

Khi truy cập vào trang web, người dùng sẽ thấy trang đăng nhập đầu tiên, nơi cung cấp tùy chọn đăng ký và hai phương thức đăng nhập: thông qua tài khoản hệ thống hoặc tài khoản Google.

Khi người dùng lần đầu đăng nhập bằng Google mà chưa có tài khoản, hệ thống sẽ tự động tạo tài khoản mới với mật khẩu là một chuỗi ngẫu nhiên.

Mô tả Giúp người dùng đăng nhập vào hệ thống

Cách truy cập Đăng nhập

TextField Ô nhập email, phone hoặc username

Mật khẩu TextField Ô nhập mật khẩu Đăng nhập Button Nút nhấn đăng nhập Đăng nhập với

Button Nút nhấn để đăng nhập bằng Google

Tên hành động Mô tả Thành công Thất bại Đăng nhập Người dùng nhấn nút đăng nhập

Chuyển hướng đến trang chủ

Thông báo lỗi và hiển thị lỗi. Đăng nhập với

Người dùng nhấn nút đăng nhập với Google

Chuyển hướng đến trang chủ

Thông báo lỗi và hiển thị lỗi.

Bảng 3.1.1: Đặc tả chi tiết màn hình đăng nhập Đặc tả chi tiết màn hình đăng ký:

Mô tả Giúp người dùng đăng ký tài khoản

Cách truy cập Đăng ký

Nội dung các màn hình

Họ, Tên TextField Ô nhập họ tên người dùng email TextField Ô nhập email

Số điện thoại TextFiled Nhập số điện thoại

TextFiled Nhập mã xác nhận được gửi về email đăng ký Thêm mật khẩu TextFiled Thêm mật khẩu

Tên hành động Mô tả Thành công Thất bại Đăng ký Người dùng nhấn nút đăng ký

Chuyển hướng đến trang chủ

Thông báo lỗi và hiển thị lỗi.

Bảng 3.1.1: Đặc tả chi tiết màn hình đăng ký

Giao diện Người dùng (User)

Hình 3.2.1.1: Giao diện trang chủ Đặc tả chi tiết Menu:

Trang hiển thị các bài đăng chính của người dùng sau khi đăng nhập thành công, cho phép người dùng xem và tương tác với các bài đăng Người dùng cũng có thể cập nhật trạng thái và tìm hiểu thông tin về các tài khoản nổi bật.

Cách truy cập Người dùng truy cập sau khi đăng nhập thành công vào hệ thống

Trang chủ Button Hiển thị danh sách bài đăng từ người dùng khác

Khám phá Button Hiển thị các bài đăng phổ biến hoặc xu hướng mới

Thông báo Button Hiển thị thông báo về hoạt động liên quan đến người dùng

Tin nhắn Button Chuyển đến trang nhắn tin với người dùng khác.

Hồ sơ Button Hiển thị hồ sơ cá nhân của người dùng

More Icon button Hiển thị các chức năng khác (tùy chọn)

Post Button Hiển phép người dùng đăng bài viết mới

Danh sách Hiển thị các người dùng có bài đăng nổi bật (Top 5 Users) Khu vực tin nhắn

Section Hiển thị danh sách tin nhắn hoặc thông báo tin nhắn mới

Bài đăng của người dùng

Post Section Hiển thị nội dung bài đăng (hình ảnh, mô tả, tương tác)

Tên hành động Mô tả Thành công Thất bại

Người dùng nhấn nút "Khám phá".

Chuyển hướng đến trang Khám phá.

Hiển thị thông báo lỗi chuyển trang.

Người dùng nhấn nút "Thông báo".

Chuyển hướng đến trang Thông báo.

Hiển thị thông báo lỗi chuyển trang.

Người dùng nhấn nút "Tin nhắn".

Chuyển hướng đến trang Tin nhắn.

Hiển thị thông báo lỗi chuyển trang.

Người dùng nhấn nút "Hồ sơ".

Chuyển hướng đến trang Hồ sơ cá nhân.

Hiển thị thông báo lỗi chuyển trang. Đăng bài viết mới

Người dùng nhấn nút "Post" và nhập nội dung.

Bài viết hiển thị trên trang chính.

Thông báo lỗi đăng bài viết.

Người dùng xem danh sách "Top 5 Users".

Hiển thị danh sách người dùng nổi bật.

Không hiển thị danh sách.

Tương tác bài đăng (Like)

Người dùng nhấn vào biểu tượng like trên bài.

Cập nhật số lượt thích thành công.

Hiển thị thông báo lỗi tương tác.

Xem tin nhắn Người dùng vào phần

Hiển thị danh sách tin nhắn mới

Người dùng nhấn nút "Khám phá".

Chuyển hướng đến trang Khám phá.

Hiển thị thông báo lỗi chuyển trang.

Hình 3.2.2: Giao diện Đăng bài Đặc tả chi tiết màn hình Thông tin cá nhân:

Màn hình Thông tin giao diện đăng bài

Giao diện này cho phép người dùng tạo bài đăng mới để chia sẻ đồ dùng không còn sử dụng hoặc thông tin khác Nó bao gồm các phần như văn bản mô tả, hình ảnh đính kèm và các nút chức năng hỗ trợ.

Cách truy cập Người dùng nhấn vào nút Post trên thanh menu hoặc ở trang chủ

Textarea Cho phép người dùng nhập nội dung bài đăng (tối đa 280 ký tự)

Upload area Người dùng có thể tải lên hình ảnh từ thiết bị Hiển thị xem trước ảnh

Biểu tượng gắn thẻ địa điểm

Icon/Button Cho phép người dùng gắn địa điểm vào bài viết

Biểu tượng schedule bài viết

Icon/Button Cho phép người dùng lên lịch đăng bài viết

Dropdown/Button Chọn đối tượng có thể xem bài viết

Tên hành động Mô tả Thành công Thất bại

Nhập nội dung bài viết

Người dùng nhập văn bản vào trường nhập liệu

Nội dung được cập nhật chính xác

Hiển thị thông báo lỗi nhập văn bản

Tải hình ảnh lên Người dùng tải lên hình ảnh từ thiết bị

Hiển thị ảnh xem trước thành công

Thông báo lỗi khi tải ảnh

Xóa hình ảnh Người dùng nhấn nút X trên ảnh Ảnh được xóa khỏi bài viết. Ảnh không được xóa thành công xem trước

Gắn thẻ địa điểm Người dùng chọn vị trí hiện tại hoặc nhập địa chỉ

Hiển thị địa điểm dưới bài viết

Thông báo lỗi khi gắn địa điểm

Lên lịch schedule bài viết

Người dùng chọn ngày lên lịch đăng bài viết

Lên lịch đăng bài viết thành công

Lỗi đăng bài viết Đăng bài viết Người dùng nhấn nút Post

Bài viết hiển thị trên trang chủ

Thông báo lỗi khi đăng bài viết.

3.2.3 Giao diện Reply bài đăng

Hình 3.2.3: Giao diện Reply bài đăng Đặc tả chi tiết màn hình Reply bài đăng:

Màn hình Đổi reply bài đăng

Giao diện này cho phép người dùng tương tác với bài đăng thông qua việc trả lời (reply) bài đăng Nó bao gồm các thành phần như văn bản, biểu tượng và nút chức năng, tạo điều kiện thuận lợi cho việc giao tiếp và phản hồi.

Cách truy cập Người dùng nhấn vào ô "Post your reply " hoặc icon bên dưới bài đăng

Textarea Cho phép người dùng nhập nội dung reply (tối đa 280 ký tự)

Icon/Button Cho phép người dùng chọn biểu tượng cảm xúc để đính kèm vào reply

Biểu tượng đính kèm file

Icon/Button Cho phép người dùng đính kèm file

(ảnh, văn bản, v.v.) vào reply

Biểu tượng thêm nội dung

Icon/Button Cho phép người dùng thêm nội dung như hashtag, địa điểm, v.v vào reply Nút Reply Button Gửi reply và hiển thị trên bài đăng

Tên hành động Mô tả Thành công Thất bại

Người dùng nhập văn bản vào

Nội dung được cập nhật chính

Nội dung được cập nhật chính trường nhập liệu xác xác. Đính kèm biểu tượng cảm xúc

Người dùng chọn biểu tượng cảm xúng

Biểu tượng được hiển thị cùng reply.

Thông báo lỗi khi đính kèm biểu tượng Đính kèm file Người dùng tải lên file (ảnh, văn bản, v.v.)

File được đính kèm thành công

Thông báo lỗi khi đính kèm file.

Thêm nội dung bổ sung

Người dùng chọn thêm nội dung như hashtag, địa điểm

Nội dung bổ sung được hiển thị.

Thông báo lỗi khi thêm nội dung bổ sung

Gửi reply Người dùng nhấn nút "Reply"

Reply được hiển thị dưới bài đăng.

Thông báo lỗi khi gửi reply

Bảng 3.2.3: Đặc tả chi tiết màn hình Reply

Hình 3.2.2.1: Giao diện trang thông báo Đặc tả chi tiết màn hình Thông báo:

Màn hình Giao diện trang thông báo

Mô tả Đây là giao diện hiển thị các thông báo liên quan đến hoạt động của người dùng trên hệ thống

Cách truy cập Người dùng có thể truy cập vào giao diện thông báo từ menu chính của ứng dụng.

Tất cả các thông báo liên quan đến người dùng sẽ được hiển thị, bao gồm cả những thông báo khi người dùng được đề cập Mỗi mục thông báo sẽ cung cấp thông tin cụ thể về nội dung liên quan.

 Biểu tượng hoặc ảnh đại diện của người tạo thông báo.

 Liên kết đến nội dung liên quan (ví dụ: bài đăng).

Tên hành động Mô tả

Người dùng có thể nhấp vào thông báo để xem chi tiết và dễ dàng đánh dấu các thông báo là đã đọc.

Bảng 3.2.2.1: Đặc tả chi tiết màn hình thông báo

Hình 3.2.5: Giao diện nhắn tin Đặc tả chi tiết màn hình nhắn tin:

Màn hình Giao diện trang nhắn tin

Mô tả Đây là giao diện cho phép người dùng tạo và trao đổi tin nhắn với người khác trên ứng dụng.

Giao diện bao gồm các thành phần như trường nhập văn bản, biểu tượng, nút gửi tin nhắn

Cách truy cập Click vào Message section để nhắn tin

Textarea Cho phép người dùng nhập nội dung tin nhắn (tối đa 280 ký tự)

Biểu tượng đính kèm file

Icon/Button Cho phép người dùng đính kèm hình ảnh, video, file vào tin nhắn

Icon/Button Cho phép người dùng chọn biểu tượng cảm xúc để đính kèm vào tin nhắn

Icon/Button Button Nút để người dùng gửi tin nhắn đã soạn thảo

Tên hành động Mô tả

Nhập nội dung tin nhắn

Người dùng có khả năng nhập văn bản trực tiếp vào trường soạn thảo và cũng có thể tải lên, đính kèm các tệp tin như ảnh và video vào tin nhắn.

Chọn biểu tượng cảm xúc

Người dùng có thể chọn biểu tượng cảm xúc để thể hiện cảm xúc của mình

Gửi tin nhắn Người dùng nhấn nút gửi để gửi tin nhắn đã soạn thảo

Bảng 3.2.5: Đặc tả chi tiết màn hình nhắn tin

3.2.6 Giao diện Giao diện tìm kiếm

Hình 3.2.2.2: Giao diện tìm kiếm Đặc tả chi tiết màn hình Tìm kiếm:

Màn hình Giao diện tìm kiếm

Giao diện này cho phép người dùng dễ dàng tìm kiếm nội dung, tài khoản hoặc thông tin trên ứng dụng Nó bao gồm trường nhập liệu, kết quả tìm kiếm và các nút chức năng hỗ trợ người dùng trong quá trình tìm kiếm.

Cách truy cập Click vào Thanh tim kiếm

Trường nhập liệu Textarea Cho phép người dùng nhập từ khóa cần tìm kiếm.

Nút tìm kiếm Icon/Button Nút để khởi động quá trình tìm kiếm. Nút close Icon/Button Nút để đóng giao diện tìm kiếm.

Kết quả tìm kiếm Hiển thị danh sách các tài khoản, nội dung liên quan đến từ khóa tìm kiếm.

Tên hành động Mô tả

Nhập từ khóa tìm kiếm

Người dùng có thể nhập từ khóa cần tìm kiếm vào trường nhập liệu.

Người dùng nhấn nút tìm kiếm để bắt đầu quá trình tìm kiếm Đóng giao diện tìm kiếm

Người dùng nhấn nút đóng để thoát khỏi giao diện tìm kiếm.

Truy cập trang cá nhân

Người dùng có thể nhấp vào tên tài khoản để truy cập trực tiếp vào trang cá nhân của họ

Bảng 3.2.6: Đặc tả chi tiết Giao diện tìm kiếm

3.2.7 Giao diện Giao diện trang cá nhân

Hình 3.2.7: Giao diện trang cá nhân Đặc tả chi tiết màn hình trang cá nhân

Màn hình Giao diện trang cá nhân

Mô tả Đây là giao diện trang cá nhân chứa thông tin của người dùng

Cách truy cập Click vào hồ sơ, avartar user hoặc tìm trên thanh tìm kiếm

Mục Kiểu Mô tả Ảnh đại diện image Ảnh đại diện của người dùng

Tên hiển thị Text Tên công khai của người dùng

Tên đăng nhập Text Tên tài khoản của người dùng

Text Thời gian người dùng đã tham gia vào ứng dụng

Số lượng người theo dõi

Text Số lượng người đang theo dõi tài khoản của người dùng

Số lượng người đang theo dõi

Text Số lượng tài khoản mà người dùng đang theo dõi

Nút chỉnh sửa hồ sơ

Button Nút cho phép người dùng chỉnh sửa thông tin cá nhân

Feed Hiển thị các bài đăng của người dùng

Feed Hiển thị các phản hồi của người dùng

Danh sách chia sẻ lại

Feed Hiển thị các bài đăng được người dùng chia sẻ lại

Feed Hiển thị các hình ảnh, video v.v mà người dùng đã chia sẻ

Tên hành động Mô tả

Xem thông tin cá nhân

Người dùng có thể xem và kiểm tra thông tin cá nhân của mình

Chỉnh sửa hồ sơ Người dùng có thể chỉnh sửa các thông tin cá nhân như ảnh đại diện, tên hiển thị, v.v.

Xem bài đăng, phản hồi và chia sẻ lại

Người dùng có thể xem lại các hoạt động của mình trên ứng dụng

Bảng 3.2.7: Đặc tả chi tiết Giao diện trang cá nhân

Một vài chức năng nổi bật

Sử dụng JWT (Json Web Token) trong xác thực người dùng giúp bảo vệ các yêu cầu khỏi sự khai thác của bên thứ ba Mỗi token có thời hạn riêng và được xác thực bằng khóa bảo mật chỉ có trên server, điều này làm cho việc làm giả và mạo danh người dùng trở nên khó khăn.

-Người dùng muốn truy cập vào hệ thống cần phải đăng nhập để nhận token và phải gửi token của mình kèm theo các request tiếp theo.

-Kết hợp Spring Security giúp lọc các request không hợp lệ, tránh việc người dùng xấu có thể truy cập vào bộ cơ sở dữ liệu.

3.3.2 Ngăn chặn spam request tới server

Để hạn chế spam request, hệ thống sử dụng cơ chế cache cho phép mỗi địa chỉ IP thực hiện tối đa 20 yêu cầu mỗi giây Nếu một IP vượt quá giới hạn này (21 yêu cầu/giây), nó sẽ bị khóa trong 10 phút, ngăn chặn các cuộc tấn công từ những người dùng xấu nhằm bảo vệ website.

Sử dụng thuật toán chia sẻ khóa Diffie-Hellman kết hợp với mã hóa AES trong an toàn thông tin giúp tạo ra PublicKey, PrivateKey và SecretKey cho mỗi người dùng, từ đó đảm bảo việc chia sẻ khóa an toàn trên môi trường Internet.

Mỗi người dùng chỉ có quyền truy cập vào tin nhắn của mình với người khác, đảm bảo tính bảo mật tối đa vì không ai có thể xem nội dung ngoại trừ họ Điều này làm cho các cuộc tấn công trở nên vô nghĩa, vì mỗi tin nhắn đều được bảo vệ bằng một SecretKey riêng biệt.

- Người khác sẽ không thể biết được SecretKey của cuộc hội thoại vì PrivateKey là thông tin bảo mật của mỗi người dùng

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Qua quá trình thực hiện khóa luận này, em đã:

- Nắm vững các kiến thức cơ bản về Spring Boot, React.js,

Xây dựng website HearShare là một giải pháp hiệu quả giúp người dùng chia sẻ và tặng lại những đồ dùng không còn sử dụng Mục tiêu của hệ thống này là hạn chế tình trạng mua sắm bốc đồng trong giới trẻ, khuyến khích việc tái sử dụng và bảo vệ môi trường.

- Rèn luyện thêm khả năng phân tích, thiết kế và phát triển hệ thống phần mềm có tính thực tế và đáp ứng nhu cầu của người dùng.

- Tích lũy thêm kinh nghiệm trong việc kết hợp công nghệ backend và frontend để xây dựng một hệ thống hoàn chỉnh.

- Biết cách sử dụng và áp dụng các thư viện, công cụ mới phù hợp để nâng cao hiệu suất và trải nghiệm người dùng.

Vấn đề hạn chế của khóa luận:

- Hệ thống còn thiếu một số chức năng quan trọng như phía giao diện dành cho Admin.

- Chưa có chức năng tự động gợi ý các bài viết dựa trên vị trí của người dùng

- Giao diện vẫn cần được tối ưu hóa để thân thiện và mượt mà hơn cho người dùng.

- Hệ thống chưa có tính năng phân loại thông minh để gợi ý các đồ dùng phù hợp cho từng người dùng.

- Chưa có cơ chế xác thực và đánh giá uy tín giữa người tặng và người nhận đồ dùng.

Hướng phát triển trong tương lai:

Sau khi xây dựng thành công website HearShare trong khuôn khổ khóa luận, tôi hy vọng có thể nâng cấp và hoàn thiện hệ thống để đáp ứng tốt hơn nhu cầu người dùng trong việc chia sẻ và tặng đồ.

- Tích hợp thêm các tính năng như:

• Hệ thống chat video call trực tiếp giữa người dùng.

• Phân loại và gợi ý thông minh dựa trên sở thích và lịch sử tìm kiếm của người dùng.

• Cơ chế xác thực và đánh giá người dùng để nâng cao độ tin cậy và an toàn của hệ thống.

• Tích hợp Map vào hệ thống để tự động đề xuất các bài viết dựa trên vị trí của người dùng.

- Cải thiện giao diện người dùng bằng cách áp dụng thiết kế hiện đại và nâng cao trải nghiệm tương tác.

- Cải thiện hệ thống để tăng performance bằng cách tối ưu các câu query, tôi ưu code ở Backend.

- Tích hợp hệ thống với các nền tảng mạng xã hội như Facebook, Twitter để mở rộng khả năng chia sẻ thông tin và kết nối cộng đồng.

- Tiến hành kiểm nghiệm thực tế và thu thập ý kiến phản hồi từ người dùng để tiếp tục hoàn thiện và triển khai hệ thống.

Ngày đăng: 23/12/2024, 15:14

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w