GIỚI THIỆU
Đặt vấn đề
Hiện nay, nhu cầu tuyển dụng việc làm ngày càng gia tăng và đồng thời nhu cầu tìm kiếm việc làm phù hợp với bản thân mỗi người ngày càng nhiều.
Giải pháp
Để giải quyết vấn đề trên, nhóm chúng em quyết định chọn đề tài - xây dựng ứng dụng Blockchain hỗ trợ tuyển dụng việc làm để giúp các công ty tiếp cận các đối tượng tuyển dụng của mình dễ hơn và đồng thời giúp người tìm kiếm việc làm dễ dàng kiếm việc phù hợp với bản thân hơn Ứng dụng của tụi em sẽ giúp người dùng tìm kiếm đúng đối tượng mà thông tin đã được xác thực.
Mục tiêu đề tài
● Tìm hiểu và nghiên cứu Blockchain, React, Tailwind, Expressjs.
● Nắm rõ các thao tác trên Visual studio code.
● Nghiên cứu các website tuyển dụng việc làm hiện có trên thị trường như topcv, careerbuilder,
● Thiết kế giao diện bắt mắt, dễ sử dụng cho người dùng.
● Đảm bảo tính năng an toàn và bảo mật.
● Tối ưu hoá các chức năng của ứng dụng.
● Người tuyển dụng dễ dàng tìm kiếm nhân lực.
● Người dùng tự đánh giá năng lực của nhân lực.
● Phạm vi môi trường: triển khai trên website.
● Đối tượng sử dụng: người tuyển dụng có nhu cầu tuyển nhân sự.
● Phạm vi chức năng: o Người dùng tìm kiếm các được các đối tượng phù hợp. o Người tuyển dụng có thẻ đánh giá độ uy tín của miner.
● Phương pháp làm việc: làm nhóm 2 người thông qua hình thức offline và online qua google meeting dưới sự hướng dẫn của giảng viên.
● Phương pháp nghiên cứu: o Khảo sát và nghiên cứu nhu cầu tìm kiếm nhân lực và tìm kiếm việc làm của mọi người. o Nghiên cứu các tài liệu và công nghệ liên quan đến đề tài như: Blockchain, React, o Tham khảo các website tuyển dụng việc làm hiện có như: topcv, careerbuilder, để tối ưu hoá website.
● Phương pháp công nghệ: o Tìm hiểu các ngôn ngữ và framework liên quan đến đề tài. o Xây dựng giao diện website để tương tác người dùng và nhận phản hồi, sửa chữa nếu cần thiết. o Tìm hiểu các thư viện hỗ trợ cho dự án.
CƠ SỞ LÝ THUYẾT
HTML
HTML là viết tắt của cụm từ Hypertext Markup Language (tạm dịch là Ngôn ngữ đánh dấu siêu văn bản) HTML được sử dụng để tạo và cấu trúc các thành phần trong trang web hoặc ứng dụng, phân chia các đoạn văn, heading, titles, blockquotes… và HTML không phải là ngôn ngữ lập trình.
Một tài liệu HTML được hình thành bởi các phần tử HTML (HTML Elements) được quy định bằng các cặp thẻ (tag và attributes) Các cặp thẻ này được bao bọc bởi một dấu ngoặc ngọn (ví dụ ) và thường là sẽ được khai báo thành một cặp, bao gồm thẻ mở và thẻ đóng Ví dụ, chúng ta có thể tạo một đoạn văn bằng cách đặt văn bản vào trong cặp tag mở và đóng văn bản
và
Ưu điểm: a Được sử dụng rộng rãi, có rất nhiều nguồn tài nguyên hỗ trợ và cộng đồng sử dụng lớn. b Học đơn giản và dễ hiểu. c Mã nguồn mở và hoàn toàn miễn phí. d Markup gọn gàng và đồng nhất. e Tiêu chuẩn thế giới được vận hành bởi World Wide Web
Consortium (W3C). f Dễ dàng tích hợp với các ngôn ngữ backend như PHP, Python…
Khuyết điểm: g Được dùng chủ yếu cho web tĩnh Đối với các tính năng động như update hay realtime thời gian thực, bạn cần sử dụng JavaScript hoặc ngôn ngữ backend bên thứ 3 như PHP. h Một số trình duyệt chậm hỗ trợ tính năng mới.
CSS
CSS là chữ viết tắt của Cascading Style Sheets, nó là một ngôn ngữ được sử dụng để tìm và định dạng lại các phần tử được tạo ra bởi các ngôn ngữ đánh dấu (HTML) Nói ngắn gọn hơn là ngôn ngữ tạo phong cách cho trang web
Mối tương quan giữa HTML và CSS rất mật thiết HTML là ngôn ngữ markup (nền tảng của site) và CSS định hình phong cách (tất cả những gì tạo nên giao diện website), chúng là không thể tách rời.
Tailwind
Tailwind là một utility-first CSS framework giúp cho bạn xây dựng giao diện người dùng một cách nhanh nhất Tailwind CSS được phát hành lần đầu tiên vào tháng 10/2019 được phát triển bởi Adam Wathan Nếu so sánh với các nền tảng lập trình CSS khác như Bootstrap, Materialize,Foundation, Material Design… thì giữa chúng có điểm chung với nhau. Ưu điểm:
● Xây dựng giao diện chỉ cần khai báo class trên file html
● Chỉ xuất ra những file css chứa những class đã sử dụng trong giao diện.
● Dễ dàng thiết lập Responsive ngay trên file html
● Hỗ trợ tương tác hover, focus… ngay trên class html
● Tối ưu những cấu trúc html css có tính lặp lại
● Định nghĩa thêm class mới được phối hợp bởi các class có sẵn trong tailwind
● Hỗ trợ chế độ tối Dark Mode
● Dễ dàng mở rộng, chỉnh sửa và biến đổi
● Tăng tốc độ code với Extension thông minh trên VS Code.
Typescript
Typescript Là một ngôn ngữ được Microsoft tặng free cho chúng ta, nền tảng của TypeScript ít nhiều cũng có sự liên quan đến JavaScript vì nó là một ngôn ngữ mã nguồn mở của JavaScript Vai trò của TypeScript là dùng để thiết kế và xây dựng các dự án ứng dụng quy mô lớn mang tính chất phức tạp.
TypeScript được xem là một phiên bản nâng cao hơn của JavaScript vì nó được thiết kế thêm nhiều chức năng tiện lợi hơn, cải tiến hơn từ những điểm yếu của JavaScript như các lớp hướng đối tượng và Static Structural typing, bên cạnh đó TypeScript còn có thể hoạt động rộng rãi cho các ứng dụng của ngôn ngữ Angular2 và Nodejs. Ưu điểm:
● Thuận tiện và hoàn toàn miễn phí
● Thao tác nhanh chóng và đơn giản
● Giảm tỷ lệ mắc lỗi trong hệ thống
● Hợp nhất mã đơn giản
● Bắt buộc dùng biên dịch
● Bước thiết lập cồng kềnh
● Chỉ là phần ngôn ngữ mở rộng hỗ trợ.
React
React 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.
ReactJS là một thư viện JavaScript chuyên giúp các nhà phát triển xây dựng giao diện người dùng hay UI Trong lập trình ứng dụng front-end, lập trình viên thường sẽ phải làm việc chính trên 2 thành phần sau: UI và xử lý tương tác của người dùng UI là tập hợp những thành phần mà bạn nhìn thấy được trên bất kỳ một ứng dụng nào, ví dụ có thể kể đến bao gồm: menu, thanh tìm kiếm,những nút nhấn, card,… Giả sử bạn đang lập trình một website thương mại điện tử, sau khi người dùng chọn được sản phẩm ưng ý rồi và nhấn vào nút
“Thêm vào giỏ hàng”, thì việc tiếp theo mà bạn phải làm đó là thêm sản phẩm được chọn vào giỏ hàng và hiển thị lại sản phẩm đó khi user vào xem => xử lý tương tác.
Trước khi có ReactJS, lập trình viên thường gặp rất nhiều khó khăn trong việc sử dụng “vanilla JavaScript”(JavaScript thuần) và JQuery để xây dựng UI Điều đó đồng nghĩa với việc quá trình phát triển ứng dụng sẽ lâu hơn và xuất hiện nhiều bug, rủi ro hơn Vì vậy vào năm 2011, Jordan Walke – một nhân viên của Facebook đã khởi tạo ReactJS với mục đích chính là cải thiện quá trình phát triển UI.
Expressjs
Expressjs hay còn được viết là Express js, Express.js Đây là một framework mã nguồn mở miễn phí cho Node.js Express.js được sử dụng trong thiết kế và xây dựng các ứng dụng web một cách đơn giản và nhanh chóng.
Vì Express js chỉ yêu cầu ngôn ngữ lập trình Javascript nên việc xây dựng các ứng dụng web và API trở nên đơn giản hơn với các lập trình viên và nhà phát triển.Expressjs cũng là một khuôn khổ của Node.js do đó hầu hết các mã code đã được viết sẵn cho các lập trình viên có thể làm việc.
Nhờ có Expressjs mà các nhà lập trình có thể dễ dàng tạo các ứng dụng 1 web, nhiều web hoặc kết hợp Do có dung lượng khá nhẹ, Expressjs giúp cho việc tổ chức các ứng dụng web thành một kiến trúc MVC có tổ chức hơn.Để có thể sử dụng được mã nguồn này, chúng ta cần phải biết về Javascript và HTML.
Expressjs cũng là một phần của công nghệ giúp quản lý các ứng dụng web một cách dễ dàng hơn hay còn được gọi là ngăn xếp phần mềm
MEAN.Nhờ có thư viện Javascript của Express js đã giúp cho các nhà lập trình xây dựng nên các ứng dụng web hiệu quả và nhanh chóng hơn Expressjs cũng được sử dụng để nâng cao các chức năng của Node.js.
Trên thực tế, nếu không sử dụng Express.js, bạn sẽ phải thực hiện rất nhiều bước lập trình phức tạp để xây dựng nên một API hiệu quả Express js đã giúp cho việc lập trình trong Node.js trở nên dễ dàng hơn và có nhiều tính năng mới bổ sung.
Blockchain
Blockchain là công nghệ chuỗi – khối, cho phép truyền tải dữ liệu một cách an toàn dựa trên hệ thống mã hóa vô cùng phức tạp, tương tự như cuốn sổ cái kế toán của một công ty, nơi mà tiền được giám sát chặt chẽ và ghi nhận mọi giao dịch trên mạng ngang hàng
Mỗi khối (block) đều chứa thông tin về thời gian khởi tạo và được liên kết với khối trước đó, kèm theo đó là một mã thời gian và dữ liệu giao dịch Dữ liệu khi đã được mạng lưới chấp nhận thì sẽ không có cách nào thay đổi được.Blockchain được thiết kế để chống lại việc gian lận, thay đổi của dữ liệu.
Công nghệ Blockchain – sự kết hợp giữa 3 loại công nghệ:
- Mật mã học: để đảm bảo tính minh bạch, toàn vẹn và riêng tư thì công nghệ
Blockchain đã sử dụng public key và hàm hash function.
- Mạng ngang hàng: Mỗi một nút trong mạng được xem như một client và cũng là server để lưu trữ bản sao ứng dụng.
- Lý thuyết trò chơi: Tất cả các nút tham gia vào hệ thống đều phải tuân thủ luật chơi đồng thuận (giao thức PoW, PoS,…) và được thúc đẩy bởi động lực kinh tế.
Blockchain có các đặc điểm nổi bật sau:
- Không thể làm giả, không thể phá hủy các chuỗi Blockchain: theo như lý thuyết thì chỉ có máy tính lượng tử mới có thể giải mã Blockchain và công nghệ Blockchain biến mất khi không còn Internet trên toàn cầu.
- Bất biến: dữ liệu trong Blockchain không thể sửa (có thể sửa nhưng sẽ để lại dấu vết) và sẽ lưu trữ mãi mãi.
- Bảo mật: Các thông tin, dữ liệu trong Blockchain được phân tán và an toàn tuyệt đối.
- Minh bạch: Ai cũng có thể theo dõi dữ liệu Blockchain đi từ địa chỉ này tới địa chỉ khác và có thể thống kê toàn bộ lịch sử trên địa chỉ đó.
- Hợp đồng thông minh: là hợp đồng kỹ thuật số được nhúng vào đoạn code if- this-then-that (IFTTT), cho phép chúng tự thực thi mà không cần bên thứ ba.
Ethereum
Ethereum là nền tảng điện toán phân tán, mã nguồn mở dựa trên công nghệ chuỗi khối (blockchain) có khả năng thực thi hợp đồng thông minh (smart contract) - tức là điều khoản được ghi trong hợp đồng sẽ được thực thi một cách tự động khi các điều kiện trước đó được thỏa mãn, không ai có thể can thiệp vào
Ethereum là một dự án Blockchain Layer 1 cho phép nhiều các lập trình viên xây dựng các ứng dụng phi tập trung (DApps) và các tổ chức tự trị phi tập trung (DAOs) Trong đó:
● Các ứng dụng phi tập trung (DApps - Decentralized Application) là các phần mềm được triển khai độc lập, không nằm trên một máy chủ duy nhất mà được lưu trữ một cách phân tán trên các kho lưu trữ phi tập trung và có thể được viết bằng bất kỳ ngôn ngữ nào.
● Các tổ chức tự trị phi tập trung (DAOs - Decentralized Autonomous
Organizations) là một tổ chức được vận hành bởi các thành viên dựa trên một bộ quy tắc được mã hóa bằng code Tất cả các thành viên đều có quyền biểu quyết các quyết định quan trọng của DAOs.
Hardhat
Hardhat là một môi trường phát triển để biên dịch, triển khai, test và debug
Một số điểm tính năng nổi bật của Hardhat:
● Tích hợp mạng local hardhat, dễ dàng chạy và debug code ngay trên local.
● Debug dễ dàng hơn: Với Hardhat, chúng ta có thể debug code Solidity dễ dàng hơn khi có thể console.log ra các biến (Solidity vốn ko hỗ trợ console.log)
● Hệ thống plugin: Giúp developer có thể bổ sung chức năng, tùy vào từng dự án cụ thể
PHÂN TÍCH ĐẶC TẢ YÊU CẦU
Danh sách người dùng
Bảng 3.1: Bảng danh sách người dùng
1 Người tuyển dụng Người tuyển dụng có thể tăng tuyển dụng nhân sự với các điều kiện phù hợp, đánh giá miner,
2 Trung gian(miner) Miner có thể tìm kiếm các bài tuyển dụng, tương tác với nhà tuyển dụng, thêm thông tin ứng viên
Danh sách Usecase
Bảng 3.2: Bảng chức năng người tuyển dụng
1 Đăng ký Dành cho người mới, cho phép tự đăng ký tài khoản
2 Đăng nhập Cho phép người dùng đã có tài khoản đăng nhập vào website
Cho phép người dùng đăng tin tuyển dụng nhân sự
4 Đánh giá Cho phép người dùng đánh giá miner
Bảng 3.3: Bảng chức năng miner
1 Đăng ký Dành cho người mới, cho phép tự đăng ký tài khoản
2 Đăng nhập Cho phép người dùng đã có tài khoản đăng nhập vào website
3 Thêm thông tin người tìm kiếm việc làm
Cho phép người dùng đăng tin thông tin về người tìm kiếm việc làm.
4 Tìm kiếm Cho phép người dùng tìm kiếm các bài tuyển dụng
Đặng tả Usecase
Bảng 3.4: Bảng đặc tả Usecase đăng ký của người tuyển dụng
Tên Use-case Đăng ký
Tác nhân Người tuyển dụng
Mô tả tóm tắt Người dùng ấn vào nút đăng ký Điều kiện trước Truy cập vào website. Điều kiện sau N/A
Dòng sự kiện chính Người dùng ấn nút đăng ký sẽ được đưa sang trang đăng ký người dùng mới.
Bảng 3.5: Bảng đặc tả Usecase đăng nhập của người tuyển dụng
Tên Use-case Đăng nhập
Tác nhân Người tuyển dụng
Mô tả tóm tắt Người dùng ấn vào nút đăng nhập Điều kiện trước Truy cập vào website. Điều kiện sau N/A
Dòng sự kiện chính Người dùng ấn nút đăng nhập thì sẽ đăng nhập vô website.
Bảng 3.5: Bảng đặc tả Usecase đăng tuyển dụng
Tên Use-case Đăng tuyển dụng
Tác nhân Người tuyển dụng
Mô tả tóm tắt Người dùng ấn vào nút đăng tuyển dụng Điều kiện trước Truy cập vào website. Điều kiện sau N/A
Dòng sự kiện chính -Người dùng ấn nút đăng tuyển dụng
-Người dùng đang thông tin cần tuyển dụng
-Người dùng ấn nút xác nhận.
Bảng 3.6: Bảng đặc tả Usecase đánh giá
Tên Use-case Đánh giá
Tác nhân Người tuyển dụng
Mô tả tóm tắt Người dùng đánh giá mức độ uy tín của miner Điều kiện trước Người dùng tuyển dụng chọn được người tìm kiếm việc làm phù hợp Điều kiện sau N/A
Dòng sự kiện chính -Người dùng đánh giá mực độ uy tín của miner từ 1 đến 5 sao
-Người dùng ấn nút xác nhận Dòng sự kiện phụ
Bảng 3.7: Bảng đặc tả Usecase đăng ký của miner
Tên Use-case Đăng ký
Tác nhân Người trung gian (miner)
Mô tả tóm tắt Người dùng ấn vào nút đăng ký Điều kiện trước Truy cập vào website. Điều kiện sau N/A
Dòng sự kiện chính Người dùng ấn nút đăng ký sẽ được đưa sang trang đăng ký người dùng mới.
Bảng 3.8: Bảng đặc tả Usecase đăng nhập của miner
Tên Use-case Đăng nhập
Tác nhân Người trung gian (miner)
Mô tả tóm tắt Người dùng ấn vào nút đăng nhập Điều kiện trước Truy cập vào website. Điều kiện sau N/A
Dòng sự kiện chính Người dùng ấn nút đăng nhập thì sẽ đăng nhập vô website.
Bảng 3.9: Bảng đặc tả Usecase tìm kiếm
Tên Use-case Tìm kiếm
Tác nhân Người trung gian (miner)
Mô tả tóm tắt Người dùng ấn thanh tìm kiếm Điều kiện trước Truy cập vào website. Điều kiện sau N/A
Dòng sự kiện chính -Người dùng ấn vào thanh tìm kiếm.
-Người dùng nhập thông tin tuyển dụng muốn tìm kiếm.
-Người dùng ấn tìm kiếm-Người dùng sẽ được chuyển đến trang kết quả tìm kiếm
Bảng 3.10: Bảng đặc tả Usecase đăng thông tin người tìm kiếm việc làm
Tên Use-case Đăng thông tin người tìm kiếm việc làm
Tác nhân Người trung gian (miner)
Mô tả tóm tắt Người dùng ấn vào nút đăng ký ngay ở trong bài tuyển dụng Điều kiện trước Truy cập vào website. Điều kiện sau N/A
Dòng sự kiện chính -Người dùng ấn nút đăng ký ngay trong bài tuyển dụng
-Người dùng nhập thông tin người phù hợp.
-Người dùng bấm xác nhận.
Bảng 3.11: Bảng đặc tả thay đổi thông tin người dùng
Tên Use-case Thao đổi thông tin người dùng
Tác nhân Người trung gian (miner)
Mô tả tóm tắt Người dùng ấn vào thông tin cá nhân Điều kiện trước Truy cập vào website. Điều kiện sau N/A
Dòng sự kiện chính -Người dùng ấn nút thông tin cá nhân
-Người dùng nhập thông tin người phù hợp.
-Người dùng bấm xác nhận.
THIẾT KẾ GIAO DIỆN
Đặng nhập
Hìn h 4.1: Màn hình đăng ký
Đăng ký
Hình 4.2: Màn hình đăng nhập
Trang chủ
Hình 4.3: Màn hình trang chủ
Tìm kiếm
Hình 4.4: Màn hình kết quả tìm kiếm
Nhập thông tin cá nhân
Hình 4.5: Hình nhập thông tin người tìm kiếm việc làm
Thông tin tuyển dụng
Hình 4.6: Màn hình thông tin bài đăng tuyển dụng