Software Design Description (SDD) - CankayaUniversity/ceng-407-408-2024-2025-Job-Application-and-Matching-Platform GitHub Wiki
Table of Contents
1. INTRODUCTION
1.1 Purpose
The purpose of this Software Design Document (SDD) is to provide a detailed, structured, and comprehensive blueprint for the Job Application and Matching Platform. This document serves as a foundational reference for all stakeholders, including developers, quality assurance teams, project managers, and end-users. It ensures alignment on project objectives, outlines the technical framework, and delineates the features and functionality of the system.
The platform is specifically designed to transform and enhance the hiring process within the computer engineering sector. By leveraging cutting-edge AI algorithms, it connects job seekers with roles that suit their technical and interpersonal skillsets while simultaneously helping employers find candidates who match their requirements effectively. This approach addresses existing gaps in the job-matching landscape, focusing on inclusivity, fairness, and efficiency.
In addition to bridging the gap between candidates and employers, this document emphasizes best practices in software design, ensuring that the platform is robust, scalable, and secure. The insights presented in this document form the basis for seamless system implementation and long-term maintenance.
1.2 Scope
The scope of this project encompasses the design and development of a web-based job-matching platform that delivers tailored solutions to both job seekers and employers in the computer engineering sector. The platform's primary features include:
-
Comprehensive Profile Analysis: Advanced AI tools analyze users’ profiles, including their academic credentials, work experience, technical expertise, and interpersonal skills.
-
Job Recommendation System: AI algorithms match candidates to jobs and jobs to candidates based on user-defined preferences and requirements.
-
Enhanced User Support: Integrated live support ensures prompt assistance with user queries and technical issues.
Key deliverables include:
-
A robust registration and login system.
-
Intuitive dashboards for job seekers and employers.
-
AI-driven recommendations that enhance decision-making.
-
Support for secure and GDPR-compliant data management practices.
The platform serves two core user groups:
-
Job Seekers: Encompassing individuals from varied professional backgrounds, including students, early-career professionals, and seasoned engineers.
-
Employers: Ranging from small startups to large organizations seeking top talent.
The solution is highly customizable, ensuring its adaptability to evolving industry demands and user needs.
1.3 Glossary
Term | Definition |
---|---|
Job Seeker | An individual searching for employment opportunities through the platform. |
Employer | A company or individual posting job advertisements and searching for candidates. |
AI Matching | Artificial intelligence algorithms used to recommend jobs or candidates. |
Dashboard | A personalized interface for users to access relevant tools and information. |
Profile Management | The ability for users to create, update, and manage their profiles. |
KVKK/GDPR | Regulations ensuring user data privacy and security (General Data Protection Regulation / Turkish Personal Data Protection Law). |
Live Support | A real-time assistance feature provided to users for troubleshooting. |
Candidate Pool | A database of job seekers accessible to employers for recruitment purposes. |
Recommendation System | An AI-based feature that analyzes user preferences to provide job or candidate suggestions. |
1.4 Overview of Document
This Software Design Document is organized into the following sections:
-
Introduction: Establishes the purpose, scope, glossary, and motivation for the platform.
-
Architecture Design: Describes the high-level system architecture, including the technologies used and design patterns adopted.
-
Use Case Realizations: Explains key functionalities of the system, supported by diagrams and scenarios.
-
Environment: Details the technical and operational environment, including tools and frameworks used in development.
-
References: Provides a comprehensive list of standards, technologies, and documents referenced during the project.
Each section builds upon the others to provide a thorough understanding of the system’s design and implementation, ensuring clarity and completeness for all stakeholders.
1.5 Motivation
Traditional job platforms often prioritize technical qualifications and academic credentials, neglecting essential factors such as soft skills, cultural fit, and professional experiences. These limitations often lead to mismatches between job seekers and employers, increasing hiring time and costs.
This platform seeks to address these issues by offering:
- A Holistic Evaluation Process: By incorporating both technical and interpersonal skill assessments, the platform ensures a better fit for both candidates and employers.
- Efficient Hiring Mechanisms: Features like AI-driven recommendations, real-time messaging, and appointment scheduling streamline the recruitment process.
- Increased User Satisfaction: Job seekers gain access to more relevant opportunities, while employers can easily identify and engage with suitable candidates
- Adherence to Privacy Standards: The platform is designed to comply with GDPR and KVKK, ensuring secure handling of user data.
By addressing these challenges, the Job Application and Matching Platform aims to redefine the hiring process within the computer engineering sector. Its innovative features and user-centric design ensure a transformative impact on the recruitment landscape, promoting fairness, transparency, and efficiency.
2. ARCHITECTURE DESIGN
The project follows a layered architecture approach, which enhances modularity, scalability, and maintainability. Each layer has a distinct responsibility, ensuring that the system is well-organized and easy to extend.
2.1 Core Architecture Design
-
Core Layer:
- The Core Layer contains fundamental components and definitions used across the project, ensuring consistency and reducing code duplication.
-
Entity Layer:
- The Entity Layer defines data models mapped to database tables using JPA, serving as the backbone for business operations.
-
Business Layer:
- The Business Layer manages core business logic, acting as an intermediary between the Entity Layer and the Presentation Layer. It ensures consistent application of business rules and correct data processing.
-
Presentation Layer:
- The Presentation Layer, developed using React.js, provides a dynamic and responsive user experience, interacting with backend services via RESTful APIs.
-
Database Layer:
- The Database Layer, powered by PostgreSQL, is optimized for complex queries and ensures data integrity through enforced constraints and relationships [3]
-
External APIs and Services:
- The system integrates with external services such as AWS SES, Gmail API for email notifications, ElasticSearch for advanced search capabilities [6] , and WebSocket for real-time communication.
-
Deployment Environment:
- The deployment environment leverages cloud platforms like AWS or Google Cloud for scalability and high availability, with Docker ensuring consistent deployments.
This architecture ensures a robust, scalable, and maintainable system, capable of supporting future growth and feature additions.
Class Diagram 1
To view the diagram more clearly, you can download the PNG file here.
Class Diagram 2
To view the diagram more clearly, you can download the PNG file here.
2.2 Deployment Architecture Design
The architecture comprises the following main components:
-
Frontend (Presentation Layer):
-
Developed using React.js for dynamic and responsive user interfaces.
-
Implements Material-UI for consistency in design and enhanced user experience.
-
Interacts with the backend via RESTful APIs.
-
-
Backend (Application Layer):
-
Built on Java Spring Boot, ensuring robust and scalable API management.
-
Incorporates business logic for user management, job matching, and real-time messaging.
-
Integrates with AI modules written in Python for advanced recommendation algorithms.
-
-
Artificial Intelligence Module:
-
Utilizes Python libraries like PyTorch, Keras, Scikit-learn and TensorFlow for job and candidate matching.
-
Employs collaborative filtering, content-based filtering, and hybrid recommendation approaches.
-
Continuously improves through machine learning models trained on user interactions.
-
-
Database (Data Layer):
-
Powered by PostgreSQL, optimized for complex queries and data integrity.
-
Stores user profiles, job postings, application records, and AI-generated recommendations.
-
Ensures data redundancy and backups for reliability.
-
-
External APIs and Services:
-
Email verification and notification services through AWS SES or Gmail APIs.
-
Search functionalities enhanced by ElasticSearch for efficient information retrieval.
-
WebSocket protocol for real-time messaging between users.
-
-
Deployment Environment:
-
Hosted on cloud platforms like AWS or Google Cloud for scalability and high availability.
-
Implements containerization with Docker for consistent deployments across environments.
-
This deployment architecture ensures a seamless experience for users while maintaining a robust and flexible backend to support future growth and feature additions.
2.3 Activity Diagram
In this activity diagram describes an interactive process between a Job Seeker, Employer, and AI System. The Job Seeker begins by logging into the platform and searching for jobs using various filters. After reviewing AI-suggested jobs, the job seeker selects and applies for a job, then tracks the application status. The Employer, on the other hand, posts job advertisements detailing necessary skills and qualifications and searches the candidate’s using filters. The employer reviews AI-suggested candidates, manages applications by accepting or rejecting candidates, and may make offers or schedule interviews. The AI System plays a central role by analysing job seeker profiles, including their skills, experience, and preferences, while also analysing job postings to understand required skills. The AI system matches candidates to jobs by generating a ranked list of suitable candidates and provides feedback to continuously improve the accuracy of its recommendations, ensuring that both job seekers and employers find the best fit for each other.
3. USE CASE REALIZATIONS
3.1 Brief Description
Components of the project are shown in the figure above. All designed systems of the project are displayed in the block diagram in the figure. There are three main components of the system which have their own sub-systems, organized hierarchically to reflect the structure and functionality of the project.
3.1.1 User Management
This component focuses on user-related operations, including registration, login, and profile management. It enables users to create accounts, authenticate credentials, and manage their profiles efficiently. Features include email verification, account updates, and the ability to freeze or delete accounts, ensuring secure and personalized user experiences.
3.1.2 Job Matching System
The Job Matching System is the core feature of the platform, utilizing AI algorithms to connect job seekers with suitable job opportunities and employers with the most relevant candidates. It allows job seekers to search for positions, view AI-generated recommendations, apply for jobs, and save applications for later reference. Employers can manage advertisements, search for candidates, and track applications efficiently. The system ensures high accuracy in recommendations by analyzing user profiles, preferences, and job requirements. It provides a dynamic and automated way to streamline the hiring process, reducing time and effort for both parties.
3.1.3 Menu System
The Menu serves as the central hub for accessing all major functionalities of the platform, customized for two primary user groups: job seekers and employers. Job seekers can manage their profiles, view job applications, access saved jobs and communicate with employers through real-time chat. They can also read blogs contributed by employers and schedule interviews directly from the platform. Employers, on the other hand, can manage resumes, create job advertisements, and interact with potential candidates. Notifications and messages are integrated into the menu, ensuring users stay updated on critical actions and events. This component ensures an streamlined navigation experience for all users.
4. ENVIRONMENT
4.1 Modelling Environment
The Modeling Environment for the Job Application and Matching Platform encompasses all tools, frameworks, and platforms required to design, develop, and maintain the system effectively. The environment is tailored to ensure robust system performance, scalability, and user satisfaction. Key elements include:
-
Development Tools:
-
Integrated Development Environments (IDEs):
-
IntelliJ IDEA for backend development with Spring Boot.
-
Visual Studio Code for frontend development with React.js.
-
-
Version Control:
- Git and GitHub for source code management and collaboration.
-
Containerization:
- Docker for creating consistent development and deployment environments.
-
-
Frameworks and Libraries:
-
Frontend Frameworks: React.js with Material-UI for UI design.
-
Backend Frameworks: Java Spring Boot for creating APIs and managing business logic.
-
AI Libraries: Scikit-learn and TensorFlow for machine learning and recommendation algorithms.
-
Database Management: PostgreSQL for handling relational data efficiently.
-
Search Engine: ElasticSearch for enhanced job and candidate search capabilities.
-
-
Deployment Environment:
-
Cloud Platforms: AWS or Google Cloud for hosting scalable and secure infrastructure.
-
Continuous Integration/Continuous Deployment (CI/CD): Jenkins or GitHub Actions for automated testing and deployment.
-
-
Testing Tools:
-
Unit Testing: JUnit for backend testing and Jest for frontend testing.
-
Integration Testing: Postman and Selenium for API and UI testing.
-
Load Testing: Apache JMeter to simulate high user traffic and ensure system stability.
-
-
Monitoring and Logging:
-
Monitoring Tools: Prometheus and Grafana for real-time system monitoring.
-
Logging: Logstash and Kibana for tracking and visualizing system logs.
-
By leveraging this modeling environment, the development team ensures a streamlined process from initial design to final deployment, minimizing risks and optimizing resource utilization. The environment supports iterative development, rapid prototyping, and continuous improvement, aligning with agile methodologies and best practices.
5. REFERENCES
-
GDPR and KVKK compliance guidelines: Ensuring user data security and privacy.
-
Official documentation for React.js and Material-UI: https://reactjs.org and https://mui.com.
-
PostgreSQL Database Documentation: https://www.postgresql.org/docs.
-
TensorFlow and Scikit-learn Libraries for AI implementation: https://www.tensorflow.org and https://scikit-learn.org.
-
Jenkins and GitHub Actions for CI/CD processes: https://www.jenkins.io and https://github.com/features/actions.
-
ElasticSearch Documentation for search functionality: https://www.elastic.co/guide.
-
Prometheus and Grafana Documentation for monitoring: https://prometheus.io and https://grafana.com