1. Trang chủ
  2. » Công Nghệ Thông Tin

Web mang xa hoi

70 3 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 đề Xây dựng Web mạng xã hội
Tác giả Lê Thu Khương, Nguyễn Thúy Kiều, Bùi Thị Mỹ Linh
Người hướng dẫn GV Trần Văn Định
Trường học Trường Đại học Tài nguyên và Môi trường TP. Hồ Chí Minh
Chuyên ngành Khoa Công nghệ Thông tin
Thể loại Báo cáo môn học
Năm xuất bản 2025
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 70
Dung lượng 7,2 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trang 1

BỘ TÀI NGUYÊN VÀ MÔI TRƯỜNG

TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG

TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN

PHẦN MỀM PHÁT TRIỂN MÃ NGUỒN MỞ

Lớp: 11_ĐH_CNTT4 BÁO CÁO MÔN HỌC XÂY DỰNG WEB MẠNG XÃ HỘI Nhóm sinh viên thực hiện:

GV hướng dẫn: Trần Văn Định

TP Hồ Chí Minh, 26 tháng 3 năm 2025

Trang 2

BỘ TÀI NGUYÊN VÀ MÔI TRƯỜNG

TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG

TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN

PHẦN MỀM PHÁT TRIỂN MÃ NGUỒN MỞ

Lớp: 11_ĐH_CNTT4

BÁO CÁO MÔN HỌC XÂY DỰNG WEB MẠNG XÃ HỘI

Nhóm sinh viên thực hiện:

GV hướng dẫn: Trần Văn Định

TP Hồ Chí Minh, 26 tháng 3 năm 2025

Trang 3

MỤC LỤC

MỤC LỤC HÌNH 6

MỤC LỤC BẢNG 8

LỜI MỞ ĐẦU 9

LỜI CAM ĐOAN 10

MỞ ĐẦU 11

Tên đề tài 11

Lý do chọn đề tài 11

Mục tiêu của đề tài 11

Đối tượng và phạm vi đề tài 11

Lịch sử nghiên cứu đề tài 12

Đóng góp của đề tài 12

Bố cục đề tài 13

CHƯƠNG 1: TỔNG QUAN VỀ LÝ THUYẾT 14

1.1 Phần mềm mã nguồn mở là gì? 14

1.2 Tại sao nên dùng phần mềm mã nguồn mở? 14

1.3 Phần mềm mã nguồn mở hỗ trợ những lĩnh vực nào? 15

1.4 Những đóng góp của phần mềm mã nguồn mở 17

1.5 Xu hướng hiện nay của phần mềm mã nguồn mở 17

1.6 Nguồn thu nhập của Phần mễm mã nguồn mở 18

CHƯƠNG 2: ĐẶC TẢ DỰ ÁN 20

2.1 Tổng quan về dự án: 20

2.2 Yêu cầu chức năng dự án 20

2.2.1 Đăng ký 22

2.2.2 Đăng nhập 24

2.2.3 Trang cá nhân 26

2.2.4 Bài viết 27

2.2.5 Story 28

2.2.6 Theo dõi (follow) 29

2.2.7 Tương tác (like, bình luận, chia sẻ) 30

Trang 4

2.3 Các trang giao diện: 31

CHƯƠNG 3: THIẾT KẾ DỰ ÁN 32

3.1 Thiết kế dữ liệu 32

3.1.1 Người dùng 32

3.1.2 Bài viết 32

3.1.3 Bình luận 32

3.1.4 Story 33

3.1.5 Like 33

3.1.6 Theo dõi (Folllow) 33

3.1.7 Quan hệ giữa các database: 33

3.2 Thiết kế chức năng và giao diện các trang 34

3.2.1 Trang Đăng ký 34

3.2.2 Trang Đăng nhập 35

3.2.4 Trang chủ 36

3.2.5 Trang cá nhân 37

3.2.7 Trang chi tiết bài viết 38

CHƯƠNG 4: CÀI ĐẶT DỰ ÁN 39

4.1 Giới thiệu các công nghệ được sử dụng trong phần mềm 39

4.2 Kiến trúc của phần mềm 39

4.2.1 Frontend (React + Tailwind) 39

4.2.2 Backend (Node.js + Express) 40

CHƯƠNG 5: KẾT QUẢ DỰ ÁN ĐẠT ĐƯỢC 41

5.1 Các yêu cầu chức năng đã đạt được 41

5.2 Giao diện hoàn thành 42

5.2.1 Đăng kí 42

5.2.2 Đăng nhập 43

5.2.3 Quên mật khẩu 45

5.2.4 Trang chủ 47

5.2.5 Bài viết mới 48

5.2.6 Thích và bình luận bài viết 50

Trang 5

5.2.7 Xóa bài viết 52

5.2.8 Story mới 52

5.2.9 TÌm kiếm bạn bè 54

5.2.10 Follower/ Following 55

5.2.11 Đăng xuất 56

5.2.12 Trang cá nhân 56

CHƯƠNG 6: KẾT LUẬN 59

Trang 6

MỤC LỤC HÌNH

Hình 1 Sơ đồ Class 21

Hình 2 Use Case Đăng Ký 23

Hình 3 Use Case Đăng Nhập 25

Hình 4 Use Case Trang Cá Nhân 27

Hình 5 Use Case Bài Viết 29

Hình 6 Use Case Story 30

Hình 7 Use Case Theo Dõi (Follow) 31

Hình 8 Use Case Tương Tác 32

