Developing a recruitment and job searching application for engineering students Developing a recruitment and job searching application for engineering students
Trang 1VIETNAM NATIONAL UNIVERSITY, HANOI
INTERNATIONAL SCHOOL
GRADUATION PROJECT
Application for Engineering Students
PHAM XUAN THANG
Hanoi – 2025
Trang 2VIETNAM NATIONAL UNIVERSITY, HANOI
INTERNATIONAL SCHOOL
GRADUATION PROJECT
Developing a Recruitment and Job Searching Application for Engineering Students
SUPERVISOR: PhD HA MANH HUNG
STUDENT: PHAM XUAN THANG
STUDENT ID: 20070881
SUBJECT CODE: INS4014
MAJOR: INFORMATIC AND COMPUTER ENGINEERING
Hanoi – 2025
Trang 3First, I would like to express my gratitude to the Board of Directors of the International School at Vietnam National University in Hanoi for providing me with the best opportunities and resources to complete my studies and complete this graduation project
I am sincerely thankful to my supervisor, PhD Ha Manh Hung, for all his assistance, encouragement, and guidance throughout this research His invaluable feedback, sage advice, and unwavering support have been essential to the successful completion of my work
My deepest appreciation also goes out to my colleagues at FOXAI Company, who have provided me with technical support, resources, and real-world experience, all of which have enabled me to successfully translate theoretical ideas into practice
Hanoi, 2025
Student
Pham Xuan Thang
Trang 4Under the supervision of PhD Ha Manh Hung, I hereby attest that the information in this graduation project report is the product of my own study and research
The information, materials, and data utilized in this report have all been properly recognized and cited I certify that this work does not contain any instances of plagiarism
or infringement on intellectual property rights or academic integrity
In compliance with the rules of the organization, I accept complete responsibility for
my conduct if any portion of this declaration turns out to be false
Hanoi, 2025
Student
Pham Xuan Thang
Trang 5LIST OF IMAGES
LIST OF TABLES
CHAPTER 1: PROJECT OVERVIEW 10
CHAPTER 2: SYSTEM ANALYSIS 14
CHAPTER 3: SYSTEM DESIGN 36
Trang 63.4 Interface Design 45
CHAPTER 4: TESTING AND RESULTS 66
Trang 7LIST OF IMAGES
Table 2.1: Functional requirements (Candidate group) 15 Table 2.2: Functional requirements (Recruitment Group) 19 Table 2.3: Functional requirements (Company Group) 22 Table 2.4: Functional requirements (Administrator Group) 25 Table 2.5: Decentralization 28 Table 2.6: Quality Requirements 28
Trang 8INTRODUCTION
Science and technology are now essential pillars for advancing all facets of life in a society that is changing quickly Investigating and implementing technology solutions improves productivity and quality of life in addition to solving real-world issues The graduation project is a crucial component of the academic program since it gives students the chance to put their newly learned material into practice, foster their creativity, and improve their problem-solving abilities With this in mind, I have decided
to study "Developing a Recruitment and Job Searching Application for Engineering Students" in the hopes of helping with job searching and hiring as well as getting more real-world experience and expertise
Trang 9CHAPTER 1: PROJECT OVERVIEW
1.1 Reasons for Choosing the Topic
Engineering students, with their specific knowledge and practical abilities, represent a highly prospective workforce in a labor market that is expanding quickly Many students, however, have trouble finding acceptable employment possibilities
or do not have a reliable way to communicate with companies
On the other side, companies also have trouble locating skilled technical workers, particularly young ones An effective middle-man platform that helps businesses and students with communication, job searching, and hiring is therefore required
Additionally, as digital solutions for professional development become more popular, there is an increasing need for platforms that are specifically designed to meet the needs of particular groups Students studying engineering are a specific population that needs specialized resources to align their abilities with industry demands The creation of this application offers a chance to close the communication gap between recruiters and students, promoting smooth interactions and enhancing employability results
Thus, I decided to work on "Developing a job search and recruitment website for engineering students" because I want to give the engineering sector a modern, easy-to-use online solution that will help them find employees quickly and effectively connect students with career opportunities
1.2 Introduction to the Field of Study
Traditional hiring procedures have been revolutionized by recruitment technology, which makes it possible for automation, data-driven decision-making, and wider reach Online recruitment standards have been established by sites such as Indeed, TopCV, and LinkedIn However, these sites frequently serve a broad audience, ignoring the particular needs of specialized populations, such as engineering
students By concentrating on this group, this initiative investigates the relationship between engineering career growth and recruiting technologies
1.3 Objectives of the Project
This project's main goal is to create, develop, and assess a job search and
recruitment application specifically for engineering students Among the specific goals are:
+ Creating an application that is easy to use: Assure a user-friendly interface that satisfies recruiters' and job seekers' needs
+ Enabling job matching based on skills: Use algorithms to find appropriate career possibilities based on the profiles of engineering students
+ Simplifying the hiring process: Offer tools for managing resumes and tracking applications
Trang 10+ Improving accessibility: Make sure the application works across a variety of browsers
1.4 Scope of the Project
This project focuses on the development of a recruitment platform targeting
engineering students and recruiters in the technology and engineering sectors The scope includes:
- Analysis of current hiring platforms and their shortcomings is part of the scope
- The creation of essential features like application tracking, job posting, job
searching, and profile creation
- The platform's usability and performance are tested and assessed
1.4.1 Technical Scope
- Develop a web-based application to support job searching and recruitment tailored
for engineering students
- The application utilizes technologies such as JavaScript, Node.js, ReactJS, and RESTful API
- Integrate a database to store user, job, and employer information
1.4.2 Functional Scope
- For Users:
+ Register, log in, and manage personal profiles
+ Search for suitable jobs by industry, skills, salary, location, work experience, and position
+ Apply for jobs directly through the platform and receive job notifications via email
- For Employers:
+ Post job openings and manage job listings
+ View candidate profiles and filter suitable candidates
- Administrators:
+ Manage users, company lists, and job posting lists
1.4.3 Application Scope:
- This application targets a group of engineering students
- Operates in an online environment through a web browser
1.5 Methodologies
The project uses a variety of approaches, such as:
Trang 11- Literature Review: Examine current platforms and resources to find possibilities and gaps
- Agile Development: To create the application, use iterative cycles of
development, testing, and improvement
- User-Centered Design: Examine the demands of recruiters and engineering
students to make sure the application satisfies them
- Performance Evaluation: Evaluate the program using criteria including user
happiness, system response time, and successful job matching
1.6 Technologies and Tools Used
The following tools and technologies are used in the project:
- Frontend Development: An interactive and responsive user interface is made with React.js, which enables users to move fluidly between pages and access essential functions like chatting, profile creation, and job search For styling and improving user experience, CSS frameworks and libraries such as Ant Design and Font
Awesome are utilized
- Backend Development: To handle API requests, implement server-side logic, and guarantee safe and effective communication between the client-side application and the database, Node.js and Express.js are used Additionally, the backend has
middleware for managing requests and validating input
- Database Management: MySQL is used to efficiently manage structured data Important data like user profiles, job advertisements, recruiter information, and application history are stored there The purpose of the database schema is to
guarantee efficient and standardized data retrieval
- Cloudinary: This technology ensures dependable and effective media delivery by managing and storing images, including profile photographs
- Nodemailer: The system can transmit critical updates like job alerts, system
notifications, and passwords thanks to the integration of Nodemailer, which enables email notifications
- Sandbox PayPal: Designed to make it easier to pay for premium features,
including featured profiles or boosted job postings, while guaranteeing safe and easy financial processing
- Development tools include:
+ Visual Studio Code, which serves as the main Integrated Development
Environment (IDE) for coding and debugging
+ Draw.io, which helps with planning and documentation by producing diagrams like entity-relationship diagrams (ERDs) and system architecture models
Trang 12- Security and Authentication: JSON Web Tokens, or JWTs, are used to secure user authentication, guaranteeing that sensitive functionalities are only accessible by authorized users To improve data security, bcrypt is used to hash passwords
- Version Control: Throughout the development lifecycle, team participation is facilitated, source code is managed, and changes are tracked using Git and GitHub The project's goal is to create a dependable and effective hiring platform that caters
to the unique requirements of recruiters and engineering students by leveraging these tools and technology
Trang 13
CHAPTER 2: SYSTEM ANALYSIS
2.1 General Analysis
General Features
- Users:
o Registration, login, and logout
o Manage personal information
o Password recovery
User Roles and Permissions
- Company Group:
o A company can have multiple employees divided into:
▪ Company Group: Responsible for managing all employees and posts of the company
▪ Recruiter Group: Responsible for managing posts and handling candidates
o Permissions:
▪ The company group can:
▪ Invite recruiters who are not yet associated with the company
▪ Terminate employment for recruiters within the company
▪ Employees of a company can manage job posts of the company
▪ Both the company and recruiter groups can view CVs submitted to their company's posts
o Submit CVs for job posts
o View the list and details of submitted CVs
o Update advanced personal information to share with recruiters
o Store CVs online and share them with recruiters as needed
- Administrator:
o Manage user accounts
o Add, edit, and delete category information
o Approve or reject company registrations
o Approve, reject, or block job posts
o Define job post packages and candidate-viewing packages
Trang 14Job Post Management
- Post Structure:
o A job post belongs to one company (based on the employee posting it)
o There are two types of job posts: Standard and Featured
- Job Posting Packages:
o Each package includes posting credits, post type (Standard/Featured), and pricing
o Companies can purchase additional posting packages as needed
- Candidate Viewing Packages:
o Each package includes candidate-viewing credits and pricing
o Companies can purchase packages to access candidate information
Interaction Between Candidates and Recruiters
- Candidates:
o Search for posts approved by the administrator
o Submit CVs for relevant job posts
o Save and share CVs online with recruiters
- Recruiters:
o View candidate information submitted to job posts
o Search for candidates using purchased viewing packages
2.2 Business Function Requirements
Table 2.1: Functional requirements (Candidate group)
No Function Functional
type
Requirements
1 Login Authentication - Users must enter their login name (or
email) and password
- The system checks the login information with the database:
- If the information is valid:
+ Grant access to the system according
to the role
Trang 15+ Record the login session (session/token)
- If the information is invalid:
+ Display an error message
+ Support the forgot password feature, the new password will be sent to the email registered with the system
- Send an activation email:
+ Deliver an email to the user to get the password
Lookup - Display a list of companies:
+ Show company details such as name, industry, address, registration date, and approval status
+ Support pagination to handle large datasets (e.g., display 10, 20, or 50 companies per page)
Lookup - Display Recruitment Posts:
+ Show essential information for each post: job title, company name, location,
Trang 16salary range, and job type (full-time, time, remote, etc.)
part Post date and expiration date
+ Status (active, expired)
+ Paginate the results to display a configurable number of posts per page (e.g., 10, 20, 50)
- Users can check applied jobs
- Notifications for Suitable jobs via email:
- Indicate posts that have expired and prevent users from applying
5 View detail
company
Lookup - Detailed company view:
+ Allow users to click on a company name
to view more detailed information
+ Clearly display the company's approval status
+ View all the posts of the company
- Allow users to upload their CV files in PDF format
- Provide an option to use an existing saved CV from the user’s profile
- Enable users to add supplementary information, such as a cover letter or personal message
- Ensure the submitted CV is linked to the specific job post for which the user is applying
Trang 17- Show details of the job post during the submission process
- Display a confirmation message upon successful submission
Lookup - Allows to review the applied job post and
the CV submitted to the post
10 View and Edit
Personal
Information
Lookup / Modify
- View Personal Information:
+ Display the user’s details, such as: Full name, email address, phone number, address, date of birth, profile photo (if applicable)
+ Ensure that sensitive data (e.g., password) is not displayed
- Edit Personal Information:
+ Allow users to update their details and include a "Save" button to confirm updates
+ Notify users of successful updates with
+ Check the new password and confirm that the new password fields match
Trang 18+ Display a confirmation message upon successful password update
+ Show error messages for issues such as incorrect current password, new password not meeting validation criteria, and mismatch between the new password and confirmation field
- Allows you to view and edit advanced information about the job requirements you are looking for and submit your CV online
to share with employers
- Receive job suggestions that are suitable for you via email
Table 2.2: Functional requirements (Recruitment Group)
No Function Functional
Type
Requirements
1 Login Authentication - Users must enter their login name (or
email) and password
- The system checks the login information with the database:
- If the information is valid:
+ Grant access to the system according
to the role
+ Record the login session (session/token)
- If the information is invalid:
+ Display an error message
+ Support the forgot password feature, the new password will be sent to the email registered with the system
Trang 19+ Ensure the email or username is unique and not already in use
- Send an activation email:
+ Deliver an email to the user to get the password
- The recruitment account must not belong
to any company
- Fill in complete company information such as the official name of the company, the number of current employees of the company, and a description of the company
- The certificate profile is not required to
be filled in, but if not filled in, the company will default to the moderation status: Not yet moderated
- If the profile is filled in, the moderation status will be: Waiting for moderation
- Successful creation will have 5 free normal posts and 5 free view CVs
- Successful creation of a role from the recruitment group will upgrade to the company group
Processing
- Fill in detailed information about the post: field, experience requirements, salary, work location, etc
- There are 2 options for post types: Featured and normal When posting, it will cost 1 selected post If the post count is used up, you must buy more, otherwise you cannot post
- When posting successfully, the moderation status will be: Waiting for moderation
Trang 205 Manage
Company
List Post
Lookup / Modify
- View a list of job postings posted by your company
- View a list of job postings posted by your company
- Can do the following: Edit posts, and view notes on changing the post's moderation status
- Edit the allowed information When editing a post, it will return to the moderation status: Waiting for moderation
Lookup - Can view detailed information about the
cover letter and attached CV file sent
8 Search for
candidates on
demand
Lookup - Can view detailed information and CVs
of shared candidates that match your requirements
- View Personal Information:
+ Display the user’s details, such as: Full name, email address, phone number, address, date of birth, and profile photo (if applicable)
+ Ensure that sensitive data (e.g., password) is not displayed
- Edit Personal Information:
+ Allow users to update their personal details and include a "Save" button to confirm updates
+ Notify users of successful updates with
Trang 21+ Ensure the new password meets the platform's security requirements
+ Check the new password and confirm that the new password fields match
- Success and Error Messages:
+ Display a confirmation message upon successful password update
+ Show error messages for issues such as incorrect current password, new password not meeting validation criteria, and mismatch between the new password and confirmation field
statistics
Lookup - View statistics of the most posted fields
- View statistics of the number of CVs received for each post over time
Table 2.3: Functional requirements (Company Group)
No Function Functional Type Requirements
1 Login Authentication - Users must enter their login name (or
email) and password
- The system checks the login information with the database:
- If the information is valid:
+ Grant access to the system according
to the role
+ Record the login session (session/token)
- If the information is invalid:
+ Display an error message
+ Support the forgot password feature, the new password will be sent to the email registered with the system
- Security:
Trang 22+ Passwords must be encrypted (do not store passwords in plain text)
Detail
Information
Modify - Update company information such as
Company name, number of employees, description, etc
- If there is no certificate file when creating but when updating, the certificate file is added, the approval status is: Waiting for approval If it is still not added, the approval status is: Not approved
- If you change any information, the status will be changed to: Waiting for approval
if the previous approval status is: Approved
Processing
- Fill in detailed information about the post: field, experience requirements, salary, work location, etc
- There are 2 options for post types: Featured and normal When posting, it will cost 1 selected post If the post count
is used up, you must buy more, otherwise you cannot post
- When posting successfully, the moderation status will be: Waiting for moderation
- Edit the allowed information When editing a post, it will return to the moderation status: Waiting for moderation
Trang 23Lookup - Can view detailed information about the
cover letter and attached CV file sent
7 Search for
candidates on
demand
Lookup - Can view detailed information and CVs
of shared candidates that match your requirements
change
personal
information
Lookup / Modify - View Personal Information:
+ Display the user’s details, such as: Full name, email address, phone number, address, date of birth, profile photo (if applicable)
+ Ensure that sensitive data (e.g., password) is not displayed
- Edit Personal Information:
+ Allow users to update their personal details and include a "Save" button to confirm updates
+ Notify users of successful updates with
+ Check that the new password and confirm new password fields match
- Save Password:
+ Update the user's password in the database after successful validation + Hash the new password securely before storing it
- Success and Error Messages:
Trang 24+ Display a confirmation message upon successful password update
+ Show error messages for issues such as incorrect current password, new password not meeting validation criteria, and mismatch between the new password and confirmation field
statistics
Lookup - View statistics of the most posted fields
- View statistics of the number of CVs received for each post over time
11 Buy Package
Post /
Package
View CV
Transaction - Display a list of available packages
- Include package details
- Allow users to select a package based on their needs
- Enable users to view more details about
a package before purchase
- Payment Process:
+ Online payment gateways Sandbox PayPal (Test Environment )
+ Display the total cost and allow users
to confirm the purchase
- Invoice Generation:
+ Generate and display invoices for the purchase
+ Allow users to export Excel files
- After successful payment, add the purchased posts/views to the company's account
- Update the user dashboard to reflect the new package availability (e.g., "10 Normal Posts Remaining")
- Notify upon successful purchase
Trang 25Table 2.4: Functional requirements (Administrator Group)
No Function Functional Type Requirements
1 Login Authentication - Account must exist in the database
- Phone number and password required
- Receive access according to account role
- Users must provide basic information: + Username or email (required)
+ Other optional fields: name, phone number, address, etc
- Validation:
+ Ensure the email or username is unique and not already in use
- Send an activation email:
+ Deliver an email to the user to get the password
Lookup/ Modify - View account registration information
- Review and manage account status: active or inactive
Management
Lookup/ Modify - View company registration information
- Review and manage company status: active or inactive
- Review and manage company approval status: Unapproved, pending approval, approved
- Note the information each time the operation sends a notification to the
Trang 26company owner's email (the person who registered the company)
Categories
Lookup/ Modify - Create category information: Job type,
level, experience, salary range, and working form
- Can edit/delete category information
- View detailed information on categories
Lookup/ Modify - Can add and edit post packages in 2
types: featured and normal
- Can open business status and close business packages
- View package information
change
personal
information
Lookup/ Modify - View Personal Information:
+ Display the user’s details, such as: Full name, email address, phone number, address, date of birth, and profile photo (if applicable)
+ Ensure that sensitive data (e.g., password) is not displayed
- Edit Personal Information:
+ Allow users to update their personal details and include a "Save" button to confirm updates
+ Notify users of successful updates with
+ Check that the new password and confirm new password fields match
- Save Password:
Trang 27+ Update the user's password in the database after successful validation + Hash the new password securely before storing it
- Success and Error Messages:
+ Display a confirmation message upon successful password update
+ Show error messages for issues such as incorrect current password, new password not meeting validation criteria, and mismatch between the new password and confirmation field
statistics
Lookup - View statistics of the most posted areas
- View statistics of revenue of posting packages by period
2.3 System functional requirements and quality requirements
2.3.1 System functional requirements
- Company group: Manage company information, employees of the company, buy posting packages, post, view CV list and CV details, view related statistics
- Recruitment group: Can create a company if not affiliated with any company, have the right to post when affiliated with a company, view CV list and CV details, view related statistics
- Candidate group: Search for companies, and posts according
to wishes, and needs, apply by submitting CVs according to selected posts, and review the list of applied CVs and submitted
CV details
Trang 282.3.2 Quality requirements
Table 2.6 Quality Requirements
Both the location
and the content of
the information
must be correct
Accuracy Data in the project needs to be
completely accurate; Figtures are genuine Figtures
Quick search
performance
Effective Instantly respond to search results
2.3.3 Business Function Diagram (BFD)
Trang 29Fig 2.1 The Business Function Diagram is represented as a hierarchical tree
- The diagram is divided into large functional blocks (Admin, Company, Recruiter, Candidate), making it easy to understand the general business
Trang 302.4 Use Case Diagram (UCD)
2.4.1 Use Case Diagram: Register, Login
Fig 2.2 Register, login diagram
- The diagram describes how the register, and login process
Trang 312.4.2 Use Case Diagram: Company / Recruitment
Fig 2.3 Company / Recruitment Diagram
- The diagram describes how the actors (Company, Recruitment) interact with the system
2.4.3 Use Case Diagram: Candidate
Trang 32Fig 2.4 Candidate Diagram
- The diagram describes how the actor (Candidate) interacts with the system
Trang 332.4.4 Use Case Diagram: View CV
Fig 2.5 View CV Diagram
- The diagram describes how the actor (Company/ Recruitment) interacts with the system
2.4.5 Use Case Diagram: Admin
Fig 2.6 Admin Diagram
- The diagram describes how the actor (Admin) interacts with the system
Trang 34CHAPTER 3: SYSTEM DESIGN 3.1 System Architecture Diagram (SAD):
Fig 3.1 System Architecture Diagram
- The diagram describes well the relationship between the user, the React interface, the RESTful API, the backend using Node.js and Express.js, and the MySQL
- This architecture is very popular and suitable for modern web applications
Trang 353.2 Design Database
3.2.1 Entity Relationship Diagram (ERD)
❖ Identify entities:
- ALLCODES (code, type, value, image)
- ACCOUNTS (id, phone number, password, roleCode, userId, statusCode,
createdAt,updatedAt)
- CVS (id, userId, postId, file, isChecked, description, createdAt, updatedAt)
- POSTS (id, userId, timePost, timeEnd, isHot, detailPostId, statusCode, createdAt,
updatedAt)
- DETAILPOSTS (id, name, categoryJobCode, addressCode, salaryJobCode,
categoryWorkTypeCode, categoryJobLevelCode, experienceJobCode, amount, genderPostCode, descriptionHTML, descriptionMarkdown)
- NOTE (id, postId, userId, note, createdAt, updatedAt)
- PACKAGEPOSTS (id, name, value, price, isHot, isActive)
- ORDERPACKAGES (id, packagePostId, userId, currentPrice, amount,
createdAt, updatedAt)
- PACKAGECVS (id, name, value, price, isActive)
- ORDERPACKAGECVS (id, packageCvId, userId, currentPrice, amount,
createdAt, updatedAt)
- SKILLS (id, name, categoryJobCode)
- USERSKILLS (userId, skillId)
- USERSETTINGS (id, categoryJobCode, salaryJobCode, addressCode, file,
experienceJobCode, isFindJob, isTakeMail, userId)
❖ Relational data model:
- ALLCODES – ACCOUNTS: “roleCode” and “statusCode” are foreign keys
of ACCOUNTS through “code” of ALLCODES
- ALLCODES – USERS: “genderCode” is foreign key of USERS through
- ALLCODES – DETAILPOSTS: “genderPostCode”, “experienceJobCode”,
“categoryWorkTypeCode”, “categoryJobLevelCode”, “salaryJobCode”,
“addressCode”, “categoryJobCode” are foreign keys of DETAILPOSTS through “code” of ALLCODES
- ACCOUNTS – USERS: “userId” is foreign key of ACCOUNTS through
“id” of USERS
Trang 36- COMPANIES – USERS: “userId” is the foreign key of COMPANIES through the “id” of USERS “companyId” is the foreign key of USERS through the “id” of COMPANIES
- POSTS – DETAILPOSTS: “detailPostId” is a foreign key of POSTS through the “id” of POSTS
- POSTS – CVS: “postId” is a foreign key of CVS through the “id” of POSTS
- POSTS – NOTE: “postId” is a foreign key of NOTE through “id” of POSTS
- CVS – USERS: “userId” is a foreign key of CVS through the “id” of USERS
- NOTES – USERS: “userId” is a foreign key of NOTES through the “id” of USERS
Trang 37Fig 3.2 Entity Relationship Diagram
- This diagram shows entities, relationships between entities, and attributes The purpose of this diagram is to design the logical structure of the database, helping to identify the tables and relationships in the database
Trang 383.2.2 Physical Database Diagram (PDD)
Fig 3.3 Physical Database Diagram
- This second diagram shows the physical structure of the database in detail,
including tables, columns, data types, primary key constraints, foreign key
constraints, and connections between tables This diagram was created after
designing the ERD, used to deploy the database on the MySQL database
Foreign key
Not null
3 value Varchar(255) Value
4 image Varchar(255) Image link
Primary Key
Foreign key
Not null