Nhận thấy được nhu cầu đó và với những kiến thức được trang bị tại trường đại học Công Nghệ Thông Tin, ĐHQG thành phố Hồ Chí Minh với sự hướng dẫn của thầy Nguyễn Tấn Toàn, nhóm chúng em
GIỚI THIỆU TỔNG QUAN
Lý do chọn đề tài
Trong thời đại của sự hợp tác mạnh mẽ, việc tìm kiếm đội nhóm phù hợp trở thành một thách thức đối với nhiều người tìm kiếm hay tổ chức và doanh nghiệp
Dự án ngày càng trở nên phức tạp, đòi hỏi sự đa dạng trong đội nhóm với các kỹ năng và chuyên môn khác nhau Tuy nhiên, quá trình tìm kiếm đội nhóm vẫn gặp khó khăn do sự phân tán của nguồn lực và thông tin Nhìn chung, đề tài có một cơ hội lớn để phát triển một giải pháp đáp ứng những thách thức và nhu cầu đang tồn tại trong môi trường làm việc và quản lý dự án ngày nay
Nhận thấy được nhu cầu đó và với những kiến thức được trang bị tại trường đại học Công Nghệ Thông Tin, ĐHQG thành phố Hồ Chí Minh với sự hướng dẫn của thầy Nguyễn Tấn Toàn, nhóm chúng em quyết định xây dựng “Hệ thống hỗ trợ tìm kiếm đội nhóm, dự án” nhằm đáp ứng những nhu cầu của người dùng và phục vụ cho đồ án môn học lần này tại trường Thông qua đồ án lần này, nhóm chúng em mong rằng sẽ được học hỏi và trao dồi thêm được nhiều kinh nghiệm và kiến thức thực tế trong quá trình xây dựng một website thực tế, biết được thêm nhiều kiến thức mới về ngôn ngữ lập trình, công nghệ, cơ sở dữ liệu, quy trình triển khai một dự án website v.v.
Mục tiêu của đề tài
Mục tiêu của đề tài là xây dựng và phát triển một hệ thống tự động và hiệu quả, hỗ trợ quá trình tìm kiếm đội nhóm, dự án, thỏa mãn các yếu tố:
- Xây dựng website hỗ trợ tìm kiếm đội nhóm, dự án Đồng thời, cho phép các tổ chức tạo và đăng tải những dự án, vị trí nhằm thu hút người dùng đăng ký tham gia
- Giao diện thân thiện, trực quan, dễ sử dụng tối ưu trải nghiệm người dùng
- Độ tin cậy, bảo mật cao
- Đưa ra báo cáo, thống kê, cập nhật dữ liệu nhanh chóng, chính xác
Chúng em hy vọng đề tài sẽ không chỉ giải quyết một vấn đề thực tế mà còn tạo ra một giải pháp linh hoạt và hiệu quả cho môi trường làm việc và quản lý dự án hiện đại Đồng thời, nghiên cứu sâu hơn các công nghệ được sử dụng trong đề tài, qua đó làm hành trang phục vụ cho việc thực hiện các đồ án môn học khác và cho công việc trong tương lai sau này
Đối tượng
Hệ thống được xây dựng hướng đến nhiều đối tượng người dùng tùy thuộc vào mục đích của người dùng, chủ yếu hướng đến hai loại người dùng chính, Dưới đây là mô tả chi tiết về đối tượng của đề tài:
- Người tìm kiếm dự án, đội nhóm: Những người đang tìm kiếm dự án để tham gia, bao gồm freelancer, nhà phân tích, chuyên gia trong các lĩnh vực khác nhau Họ sẽ sử dụng hệ thống để tìm kiếm và đăng ký tham gia vào các dự án phù hợp với kỹ năng và mong muốn của họ
- Các tổ chức muốn tìm kiếm thành viên: Những tổ chức muốn tìm kiếm thành viên tham gia vào các dự án, hoặc vị trí Họ sẽ sử dụng hệ thống để tạo và đăng tải những dự án, vị trí họ đang cần với những kỹ năng phù hợp.
Công nghệ sử dụng
- Công cụ thiết kế UI: Figma
- Công cụ vẽ sơ đồ: draw.io
- Front-end: framework ReactJs với IDE là Visual Studio Code
- Back-end: framework Spring Boot với IDE là IntelliJ IDEA CE
- Cơ sở dữ liệu: MongoDB
- Công cụ quản lý source code: Git, Github
CƠ SỞ LÝ THUYẾT
ReactJS
ReactJS là một opensource được phát triển bởi Facebook, ra mắt vào năm
2013, bản thân nó là một thư viện Javascript được dùng để để xây dựng các tương tác với các thành phần trên website Một trong những điểm nổi bật nhất của ReactJS đó là việc render dữ liệu không chỉ thực hiện được trên tầng Server mà còn ở dưới Client nữa
Nhìn chung, các tính năng và điểm mạnh của ReactJS thường đến từ việc tập trung vào các phần riêng lẻ Do đó, khi làm việc với web thay vì toàn bộ ứng dụng của một trang web bằng ReactJS, các nhà phát triển tính năng có thể tách rời và chuyển đổi giao diện người dùng từ những cách phức tạp và biến nó thành những phần đơn giản hơn Điều này có nghĩa là kết xuất dữ liệu không chỉ ở phía máy chủ Thực hiện với các vị trí, nhưng bạn cũng có thể thực hiện tại vị trí khách hàng khi sử dụng ReactJS
Trọng tâm chính của bất kỳ website cơ bản nào đó là những HTML documents Trình duyệt Web đọc những document này để hiển thị nội dung của website trên máy tính, tablet, điện thoại của bạn Trong suốt quá trình đó, trình duyệt sẽ tạo ra một thứ gọi là Document Object Model (DOM) – một tree đại diện cho cấu trúc website được hiển thị như thế nào Lập trình viên có thể thêm bất kỳ dynamic content nào vào những dự án của họ bằng cách sử dụng ngôn ngữ JavaScript để thay đổi cây DOM
JSX (nói ngắn gọn là JavaScript extension) là một React extension giúp chúng ta dễ dàng thay đổi cây DOM bằng các HTML-style code đơn giản Và kể từ lúc ReactJS browser hỗ trợ toàn bộ những trình duyệt Web hiện đại, bạn có thể tự tin sử dụng JSX trên bất kỳ trình duyệt nào mà bạn đang làm việc
Nếu không sử dụng ReactJS (và JSX), website sẽ sử dụng HTML để cập nhật lại cây DOM cho chính bản nó (quá trình thay đổi diễn ra tự nhiên trên trang mà người dùng không cần phải tải lại trang), cách làm này sẽ ổn cho các website nhỏ, đơn giản, static website Nhưng đối với các website lớn, đặc biệt là những website thiên về xử lý các tương tác của người dùng nhiều, điều này sẽ làm ảnh hưởng performance website cực kỳ nghiêm trọng bởi vì toàn bộ cây DOM phải reload lại mỗi lần người dùng nhấn vào tính năng yêu cầu phải tải lại trang)
Tuy nhiên, nếu sử dụng JSX thì bạn sẽ giúp cây DOM cập nhật cho chính DOM đó, ReactJS đã khởi tạo một thứ gọi là Virtual DOM (DOM ảo) Virtual DOM (bản chất của nó theo đúng tên gọi) là bản copy của DOM thật trên trang đó, và ReactJS sử dụng bản copy đó để tìm kiếm đúng phần mà DOM thật cần cập nhật khi bất kỳ một sự kiện nào đó khiến thành phần trong nó thay đổi (chẳng hạn như user nhấn vào một nút bất kỳ)
2.1.4 Ưu – nhược điểm Ưu điểm:
- Reactjs cực kì hiệu quả: Reactjs tạo ra cho chính nó DOM ảo – nơi mà các component thực sự tồn tại trên đó Điều này sẽ giúp cải thiện hiệu suất rất nhiều Reactjs cũng tính toán những thay đổi nào cần cập nhật len DOM và chỉ thực hiện chúng Điều này giúp Reactjs tránh những thao tác cần trên DOM mà nhiều chi phí
- Reactjs giúp việc viết các đoạn code JS dễ dàng hơn: Nó dung cú pháp đặc biệt là JSX (Javascript mở rộng) cho phép ta trộn giữa code HTML và Javascript Ta có thể them vào các đoạn HTML vào trong hàm render mà không cần phải nối chuỗi Đây là đặc tính thú vị của Reactjs Nó sẽ chuyển đổi các đoạn HTML thành các hàm khởi tạo đối tượng HTML bằng bộ biến đổi JSX
- Nó có nhiều công cụ phát triển: Khi bạn bắt đầu Reactjs, đừng quên cài đặt ứng dụng mở rộng của Chrome dành cho Reactjs Nó giúp bạn debug code dễ dàng hơn Sau khi bạn cài đặt ứng dụng này, bạn sẽ có cái nhìn trực tiếp vào virtual DOM như thể bạn đang xem cây DOM thông thường
- Render tầng server: Một trong những vấn đề với các ứng dụng đơn trang là tối ưu SEO và thời gian tải trang Nếu tất cả việc xây dựng và hiển thị trang đều thực hiện ở client, thì người dung sẽ phải chờ cho trang được khởi tạo và hiển thị lên Điều này thực tế là chậm Hoặc nếu giả sử người dung vô hiệu hóa Javascript thì sao? Reactjs là một thư viện component, nó có thể vừa render ở ngoài trình duyệt sử dụng DOM và cũng có thể render bằng các chuỗi HTML mà server trả về
- Làm việc với vấn đề test giao diện: Nó cực kì dễ để viết các test case giao diện vì virtual DOM được cài đặt hoàn toàn bằng JS
- Hiệu năng cao đối với các ứng dụng có dữ liệu thay đổi liên tục, dễ dàng cho bảo trì và sửa lỗi
- Reactjs chỉ phục vụ cho tầng View React chỉ là View Library nó không phải là một MVC framework như những framework khác Đây chỉ là thư viện của Facebook giúp render ra phần view Vì thế React sẽ không có phần Model và Controller, mà phải kết hợp với các thư viện khác React cũng sẽ không có 2- way binding hay là Ajax
- Tích hợp Reactjs vào các framework MVC truyền thống yêu cầu cần phải cấu hình lại
- React khá nặng nếu so với các framework khác React có kích thước tương tương với Angular (Khoảng 35kb so với 39kb của Angular) Trong khi đó Angular là một framework hoàn chỉnh
- Khó tiếp cận cho người mới học Web.
Spring Boot
Spring là một Java framework siêu to và khổng lồ, làm được đủ mọi thứ
Nó được chia thành nhiều module, mỗi module làm một chức năng, ví dụ Spring Core, Web, Data access, AOP, Spring được xây dựng dựa trên 2 khái niệm nền tảng là Dependency injection và AOP (Aspect Oriented Programming)
Spring Boot là một dự án phát triển bởi JAV (ngôn ngữ java) trong hệ sinh thái Spring framework Nó giúp cho các lập trình viên chúng ta đơn giản hóa quá trình lập trình một ứng dụng với Spring, chỉ tập trung vào việc phát triển business cho ứng dụng
Spring Boot nổi bật trong số các framework khác vì nó cung cấp cho các kỹ sư phần mềm cấu hình nhanh, xử lý hàng loạt, quy trình làm việc hiệu quả và nhiều công cụ khác nhau, giúp phát triển các ứng dụng dựa trên Spring mạnh mẽ và có thể mở rộng
Spring khá mạnh mẽ nhưng việc cấu hình (config) dự án quá phức tạp
Do đó Spring boot ra đời Spring boot có nhiều thư viện có sẵn và cấu trúc code cũng thành chuẩn mực, nên không cần quá quan tâm phải viết code thế nào cho tốt nữa, thay vào đó sẽ tập trung vào logic hơn
2.2.2 Đặc tính cơ bản của spring boot
Vì là một framework RAD nên Spring Boot mang trong nó nhiều đặc tính nổi trội phục vụ cho việc phát triển và cài đặt nhanh một ứng dụng chạy trên Java Đặc tính đầu tiên có thể kể đến đó là Spring Boot cung cấp sẵn cho chúng ta một lớp có chứa hàm main và được hoạch định làm điểm mở đầu cho toàn bộ chương trình Lớp này được đặt tên là Spring Application, nó giúp khởi chạy các ứng dụng từ hàm main, khi chạy nó chúng ta chỉ cần gọi phương thức run
Spring Boot giúp giảm bớt độ phức tạp trong việc cấu hình ứng dụng trong trường hợp chúng ta sử dụng nhiều môi trường Với Profiles, Spring Boot cung cấp cho người sử dụng một cách phân chia cấu hình cho từng môi trường Các bên thực hiện việc cấu hình ứng dụng hoàn toàn có thể được đánh dấu profiles để giới hạn thời điểm hay môi trường mà nó sẽ được tải các cấu hình lên ứng dụng
Externalized Configurations: Externalized Configuration cho phép bạn có khả năng cấu hình được từ bên ngoài Vì vậy, một ứng dụng được xây dựng có thể được vận hành và hoạt động trên nhiều môi trường khác nhau Để thực hiện Externalized Configuration bạn có thể sử dụng các file properties, YAML, các tham số command line hay các biến môi trường Đặc tính cuối cùng mà bạn nên biết đó là tất cả các tính năng log nội bộ của Spring Boot đều sử dụng common logging Chúng được quản lý một cách mặc định, vì vậy không nên sửa các dependency logging nếu không được yêu cầu
2.2.3 Ưu – nhược điểm Ưu điểm:
- Phát triển các ứng dụng dựa trên Spring một cách tiết kiệm thời gian và dễ dàng
- Tự động cấu hình tất cả các components cho một ứng dụng Spring cấp sản xuất
- Các máy chủ nhúng được tạo sẵn (Tomcat, Jetty và Undertow), dẫn đến việc triển khai ứng dụng được tăng tốc và hiệu quả hơn
- Điểm cuối HTTP, cho phép nhập các tính năng bên trong ứng dụng như chỉ số, tình trạng sức khỏe, v.v
- Không có cấu hình XML
- Nhiều lựa chọn bổ sung, hỗ trợ nhà phát triển làm việc với cơ sở dữ liệu được nhúng và trong bộ nhớ
- Dễ dàng truy cập cơ sở dữ liệu và các dịch vụ hàng đợi như MySQL, Oracle, MongoDB, Redis, ActiveMQ và các dịch vụ khác
- Tích hợp trơn tru với hệ sinh thái Spring
- Cộng đồng lớn và rất nhiều hướng dẫn, tạo điều kiện cho giai đoạn làm quen
- Thiếu kiểm soát Do style cố định, Spring Boot tạo ra nhiều phụ thuộc không được sử dụng dẫn đến kích thước tệp triển khai lớn
- Quá trình chuyển đổi dự án Spring cũ hoặc hiện có thành các ứng dụng Spring Boot nhiều khó khăn và tốn thời gian
- Không thích hợp cho các dự án quy mô lớn Hoạt động liên tục với các microservices, theo nhiều nhà phát triển, Spring Boot không phù hợp để xây dựng các ứng dụng nguyên khối.
Tailwind CSS
Tailwind CSS là một CSS framework theo phương hướng utility-first, nghĩa là các class trong framework này thuộc dạng “công cụ”, và ta cần kết hợp nhiều class khác nhau để đạt được thiết kế mong muốn
Nó khác với CSS framework như Bootstrap, chứa các class với thiết kế sẵn có, ta cần phải ghi đè CSS nếu thiết kế sẵn có đó không giống với ý muốn Cách tiếp cận này cho phép ta xây UI mà không cần hoặc động rất ít đến file CSS, ta chỉ cần sử dụng các utility class cung cấp bới Tailwind CSS Điều này có một nhược điểm là do phải kết hợp nhiều class khác nhau, nó khiến cho thẻ HTML trở nên dài dòng và khó đọc Điều này mặc dù có phần đúng nhưng đối với bản thân em, sau khi đã hiểu cú pháp sử dụng CSS framework này thì việc đọ class HTML trở nên rất dễ đọc hơn là giấu hết mọi thứ trong một class duy nhất, ta có thể hình dung được giao diện sẽ nhìn như thế nào chỉ qua việc đọc các utility class
Các utility class trong Tailwind CSS đều có thể được áp dụng ở trạng thái nào đó mà ta muốn, ví dụ nếu ta muốn chữ có màu đỏ khi được hover, ta chỉ cần cho thẻ đó class là “hover:text-red” Các pseudo-class cũng có trong Tailwind CSS như focus, focus-within, group-hover, active, disabled,
Ta còn có thể gắn vào utility class tiền tố “dark:” để áp dụng class đó ở dạng dark mode
Tính năng cho phép ta tạo các class tùy ý bằng cách đặt tên mà không cần phải định nghĩa nó trong file CSS hay trong file config của Tailwind CSS Ví dụ, ta muốn có class làm cho width của thẻ HTML có giá trị là 143px, ta có thể ghi tên class “w-[143px]” vào thẻ HTML, class này sẽ tự động được tạo mà không cần ta phải định nghĩa nó
Ngoài ra tính năng này còn giúp cho quá trình code development trở nên nhanh gọn hơn do mọi thứ được chạy ngay mỗi khi có thay đổi, ta không cần phải tự tay chạy lệnh build CSS
Các utility class trong Tailwind CSS đều có thể được áp dụng ở các breakpoint khác nhau bằng cách thêm ký hiệu break point trước utility class, điều này giúp ta xây dựng UI responsive 1 cách dễ dàng mà không cần phải động đến file CSS Mặc định có 5 breakpoint: sm, md, lg, xl, 2xl tương ứng với từng độ lớn khác nhau
Hình 2.4 Các breakpoint mặc định trong Tailwind CSS
Tất nhiên, ta có thể thêm các breakpoint khác mà ta muốn và có thể áp dụng breakpoint tự tạo đó cho các utility class giống như breakpoint mặc định
Hình 2.5 Ví dụ về cách sử dụng breakpoint trong Tailiwnd CSS
2.3.5 Mở rộng và thay đổi
Ta có thể thêm, bớt hoặc thêm các class trong Tailwind CSS, thậm chí ta có thể sửa class sẵn có bằng cách chỉnh sửa file “tailwind.config.js”
Hình 2.6 Minh họa chỉnh sửa file config Tailwind CSS
2.3.6 Ưu – nhược điểm Ưu điểm:
- Xây dựng UI rất tiện do ta không cần phải viết CSS, chỉ cần sử dụng các class có sẵn trong Tailwind CSS, giúp đẩy nhanh tiến độ xây dựng ứng dụng
- Không phải lo về tính compatibility của class so với các browser khác nhau
- Cách sử dụng Tailwind CSS không tuân theo “best practice” khi viết class CSS, dẫn đến nhiều lập trình viên không đồng tình với cách Tailwind CSS được thiết kế Việc phải gán quá nhiều class khác nhau để thiết kế một UI nào đó làm cho thẻ nhìn dài dòng, việc đây là lợi thế hay điểm yếu là điều còn nhiều bàn cãi
- Không phù hợp cho project không sử dụng component framework, do sẽ phải lặp đi lặp lại hàng loạt tên class cho những thẻ có UI giống nhau.
MongoDB
MongoDB, được biết đến như cơ sở dữ liệu NoSQL phổ biến nhất, là cơ sở dữ liệu định hướng tài liệu mã nguồn mở Thuật ngữ 'NoSQL' có nghĩa là 'không có mối quan hệ' (Non-relational) Điều đó có nghĩa là MongoDB không dựa trên cấu trúc cơ sở dữ liệu quan hệ giống như bảng mà cung cấp một cơ chế hoàn toàn khác để lưu trữ và truy xuất dữ liệu Định dạng lưu trữ này được gọi là BSON (tương tự như định dạng JSON)
CSDL SQL sẽ lưu trữ dữ liệu ở định dạng bảng Dữ liệu này được lưu trữ trong một mô hình dữ liệu được xác định trước, điều này sẽ không linh hoạt lắm đối với các ứng dụng đang phát triển nhanh trong thế giới thực ngày nay Các ứng dụng hiện đại cần phải được kết nối với nhau, xã hội hóa và có tính tương tác hơn Các ứng dụng ngày nay đang ngày càng lưu trữ nhiều dữ liệu và các dữ liệu đó đang cần phải được truy cập với tốc độ cao hơn
Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) không phải là lựa chọn chính xác khi xử lý dữ liệu lớn do thiết kế của chúng không thể mở rộng theo quy mô ngang Nếu CSDL chạy trên một máy chủ thì nó sẽ đạt đến giới hạn mở rộng Cơ sở dữ liệu NoSQL có khả năng mở rộng hơn và cung cấp hiệu suất vượt trội MongoDB là một cơ sở dữ liệu NoSQL có thể mở rộng quy mô bằng cách thêm ngày càng nhiều máy chủ và tăng hiệu suất với mô hình tài liệu linh hoạt của nó
2.4.2 Các tính năng chính của MongoDB
- Document Oriented: MongoDB lưu trữ subject chính với số lượng documents tối thiểu chứ không phải bằng cách chia nó thành nhiều cấu trúc quan hệ như RDBMS
- Indexing: Nếu không lập chỉ mục, CSDL sẽ không truy vấn hiệu quả vì phải quét mọi tài liệu của tập hợp để chọn những tài liệu phù hợp cho việc truy vấn đó Vì vậy, để tìm kiếm hiệu quả, Indexing là điều bắt buộc và MongoDB sử dụng nó để xử lý khối lượng dữ liệu khổng lồ trong thời gian rất ngắn
- Scalability: MongoDB mở rộng quy mô theo chiều ngang bằng cách sử dụng sharding (phân vùng dữ liệu trên các máy chủ khác nhau)
- Replication and High Availability: MongoDB tăng tính khả dụng của dữ liệu với nhiều bản sao dữ liệu trên các máy chủ khác nhau Bằng cách cung cấp bản dự phòng, nó bảo vệ cơ sở dữ liệu khỏi các lỗi phần cứng
- Aggregation: Các hoạt động tổng hợp xử lý các bản ghi dữ liệu và trả về kết quả tính toán Nó tương tự như mệnh đề GROUPBY trong SQL
MongoDB hiện cung cấp hỗ trợ trình điều khiển chính thức cho tất cả các ngôn ngữ lập trình phổ biến như C, C ++, Rust, C #, Java, Node.js, Perl, PHP, Python, Ruby, Scala, Go và Erlang
MongoDB đã được sử dụng làm phần mềm phụ trợ bởi một số trang web và dịch vụ lớn bao gồm EA, Cisco, Shutterfly, Adobe, Ericsson, Craigslist, eBay và Foursquare.
THIẾT KẾ KIẾN TRÚC
Kiến trúc phát triển phần mềm
Nhóm chúng em lựa chọn kiến trúc Micro service để ứng dụng vào phát triển phần mềm này
Microservices là một kỹ thuật phát triển phần mềm, một biến thể thuộc kiến trúc hướng dịch vụ (SOA), cấu trúc một ứng dụng như một tập hợp các dịch vụ được ghép lỏng lẻo Microservices là một thiết kế kiến trúc dùng để xây dựng một ứng dụng phân tán thông qua các container Mỗi chức năng của ứng dụng hoạt động như một dịch vụ độc lập, do đó kiến trúc này được đặt tên mà micro-service Thông qua kiến trúc này, mỗi dịch vụ có thể dễ dàng mở rộng quy mô và cập nhật mà không làm gián đoạn hay ảnh hưởng bất kỳ dịch vụ nào khác trong ứng dụng
Mục đích lựa chọn kiến trúc
- Hoạt động độc lập, linh hoạt, có tính chuyên biệt cao: Do không bị ràng buộc bởi những yêu cầu chung, nên mỗi service nhỏ có thể tự do lựa chọn công nghệ, nền tảng phù hợp
- Nâng cao khả năng xử lý lỗi: Với mô hình này, một service bất kỳ nào gặp lỗi sẽ không gây ra ảnh hưởng đối với những bộ phận còn lại Việc khắc phục lỗi trên quy mô hẹp cũng sẽ được tiến hành một cách dễ dàng
- Thuận tiện trong nâng cấp, mở rộng: Tương tự như trường hợp xử lý lỗi, việc nâng cấp, bảo trì service hoàn toàn độc lập sẽ không làm gián đoạn quá trình vận hành của cả phần mềm Nhờ vậy, những phiên bản mới có thể được cập nhật thường xuyên
- Đơn giản hóa trong quản lý và kiểm thử: Với từng service nhỏ, các bước quản lý, tính toán và kiểm soát, xử lý lỗi sẽ trở nên đơn giản và nhanh chóng hơn so với cả phần mềm.
THIẾT KẾ HỆ THỐNG
Sơ đồ Use-case
4.1.1 Sơ đồ Use-case role Seeker
Hình 4.1 Sơ đồ Use-case role Seeker
4.1.2 Sơ đồ Use-case role Organizer
Hình 4.2 Sơ đồ Use-case role Organizer
4.1.3 Sơ đồ Use-case role Admin
Hình 4.3 Sơ đồ Use-case role Admin
Danh sách vai trò
Bảng 4.1 Danh sách vai trò của hệ thống
STT Tên vai trò Ý nghĩa/ Ghi chú
1 Seeker Cho phép tìm kiếm thông tin về các Dự án, Vacancy, Tổ chức theo nhu cầu của bản thân và hỗ trợ ứng tuyển vào các Vacancy Đồng thời quản lý thông tin về hồ sơ, resume cá nhân, các danh mục yêu thích và các Vacancy đã ứng tuyển
2 Organizer Cho phép tạo, đăng tải và quản lý các Dự án, Vacancy đang mong muốn mọi người (Seeker) tham gia vào Đồng thời, quản lý thông tin hồ sơ cá nhân, danh mục yêu thích (Favourite Seeker) và tìm kiếm người ứng tuyển phù hợp (Applicants)
3 Admin Cấp quyền xét duyệt cho các Vacancy, Dự án được tạo bởi
Organizer Đồng thời quản lý, xử lý các báo cáo của Vacancy, quản lý các lĩnh vực của Dự án và theo dõi lịch sử thanh toán.
Danh sách chức năng
Bảng 4.2 Danh sách chức năng của hệ thống
Vai trò STT Tên chức năng Ý nghĩa
1 Đăng nhập Đăng nhập vào hệ thống / Quên mật khẩu / Xác thực tài khoản / Đăng xuất khỏi tài khoản
2 Đăng ký Đăng ký tài khoản Seeker
3 Quản lý hồ sơ cá nhân
Cập nhật profile cá nhân / Đổi mật khẩu / Cập nhật resume cá nhân / Quản lý CV upload
Xem số lượng lượt xem profile / Xem thông báo về trạng thái ứng tuyển / Xem Vaccancy đã ứng tuyển
5 Tìm kiếm đội nhóm, tổ chức, công ty
Xem chi tiết đội nhóm, tổ chức / Cập nhật
Tổ chức yêu thích / Liên hệ với Tổ chức / Xem danh mục dự án của Tổ chức
Xêm chi tiết Dự án / Cập nhật Dự án yêu thích / Xem nhân sự dự án / Xem chi tiết nhân sự dự án / Share dự án / Xem danh mục Vacancy của Dự án
7 Tìm kiếm Vacancy Xem chi tiết Vacancy / Share Vacancy / Ứng tuyển vào Vacancy / Báo cáo
Vacancy vi phạm / Cập nhật Vacancy yêu thích /
8 Xem danh mục yêu thích
Xem Tổ chức yêu thích / Xem Dự án yêu thích / Xem Vacancy yêu thích
1 Đăng nhập Đăng nhập vào hệ thống / Quên mật khẩu / Xác thực tài khoản / Đăng xuất khỏi tài khoản
2 Đăng ký Đăng ký tài khoản Organizer
3 Quản lý hồ sơ cá nhân Cập nhật profile cá nhân / Đổi mật khẩu
Xem người ứng tuyển gần đây / Xem số lượng Dự án, Vacancy, số lượt xem profile/ Xem thông báo mới
5 Tạo mới Vacancy Tạo mới Vaccancy để yêu cầu xét duyệt
Cập nhật Vacancy / Tra cứu Vacancy / Xóa Vacancy / Thanh toán nếu đã được duyệt / Xem chi tiết Vacancy / Quản lý Vacancy đang dang dở / Quản lý nhân sự Vacancy / Mời tham gia lại / Block thành viên / Xóa thành viên
7 Quản lý người ứng tuyển
Từ chối ứng viên / Chấp nhậm ứng viên / Xem danh sách người ứng tuyển / Xem chi tiết ngừơi ứng tuyển
Xem chi tiết ngừơi ứng tuyển / Gửi mail giới thiệu về Dự án, Vacancy của tổ chức / Cập nhật người ứng tuyển yêu thích / Liên hệ với ứng viên
9 Xem danh mục seeker yêu thích
Xem chi tiết thông tin người ứng tuyển / Cập nhật người ứng tuyển yêu thích
Admin 1 Đăng nhập Đăng nhập vào hệ thống / Quên mật khẩu người dùng / Đổi mật khẩu
Thêm ngành nghề mới / Cập nhật ngành nghề / Tra cứu ngành nghề / Xóa ngành nghề
Xem Project, Vacancy, Tổ chức đăng ký gần đây / Doanh thu tháng / Xem thông báo giao dịch gần đây / Số lượng Dự án, Vacancy
Cập nhật trạng thái hoạt động của Tổ chức / Xem chi tiết Tổ chức / Tìm kiếm Tổ chức / Xem danh mục Dự án của Tổ chức
5 Quản lý Dự án được tạo
Xét duyệt Dự án / Xem chi tiết Dự án / Tìm kiếm dự án / Cập nhật trạng thái của dự án / Xem danh mục Vacancy của dự án
6 Quản lý Vacancy được tạo
Tìm kiếm vacancy / Xem chi tiết Vacancy / Xét duyệt vacancy / Cập nhật trạng thái block của vacancy
7 Quản lý báo cáo của Vacancy đã upload
Tìm kiếm Vacancy bị báo cáo / Xem danh sách báo cáo của Vacancy / Cập nhật trạng thái block của vacancy.
THIẾT KẾ DỮ LIỆU
Mô hình quan hệ
Hình 5.1 Mô hình quan hệ của hệ thống
Danh sách các bảng
Bảng 5.1 Danh sách các bảng
STT Bảng Ý nghĩa/ Ghi chú
1 PROJECT Thể hiện thông tin của project
2 VACANCY Thể hiện thông tin của một ví trí cần tuyển người của một dự án
3 USER Thể hiện thông tin của người dùng ứng dụng
4 SEEKER Kế thừa từ bảng USER, thể hiện thông tin của người tìm kiếm dự án
5 ORGANIZER Kế thừa từ bảng USER, thể hiện thông tin của người tìm kiếm đội nhóm
6 CV Thể hiện thông tin cơ bản của một file được đăng tải
7 USERSKILL Thể hiện thông tin kĩ năng của người tìm việc
8 SKILL Thể hiện thông tin các kĩ năng có trên thực tế
9 BACKGROUND Thể hiện thông tin học vấn của người tìm kiếm dự án
10 UNIVERSITY Thể hiện thông tin về các trường đại học
11 EXPERIENCE Thể hiện thông tin về kinh nghiệm làm việc của người tìm kiếm dự án
12 OCCUPATION Thể hiện thông tin về các lĩnh vực trên thực tế
13 FIELD Thể hiện thông tin về các lĩnh vực của phía tạo dự án
14 SOCIAL NETWORK Thể hiện thông tin về các trang mạng xã hội của người dùng ứng dụng
15 FAVOURITEUSER Thể hiện các thông tin những người yêu thích một người dùng
16 SHORTLISTEDUSER Thể hiện thông tin về những người mà một người dùng quan tâm
17 NOTIFICATION Thể hiện thông tin về các thông báo mà một người dùng nhận được
18 PARTICIPANTS Thể hiện thông tin về những người tham gia vào dự án
19 APPLICANT Thể hiện thông tin về những người ứng tuyển vào dự án
20 REPORT Thể hiện thông tin về các báo cáo của những người tìm kiếm đội nhóm về dự án
21 PROJECTPAYMENT Thể hiện thông tin thanh toán của một dự án
22 PAYMENTDETAIL Thể hiện thông tin chi tiết thanh toán của một dự án
Mô tả từng bảng dữ liệu
STT Tên trường Kiểu dữ liệu Mô tả
1 projectId string Mã dự án
2 projectName string Tên dự án
3 description string Mô tả của dự án
4 maxParticipants int Số lượng người tham gia tối đa
5 socialNetworkLink string Đường dẫn chia sẻ cho dự án
6 startDate Date Ngày bắt đầu dự án
7 duration int Thời gian kéo dài của dự án theo đơn vị thời gian period
8 Period string Đơn vị thời gian kéo dài dự án
9 Status string Trạng thái hoạt động của dự án
10 budget long Ngân sách của dự án
STT Tên trường Kiểu dữ liệu Mô tả
1 vacancyId string Mã vị trí tuyển
2 projetcId string Mã dự án
3 vacancName string Tên vị trí tuyển
4 maxRequired int Số lượng yêu cầu tối đa
5 Location string Địa chỉ của vị trí tuyển
6 expectedTime date Thời gian kéo dài của vị trí tuyển
7 expectedSalary long Mức lương dự kiến của vị trí tuyển theo đơn vị salaryUnit
8 salaryUnit string Đơn vị tính lương
9 description string Mô tả về vị trí tuyển
STT Tên trường Kiểu dữ liệu Mô tả
1 userId string Mã người dùng
2 fullName string Tên người dùng
3 userName string Tên đăng nhập của tài khoản người dùng
4 Password string Mật khẩu của tài khoản người dùng
5 userType string Loại người dùng
6 isVerify boolean Tình trạng xác thực tài khoản của người dùng
7 phoneNumber string Số điện thoại của người dùng
8 Email string Email của người dùng
9 dayOfBirth date Ngày sinh của người dùng
10 website string Website của người dùng
11 description string Mô tả về bản thân của người dùng
12 address string Địa chỉ của người dùng
13 isActive boolean Trạng thái họat động của người dùng
STT Tên trường Kiểu dữ liệu Mô tả
1 userId string Mã người dùng
2 expectSalary string Mức lương mong muốn của người dùng
STT Tên trường Kiểu dữ liệu Mô tả
1 userId string Mã người dùng
2 teamSize string Số lượng thành viên của tổ chức
STT Tên trường Kiểu dữ liệu Mô tả
2 userId string Mã người dùng
3 cvLink string Đường dẫn lưu thông tin cơ bản của file CV
STT Tên trường Kiểu dữ liệu Mô tả
1 userId string Mã người dùng
2 skillId string Mã kỹ năng
STT Tên trường Kiểu dữ liệu Mô tả
1 skillId string Mã kỹ năng
2 skillName string Tên kỹ năng
STT Tên trường Kiểu dữ liệu Mô tả
1 backgroundId string Mã học vấn của người dùng
2 userId string Mã người dùng
3 universityId string Mã trường đại học
4 description string Mô tả về học vấn người dùng
STT Tên trường Kiểu dữ liệu Mô tả
1 universityId string Mã trường đại học
2 universityName string Tên trường đại học
STT Tên trường Kiểu dữ liệu Mô tả
1 experienceId string Mã kinh nghiệm của người dùng
2 userId string Mã người dùng
3 occupationId string Mã lĩnh vực người dùng
4 startYear int Năm bắt đầu của kinh nghiệm người dùng
5 endYear int Năm kết thúc của kinh nghiệm người dùng
6 description string Mô tả về kinh nghiệm người dùng
7 organizerName string Tên tổ chức người dùng đã tham gia
STT Tên trường Kiểu dữ liệu Mô tả
1 occupationId string Mã lĩnh vực
2 occupationName string Tên lĩnh vực
STT Tên trường Kiểu dữ liệu Mô tả
1 experienceId string Mã kinh nghiệm
2 majorId String Mã chuyên ngành
STT Tên trường Kiểu dữ liệu Mô tả
1 majorId string Mã chuyên ngành
2 occupationId String Mã lĩnh vực
3 majorName string Tên chuyên ngành
STT Tên trường Kiểu dữ liệu Mô tả
1 userId string Mã người dùng
2 occupationId string Mã lĩnh vực
STT Tên trường Kiểu dữ liệu Mô tả
1 socialId string Mã mạng xã hội
2 userId string Mã người dùng
3 link string Đường dẫn đến trang mạng xã hội
4 socialName string Tên mạng xã hội
STT Tên trường Kiểu dữ liệu Mô tả
1 favouritedId string Mã người được yêu thích
2 favouriteId string Mã người yêu thích
STT Tên trường Kiểu dữ liệu Mô tả
1 shortedListId string Mã người được quan tâm
2 shortListId string Mã người quan tâm
STT Tên trường Kiểu dữ liệu Mô tả
1 notificationId string Mã thông báo
2 userId string Mã người nhận thông báo
3 notificationTime date Thời gian nhận thông báo
4 notificationContent string Nội dung thông báo
STT Tên trường Kiểu dữ liệu Mô tả
1 userId string Mã người tìm kiếm dự án
2 vacancyId string Mã vị trí tuyển
3 Status string Trạng thái của người tìm kiếm trong dự án
STT Tên trường Kiểu dữ liệu Mô tả
1 userId string Mã người ứng tuyển vào dự án
2 vacancyId string Mã vị trí tuyển
STT Tên trường Kiểu dữ liệu Mô tả
1 userId string Mã người tìm kiếm dự án yêu thích vị trí tuyển
2 vacancyId string Mã vị trí tuyển
STT Tên trường Kiểu dữ liệu Mô tả
1 reportId string Mã loại sản phẩm
2 userId string Loại sản phẩm
3 vacancyId string Mã vị trí tuyển
4 Content string Nội dung báo cáo
5 reportType string Loại báo cáo
STT Tên trường Kiểu dữ liệu Mô tả
1 payId string Mã đơn thanh toán
2 userId string Mã người tạo dự án
3 projectId string Mã dự án
4 basePrice float Số tiền cộng thêm cơ bản để đăng bài của một dự án
5 createDate date Ngày tạo đơn thanh toán
6 transactionFee float Phí giao dịch cho bên thứ ba (Bên hỗ trợ thanh toán)
7 Total float Tổng chi phí
STT Tên trường Kiểu dữ liệu Mô tả
1 paymentDetailId string Mã chi tiết đơn thanh toán
2 payId string Mã đơn thanh toán
3 vacancyId string Mã vị trí tuyển của dự án
4 basePrice float Số tiền tính cơ bản trên một vị trí tuyển
5 numberParticipant int Số lượng người tuyển cho một vị trí
THIẾT KẾ GIAO DIỆN
Sơ đồ liên kết các màn hình
6.1.1 Sơ đồ liên kết màn hình role Seeker
Hình 6.1 Sơ đồ liên kết màn hình role Seeker
6.1.2 Sơ đồ liên kết màn hình role Organizer
Hình 6.2 Sơ đồ liên kết màn hình role Organizer
6.1.3 Sơ đồ liên kết màn hình role Admin
Hình 6.3 Sơ đồ liên kết màn hình role Admin
Danh sách các màn hình
6.2.1 Danh sách các màn hình chung
Bảng 6.1 Danh sách các màn hình chung
STT Màn hình giao diện Chức năng
1 Reset Password Khôi phục tài khoản
2 Sign up Đăng ký tài khoản mới
3 Login Đăng nhập tài khoản
4 Change Password Thay đổi mật khẩu của tài khoản
5 Notify Send Email Successfully Thông báo gửi email thành công
6 Unauthorized Thông báo không có quyền truy cập trang
6.2.2 Danh sách các màn hình Admin
Bảng 6.2 Danh sách các màn hình Admin
STT Màn hình giao diện Chức năng
1 Dashboard Admin Thống kê doanh thu, số lượng project, vacancy, organizer, seeker, và các project, vacancy gần đây
Manage Organizer Hiển thị danh sách, tìm kiếm, lọc và quản lý (cấm, bỏ cấm, xem chi tiết) Organizer trong hệ thống
3 Organizer Detail Hiển thị chi tiết thông tin (Thông tin hồ sơ, thông tin project, vacancy) và có thể thực hiện các thao tác quản lý (cấm, bỏ cấm) Organizer
4 Manage Project Hiển thị danh sách, tìm kiếm, lọc và quản lý trạng thái (cấm, bỏ cấm, cho phép đăng, từ chối đăng) của Project đã upload
5 Project Detail Hiển thị chi tiết thông tin ( thông tin về các vacancy trong project) và có thể thực hiện các thao tác quản lý (cấm, bỏ cấm, cho phép đăng, từ chối đăng ) Project
6 Manage Vacancy Hiển thị danh sách, tìm kiếm, lọc và quản lý trạng thái (cấm, bỏ cấm, cho phép đăng, từ chối đăng) của Vacancy upload
7 Vacancy Detail Hiển thị chi tiết thông tin của Vacancy và có thể thực hiện các thao tác quản lý (cấm, bỏ cấm, cho phép đăng, từ chối đăng) Vacancy
8 Manage Report Hiển thị danh sách, tìm kiếm, lọc các báo cáo của các Vacancy và quản lý trạng thái ( cấm, bỏ cấm) của các Vacancy đã bị báo cáo
9 Occupations Hiển thị danh sách, tìm kiếm và quản lý ( thêm, cập nhật, xóa) các Occupation đã có trong hệ thống
10 Create Occupation Thêm một Occupation mới
11 Update Occupation Cập nhật một Occupation đã có
12 History Transactions Xem danh sách, tìm kiếm, lọc và xem chi tiết lịch sử giao dịch của các Organizer đã thanh toán để post project hay vacancy
6.2.3 Danh sách các màn hình Seeker
Bảng 6.3 Danh sách các màn hình Seeker
STT Màn hình giao diện Chức năng
1 Seeker Home Trang hiển thị quảng cáo thông tin ban đầu
2 Contact Hiển thị thông tin liên lạc của team
3 About us Hiển thị thông tin về dự án, thông tin thành viên và thông tin liên quan khác
4 Find Organizer Hiển thị danh sách, tìm kiếm, lọc và xem chi tiết các Organizer có trong hệ thống
5 Organizer Detail Hiển thị chi tiết thông tin (Thông tin hồ sơ, thông tin project, vacancy) và có thể thực hiện các thao tác (mở gửi email, thêm/ bỏ yêu thích) Organizer hoặc đến các trang Project/ Vacancy Detail của Organizer
6 Find Project Hiển thị danh sách, tìm kiếm, lọc, thêm/ bỏ yêu thích và xem chi tiết các Project trong hệ thống cũng như xem các Vacancy trong Project đó
7 Project Detail Hiển thị chi tiết thông tin (Thông tin hồ sơ, thông tin các vacancy trong project) và có thể thực hiện các thao tác (mở gửi email, thêm/ bỏ yêu thích) Project hoặc bấm đến các trang Organizer, Vacancy Detail của Project đó
8 Report Vacancy Thực hiện báo cáo vi phạm của Vacancy với
9 Find Vacancy Hiển thị danh sách, tìm kiếm, lọc, thêm/ bỏ yêu thích, apply Vacancy và xem chi tiết các Vacancy đã upload trong hệ thống
10 Vacancy Detail Hiển thị chi tiết thông tin Vacancy và có thể thực hiện các thao tác (apply Vacancy, thêm/ bỏ yêu thích) Vacancy hoặc bấm đến các trang Organizer Detail của Vacancy đó
11 Apply Vacancy Hiển thị danh sách các câu hỏi trước khi apply vào Vacancy
12 Dashboard Seeker Thống kê số lượng xem profile, thông báo, số lượng và danh sách Vacancy đã apply gần đây
13 Edit Profile Xem và cập nhật thông tin profile Seeker
14 Edit Resume Xem và cập nhật thông tin resume Seeker
15 CV Manage Xem và quản lý (thêm, cập nhật tên, xóa)
16 ShortListed Organizer Xem, tìm kiếm, lọc danh sách Organizer đã thêm vào yêu thích và đến trang Organizer Detail
17 Favourite Projects Xem, tìm kiếm, lọc danh sách Projects đã thêm vào yêu thích, bỏ yêu thích và đến trang Project Detail
18 Favourite Vacancies Xem, tìm kiếm, lọc danh sách Vacancies đã thêm vào yêu thích, bỏ yêu thích và đến trang Vacancy Detail
19 Applied Vacancies Xem, tìm kiếm, lọc danh sách Vacancies đã apply và đến trang Vacancy Detail
6.2.4 Danh sách các màn hình Organizer
Bảng 6.4 Danh sách các màn hình Organizer
STT Màn hình giao diện Chức năng
1 Dashboard Organizer Thống kê số lượng xem profile Organizer, thông báo, số lượng, số lượng Vacancy, Project đã post và danh sách seeker apply Vacancy gần đây
2 Edit Profile Xem và cập nhật thông tin profile
3 ShortListed Seeker Xem, tìm kiếm, lọc danh sách Seeker đã thêm vào yêu thích và đến trang Seeker Detail
4 Find Seeker Hiển thị danh sách, tìm kiếm, lọc và xem chi tiết các Seeker có trong hệ thống
5 Seeker Detail Hiển thị chi tiết thông tin profile, resume của Seeker và có thể thực hiện các thao tác (gửi lời mời xem qua Vacancy, Project, thêm/ bỏ yêu thích) Seeker
6 Send Recommend Project Hiện thị và chọn Vacancy, Project muốn giới thiệu đến Seeker
7 Interviews Hiển thị danh sách, tìm kiếm, lọc và xem chi tiết, chấp nhận hoặc từ chối các Seeker đã apply trong các Vacancy của Organizer
8 Manage Project Hiển thị danh sách, tìm kiếm, lọc và quản lý
(xem, thêm, cập nhật, xóa, thanh toán) các Project của Organizer
9 Project Detail Hiển thị chi tiết thông tin (Thông tin hồ sơ, thông tin các vacancy trong project)
10 Create Project Thêm mới và yêu cầu upload một Project đến Admin
11 Update Project Cập nhật thông tin của Project chưa được thanh toán
12 Manage Vacancy Hiển thị danh sách, tìm kiếm, lọc và quản lý
(xem, cập nhật, xóa, thanh toán) các Vacancy của Organizer
13 Post a Vacancy Thêm mới và yêu cầu upload một Vacancy đến Admin
14 Update Vacancy Cập nhật thông tin của Vacancy chưa được thanh toán
15 Vacancy Detail Hiển thị chi tiết thông tin Vacancy.
Các màn hình của hệ thống
Hình 6.4 Màn hình Reset Password 6.3.1.2 Màn hình Sign up
Hình 6.5 Màn hình Sign up
Hình 6.6 Màn hình Login 6.3.1.4 Màn hình Change Password
Hình 6.7 Màn hình Change Password
6.3.1.5 Màn hình Notify Send Email Successfully
Hình 6.8 Màn hình Notify Send Email Successfully 6.3.1.6 Màn hình Unauthorized
Hình 6.10 Màn hình Dashboard Admin
Hình 6.11 Màn hình Manage Organizer 6.3.2.3 Màn hình Organizer Detail
Hình 6.12 Màn hình Organizer Detail
Hình 6.13 Màn hình Manage Project
Hình 6.14 Màn hình Project Detail
Hình 6.15 Màn hình Manage Vacancy 6.3.2.7 Màn hình Vacancy Detail
Hình 6.16 Màn hình Vacancy Detail
Hình 6.17 Màn hình Manage Report 6.3.2.9 Màn hình Occupations
Hình 6.19 Màn hình Create Occupation 6.3.2.11 Màn hình Update Occupation
Hình 6.20 Màn hình Update Occupation
Hình 6.21 Màn hình History Transactions
Hình 6.22 Màn hình Seeker Home 6.3.3.2 Màn hình Contact
Hình 6.24 Màn hình About us 6.3.3.4 Màn hình Find Organizer
Hình 6.25 Màn hình Find Organizer
Hình 6.26 Màn hình Organizer Detail 6.3.3.6 Màn hình Find Project
Hình 6.27 Màn hình Find Project
Hình 6.28 Màn hình Project Detail
Hình 6.29 Màn hình Report Vacancy 6.3.3.9 Màn hình Find Vacancy
Hình 6.30 Màn hình Find Vacancy
Hình 6.31 Màn hình Vacancy Detail 6.3.3.11 Màn hình Apply Vacancy
Hình 6.32 Màn hình Apply Vacancy
Hình 6.33 Màn hình Dashboard Seeker 6.3.3.13 Màn hình Edit Profile
Hình 6.34Màn hình Edit Profile
Hình 6.35 Màn hình Edit Resume 6.3.3.15 Màn hình CV Manage
Hình 6.36 Màn hình CV Manage
Hình 6.37 Màn hình ShortListed Organizer 6.3.3.17 Màn hình Favourite Projects
Hình 6.38 Màn hình Favourite Projects
Hình 6.39Màn hình Favourite Vacancies 6.3.3.19 Màn hình Applied Vacancies
Hình 6.40 Màn hình Applied Vacancies
Hình 6.41 Màn hình Dashboard Organizer 6.3.4.2 Màn hình Edit Profile
Hình 6.42 Màn hình Edit Profile
Hình 6.43 Màn hình ShortListed Seeker 6.3.4.4 Màn hình Find Seeker
Hình 6.44 Màn hình Find Seeker
Hình 6.45 Màn hình Seeker Detail 6.3.4.6 Màn hình Send Recommend Project
Hình 6.46 Màn hình Send Recommend Project
Hình 6.47 Màn hình Interviews 6.3.4.8 Màn hình Manage Project
Hình 6.48 Màn hình Manage Project
Hình 6.49 Màn hình Project Detail
Hình 6.50 Màn hình Create Project
Hình 6.51 Màn hình Update Project
Hình 6.52 Màn hình Manage Vacancy 6.3.4.13 Màn hình Post a Vacancy
Hình 6.53 Màn hình Post a Vacancy – 1
Hình 6.54 Màn hình Post a Vacancy – 2
Hình 6.55 Màn hình Post a Vacancy - 3
Hình 6.56 Màn hình Post a Vacancy – 4
Hình 6.57 Màn hình Post a Vacancy - 5
Hình 6.58 Màn hình Post a Vacancy - 6
Hình 6.59 Màn hình Update Vacancy
Hình 6.60 Màn hình Vacancy Detail
CÀI ĐẶT VÀ THỬ NGHIỆM
Môi trường triển khai và phát triển ứng dụng
- Hệ điều hành: Microsoft Windows 11 and macOS
- Công cụ xây dựng ứng dụng:
▪ Front-end: Visual Studio Code
▪ Back-end: IntelliJ IDEA CE
- Các công nghệ đã sử dụng:
▪ Front-end: ReactJs với Framework Css: Tailwind Css
▪ Back-end: Java với Framework Spring Boot
▪ Hệ thống quản trị cơ sở dữ liệu: MongoDB
▪ Các api bên ngoài: o Get Skills API của https://apilayer.com/ o Get province, district, ward API của https://provinces.open-api.vn o Send mail của Send Grid
▪ Deploy: o Front-end: AWS Amplify o Back-end: Railway
- Hệ điều hành: Bất kỳ thiết bị nào có thể truy cập trình duyệt tìm kiếm website
- Yêu cầu cài đặt: Không yêu cầu tải thêm bất kỳ phần mềm phụ nào
- Yêu cầu sử dụng: Cần kết nối Internet để sử dụng ứng dụng
- Github: https://github.com/Fatitboo/SE121.O11_Website_support_find_project
Nhận xét và kết luận
Sau khoảng thời gian hơn 3 tháng nhóm chúng em cùng nhau nỗ lực làm việc và cố gắng để thực hiện đồ án thì cuối cùng nhóm chúng em cũng đã hoàn thiện sản phẩm đồ án môn học là “Xây dựng hệ thống hỗ trợ tìm kiếm đội nhóm, dự án” Website được xây dựng khá đầy đủ các tính năng cần thiết và đảm bảo đáp ứng đầy đủ và chính xác các yêu cầu mà nhóm đã đề ra Chúng em đánh giá mức độ hoàn thành của các chức năng đều tương đối tốt
- Đáp ứng được nhu cầu mua bán cơ bản của người dùng
- Dễ dàng đăng nhập cũng như đăng ký
- Vận dụng tương đối đầy đủ các kiến thức đã nghiên cứu
- Ngoài ra, sau khi hoàn thiện đồ án này, nhóm đã nắm được quy trình của một website tìm kiếm đội nhóm, dự án ngoài thực tế Nắm vững được các kiến thức đã học hơn từ đó giúp ích rất nhiều cho việc phát triển các công nghệ mới về sau này Hơn nữa, kỹ năng làm việc nhóm và sắp xếp thời gian cũng được cải thiện tương đối
Bên cạnh những kết quả đạt được, nhóm vẫn còn nhiều khuyết điểm và thiếu sót trong quá trình thực hiện đồ án Nhóm đã nhìn nhận và sẽ cố gắng khắc phục trong tương lai Cụ thể chúng là:
- Sắp xếp thời gian vẫn chưa tối ưu, dẫn đến phải gấp rút chạy đồ án về sau Có thể dẫn đến những sai sót không đáng có
- Vì thời gian gấp rút nên màn hình giao diện hệ thống vẫn còn đơn giản
- Tổ chức source code chưa tốt
- Các chức năng còn cơ bản và chưa hướng thực tế
- Database còn đơn giản chưa chặt chẽ
- Và có thể còn nhiều lỗi sai không tên khác mà nhóm không thể nào tránh khỏi.
Hướng phát triển
Nhóm chúng em có đặt ra một số mục tiêu để phát triển website thêm là:
- Mở rộng cho phép ứng viên đánh giá tổ chức mà họ đã tham gia Và ngược lại, tổ chức cũng có thể đánh giá ứng viên thông qua quá trình làm việc
- Cải thiện trải nghiệm người dùng: Tối ưu hóa giao diện cũng như là cải thiện các trải nghiệm của người dùng
- Xây dựng hệ thống có thể đóng góp quỹ từ thiện cho các dự án cộng đồng
Từ đó xây dựng được mạng xã hội rộng lớn các tổ chức và người tìm kiếm
- Ngoài ra thì chúng em cũng muốn thêm các loại thanh toán trực tuyến như Momo, ZaloPay, ngân hàng, hoặc có thể là trả bằng tiền điện tử - blockchain
- Tăng cường bảo mật và quản lý dữ liệu.
Tài liệu tham khảo
[1] B TopDev, “Phát triển phần mềm theo kiến trúc microservice,” 11 04 2022 [Trực tuyến] Available: https://topdev.vn/blog/phat-trien-phan-mem-theo-kien-truc- microservice/ [Đã truy cập 30 09 2023]
[2] W3schools, “React Tutorial,” 12 10 2022 [Trực tuyến] Available: https://www.w3schools.com/REACT/DEFAULT.ASP [Đã truy cập 18 10 2023]
[3] S Boot, “Spring Boot,” 27 12 2021 [Trực tuyến] Available: https://spring.io/projects/spring-boot/ [Đã truy cập 20 10 2023]
[4] MongoDB, “MongoDB Documentation,” 10 10 2017 [Trực tuyến] Available: https://www.mongodb.com/docs/ [Đã truy cập 10 11 2023]
[5] Indeed, “Post a Job,” 26 07 2022 [Trực tuyến] Available: https://www.indeed.com/recruitment [Đã truy cập 16 11 2023]
[6] Superio, “Template Website mẫu,” 11 01 2023 [Trực tuyến] Available: https://preview.themeforest.net/item/superio-job-board-react-nextjs- template/full_screen_preview/42719363?_ga=2.74641810.1059756852.1695021927- 71736764.1695021927&fbclid=IwAR2y5ABkf1dHEAG28qRB4nJnBOOb-
TPXQkms0Pslvg8A4eCKhGQ6YkETB4w [Đã truy cập 23 09 2023].
Bảng phân công công việc
Bảng 7.1 Bảng phân công công việc
Tên công việc Các phần việc đã phân công Người phụ trách Đánh giá
Thiết kế hệ thống và giao diện
- Phân tích yêu cầu, thảo luận chức năng hệ thống và thiết kế hệ thống cơ sở dữ liệu
- Thiết kế các màn hình:
+ Các màn hình bên Seeker + Các màn hình bên Organizer
- Phân tích yêu cầu, thảo luận chức năng hệ thống và thiết kế hệ thống cơ sở dữ liệu
- Thiết kế các màn hình:
+ Các màn hình Authorized + Các màn hình Admin + Bổ sung thêm các màn hình chung của người dùng
- Hỗ trợ nhau trong coding và kiểm tra lỗi, fix bug
- Hoàn thành các chức năng:
▪ Tìm kiếm đội nhóm, tổ chức, công ty
▪ Quản lý hồ sơ cá nhân
▪ Xem danh mục yêu thích + Organizer:
Hỗ trợ lẫn nhau trong việc sửa giao diện và sửa lỗi
▪ Quản lý người ứng tuyển
- Hỗ trợ nhau trong coding và kiểm tra lỗi, fix bug
- Hoàn thành các chức năng:
+ Xác thực người dùng ( Đăng ký, Đăng nhập, Đổi mật khẩu, Xác thực tài khoản, Khôi phục mật khẩu)
▪ Quản lý Dự án được tạo
▪ Quản lý Vacancy được tạo
▪ Quản lý báo cáo của Vacancy đã upload
▪ Quản lý hồ sơ cá nhân
▪ Xem danh mục Seeker yêu thích
Soạn nội dung và viết báo cáo