Hình 9 Thiết kế giao diện Đăng ký 37

Hình 10 Thiết kế giao diện Đăng nhập 38

Hình 11 Thiết kế giao diện Trang chủ 39

Hình 12 Thiết kế giao diện Trang cá nhân 40

Hình 13 Thiết kế giao diện Chi tiết bài viết 41

Hình 14 Các công nghệ sử dụng trong dự án 42

Hình 15 Giao diện trang đăng ký tạo tài khoản mới 45

Hình 16 Xác thực tài khoản 46

Hình 17 Nhập mã xác thực 47

Hình 18 Giao diện trang đăng nhập 48

Hình 19 Giao diện nhập sai email hoặc mật khẩu khi đăng nhập 49

Hình 20 Giao diện trang quên mật khẩu 50

Hình 21 Giao diện trang nhập mã xác thực 50

Hình 22 Giao diện trang đổi mật khẩu 51

Hình 23 Giao diện trang chủ 52

Hình 24 Giao diện trang tạo bài viết mới 53

Hình 25 Giao diện đăng bài viết mới thành công 54

Hình 26 Giao diện sau khi like và bình luận 55

Hình 27 Giao diện sau khi xóa đi bành luận 56

Hình 28 Giao diện thao tác xóa bài viết 57

Hình 29 Giao diện tạo Story mới 58

Hình 30 Giao diện Trang Story sau khi đăng thành công Story mới 58

Hình 31 Giao diện xem chi tiết hình ảnh Story 59

Hình 32 Giao diện tìm kiếm bạn bè 60

Hình 33 Giao diện khung tìm kiếm từ khóa 60

Hình 34 Giao diện xem trang cá nhân của bạn bè được tìm kiếm 61

Hình 35 Giao diện thực hiện follow 62

Hình 36 Giao diện hiển thị Follower và Following ở trang chủ 62

Hình 37 Giao diện thao tác Đăng xuất 63

Hình 38 Giao diện trang cá nhân 63

Trang 7

Hình 39 Giao diện chỉnh sửa Trang cá nhânEm sẽ tải lên 2 ảnh bất kì: 64 Hình 40 Giao diện sau khi chỉnh sửa Trang cá nhân 64 Hình 41 Giao diện Trang cá nhân người dùng và bài viết 66

Trang 8

MỤC LỤC BẢNG

Bảng 1 Mô tả Đăng Ký 23

Bảng 2 Mô tả Đăng nhập 25

Bảng 3 Mô tả Trang cá nhân 26

Bảng 4 Mô tả Bài viết 28

Bảng 5 Mô tả Story 29

Bảng 6 Mô tả Theo dõi (Follow) 30

Bảng 7 Mô tả Thích 31

Bảng 8 Mô tả Bình luận 32

Bảng 9 Bảng Người dùng 33

Bảng 10 Bảng Bài viết 33

Bảng 11 Bảng Bình luận 34

Bảng 12 Bảng Story 34

Bảng 13 Bảng Like 34

Bảng 14 Bảng Theo dõi 34

Bảng 15 Mối quan hệ giữa các Table 35

Trang 9

LỜI MỞ ĐẦU

Lời đầu tiên, chúng em xin gửi lời cảm ơn chân thành đến Trường Đại học Tàinguyên và Môi trường TP.HCM, khoa Công nghệ Thông tin cùng quý thầy cô đã tạo điềukiện cho chúng em có một môi trường học tập hiện đại, sáng tạo và đầy cảm hứng Đặc biệt,

chúng em xin bày tỏ lòng biết ơn sâu sắc đến thầy Trần Văn Định – giảng viên phụ trách môn “Phần mềm mã nguồn mở” – người đã tận tình giảng dạy, hướng dẫn và hỗ trợ chúng

em trong suốt quá trình học tập và thực hiện đồ án này

Thông qua sự định hướng và giảng dạy của thầy, chúng em đã có cơ hội tiếp cận sâuhơn với các khái niệm, đặc điểm và tiềm năng của phần mềm mã nguồn mở – một xu hướng

quan trọng trong phát triển phần mềm hiện đại Đặc biệt, với đề tài “Xây dựng web mạng

xã hội”, chúng em đã vận dụng hiệu quả các công nghệ mã nguồn mở như Node.js, Express.js, ReactJS, PostgreSQL cùng các thư viện cộng đồng để thiết kế và triển khai hệ

thống web hoàn chỉnh Đề tài không chỉ giúp chúng em hiểu rõ cách xây dựng ứng dụngweb từ frontend đến backend mà còn nâng cao kỹ năng xử lý dữ liệu, thiết kế cơ sở dữ liệu

và quản lý các chức năng tương tác trong mạng xã hội

Việc áp dụng phần mềm mã nguồn mở vào quá trình phát triển dự án đã giúp chúng

em nhận thức rõ hơn về tính linh hoạt, khả năng tùy biến và tính cộng đồng mạnh mẽ của

mô hình này – từ đó hình thành tư duy phát triển phần mềm theo hướng mở, bền vững và tiếtkiệm chi phí

Chúng em chân thành cảm ơn thầy đã luôn hỗ trợ, hướng dẫn tận tình và dành thờigian theo dõi, góp ý để chúng em hoàn thiện đồ án một cách tốt nhất Những kinh nghiệmquý báu từ môn học này sẽ là hành trang vững chắc giúp chúng em phát triển bản thân tronglĩnh vực công nghệ thông tin

