Giai đoạn phân tích và nghiên cứu
Phân tích theo hướng đối tượng tối ưu hóa quá trình phân tích và cung cấp nhận định chính xác về chức năng của trang web Phương pháp này hỗ trợ phát triển theo mô hình Agile nhờ vào khả năng mở rộng hiệu quả, giúp nâng cao hiệu suất làm việc.
Nghiên cứu các hình thức gây vốn hiện nay cho thấy hiệu quả nổi bật của gây vốn cộng đồng Trong quá trình này, nhóm cũng đã tìm hiểu hoạt động của các trang web gây vốn cộng đồng khác, nhằm thu thập tư liệu và tạo tiền đề cho việc trực quan hóa đề tài.
Để đảm bảo trang web có khả năng xuất bản hiệu quả và thu hút cộng đồng tham gia, cần phân tích và nghiên cứu kỹ lưỡng các vấn đề pháp lý liên quan Việc này giúp tránh các rườm rà pháp lý, từ đó tạo điều kiện thuận lợi cho người dùng.
Giai đoạn thiết kế
Để thu hút sự chú ý của người truy cập, việc tạo ra một giao diện trực quan, hấp dẫn và dễ sử dụng là rất quan trọng Điều này cần nghiên cứu kỹ lưỡng về nguyên tắc thiết kế giao diện người dùng (UI) và trải nghiệm người dùng (UX), nhằm đảm bảo rằng trang web cung cấp trải nghiệm tối ưu cho người dùng.
Để tạo ra nội dung thu hút và thuyết phục, cần xác định các yếu tố quan trọng như hình ảnh, video, câu chuyện cảm động và thông tin chi tiết về mục tiêu gây quỹ Nghiên cứu cũng phân tích các trang web thành công khác để tìm ra những yếu tố nổi bật giúp thu hút quyên góp từ cộng đồng.
Giai đoạn cài đặt và kiểm thử
Sử dụng các công nghệ hiện đại như ReactJS, ExpressJS, Redux và Stripe giúp phát triển trang web linh hoạt và hiệu quả, đồng thời đơn giản hóa quá trình kiểm tra và sửa chữa.
Kiểm thử phần mềm bao gồm cả phương pháp Kiểm thử Thủ công và Kiểm thử Tự động, từ kiểm thử đơn vị trở lên, nhằm tăng cường độ tin cậy và giảm thiểu tối đa lỗi trong quá trình triển khai.
Giai đoạn xuất bản
Để quảng bá trang web hiệu quả và thu hút người truy cập, cần áp dụng các phương pháp như sử dụng kênh truyền thông xã hội, tiếp cận khách hàng tiềm năng và xây dựng mối quan hệ với các đối tác liên quan Bên cạnh đó, việc kết hợp các chiến lược Marketing từ các môn học như Chuyên đề E-commerce (SE331) và Tiếp thị trực tuyến (EC311) là rất quan trọng để tối ưu hóa trang web, bao gồm SEO và cải thiện cơ chế hiển thị, nhằm mở rộng lượng người truy cập và tạo dựng một môi trường vững mạnh cho việc gây vốn cộng đồng.
Kết quả nghiên cứu cho thấy việc cải thiện giao diện người dùng, cung cấp nội dung thuyết phục và áp dụng các phương pháp quảng bá hiệu quả đã nâng cao sự quan tâm và ủng hộ tài chính từ cộng đồng Trang web hỗ trợ gây vốn cộng đồng đã thu hút được nhiều quyên góp đáng kể và lan tỏa thông điệp tích cực đến đông đảo người truy cập.
Nếu đã hoàn thành các bước 1, 2, 3 trong phương pháp giải quyết, và nếu có đủ điều kiện cũng như kinh phí, bạn nên tiến hành bước 4 Bước này nhằm phát triển trang web thành một nền tảng đáng tin cậy, hỗ trợ sự phát triển trong lĩnh vực kinh doanh thông qua phương pháp gọi vốn cộng đồng.
TỔNG QUAN
Phân tích các trang web gây vốn cộng đồng hiện nay
Kể từ khi ra mắt, Kickstarter đã thu hút gần 9,8 triệu người ủng hộ, huy động hơn 2 tỷ USD và tài trợ thành công cho 95.000 dự án Đặc biệt, trong năm 2012, nền tảng này đã kêu gọi được 319,8 triệu USD cho nhiều dự án đa dạng trong nhiều lĩnh vực khác nhau.
Các dự án gọi vốn cộng đồng trên KickStarter phải thuộc các lĩnh vực như phim ảnh, games, âm nhạc, nghệ thuật, thiết kế và công nghệ Những dự án phục vụ mục đích cá nhân, từ thiện hoặc tài trợ cho chính người sáng lập sẽ không được chấp nhận theo quy định của KickStarter.
Khi khởi động một dự án trên Kickstarter, cần xác định mức vốn đầu tư cần thiết và thời hạn giới thiệu đến người dùng Trong khoảng thời gian từ khi ra mắt đến khi hết hạn, dự án phải đạt hoặc vượt qua mức vốn ban đầu đã đề ra.
Nếu nhà kêu gọi vốn không đạt được số tiền cần thiết trong thời gian quy định, họ sẽ không nhận được bất kỳ khoản nào Tất cả số tiền đã ghi nhận qua hệ thống của Kickstarter sẽ được hoàn trả cho các nhà đầu tư.
Hình 2.1 Website gây vốn cộng đồng Kickstarter
Nếu bạn đang tìm kiếm một nền tảng để đảm bảo tài trợ cho các mục đích từ thiện hoặc hỗ trợ cộng đồng, RocketHub.com chính là lựa chọn lý tưởng để bắt đầu.
Người dùng có thể đăng tải dự án của mình trên website qua các phương tiện truyền thông xã hội, nêu rõ chi phí vốn, thời gian gọi vốn và phần thưởng cho những người quyên góp Các dự án này hướng đến những tác động tích cực trong các lĩnh vực xã hội, nghệ thuật, khoa học và kinh doanh.
Nếu người dùng kêu gọi vốn thành công, họ sẽ phải chịu phí hoa hồng 4% và phí duy trì thẻ tín dụng 4% Ngược lại, nếu không thành công, phí hoa hồng sẽ tăng lên 8%, trong khi phí duy trì thẻ tín dụng vẫn giữ ở mức 4%.
Hình 2.2 Website gây vốn cộng đồng RocketHub
Với GoFundMe, người dùng đăng ký, tạo website gọi vốn cộng đồng, chia sẻ hình ảnh và video, sau đó chia sẻ link cho bạn bè và gia đình
GoFundMe khuyến khích người dùng cập nhật thông tin và gửi lời cảm ơn đến những người đã ủng hộ thành công cho dự án của họ ngay trên trang web của GoFundMe.
Với chi phí 5% trên mỗi lượt quyên góp, bất cứ ai có nhu cầu kêu gọi quyên góp vốn đều có thể tham gia
Hình 2.3 Website gây vốn cộng đồng Gofundme.com
Phân tích những vấn đề hạn chế hiện nay của các trang web gây vốn cộng đồng
Các trang web gây vốn cộng đồng hiện nay đã tạo dựng được vị thế vững chắc trên thị trường, thu hút nhiều nhà đầu tư và chủ dự án, từ đó hình thành một hệ sinh thái thuận lợi cho việc kêu gọi vốn Nhờ vậy, các chủ dự án có thể dễ dàng tiếp cận nguồn vốn, trong khi nhà đầu tư có cơ hội lựa chọn những dự án tiềm năng từ một thị trường đa dạng.
Các trang web gây vốn cộng đồng hiện nay cung cấp dịch vụ quảng cáo trực tuyến, giúp chủ dự án tiếp cận hiệu quả với cộng đồng và đối tượng mục tiêu.
Các trang web gây vốn cộng đồng đang chiếm lĩnh thị trường với thị phần lớn, tạo ra sự cạnh tranh khốc liệt giữa các nền tảng Điều này khuyến khích sự phát triển và đổi mới trong lĩnh vực gây vốn cộng đồng.
BÁO CÁO ĐỒ ÁN 1 14 khích các nhà sáng tạo nội dung ngày càng hoàn thiện website hơn, trải nghiệm người dùng ngày càng hiệu quả hơn
Sự cạnh tranh khốc liệt trong thị trường thu hút vốn cộng đồng hiện nay đòi hỏi các nền tảng phải nổi bật với tính năng độc đáo và trải nghiệm người dùng tốt Nếu không, các trang web sẽ dễ dàng bị lu mờ trong bối cảnh đa dạng này.
Chi phí giao dịch và phí hoạt động trên các trang web hiện nay rất cao, với mức thu từ 15-20% cho mỗi dự án và 5-10% cho mỗi giao dịch Điều này dẫn đến việc số tiền thực sự được sử dụng cho dự án không đáng kể, ảnh hưởng đến hiệu quả của việc gọi vốn.
Một số trang web gây quỹ cộng đồng có hạn chế về địa lý, cho phép quyền truy cập và quyên góp chỉ từ một số quốc gia hoặc khu vực nhất định Điều này có thể làm giảm khả năng thu hút sự ủng hộ từ cộng đồng toàn cầu, ảnh hưởng đến tiềm năng phát triển của trang web.
Sự đa dạng trong các dự án gây quỹ cộng đồng là rất quan trọng, vì nhiều trang web chỉ tập trung vào một số lĩnh vực cụ thể, điều này có thể hạn chế sự lựa chọn cho người ủng hộ và không đáp ứng đầy đủ nhu cầu đa dạng của cộng đồng.
Những yêu cầu cần giải quyết của trang web đồ án hướng đến
Mang đến trải nghiệm độc đáo cho người dùng với giao diện thân thiện và quy trình thao tác đơn giản Việc thanh toán được tối ưu hóa, không rườm rà, cùng với các tính năng phân chia tag và quản trị hiệu quả, giúp người dùng có được trải nghiệm tốt nhất.
Việc phân chia các tag trong dự án giúp đa dạng hóa nội dung của trang web, cho phép người dùng tiếp cận nhiều lĩnh vực khác nhau như khoa học, công nghệ, sinh học, chăm sóc sức khỏe, hạnh phúc, giải trí và giáo dục.
Mở rộng về địa lý thông qua việc áp dụng các phương thức thanh toán điện tử quốc tế như Paypal, Credit Card, và Master Card sẽ thu hút nguồn vốn đầu tư trong nước và nước ngoài, từ đó kêu gọi nhiều hơn sự quan tâm và đầu tư từ các nhà đầu tư.
Chi phí giao dịch rất hợp lý, chỉ 3% cho mỗi dự án và 2% trên mỗi giao dịch, giúp duy trì trang web Mức phí này không ảnh hưởng đến nguồn vốn của nhà đầu tư cũng như số tiền mà chủ dự án nhận được.
Tối ưu hóa trang web bằng SEO không chỉ giúp cải thiện khả năng tìm kiếm mà còn nâng cao trải nghiệm người dùng Khi trang web dễ dàng được truy cập và sử dụng, điều này tạo ra sự tin tưởng và đáng tin cậy cho khách vãng lai, khuyến khích họ sử dụng hệ thống một cách hiệu quả.
Xây dựng một hệ thống chính sách hỗ trợ người dùng và các dự án sẽ giúp tạo sự yên tâm cho người dùng, đồng thời giải quyết nhanh chóng các vấn đề phát sinh Điều này không chỉ nâng cao trải nghiệm người dùng mà còn gia tăng lượng truy cập trang web thông qua hiệu ứng Snowball.
Tổng quan về các yêu cầu của hệ thống
2.4.1 Yêu cầu về chức năng
Hệ thống cho phép phân quyền người dùng với các loại như Admin, người dùng vãng lai, người dùng chưa xác thực và người dùng đã xác thực, mỗi loại có quyền truy cập và quyền thực thi riêng biệt.
- Hệ thống quản lý được danh sách các dự án, cho phép người dùng xem, đánh giá và bình luận về các dự án trên hệ thống
- Hệ thống hỗ trợ dịch vụ thanh toán trực tuyến, đồng thời cho phép thống kê, sao lưu và công khai minh bạch về tiền tệ trên hệ thống
- Hệ thống cho phép người dùng tương tác trực tiếp với nhau thông qua các cửa sổ chat, hệ thống bình luận,
- Hệ thống cho phép thống kê và báo cáo về lưu lượng truy cập, số tiền nhận và cung cấp tính năng hoàn trả tự động khi cần thiết
2.4.2 Yêu cầu phi chức năng
- Giao diện thân thiện, bố cục hợp lý
- Giao diện thống nhất, đồng bộ, không gây sự bất ngờ cho người sử dụng
- Màu sắc, vị trí, hiển thị của các control có tính đồng bộ
2.4.2.2 Yêu cầu về độ tin cậy, bảo mật
- Phân quyền người sử dụng một cách hợp lý
- Dữ liệu tài khoản người dùng được bảo mật, đặc biệt là các dữ liệu về thẻ thanh toán, số dư và các kênh thanh toán
2.4.2.3 Yêu cầu về độ tương thích
- Thích hợp sử dụng trên các trình duyệt web như Microsoft Edge, Google Chrome, Cốc cốc, Opera,
- Tương thích với Microsoft Excel từ 2003 trở đi
2.4.2.4 Yêu cầu về khả năng mở rộng
- Dễ dàng nâng cấp khi muốn nâng cao tính năng sẵn có nhờ vào sự hệ thống hóa trong việc xử lý
- Dễ dàng mở rộng khi có nhu cầu phát triển
2.4.2.5 Yêu cầu về tính hiệu quả
- Hệ thống quản lý dữ liệu một cách logic
- Hiệu năng ổn định, tránh gây khó chịu cho người dùng.
Phương pháp phát triển
- Tiếp cận phát triển website theo hướng đối tượng, sử dụng UML để phân tích thiết kế hệ thống
- Nền tảng: ReactJS Framework, NodeJS, ExpressJS
- Ngôn ngữ: Javascript, HTML, CSS, JSX
- Công cụ vẽ và phân tích yêu cầu: Draw.io
- Công cụ quản lý source code: Github
NGHIÊN CỨU CƠ SỞ LÝ THUYẾT
Quy trình phát triển phần mềm Scrum
Nhịp độ môi trường kinh doanh ngày càng nhanh buộc các công ty phải thay đổi nhanh chóng để đáp ứng với các điều kiện thị trường biến động Để duy trì tính cạnh tranh, sản phẩm cần thích ứng với nhu cầu thị trường, cung cấp tính năng mới và bổ sung nhanh chóng Vì vậy, nhiều công ty phần mềm hiện nay đang chuyển sang mô hình Agile.
Agile là một quy trình có nhiều khung công tác như SCRUM, Kanban, Scrumban,
SCRUM, được Ken Schwaber khởi xướng vào năm 1995, là một trong những quy trình phát triển Agile, mang đầy đủ các đặc điểm cốt lõi của phương pháp này SCRUM hoạt động như một nhóm, nơi các thành viên cùng nhau thực hiện công việc, giúp dự án được triển khai với thời gian và chi phí tối thiểu.
SCRUM là một quy trình mạnh mẽ và có cấu trúc, thể hiện rõ nhất triết lý Agile Nó được ví như một người mẹ chồng, yêu cầu bạn tuân thủ mọi quy định đã đề ra và rất hiệu quả trong việc chỉ ra các sai sót.
Hình 3.1 Mô hình phát triển phần mềm SCRUM
Có một số bước cụ thể, không thay đổi trong quy trình Scrum Bao gồm:
Product Backlog là danh sách các chức năng cần phát triển cho sản phẩm, được quyết định bởi Product Owner Danh sách này thường xuyên được cập nhật để phản ánh nhu cầu thay đổi của khách hàng và điều kiện của dự án.
Sprint planning là giai đoạn quan trọng trong quy trình phát triển phần mềm, thường kéo dài từ 2-4 tuần Trong mỗi cuộc họp Sprint, đội ngũ sẽ xác định các chức năng (story) cần phát triển trong sprint backlog, mục tiêu dự kiến (Goal, kết quả Release), và phân chia công việc (Estimate) cho từng thành viên Các giải pháp cũng sẽ được thảo luận và tất cả thông tin này sẽ được ghi lại thành biên bản để làm cơ sở cho việc thực hiện và đánh giá sau này.
Vào cuối mỗi sprint, việc tinh chỉnh backlog là rất quan trọng để nhóm phát triển và PO đảm bảo rằng danh sách công việc đã sẵn sàng cho sprint tiếp theo Nhóm cần loại bỏ các chức năng không cần thiết, tạo ra các vấn đề mới, đánh giá lại mức độ ưu tiên và chia nhỏ các yêu cầu người dùng thành các tác vụ cụ thể hơn Mục tiêu chính của cuộc họp này là duy trì backlog với các mục liên quan, chi tiết và phù hợp với các mục tiêu của dự án.
Cuộc họp Daily Scrum là một cuộc họp đứng kéo dài 15 phút, nơi các thành viên trong nhóm chia sẻ về mục tiêu và những vấn đề phát sinh Diễn ra hàng ngày trong Sprint, cuộc họp này giúp theo dõi công việc đang thực hiện, chưa thực hiện và sắp thực hiện Mỗi thành viên thường tự trả lời ba câu hỏi: Hôm qua đã làm gì? Có gặp khó khăn gì không? Hôm nay sẽ làm gì?
Cuộc họp đánh giá Sprint diễn ra vào cuối mỗi Sprint, nơi nhóm trình bày công việc đã hoàn thành Cuộc họp này yêu cầu trình bày trực tiếp, không sử dụng báo cáo hay bản trình bày PowerPoint.
Cuối mỗi Sprint, nhóm nghiên cứu tổ chức cuộc họp hồi tưởng để đánh giá hiệu suất làm việc và thảo luận về những thay đổi cần thiết cho Sprint tiếp theo Trong cuộc họp này, nhóm sẽ chia sẻ những điểm mạnh đã đạt được, phân tích các vấn đề đã xảy ra và đề xuất các cách thức cải thiện cho tương lai.
3.1.2 Ưu điểm và nhược điểm của Scrum
- Một người có thể làm nhiều việc ví dụ như developer cũng có thể thực hiện chức năng tương tự như một tester
Như các quy trình phát triển phần mềm Agile, việc phát hiện lỗi sớm là một lợi thế lớn so với các phương pháp truyền thống.
- Khách hàng nhanh chóng thấy được sản phẩm qua đó đưa ra phản hồi sớm
- Có khả năng áp dụng được cho những dự án mà yêu cầu khách hàng không rõ ràng ngay từ đầu
- Trình độ của nhóm là có một kỹ năng nhất định
- Phải có sự hiểu biết về mô hình aglie
- Khó khăn trong việc xác định ngân sách và thời gian
- Luôn nghe ý kiến phản hồi từ khách hàng và thay đổi theo nên thời gian sẽ kéo dài khi có quá nhiều yêu cầu thay đổi từ khách hàng
- Vai trò của PO (Product Owner) rất quan trọng, PO là người định hướng sản phẩm Nếu PO làm không tốt sẽ ảnh hưởng đến kết quả chung
3.1.3 Lý cho chọn quy trình phát triển phần mềm Scrum
Quy trình phát triển phần mềm Scrum thực sự phù hợp với những dự án phần mềm có các đặc điểm sau:
- Dự án có tính phức tạp trung bình đến cao
- Yêu cầu và mục tiêu không rõ ràng từ đầu
- Đội ngũ phát triển tự quản lý
- Khách hàng muốn có sự tương tác và phản hồi liên tục
- Dự án có tính ưu tiên cao và thay đổi thường xuyên
- Dự án có sự phụ thuộc cao vào phản hồi từ khách hàng
Dựa trên các đặc điểm của Website gây vốn cộng đồng Happy Fund, chúng tôi chọn quy trình phát triển phần mềm Scrum nhằm tối ưu hóa hiệu quả trong quá trình phát triển, hướng tới kết quả cao nhất.
Phương pháp phân tích thiết kế hướng đối tượng
Phân tích và thiết kế hướng đối tượng là một phương pháp phổ biến trong việc phân tích và thiết kế ứng dụng hoặc hệ thống Kỹ thuật này dựa trên một bộ nguyên tắc chung, giúp tối ưu hóa quy trình phát triển phần mềm.
BÁO CÁO ĐỒ ÁN 1 21 cung cấp các hướng dẫn quan trọng nhằm tránh thiết kế kém Một trong những yếu tố cốt lõi trong thiết kế hướng đối tượng là 5 nguyên tắc SOLID, giúp nâng cao chất lượng mã nguồn và tối ưu hóa quy trình phát triển phần mềm.
Nguyên tắc Trách nhiệm Đơn lẻ (Single Responsibility Principle) nhấn mạnh rằng mỗi lớp trong lập trình chỉ nên có một lý do duy nhất để thay đổi, tức là chỉ nên đảm nhiệm một chức năng cụ thể Việc gộp nhiều chức năng vào một lớp sẽ tạo ra sự phụ thuộc giữa các chức năng, dẫn đến việc thay đổi một chức năng có thể làm ảnh hưởng đến những chức năng khác, gây ra lỗi và làm giảm tính ổn định của hệ thống.
- Open/Closed: Các lớp, module, chức năng nên dễ dàng Mở (Open) cho việc mở rộng (thêm chức năng mới) và Đóng (Close) cho việc thay đổi
- Liskov Substitution Principle: Lớp dẫn xuất phải có khả năng thay thế được lớp cha của nó
- Interface Segregation: Chương trình không nên buộc phải cài đặt một interface mà nó không sử dụng đến
Nguyên tắc Đảo ngược phụ thuộc nhấn mạnh rằng các module cấp cao không nên phụ thuộc vào các module cấp thấp, mà cả hai nên tương tác thông qua lớp trừu tượng Điều này có nghĩa là lớp trừu tượng không nên phụ thuộc vào các chi tiết cụ thể, mà ngược lại, các chi tiết phải phụ thuộc vào lớp trừu tượng.
Phương pháp hướng đối tượng khác với phương pháp hướng cấu trúc ở chỗ nó chú trọng cả dữ liệu và hành động trong hệ thống, tạo ra một cái nhìn toàn diện hơn về cách thức hoạt động và tổ chức thông tin.
Cách tiếp cận hướng đối tượng là phương pháp ánh xạ các thành phần trong bài toán vào các đối tượng thực tế Hệ thống được chia thành các phần nhỏ gọi là đối tượng, mỗi đối tượng chứa dữ liệu và hành động liên quan Các đối tượng tương đối độc lập và phần mềm được xây dựng bằng cách kết hợp chúng thông qua mối quan hệ và tương tác.
Phương pháp thiết kế từ dưới lên (bottom-up) bắt đầu bằng việc phân tích các thuộc tính cụ thể của từng đối tượng Sau đó, quá trình này tiến hành trừu tượng hóa để hình thành các lớp đối tượng.
3.2.2 Ưu điểm và nhược điểm của phương pháp phân tích thiết kế hướng đối tượng
- Gần gũi với thế giới thực
- Tái sử dụng dễ dàng
- Đóng gói che giấu thông tin làm cho hệ thống tin cậy hơn
- Thừa kế làm giảm chi phí, hệ thống có tính mở cao hơn
- Xây dựng hệ thống phức tạp
Phương pháp này có độ phức tạp cao, khiến việc theo dõi luồng dữ liệu trở nên khó khăn do sự đa dạng của các luồng dữ liệu đầu vào Thêm vào đó, giải thuật không phải là yếu tố chính trong phương pháp này.
3.2.3 Lý do chọn phương pháp phân tích thiết kế hướng đối tượng
Website Happy Fund hỗ trợ gây vốn cộng đồng được phát triển với yêu cầu cao và phức tạp, phù hợp với phương pháp lập trình hướng đối tượng Phương pháp này thường được áp dụng cho các bài toán phức tạp hoặc có nhiều luồng dữ liệu mà phương pháp cấu trúc không thể quản lý Nhóm phát triển quyết định sử dụng phương pháp hướng đối tượng để tận dụng khả năng bảo vệ dữ liệu, đồng thời tiết kiệm công sức và tài nguyên.
Các nền tảng công nghệ sử dụng
ReactJS là một thư viện JavaScript mã nguồn mở phổ biến, được Facebook phát triển và hiện được quản lý bởi Facebook cùng với một cộng đồng lớn các nhà phát triển Thư viện này chủ yếu được sử dụng để xây dựng giao diện người dùng (UI) cho các ứng dụng web.
Một số đặc điểm quan trọng của ReactJS có thể kể đến như:
Công nghệ giao diện dựa trên thành phần của ReactJS cho phép phát triển giao diện người dùng theo cách phân chia thành các thành phần nhỏ Mỗi thành phần (component) không chỉ đại diện cho một phần của giao diện mà còn có khả năng tái sử dụng, tương tác lẫn nhau và tự quản lý trạng thái của chính nó.
ReactJS sử dụng Virtual DOM để tối ưu hóa hiệu suất và nâng cao trải nghiệm người dùng Virtual DOM là bản sao của cấu trúc cây HTML, cho phép ReactJS thực hiện các thay đổi giao diện một cách hiệu quả, chỉ cập nhật những phần cần thiết thay vì toàn bộ DOM.
ReactJS có tính khả chuyển cao, cho phép tương thích với nhiều môi trường phát triển và cấu trúc dự án khác nhau Nó có thể được áp dụng để phát triển các ứng dụng đơn trang (Single-Page Applications - SPA) hoặc dễ dàng tích hợp vào các dự án web hiện tại.
ReactJS mang đến cách quản lý trạng thái ứng dụng một cách hiệu quả và dễ dàng Thay vì can thiệp trực tiếp vào DOM, ReactJS cho phép các thành phần tự quản lý trạng thái của chúng, giúp mã nguồn trở nên gọn gàng và dễ bảo trì hơn.
ReactJS sở hữu một hệ sinh thái mạnh mẽ với nhiều thư viện và công cụ bổ sung như React Router, Redux và React Native, giúp mở rộng khả năng và tăng tính linh hoạt trong phát triển ứng dụng.
ReactJS sở hữu một cộng đồng phát triển rộng lớn và năng động, cung cấp nhiều tài liệu, hướng dẫn và ví dụ phong phú Sự hỗ trợ từ cộng đồng này sẽ giúp bạn dễ dàng hơn trong quá trình phát triển ứng dụng.
ReactJS là một trong những công nghệ phát triển giao diện người dùng phổ biến nhất trong cộng đồng phát triển phần mềm Nhờ vào tính linh hoạt, hiệu suất cao và cách tiếp cận dựa trên thành phần, ReactJS trở thành công cụ mạnh mẽ để tạo ra các giao diện người dùng đẹp và tương tác trên web.
NodeJS là môi trường chạy mã JavaScript phía máy chủ, được phát triển dựa trên JavaScript Engine V8 của Google Chrome Nó cho phép lập trình viên xây dựng ứng dụng máy chủ hiệu quả và có khả năng mở rộng trên nền tảng web.
Một số đặc điểm quan trọng của NodeJS có thể kể đến như:
Node.js cho phép phát triển ứng dụng phía máy chủ bằng JavaScript, giúp đơn giản hóa quá trình phát triển ứng dụng toàn diện Việc sử dụng JavaScript thay vì các ngôn ngữ lập trình khác như Java hay Python giúp tận dụng kiến thức và kỹ năng sẵn có của lập trình viên.
Kiến trúc không đồng bộ của Node.js cho phép xử lý yêu cầu một cách hiệu quả nhờ mô hình xử lý không đồng blocking Điều này giúp ứng dụng Node.js có khả năng tương tác với các tài nguyên ngoại vi như cơ sở dữ liệu và API, đồng thời xử lý nhiều yêu cầu cùng lúc mà không cần chờ đợi phản hồi từ các yêu cầu trước đó.
Node.js mang lại hiệu suất cao nhờ vào JavaScript Engine V8 nhanh chóng và khả năng xử lý không đồng bộ, cho phép xử lý nhiều yêu cầu mà không làm giảm hiệu suất ứng dụng Điều này rất quan trọng cho việc phát triển các ứng dụng thời gian thực hoặc những ứng dụng có lưu lượng truy cập lớn.
Node.js sở hữu một cộng đồng phát triển lớn và năng động, cung cấp nhiều thư viện và framework hữu ích như Express.js, Socket.IO và Sequelize Những công cụ này hỗ trợ hiệu quả trong việc phát triển ứng dụng web, xử lý thời gian thực và kết nối cơ sở dữ liệu.
Node.js hỗ trợ đa nền tảng, cho phép phát triển và triển khai ứng dụng trên nhiều hệ điều hành như Windows, macOS và Linux một cách dễ dàng.
NodeJS là công cụ mạnh mẽ để xây dựng ứng dụng web phía máy chủ, nhờ vào khả năng xử lý không đồng bộ và hiệu suất cao Sự phát triển mạnh mẽ từ cộng đồng đã khiến NodeJS trở thành lựa chọn phổ biến cho phát triển ứng dụng web hiện đại và đáp ứng.
Chiến lược “Thiên chúa 3 ngôi” và phương pháp SEO
3.4.1 Xây dựng chiến lược phát triển “Thiên chúa 3 ngôi” cho Happy Fund
Chiến lược “Thiên chúa 3 ngôi” của Amazon, được áp dụng từ đầu thế kỷ XXI, đã tạo ra sự khác biệt và giúp sàn thương mại điện tử này trở thành một trong những nền tảng cạnh tranh nhất Học hỏi từ thành công đó, Happy Fund cũng triển khai chiến lược tương tự nhằm nâng cao trải nghiệm người dùng so với các trang web gây quỹ cộng đồng hiện có Chiến lược này bao gồm ba yếu tố nổi bật: chi phí hoa hồng luôn rẻ, phản hồi nhanh chóng và dịch vụ FulFill by Happy Fund (FBHF).
3.4.1.1 Chi phí hoa hồng luôn rẻ
Nghiên cứu các trang web gây quỹ cộng đồng hiện nay cho thấy chi phí hoa hồng cố định cho mỗi dự án rất cao, dao động từ 15% đến 30% Bên cạnh đó, người ủng hộ cũng phải chịu phụ thu từ 5% đến 8% cho mỗi giao dịch Những con số này có thể gây khó khăn lớn cho các dự án khởi nghiệp.
BÁO CÁO ĐỒ ÁN 1 39 thu hút vốn cộng đồng vì số tiền kêu gọi sẽ không đến tay chủ dự án hoàn toàn Happy Fund mong muốn cung cấp mức hoa hồng hợp lý và thấp cho tất cả các dự án dựa trên mức kêu gọi đầu tư.
- Dự án kêu gọi dưới 50 triệu đồng: Hoa hồng thu 3% trên 1 dự án
- Dự án kêu gọi từ 50 triệu đồng đến 500 triệu đồng: Hoa hồng thu 5% trên 1 dự án
- Dự án kêu gọi từ 500 triệu đồng đến 5 tỷ đồng: Hoa hồng thu 7% trên 1 dự án
Happy Fund thu 2% chi phí trên mỗi giao dịch ủng hộ để duy trì dịch vụ thanh toán điện tử, giúp tối đa hóa số tiền xã hội hóa vốn Với mức khấu hao tối đa chỉ 9% cho các dự án lớn, chủ dự án có thể nhận được khoản thu lớn để thực hiện thành công mục tiêu của mình.
Happy Fund cung cấp cơ chế cập nhật tiến độ dự án và minh chứng tài chính, tạo sự tương tác giữa chủ dự án và nhà đầu tư Hệ thống chat cho phép các bên liên quan giao tiếp hiệu quả, từ đó tăng cường phản hồi và tương tác nhanh chóng Điều này giúp xây dựng niềm tin và sự thoải mái trong việc cung cấp vốn, tạo ra một môi trường đầu tư bền vững.
3.4.1.3 FulFill By Happy Fund (FBHF)
Chiến lược FulFill, được học tập từ Amazon, cho phép các chủ dự án tại Happy Fund chỉ cần cung cấp sản phẩm và mô tả dự án, trong khi mọi khía cạnh như thống kê, quản lý và quảng cáo đều được hệ thống tự động xử lý Điều này không chỉ tạo ra trải nghiệm thuận lợi cho các chủ dự án mà còn thu hút người dùng đến với Happy Fund, góp phần xây dựng một cộng đồng mạnh mẽ trong lĩnh vực gây quỹ cộng đồng.
SEO, hay Tối ưu hóa công cụ tìm kiếm, là quy trình cải thiện vị trí và hiển thị của trang web trên các kết quả tìm kiếm tự nhiên của các công cụ như Google, Bing và Yahoo.
Mục tiêu của SEO là tối ưu hóa trang web để thu hút và tạo sự thân thiện với công cụ tìm kiếm, từ đó nâng cao thứ hạng trong kết quả tìm kiếm liên quan đến ngành, sản phẩm hoặc dịch vụ của bạn Khi tối ưu hóa cho SEO, bạn đảm bảo rằng nội dung không chỉ phù hợp và hấp dẫn với người dùng mà còn tuân thủ các quy tắc và tiêu chuẩn của công cụ tìm kiếm.
Các yếu tố chính trong SEO bao gồm:
- Từ khóa: Nghiên cứu và chọn các từ khóa phù hợp để tăng khả năng xuất hiện trên kết quả tìm kiếm
Để tạo ra nội dung chất lượng và hữu ích cho người dùng, cần tập trung vào việc tối ưu hóa từ khóa và các yếu tố SEO khác, nhằm nâng cao giá trị của nội dung.
- Kiến trúc trang web: Xây dựng một cấu trúc trang web rõ ràng và dễ dàng cho công cụ tìm kiếm hiểu và lập chỉ mục
Xây dựng mạng lưới liên kết chất lượng là yếu tố quan trọng trong SEO, bao gồm cả việc tạo liên kết nội bộ và liên kết từ các trang web uy tín Liên kết từ các trang web có độ tin cậy cao sẽ giúp nâng cao giá trị và độ tin cậy của trang web của bạn trong mắt các công cụ tìm kiếm.
Để nâng cao trải nghiệm người dùng, hãy đảm bảo rằng trang web của bạn có tốc độ tải nhanh, thiết kế responsive và dễ sử dụng trên các thiết bị di động.
SEO là một quá trình liên tục, đòi hỏi nỗ lực và kiên nhẫn để đạt được kết quả tốt, nhưng mang lại lợi ích lớn cho sự tăng trưởng và hiệu quả của trang web cũng như kinh doanh trực tuyến.
TRÌNH BÀY KẾT QUẢ
Xây dựng hệ thống
4.1.1 Kiến trúc hệ thống MVC
Mô hình Model-View-Controller (MVC) là kiến trúc phân tách ứng dụng thành ba thành phần chính: Model, View và Controller, viết tắt là MVC Mỗi thành phần đảm nhận một khía cạnh phát triển cụ thể, giúp tách biệt logic nghiệp vụ và lớp hiển thị Hiện nay, kiến trúc MVC được ưa chuộng trong thiết kế ứng dụng web và ứng dụng di động.
MVC quan trọng bao gồm:
- Model: Nó bao gồm tất cả dữ liệu và logic liên quan của nó
- View: Trình bày dữ liệu cho người dùng hoặc xử lý tương tác của người dùng
- Controller: Là phần quan trọng nhất trong mô hình, nó liên kết phần Model và View
- Bảo trì code dễ dàng, dễ dàng mở rộng và phát triển
- Hỗ trợ dễ dàng hơn cho khách hàng mới
- Việc phát triển các thành phần khác nhau có thể được thực hiện song song
- Giúp tránh sự phức tạp mã bằng cách chia ứng dụng thành ba đơn vị Model, View và Controller
- Cung cấp hỗ trợ tốt nhất cho phát triển theo hướng thử nghiệm
- Nó hoạt động tốt cho các ứng dụng Web được hỗ trợ bởi các nhóm lớn các nhà thiết kế và phát triển web
- Cung cấp khả năng phân tách rõ ràng các mối quan tâm
- Thân thiện với Công cụ Tìm kiếm (SEO)
- Tất cả các đối tượng được phân loại và đối tượng độc lập với nhau để bạn có thể kiểm tra chúng một cách riêng biệt
**Nhược điểm của việc sử dụng MVC
- Khó đọc, thay đổi, kiểm tra và sử dụng lại mô hình này
- Không có hỗ trợ xác thực chính thức
- Tăng độ phức tạp và tính kém hiệu quả của dữ liệu
- Khó khăn khi sử dụng MVC với giao diện người dùng hiện đại
- Cần có nhiều người lập trình để tiến hành lập trình song song
- Cần có kiến thức về nhiều công nghệ
- Bảo trì nhiều code trong Controller
4.1.2 Mô tả các thành phần trong hệ thống
Mô hình lưu trữ dữ liệu bao gồm các thành phần và logic liên quan, với các lớp hàm thực hiện các tác vụ như truy vấn, thêm, sửa, hoặc xóa dữ liệu Chẳng hạn, một đối tượng Controller sẽ truy xuất thông tin khách hàng từ cơ sở dữ liệu, thao tác với dữ liệu và sau đó gửi lại cơ sở dữ liệu hoặc sử dụng để hiển thị thông tin.
- View là một phần của ứng dụng đại diện cho việc trình bày dữ liệu
View được hình thành từ dữ liệu mà chúng ta thu thập từ mô hình Để hiển thị thông tin cho người dùng, một view cần nhận đủ dữ liệu từ mô hình.
View là thành phần chứa các giao diện như nút bấm, khung nhập, menu và hình ảnh, có vai trò hiển thị dữ liệu và hỗ trợ người dùng tương tác với hệ thống.
Bộ điều khiển là thành phần chính trong ứng dụng, chịu trách nhiệm xử lý các tương tác của người dùng Nó tiếp nhận đầu vào từ chuột và bàn phím, sau đó thông báo cho model và view để thực hiện các thay đổi cần thiết.
Controller là thành phần tiếp nhận yêu cầu từ người dùng, bao gồm các class và function xử lý logic nghiệp vụ Nó giúp truy xuất thông tin cần thiết từ lớp Model và hiển thị dữ liệu đó cho người dùng thông qua lớp View.
Controller gửi lệnh đến model để thay đổi trạng thái, như thêm mới hoặc cập nhật thông tin người dùng Đồng thời, Controller cũng gửi lệnh đến view để điều chỉnh cách hiển thị, chẳng hạn như xem thông tin người dùng.
4.1.2.4 Thành phần tối ưu hóa SEO
Có nhiều thành phần quan trọng trong quá trình tối ưu hóa SEO cho một trang web Dưới đây là một số thành phần chính:
Nghiên cứu và sử dụng từ khóa phù hợp và liên quan trong nội dung trang web là rất quan trọng Việc này giúp công cụ tìm kiếm nhận diện chủ đề và nội dung của trang, từ đó cung cấp kết quả tìm kiếm chính xác hơn cho người dùng.
Để tạo ra nội dung chất lượng, hữu ích và độc đáo, bạn cần đảm bảo rằng nội dung liên quan đến từ khóa mục tiêu và mang lại giá trị cho người đọc Hãy sắp xếp nội dung theo cấu trúc logic, sử dụng tiêu đề rõ ràng và đoạn văn ngắn để nâng cao khả năng đọc và hiểu bài viết.
Để tối ưu hóa SEO, hãy sử dụng các meta tags như title tag, meta description và meta keywords Title tag là tiêu đề hiển thị trên kết quả tìm kiếm, trong khi meta description cung cấp mô tả ngắn gọn về nội dung trang Việc áp dụng các meta tags này sẽ giúp tăng tỷ lệ nhấp chuột vào trang web từ kết quả tìm kiếm.
Sử dụng URL thân thiện với cấu trúc rõ ràng và chứa từ khóa liên quan giúp người dùng và công cụ tìm kiếm dễ dàng hiểu nội dung trang web chỉ qua địa chỉ URL.
Liên kết nội bộ là yếu tố quan trọng giúp xây dựng cấu trúc rõ ràng giữa các trang trên website Việc tạo ra các liên kết có ý nghĩa không chỉ hỗ trợ người dùng dễ dàng điều hướng mà còn giúp công cụ tìm kiếm hiểu và lập chỉ mục trang web của bạn một cách hiệu quả hơn.
Xây dựng liên kết ngoại vi chất lượng từ các trang web khác đến trang của bạn là rất quan trọng Điều này không chỉ giúp tăng cường uy tín mà còn cung cấp tín hiệu tích cực cho các công cụ tìm kiếm về giá trị của trang web của bạn.
Để nâng cao trải nghiệm người dùng, việc đảm bảo tốc độ tải trang nhanh là rất quan trọng Bạn nên tối ưu hóa hình ảnh, áp dụng caching và nén tệp tin nhằm giảm thiểu thời gian tải trang.
Responsive design ensures that websites are optimized for mobile devices, providing an excellent user experience on smartphones and tablets.
Đặc tả hệ thống
Hình 4.2 Sơ đồ Use-case cho hệ thống Happy Fund
4.2.2.1 Sơ đồ Activity cho Use-case Đăng nhập
4.2.2.2 Sơ đồ Activity cho Use-case Quản lý dự án
4.2.2.3 Sơ đồ Activity cho Use-case Quản lý thanh toán
4.2.2.4 Sơ đồ Activity cho Use-case Quản lý người dùng
4.2.2.5 Sơ đồ Activity cho Use-case Quản lý liên hệ
4.2.2.6 Sơ đồ Activity cho Use-case Đăng kí
4.2.2.7 Sơ đồ Activity cho Use-case Xác thực thông tin
4.2.2.8 Sơ đồ Activity cho Use-case Quản lý dự án cá nhân
4.2.2.9 Sơ đồ Activity cho Use-case Xem dự án
4.2.2.10 Sơ đồ Activity cho Use-case Đánh giá và bình luận
4.2.2.11 Sơ đồ Activity cho Use-case Ủng hộ dự án
4.2.3.1 Sơ đồ Sequence cho Use-case Đăng nhập
4.2.3.2 Sơ đồ Sequence cho Use-case Quản lý dự án
4.2.3.3 Sơ đồ Sequence cho Use-case Quản lý thanh toán
4.2.3.4 Sơ đồ Sequence cho Use-case Quản lý người dùng
4.2.3.5 Sơ đồ Sequence cho Use-case Quản lý liên hệ
4.2.3.6 Sơ đồ Sequence cho Use-case Đăng kí
4.2.3.7 Sơ đồ Sequence cho Use-case Xác thực thông tin
4.2.3.8 Sơ đồ Sequence cho Use-case Quản lý dự án cá nhân
4.2.3.9 Sơ đồ Sequence cho Use-case Xem dự án
4.2.3.10 Sơ đồ Sequence cho Use-case Đánh giá và bình luận
4.2.3.11 Sơ đồ Sequence cho Use-case Ủng hộ dự án
4.2.4.1 Sơ đồ Class hoàn chỉnh
4.2.4.2 Mô tả các thành phần có trong sơ đồ
1 NguoiDung Lớp lưu trữ thông tin người dùng của hệ thống
2 DuAn Lớp lưu trữ thông tin dự án của hệ thống
3 ThanhToan Lớp lưu trữ các thông tin thanh toán
4 DanhGia Lớp lưu trữ các đánh giá của người dùng về dự án
5 BinhLuan Lớp lưu trữ các bình luận của người dùng về dự án
6 HopThu Lớp lưu trữ các thông tin về hộp thư của người dùng
7 Tag Lớp lưu trữ các thể loại của dự án
9 Trạng thái Lưu trữ các trạng thái của người dùng
Bảng 4.1 Mô tả các thành phần trong sơ đồ lớp 4.2.4.3 Mô tả chi tiết các thành phần có trong sơ đồ
STT Lớp Thuộc tính/Phương thức Ý nghĩa
Bài viết này mô tả các thông tin quan trọng của người dùng, bao gồm: id người dùng, tên hiển thị, tài khoản thanh toán, địa chỉ giao hàng cho món quà, số điện thoại liên lạc và trạng thái người dùng Trạng thái này có thể là đã xác thực, đang xác thực, chưa xác thực, online hoặc offline.
BÁO CÁO ĐỒ ÁN 1 70 giaoDich Lưu trữ các thông tin về các lần giao dịch của người dùng duAn Lưu trữ các dự án cúa nhân của người dùng
CapNhatTrangThai() Cập nhật lại trạng thái cho người dùng isXacThuc() Kiểm tra người dùng đã được xác thực chưa
ThanhToan() Thanh toán hóa đơn cho người dùng
Dự án 2 DuAn với mã dự án là Mã của dự án, tên dự án là tenDuAn, đang kêu gọi số vốn soVonGoi Đến nay, số vốn đã kêu gọi thành công là soVonDaGop, trong thời hạn thoiHan Mô tả chi tiết về dự án có thể được tìm thấy trong phần moTa, kèm theo ảnh minh họa anhMinhHoa Dự án thuộc thể loại được chỉ định trong tag.
Show() Hiển thị dự án trên trang
CapNhat() Cập nhật trạng thái của dự án, tiến độ,
3 ThanhToan id Mã thanh toán soTien Số tiền cho lần thanh toán ngayThanhToan Ngày thực hiện thanh toán
BÁO CÁO ĐỒ ÁN 1 71 noiDung Nội dung của thanh toán nguoiChuyen Người dùng thực hiện thanh toán duAn Dự án được thanh toán tiền
HoanTra() Hoàn trả lại tiền cho người dùng
Bài viết này trình bày thông tin về 4 đánh giá, bao gồm mã đánh giá, số sao cho mỗi đánh giá, ngày thực hiện đánh giá, thời gian thực hiện, người thực hiện đánh giá và dự án được đánh giá.
Bài viết này trình bày thông tin về 5 bình luận, bao gồm mã bình luận, nội dung bình luận, ngày và giờ thực hiện bình luận, cùng với tên người thực hiện bình luận và dự án được bình luận.
ChinhSua() Chỉnh sửa bình luận
6 HopThu id Mã hộp thư nguoiDung1 Người dùng sở hữu hộp thư nguoiDung2 Người dùng sở hữu hộp thư
BÁO CÁO ĐỒ ÁN 1 72 hienThi() Hiển thị tất cả tin nhắn trong hộp thư
Xoa() Thực hiện xóa hộp thư
Trong hệ thống quản lý tin nhắn, mỗi tin nhắn được xác định bởi mã tin nhắn (id) và mã hộp thư (Mã hộp thư) Nội dung của tin nhắn (noiDung) chứa thông điệp cần truyền tải, trong khi trạng thái tin nhắn (trangThai) cho biết tình trạng hiện tại, bao gồm các trạng thái như đang gửi, đã gửi, đã nhận và đã xem Chức năng hienThi() được sử dụng để hiển thị tin nhắn một cách trực quan.
PhanLoai() Phân chia dự án theo tag
9 TrangThai id Mã trạng thái tenTrangThai Tên trạng thái PhanLoai() Phân loại trạng thái
Bảng 4.2 Mô tả chi tiết các thành phần trong sơ đồ lớp
Thiết kế hệ thống
Hình 4.2 Sơ đồ hệ thống màn hình cho Người dùng
Hình 4.3 Sơ đồ hệ thống màn hình cho Admin
4.3.2 Sơ đồ thiết kế chi tiết từng màn hình
Hình 4.4 Giao diện trang chủ
Hình 4.5 Giao diện đăng nhập
Hình 4.6 Giao diện đăng kí
Hình 4.7 Giao diện Quản lý dự án
Hình 4.8 Giao diện Quản lý dự án kèm chức năng lọc
Hình 4.9 Giao diện liên hệ chủ website
Hình 4.10 Giao diện Quản lý dự án - admin
Hình 4.11 Giao diện quản lý tài khoản - 1
Hình 4.12 Giao diện quản lý tài khoản - 2
Hình 4.13 Giao diện quản lý tài khoản - 3
Hình 4.15 Giao diện Dự án – Chi tiết
Hình 4.16 Giao diện dự án – cập nhật
Hình 4.17 Giao diện Dự án – Đã ủng hộ
Hình 4.18 Giao diện Dự án – Đánh giá
Hình 4.19 Giao diện Thêm dự án mới
Hình 4.20 Giao diện cập nhật tiến độ dự án
Hình 4.21 Giao diện chỉnh sửa dự án
Hình 4.22 Giao diện Trang chủ của Admin
Hình 4.23 Giao diện Quản lý người dùng - Admin
Hình 4.24 Giao diện quản lý dự án - Admin
Hình 4.25 Giao diện Quản lý thanh toán - Admin
Hình 4.26 Giao diện quản lý dự án đang chờ - Admin
Hình 4.27 Giao diện quản lý người dùng – chi tiết
Hình 4.28 Giao diện quản lý dự án – chi tiết – Admin
Hình 4.29 Giao diện Thêm dự án mới – Admin
Hình 4.30 Giao diện thêm người dùng mới – Admin
Hình 4.31 Giao diện thanh toán