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 2BỘ 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 3MỤ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 42.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 55.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 6MỤ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 7Hì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 8MỤ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 9LỜ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 10LỜ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 11MỞ ĐẦ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 12Phạ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 14CHƯƠ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 15Tố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 16cô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 18diễ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 19CHƯƠ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 20Sơ đồ Class:
Hình 1 Sơ đồ Class
Trang 211.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 22Sau 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 231.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 24Mụ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 251.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 26Bảng 3 Mô tả Trang cá nhân
Trang 271.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 28Bả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 301.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 31Bảng 6 Mô tả Theo dõi (Follow).
Trang 321.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 33củ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 34CHƯƠ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 35description 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