Cuối cùng, chúng em xin kính chúc thầy luôn mạnh khỏe, hạnh phúc và gặt hái nhiềuthành công trong sự nghiệp giảng dạy và nghiên cứu

Trân trọng.

Trang 10

LỜI CAM ĐOANChúng em xin cam đoan rằng đồ án môn học “Phần mềm mã nguồn mở” với đề tài

“Xây dựng web về mạng xã hội” là kết quả của quá trình học tập, nghiên cứu và thực hiện nghiêm túc của chính bản thân chúng em, dưới sự hướng dẫn tận tình của thầy Trần Văn Định Toàn bộ nội dung trong đồ án được xây dựng dựa trên kiến thức đã tiếp thu trong quá

trình học tập và từ quá trình tìm hiểu, thực hành thực tế

Chúng em hoàn toàn ý thức được rằng lời cam đoan này là cơ sở để đảm bảo tính trung thực và minh bạch trong học thuật Chúng em xin chịu hoàn toàn trách nhiệm

trước mọi hành vi vi phạm liên quan đến đạo đức và tính trung thực học thuật, nếu có

Chúng em xin chân thành cảm ơn thầy Trần Văn Định đã tận tâm hướng dẫn, hỗ trợ

và đồng hành cùng chúng em trong suốt quá trình thực hiện đề tài Chúng em kính chúc thầyluôn mạnh khỏe, hạnh phúc và tiếp tục thành công trong sự nghiệp giảng dạy và nghiên cứu

Trân trọng.

Trang 11

MỞ ĐẦUTên đề tài

“Xây dựng web mạng xã hội”.

Lý do chọn đề tài

Trong thời đại công nghệ số, mạng xã hội đã trở thành một phần không thể thiếutrong đời sống hàng ngày, đặc biệt là đối với giới trẻ Không chỉ đơn thuần là công cụ giảitrí, mạng xã hội còn đóng vai trò quan trọng trong việc học hỏi, kết nối và chia sẻ thông tin.Các nền tảng phổ biến như Facebook, Instagram, TikTok, Twitter, đã cho thấy khả nănglan truyền thông tin nhanh chóng và rộng rãi trên toàn cầu Nhờ đó, người dùng – đặc biệt làgiới trẻ – có thể dễ dàng tiếp cận những sự kiện thời sự, xu hướng mới và kiến thức thuộc

nhiều lĩnh vực khác nhau Từ thực tiễn đó, em lựa chọn đề tài xây dựng một trang web mạng xã hội nhằm tìm hiểu, thiết kế và phát triển một nền tảng giúp người dùng kết nối,

chia sẻ nội dung với tất cả mọi người xung quanh

Mục tiêu của đề tài

Nghiên cứu vai trò và ứng dụng của phần mềm mã nguồn mở trong lĩnh vực pháttriển web hiện nay, đặc biệt trong việc xây dựng các nền tảng mạng xã hội

Tìm hiểu và lựa chọn công nghệ phù hợp (ngôn ngữ lập trình, framework, cơ sở dữliệu, ) để thiết kế và triển khai một trang web mạng xã hội

Tiến hành xây dựng và chạy thử nghiệm trang web; phát hiện, phân tích và khắcphục các lỗi phát sinh trong quá trình vận hành

Hoàn thiện sản phẩm theo mục tiêu đề ra, đảm bảo trang web hoạt động ổn định, cótính năng cơ bản của một mạng xã hội và có thể mở rộng trong tương lai

Đối tượng và phạm vi đề tài

Đề tài hướng đến việc xây dựng một nền tảng mạng xã hội đơn giản với các tínhnăng cơ bản như: đăng ký, đăng nhập, đăng bài viết, kết bạn, theo dõi người dùng khác,tương tác (like, comment), hiển thị dòng thời gian

Trang 12

Phạm vi đề tài tập trung vào phát triển phiên bản web (desktop) sử dụng các côngnghệ phổ biến hiện nay như Node.js, Express, PostgreSQL, ReactJS, và triển khai backendvới REST API.

Đối tượng sử dụng chính là người dùng phổ thông, đặc biệt là giới trẻ có nhu cầugiao tiếp, kết nối và chia sẻ nội dung thông tin trên không gian mạng

Lịch sử nghiên cứu đề tài

Mạng xã hội đã được phát triển và hoàn thiện qua nhiều thế hệ Các nền tảngnhư Facebook (ra đời năm 2004), Twitter, Instagram, hay gần đây là TikTok đã trở thànhnhững ông lớn trong lĩnh vực truyền thông số, đóng góp nhiều tính năng vượt trội như: kếtnối cộng đồng, livestream, nhóm cộng đồng, hệ thống gợi ý thông minh,

Tuy nhiên, song song với sự phát triển mạnh mẽ đó, cũng có nhiều nghiên cứuhướng tới xây dựng các mạng xã hội mới với quy mô nhỏ hơn, có tính riêng tư cao, phù hợpvới từng cộng đồng hoặc mục đích sử dụng cụ thể Các tài liệu mã nguồn mở (Open Source)như Mastodon hay Diaspora là ví dụ tiêu biểu cho xu hướng này

Từ những nền tảng đã có, đề tài của em kế thừa các đặc điểm cốt lõi, đồngthời tìm hiểu cách xây dựng mạng xã hội từ đầu với tư duy lập trình và kỹ năng triển khaithực tế

Đóng góp của đề tài

Đề tài không chỉ củng cố kiến thức về lập trình, cơ sở dữ liệu, bảo mật và thiết kếgiao diện mà còn đóng vai trò như một mô hình thu nhỏ của một nền tảng mạng xã hội thựctế

Trang web này có thể:

 Là tài liệu tham khảo và học tập hữu ích cho các bạn sinh viên đang tìm hiểu về lậptrình web

 Là cơ sở để phát triển thêm các tính năng nâng cao như nhắn tin trực tiếp, thông báoreal-time, livestream,

Trang 13

 Góp phần nâng cao kỹ năng sử dụng công nghệ mã nguồn mở trong quá trình học tập

Trang 14

CHƯƠNG 1: TỔNG QUAN VỀ LÝ THUYẾT1.1 Phần mềm mã nguồn mở là gì?

Phần mềm nguồn mở (Open Source Software - OSS) là loại phần mềm mà mã nguồncủa nó được công khai và có thể được sử dụng, sửa đổi, và phân phối bởi bất kỳ ai Điều này

có nghĩa là người dùng không chỉ có thể sử dụng phần mềm mà còn có thể xem, thay đổi, vàcải tiến mã nguồn của nó để phù hợp với nhu cầu của mình

Tổ chức Sáng kiến Nguồn mở (OSI - Open Source Initiative) định nghĩa rằng Phầnmềm mã nguồn mở là phần mềm thỏa mãn các tiêu chí cơ bản sau:

 Quyền chạy chương trình;

 Quyền xem mã nguồn, thay đổi nó để phù hợp với mục đích của mình;

 Quyền tái phân phối lại chương trình, mã nguồn;

 Quyền tái phân phối lại chương trình với những thay đổi của mình ( sau khi đã sửađổi);

 Không phân biệt quyền đối với tổ chức hay cá nhân;

 Trung lập với các sản phẩm nguồn mở;

 Trung lập với phạm vi, ngành nghề ứng dụng nguồn mở;

 Trung lập với sản phẩm mã nguồn mở;

 Trung lập với công nghệ;

 Phần mềm mã nguồn mở có thể có phí hoặc miễn phí

1.2 Tại sao nên dùng phần mềm mã nguồn mở?

Phần mềm mã nguồn mở đem lại các lợi ích sau:

 Phần mềm mã nguồn mở có tính tương tác cao, dễ dàng bản địa hóa, có độ tùy biến

và tính linh hoạt cao;

 Giảm tổng chi phí sở hữu;

 Tính an toàn và bảo mật cao;

 Giảm tình trạng vi phạm bản quyền;

Ưu điểm:

Trang 15

Tối ưu chi phí khởi tạo: Hầu hết các mã nguồn mở hiện nay đều được tải và sử dụngmiễn phí và bạn có thể tùy chỉnh lại bộ code theo ý muốn.

Dễ dàng quản trị: Những website sử dụng mã nguồn mở thường được đánh giá là khá

dễ dùng Đặc biệt ngay cả khi bạn không có nhiều kinh nghiệm về website cũng có thể thaotác một cách nhanh chóng chỉ sau vài lần tương tác

Tăng khả năng sáng tạo: Đối với mã nguồn mở bạn sẽ có nhiều cơ hội phát huy tínhsáng tạo của mình, phát triển phần mềm và website với nhiều chức năng tiên tiến và hiện đạihơn

Nhiều sự lựa chọn: Có một điều không thể phủ nhận là mã nguồn mở mang lại chongười dùng rất nhiều sự lựa chọn Bạn có thể tham khảo rất nhiều mã nguồn mở tùy thích vàlựa chọn khi bạn đã tìm ra “đối tượng” phù hợp

Tính ổn định: Mã nguồn mở có thể được sử dụng cho những dự án “dài hơi” nếu nhưnhững công ty, doanh nghiệp có đội ngũ lập trình viên giàu kinh nghiệm chuyên môn để vậnhành và quản lý

Nhược điểm:

Tối ưu chi phí khởi tạo: Hầu hết các mã nguồn mở hiện nay đều được tải và sử dụngmiễn phí và bạn có thể tùy chỉnh lại bộ code theo ý muốn

Dễ dàng quản trị: Những website sử dụng mã nguồn mở thường được đánh giá là khá

dễ dùng Đặc biệt ngay cả khi bạn không có nhiều kinh nghiệm về website cũng có thể thaotác một cách nhanh chóng chỉ sau vài lần tương tác

Tăng khả năng sáng tạo: Đối với mã nguồn mở bạn sẽ có nhiều cơ hội phát huy tínhsáng tạo của mình, phát triển phần mềm và website với nhiều chức năng tiên tiến và hiện đạihơn

Nhiều sự lựa chọn: Có một điều không thể phủ nhận là mã nguồn mở mang lại chongười dùng rất nhiều sự lựa chọn Bạn có thể tham khảo rất nhiều mã nguồn mở tùy thích vàlựa chọn khi bạn đã tìm ra “đối tượng” phù hợp

Tính ổn định: Mã nguồn mở có thể được sử dụng cho những dự án “dài hơi” nếu nhưnhững công ty, doanh nghiệp có đội ngũ lập trình viên giàu kinh nghiệm chuyên môn để vậnhành và quản lý

1.3 Phần mềm mã nguồn mở hỗ trợ những lĩnh vực nào?

Phần mềm mã nguồn mở được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau nhờtính linh hoạt, miễn phí và khả năng tùy chỉnh cao Trong lĩnh vực công nghệ thông tin,phần mềm mã nguồn mở đóng vai trò quan trọng trong hệ điều hành, cơ sở dữ liệu và các

Trang 16

công cụ phát triển phần mềm Nhiều hệ điều hành phổ biến như Linux, Ubuntu hay Androidđều được xây dựng dựa trên mã nguồn mở, giúp các lập trình viên có thể tùy chỉnh và pháttriển thêm tính năng theo nhu cầu của mình Bên cạnh đó, các hệ quản trị cơ sở dữ liệu nhưMySQL, PostgreSQL hay MongoDB cũng là những sản phẩm mã nguồn mở được sử dụngrộng rãi trong quản lý dữ liệu của doanh nghiệp.

Với sự phát triển không ngừng của công nghệ, phần mềm mã nguồn mở tiếp tục mởrộng ứng dụng trong nhiều lĩnh vực khác nhau, từ y tế, tài chính, đến truyền thông và giảitrí, góp phần thúc đẩy đổi mới sáng tạo và giảm chi phí sử dụng phần mềm cho các tổ chức

 Quản lý nội dung:

+ WordPress: Hệ thống quản lý nội dung mã nguồn mở, phổ biến cho việc tạo blog vàwebsite

+ Joomla: Một hệ thống quản lý nội dung khác, mạnh mẽ và linh hoạt

 Phần mềm phát triển:

+ Apache HTTP Server: Phần mềm máy chủ web mã nguồn mở, rất phổ biến trongviệc lưu trữ website

Trang 17

+ MySQL: Hệ quản trị cơ sở dữ liệu mã nguồn mở, được sử dụng rộng rãi trong cácứng dụng web.

1.4 Những đóng góp của phần mềm mã nguồn mở.

Phần mềm mã nguồn mở đã đóng góp rất nhiều cho ngành công nghệ phần mềm,không chỉ giúp giảm chi phí mà còn thúc đẩy sự đổi mới và hợp tác trong cộng đồng lậptrình viên trên toàn thế giới Một trong những đóng góp quan trọng nhất của mã nguồn mở

là cung cấp một nền tảng linh hoạt, minh bạch, giúp các lập trình viên dễ dàng tiếp cận, họchỏi và phát triển công nghệ mà không bị ràng buộc bởi các nhà cung cấp phần mềm độcquyền Nhờ vào mã nguồn mở, rất nhiều công cụ, thư viện và framework phổ biến đã ra đời,

hỗ trợ lập trình viên xây dựng các ứng dụng mạnh mẽ, hiệu quả và có tính tương thích caohơn

Nhìn chung, mã nguồn mở đã trở thành một yếu tố không thể thiếu trong ngành côngnghệ phần mềm, đóng góp vào sự phát triển của hạ tầng công nghệ, thúc đẩy đổi mới sángtạo, nâng cao bảo mật và tạo ra một môi trường làm việc cộng tác hiệu quả Sự phát triểnmạnh mẽ của mã nguồn mở không chỉ giúp các doanh nghiệp và lập trình viên có thêmnhiều cơ hội phát triển mà còn mang lại lợi ích lớn cho toàn bộ ngành công nghiệp phầnmềm

1.5 Xu hướng hiện nay của phần mềm mã nguồn mở.

Phần mềm mã nguồn mở (OSS) đang tiếp tục phát triển mạnh mẽ và định hình nhiều

xu hướng quan trọng trong ngành công nghệ thông tin Một trong những xu hướng nổi bật

là sự gia tăng ứng dụng OSS trong lĩnh vực trí tuệ nhân tạo (AI) Việc chia sẻ tài nguyên vàthông tin trong cộng đồng AI mã nguồn mở đã thúc đẩy sự hợp tác giữa các nhà phát triển,nhà nghiên cứu và tổ chức, tạo ra những giải pháp hiệu quả và sáng tạo hơn

Tại Việt Nam, việc sử dụng phần mềm mã nguồn mở đang trở thành xu hướng phổbiến, đặc biệt trong các doanh nghiệp khởi nghiệp và doanh nghiệp nhỏ Việc áp dụng OSSgiúp giảm chi phí bản quyền phần mềm và dễ dàng tùy chỉnh hệ thống theo nhu cầu riêng.Cộng đồng mã nguồn mở tại Việt Nam ngày càng phát triển với nhiều nhóm người dùng,

Trang 18

diễn đàn và các sự kiện như hội thảo, cuộc thi hackathon, thúc đẩy việc học hỏi và chia sẻkinh nghiệm về các công nghệ mã nguồn mở.

Ngoài ra, sự xuất hiện của các mô hình cấp phép mã nguồn có sẵn (source-available)đang tạo ra sự cân bằng giữa tính mở của OSS và nhu cầu bảo vệ lợi ích thương mại Môhình này cho phép các công ty duy trì quyền kiểm soát nhất định đối với phần mềm của họtrong khi vẫn khuyến khích sự hợp tác và đổi mới trong cộng đồng

Những xu hướng này cho thấy phần mềm mã nguồn mở không chỉ là nền tảng củaInternet mà còn là động lực thúc đẩy sự đổi mới trong ngành công nghệ thông tin, đáp ứngnhu cầu ngày càng cao về tính linh hoạt, hiệu quả chi phí và bảo mật

1.6 Nguồn thu nhập của Phần mễm mã nguồn mở.

Lập trình viên mã nguồn mở có thể kiếm thu nhập từ nhiều nguồn khác nhau mặc dùphần mềm họ phát triển thường miễn phí Một trong những cách phổ biến nhất là cung cấpdịch vụ hỗ trợ kỹ thuật, tư vấn và triển khai giải pháp dựa trên phần mềm mã nguồn mở chodoanh nghiệp Nhiều công ty sẵn sàng trả tiền để đảm bảo phần mềm hoạt động ổn định,được tối ưu hóa và bảo trì lâu dài

Ngoài ra, lập trình viên có thể kiếm tiền thông qua việc phát triển các tính năng caocấp hoặc gói mở rộng (plugin, module) cho phần mềm mã nguồn mở Mặc dù phần mềmgốc có thể miễn phí, nhưng các tính năng bổ sung hoặc phiên bản nâng cao có thể được bándưới dạng dịch vụ Mô hình "freemium" này rất phổ biến trong các dự án như WordPress,Red Hat hay MySQL

Bên cạnh đó, lập trình viên mã nguồn mở có thể nhận tài trợ từ cộng đồng hoặc các

tổ chức lớn thông qua các nền tảng như Patreon, Open Collective hoặc GitHub Sponsors.Những người dùng và doanh nghiệp muốn duy trì sự phát triển của phần mềm có thể đónggóp tài chính để hỗ trợ các nhà phát triển Ngoài ra, việc tham gia vào các dự án mã nguồn

mở cũng giúp lập trình viên xây dựng danh tiếng, từ đó dễ dàng nhận được các hợp đồnglàm việc tự do (freelance) hoặc cơ hội việc làm tại các công ty công nghệ lớn

Trang 19

CHƯƠNG 2: ĐẶC TẢ DỰ ÁN1.7 Tổng quan về dự án:

Dự án này là một nền tảng mạng xã hội tương tự như Facebook, nơingười dùng có thể đăng bài viết, bình luận, chia sẻ stories, theo dõingười khác và tương tác bằng lượt thích (likes) trên ảnh Website đượcxây dựng bằng React.js cho giao diện người dùng, Node.js + Express.jscho backend và PostgreSQL để lưu trữ dữ liệu

1.8 Yêu cầu chức năng dự án

Trang 20

Sơ đồ Class:

Hình 1 Sơ đồ Class

Trang 21

1.8.1 Đăng ký

a Mô tả chức năng đăng ký:

Chức năng đăng ký cho phép người dùng tạo tài khoản mới trong hệthống Quy trình đăng ký bao gồm:

 Người dùng nhập tên

 Người dùng nhập email (dùng để xác thực tài khoản)

 Người dùng nhập mật khẩu để bảo vệ tài khoản

 Người dùng nhập thông tin các nhân khác

b Đặc tả Use Case đăng ký:

Hình 2 Use Case Đăng Ký

Trang 22

Sau khi đăng ký thành công, người dùng có thể tiến hành đăng nhập.

Tên Use Case Đăng ký

Mô tả Cho phép người dùng tạo tài khoản mới bằng cách nhập thông tin cá

1 Người dùng chọn chức năng "Đăng ký"

2 Hệ thống yêu cầu nhập tên

3 Hệ thống yêu cầu nhập email

4 Hệ thống yêu cầu nhập mật khẩu

5 Hệ thống yêu cầu thông tin cá nhân khác

6 Người dùng hoàn tất thông tin và gửi yêu cầu đăng ký

7 Hệ thống xác qua email và tạo tài khoản

Luồng sự kiện

phụ

Sau khi đăng ký thành công, hệ thống có thể đề xuất đăng nhập ngay

Luồng ngoại lệ 1 Nếu email đã tồn tại, hệ thống hiển thị thông báo lỗi

2 Nếu mật khẩu không đủ mạnh, hệ thống yêu cầu nhập lại

3 Nếu thông tin không hợp lệ (ví dụ: email sai định dạng), hệ thống yêu cầu sửa đổi

Hậu điều kiện Tài khoản mới được tạo thành công, người dùng có thể đăng nhập vào

hệ thống

Bảng 1 Mô tả Đăng Ký

Trang 23

1.8.2 Đăng nhập

a Mô tả chức năng Đăng nhập.

Chức năng đăng nhập cho phép người dùng truy cập vào hệ thống bằngcách cung cấp thông tin xác thực Quy trình đăng nhập bao gồm:

 Người dùng nhập email

 Người dùng nhập mật khẩu

 Nếu thông tin đúng, hệ thống xác nhận và cho phép truy cập

 Nếu người dùng quên mật khẩu, họ có thể sử dụng tính năng Quên mật khẩu

 Nếu chưa có tài khoản, người dùng có thể Tạo tài khoản mới

b Đặc tả Use case Đăng nhập.

Hình 3 Use Case Đăng Nhập

Trang 24

Mục Nội dung

Tên Use Case Đăng nhập

Mô tả Cho phép người dùng đăng nhập vào hệ thống bằng email và mật

khẩu

Tác nhân Người dùng

Tên điều kiện Người dùng đã có tài khoản trong hệ thống

Luồng sự kiện

chính 1 Người dùng chọn chức năng "Đăng nhập".2 Hệ thống yêu cầu nhập email

3 Hệ thống yêu cầu nhập mật khẩu

4 Người dùng nhập thông tin đăng nhập

5 Hệ thống kiểm tra thông tin

6 Nếu thông tin đúng, hệ thống cho phép truy cập

Luồng sự kiện

phụ  Nếu người dùng nhập sai mật khẩu, hệ thống hiển thị thông báo lỗi

 Nếu người dùng quên mật khẩu, họ có thể sử dụng chức năng

Trang 25

1.8.3 Trang cá nhân

a Mô tả

Người dùng có thể xem, cập nhật ảnh đại diện, ảnh bìa, giới thiệu bản thân và nơi sống

Chỉnh sửa thông tin cá nhân

b Đặc tả Use Case trang cá nhân:

Hình 4 Use Case Trang Cá Nhân

Tên Use

Case

Xem thông tin cá nhân

Tác nhân Người dùng đã đăng nhập

Mô tả Người dùng xem thông tin cá nhân của chính mình

hoặc người khác

Tiền điều

kiện

Người dùng đã đăng nhập

Luồng chính 1 Người dùng truy cập trang cá nhân

2 Hệ thống hiển thị thông tin (tên, bio,chỉnh sửa thông tin cá nhân , ảnh đại diện, ảnh bìa, thành phố, danh sách bài viết)

Ngoại lệ Nếu chưa đăng nhập → chuyển về trang đăng nhập.Hậu điều Người dùng xem được thông tin cá nhân thành công

Trang 26

Bảng 3 Mô tả Trang cá nhân

Trang 27

1.8.4 Bài viết

a Mô tả

 Người dùng có thể đăng bài viết chứa văn bản, hình ảnh

 Hệ thống hỗ trợ chỉnh sửa, xóa bài viết

kiện

Người dùng đã đăng nhập thành công

Luồng

chính

1 Người dùng chọn chức năng “Đăng bài viết”

2 Nhập nội dung (văn bản, hình ảnh, video nếu có)

3 Nhấn “Đăng”

4 Hệ thống lưu bài viết vào cơ sở dữ liệu

5 Bài viết hiển thị trên trang cá nhân và bảng tinNgoại lệ - Nội dung để trống → hiển thị thông báo lỗi

- File không đúng định dạng → báo lỗiHậu điều Bài viết mới được lưu và hiển thị trên hệ thống

Trang 28

Bảng 4 Mô tả Bài viết.

1.8.5 Story

a Mô tả

Người dùng có thể đăng một story (ảnh) để chia sẻ tạm thời với bạn

bè Story sẽ hiển thị trong vòng 24 giờ kể từ lúc đăng và sau đó tự động biến mất

Mục tiêu Cho phép người dùng chia sẻ hình ảnh hoặc video ngắn

lên story cá nhânTiền điều

 Định dạng không hợp lệ → báo lỗiHậu điều

kiện

Story được đăng thành công và sẽ tự động xóa sau 24 giờ

Bảng 5 Mô tả Story.

Trang 30

1.8.6 Theo dõi (follow)

a Mô tả

Người dùng sau khi đăng nhập có thể nhấn nút "Theo dõi" trên trang

cá nhân của người khác Hệ thống sẽ lưu lại mối quan hệ giữa người theo dõi và người được theo dõi Nếu đã theo dõi rồi, có thể nhấn lại

Hậu điều kiện Một bản ghi mới được thêm vào bảng follow

Ràng buộc Không được theo dõi chính mình

Trang 31

Bảng 6 Mô tả Theo dõi (Follow).

Trang 32

1.8.7 Tương tác (like, bình luận, chia sẻ)

a Mô tả

Người dùng sau khi đăng nhập có thể thả like hoặc viết bình luận vào bài viết của người khác Hệ thống sẽ ghi nhận lượt thích và nội dung bình luận vào cơ sở dữ liệu

Luồng sự kiện

chính

1 Người dùng chọn một bài viết

2 Nhấn vào nút "Thích"

3 Hệ thống kiểm tra đã like chưa

4 Nếu chưa, lưu lượt thíchLuồng thay thế Nếu người dùng đã like → có thể chọn bỏ thíchHậu điều kiện Một lượt thích được ghi nhận vào hệ thống hoặc

được hủy bỏ

Bảng 7 Mô tả Thích.

Trang 33

của chính mìnhHậu điều kiện Bình luận được lưu vào hệ thống và hiển thị dưới

bài viết

Bảng 8 Mô tả Bình luận

1.9 Các trang giao diện:

 Trang đăng nhập, đăng ký

 Trang chủ (hiển thị danh sách bài post, story, người theo dõi)

 Trang cá nhân

2

Trang 34

CHƯƠNG 3: THIẾT KẾ DỰ ÁN 2.1 Thiết kế dữ liệu

2.1.1 Người dùng

description TEXT NOT NULL description TEXT NOT NULL

created_at TIMESTAMP

DEFAULT

CURRENT_TIMESTAMP

created_at TIMESTAMP DEFAULT

CURRENT_TIMESTAMP

Bảng 10 Bảng Bài viết

2.1.3 Bình luận

Trang 35

description TEXT NOT NULL

Bảng 11 Bảng Bình luận

2.1.4 Story

Bảng 12 Bảng Story

2.1.5 Like

Bảng 13 Bảng Like

2.1.6 Theo dõi (Folllow)

iduser_follower INT NOT NULL

iduser_following INT NOT NULL

Ngày đăng: 05/12/2025, 12:16

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] R. Fielding, "Architectural Styles and the Design of Network-based Software Architectures," Ph.D. dissertation, Univ. California, Irvine, 2000 Sách, tạp chí
Tiêu đề: Architectural Styles and the Design of Network-based Software Architectures
Tác giả: R. Fielding
Nhà XB: University of California, Irvine
Năm: 2000
[2] Facebook Inc., "React: A JavaScript Library for Building User Interfaces," 2023. [Online]. Available:  https://reactjs.org/docs/getting-started.html Sách, tạp chí
Tiêu đề: React: A JavaScript Library for Building User Interfaces
Tác giả: Facebook Inc
Nhà XB: Facebook Inc.
Năm: 2023
[3] Node.js Foundation, "Node.js v18 LTS Documentation," 2023. [Online]. Available:  https://nodejs.org/docs/latest-v18.x/api/ Sách, tạp chí
Tiêu đề: Node.js v18 LTS Documentation
Tác giả: Node.js Foundation
Nhà XB: Node.js Foundation
Năm: 2023
[4] T. Berners-Lee et al., "The World Wide Web: Past, Present and Future," IEEE Internet Computing, vol. 5, no. 1, pp. 79-81, 2001 Sách, tạp chí
Tiêu đề: The World Wide Web: Past, Present and Future
Tác giả: T. Berners-Lee et al
Nhà XB: IEEE Internet Computing
Năm: 2001
[5] E. Raymond, "The Cathedral and the Bazaar," First Monday, vol. 3, no. 3, 1998 Sách, tạp chí
Tiêu đề: The Cathedral and the Bazaar
Tác giả: E. Raymond
Nhà XB: First Monday
Năm: 1998
[6] A. Oram and G. Wilson, "Making Open Source Work," O'Reilly Media, 2021 Sách, tạp chí
Tiêu đề: Making Open Source Work
Tác giả: A. Oram, G. Wilson
Nhà XB: O'Reilly Media
Năm: 2021
[7] PostgreSQL Global Development Group, "PostgreSQL 17 Documentation," 2024. [Online]. Available:  https://www.postgresql.org/docs/15/index.html Sách, tạp chí
Tiêu đề: PostgreSQL 17 Documentation
Tác giả: PostgreSQL Global Development Group
Năm: 2024
[8] M. Fowler, "Patterns of Enterprise Application Architecture," Addison-Wesley, 2002 Sách, tạp chí
Tiêu đề: Patterns of Enterprise Application Architecture
Tác giả: M. Fowler
Nhà XB: Addison-Wesley
Năm: 2002
[9] A. Banks and E. Porcello, "Learning React: Modern Patterns for Developing React Apps," O'Reilly, 2020 Sách, tạp chí
Tiêu đề: Learning React: Modern Patterns for Developing React Apps
Tác giả: A. Banks, E. Porcello
Nhà XB: O'Reilly
Năm: 2020
[10] D. Crockford, "JavaScript: The Good Parts," O'Reilly, 2008 Sách, tạp chí
Tiêu đề: JavaScript: The Good Parts
Tác giả: D. Crockford
Nhà XB: O'Reilly
Năm: 2008

HÌNH ẢNH LIÊN QUAN

Sơ đồ Class: - Web mang xa hoi
lass (Trang 20)
Hình 9 Thiết kế giao diện Đăng ký. - Web mang xa hoi
Hình 9 Thiết kế giao diện Đăng ký (Trang 37)
Hình 13. Thiết kế giao diện Chi tiết bài viết. - Web mang xa hoi
Hình 13. Thiết kế giao diện Chi tiết bài viết (Trang 43)
Hình 15. Giao diện trang đăng ký tạo tài khoản mới - Web mang xa hoi
Hình 15. Giao diện trang đăng ký tạo tài khoản mới (Trang 48)
Hình 18. Giao diện trang đăng nhập - Web mang xa hoi
Hình 18. Giao diện trang đăng nhập (Trang 50)
Hình 19. Giao diện nhập sai email hoặc mật khẩu khi đăng nhập - Web mang xa hoi
Hình 19. Giao diện nhập sai email hoặc mật khẩu khi đăng nhập (Trang 51)
Hình 25. Giao diện đăng bài viết mới thành công - Web mang xa hoi
Hình 25. Giao diện đăng bài viết mới thành công (Trang 56)
Hình 26. Giao diện sau khi like và bình luận - Web mang xa hoi
Hình 26. Giao diện sau khi like và bình luận (Trang 57)
Hình 27. Giao diện sau khi xóa đi bành luận - Web mang xa hoi
Hình 27. Giao diện sau khi xóa đi bành luận (Trang 58)
Hình 28. Giao diện thao tác xóa bài viết - Web mang xa hoi
Hình 28. Giao diện thao tác xóa bài viết (Trang 59)
Hình 29. Giao diện tạo Story mới - Web mang xa hoi
Hình 29. Giao diện tạo Story mới (Trang 60)
Hình 31. Giao diện xem chi tiết hình ảnh Story - Web mang xa hoi
Hình 31. Giao diện xem chi tiết hình ảnh Story (Trang 61)
Hình 32. Giao diện tìm kiếm bạn bè - Web mang xa hoi
Hình 32. Giao diện tìm kiếm bạn bè (Trang 62)
Hình 37. Giao diện thao tác Đăng xuất - Web mang xa hoi
Hình 37. Giao diện thao tác Đăng xuất (Trang 65)
Hình 39. Giao diện chỉnh sửa Trang cá nhânEm sẽ tải lên 2 ảnh bất kì: - Web mang xa hoi
Hình 39. Giao diện chỉnh sửa Trang cá nhânEm sẽ tải lên 2 ảnh bất kì: (Trang 66)

🧩 Sản phẩm bạn có thể quan tâm

w