JobSnap is a web-based platform designed to help students build professional profiles and generate dynamic CVs tailored to specific job roles. By allowing students to customize CV templates for targeted job types, the platform ensures that students present the most relevant information to potential employers, streamlining the recruitment process for both parties.
π¬ Demo π¬
2. Key Features
3. Requirements
4. User Stories
5. Backlog
FOR: Students who want to create professional profiles and tailor CVs for specific job roles.
WHO: Face challenges with creating relevant, job-specific CVs and finding job opportunities that match their skills.
THE JobSnap system: A web-based platform for building profiles and generating customized CVs.
THAT: Provides tailored CV templates, job role-based field suggestions, and employer access to profiles.
UNLIKE: Generalized CV builders or simple resume generators.
THIS PRODUCT: Offers dynamic CV customization based on job roles, a range of professional templates, and a streamlined connection between students and employers.
- User Profiles: Create and edit profiles, including academic background, projects, skills, and experience.
- CV Generation: Generate CVs from templates that are dynamically customized to match specific job roles.
- Template Customization: Choose from a variety of CV templates designed to highlight relevant skills and experience.
- Job Role-based Field Suggestions: Get suggestions on specific fields to fill based on the targeted job role.
- Search: Search for candidates based on job role, skills, and other criteria.
- View CVs: View CVs that match your desired candidate profile.
- R1: The application must support secure user registration and login for both students and employers
- R2: Students must be able to create, edit, and delete profile information.
- R3: Students must be able to generate a CV tailored to specific job roles.
- R4: Employers must be able to view generated CVs and search for candidates based on job role and skills.
- "As a student, I want to create a profile so that I can store my academic and professional information."
- As a student, I want to generate a CV tailored to a specific job role so that it highlights my most relevant skills."
- "As a student, I want to select from different CV templates so that I can choose a design that best represents me."
- "As an employer, I want to search for students with specific skills so that I can find suitable candidates."
- "As an employer, I want to view CVs tailored to job roles so that I can quickly assess candidatesβ qualifications."
The backlog will include tasks derived from user stories and prioritized for development. Each story should be broken down into smaller tasks for implementation and ordered based on relevance and dependencies. Our progress is tracked on Trello.
- Context Diagram
- Container Diagram
- Component Diagram
- Performance: <2s response time using Spring Boot, optimized SQL, and Redis caching.
- Scalability: Microservices, load balancer, and cloud auto-scaling.
- Security: OAuth 2.0, AES-256 encryption, input validation, HTTPS.
- Availability: 99.9% uptime with monitoring, backups, and redundancy.
- Usability: ReactJS, user testing, and interactive guides.
- Portability: Responsive design and cross-device testing.
- Maintainability: Standardized code, documentation, and automated testing.
- Student profile creation and editing.
- Generating job-role-specific CVs.
- Selecting from multiple CV templates.
- Employers viewing uploaded CVs.
- Searching for candidates based on skills (initially not implemented).
-
Managing Multiple CVs per Student
- Students can create multiple CVs using different templates and choose which CVs to upload for employers.
- This allows better customization for different job applications.
-
Enhanced Employer Access to CVs
- Employers can not only view CVs but also filter CVs by category (e.g., IT CVs, Medical Care CVs).
- This improvement streamlines the hiring process by enabling better filtering based on job roles.
-
Optimized CV Generation Interface
- The user experience for CV generation has been improved by providing job-role-based field suggestions, which was initially only planned.
-
Better Information Accessibility for Employers
- Employers can now filter CVs based on categories, reducing the time required to find the right candidate.
-
Candidate Search for Employers
- Implementing a search feature that allows employers to filter candidates based on skills, experience, and job roles.
- This will help recruiters find the most relevant profiles faster.
-
Job Recommendations for Students
- Introducing AI-driven job recommendations based on a student's profile, skills, and job preferences.
- This will help students discover suitable job opportunities more efficiently.
- Students: More control over their CVs and the ability to create multiple versions for different opportunities.
- Employers: Increased efficiency in the selection process through structured access to relevant candidates.
The JobSnap platform has exceeded its initial objectives, offering a more flexible and efficient solution for both students and employers in managing and selecting CVs.
We implemented a CI/CD pipeline using GitHub Actions to automate testing and ensure code quality across all environments. The pipeline is triggered on every commit or pull request, running unit tests to validate core functionalities.
The pipeline focuses on automating backend unit tests and verifying that changes do not break existing functionality. Since the database, backend, and frontend are all hosted locally, the CI/CD pipeline ensures a consistent development process.
Our development workflow relies on three local environments:
- Purpose:
- Initial development and debugging of features.
- Setup:
- Backend runs locally using Spring Boot (mvn spring-boot:run).
- Frontend runs locally using React (npm start).
- Oracle database configured locally with mock data.
- Key Features:
- Debugging enabled for rapid issue identification.
- Detailed logging for backend workflows.
- CI/CD pipeline runs unit tests to validate changes during development.
- Purpose:
- Simulate a production-like environment for final validation.
- Setup:
- Backend and frontend continue to run locally.
- Oracle database populated with semi-real data for testing.
- Key Features:
- Manual and automated testing, including integration validation.
- CI/CD pipeline executes unit tests for final validation.
- Purpose:
- Serve the final application to end-users.
- Setup:
- Backend, frontend, and Oracle database all run locally on the production machine.
- Database contains real data for actual use cases.
- Key Features:
- Final manual testing is performed before deployment.
- CI/CD pipeline validates deployment.
Aspect | DEV | STAGING | PRODUCTION |
---|---|---|---|
Purpose | Development and debugging | Final validation | End-user environment |
Database | Oracle local (mock) | Oracle semi-real | Oracle real |
Backend | Local | Local | Local |
Frontend | Local | Local | Local |
Debugging | Enabled | Enabled | Disabled |
Logging | Detailed | Standard | Optimized |
Testing | Manual & unit tests | Manual & unit tests | Manual & unit tests |
CI/CD Pipelines | Unit tests | Unit tests | Deployment validation |
- Backend:
- Runs locally using Spring Boot with mvn spring-boot:run.
- Mock Oracle database configured in application.properties for testing.
- Unit tests are executed to validate new features.
- Frontend:
- Local React app started with npm start.
- Connected to the local backend for API interactions.
- Backend:
- Runs locally with a semi-real Oracle database.
- Frontend:
- Runs locally and is tested with the staging backend.
- Backend:
- Runs locally with the Oracle database containing real data.
- Optimized for stability and performance.
- Frontend:
- Tested and validated manually with the production backend.
- Validate the main functionalities of the application (profile creation, CV generation, employer search, and viewing CVs).
- Ensure compliance with non-functional requirements: performance, security, and reliability.
- Identify and fix defects.
- Frontend: User interface.
- Backend: Services and APIs.
- Database: Integrity and performance of queries.
- Integration: Communication between frontend and backend components.
- Unit testing.
- Integration testing.
- System testing.
- Security testing.
- Unit Testing: During the development of individual components.
- Integration Testing: After implementing frontend-backend interactions.
- System Testing: On the complete application version, in a staging environment.
- Security Testing: In the final phase, to identify critical vulnerabilities.
- Goal: Verify the correctness of individual functions in the backend.
- Tools: JUnit 5, Mockito, JWT (Jwts)
- Goal: Validate interaction between frontend and backend.
- Tools: manual testing
- Goal: Simulate the complete application flow.
- Tools: JUnit5, Selenium WebDriver, WebDriverWait
- Goal: Identify and address critical vulnerabilities.
- Tools: manual testing
- Goal: Measure API response time
- Tools: k6
Functionality | Test Type | Expected Result | Actual Result | Status | Remarks |
---|---|---|---|---|---|
Profile creation | Unit | Profile successfully created | Profile successfully created | Passed | - |
Sign Up | Unit | Signed up successfully | Signed up successfully | Passed | - |
Log in | Unit | Logged in successfully | Logged in successfully | Passed | - |
CV generation | System | CV generated correctly | CV generated correctly | Passed | - |
Frontend API connection | Integration | API responds with 200 OK | 200 OK response | Passed | - |
SQL Injection attack | Security | Input blocked | Input blocked | Passed | - |
Performance (10 users) | Performance | Application responds in <1s | Application responds in 900ms | Passed | - |
- All critical functionalities were successfully tested.
- No major defects were identified.
- Performance and security meet the requirements.
- Implement automated end-to-end (E2E) tests to reduce manual testing time.
- Continuously monitor security in the production environment.
-
User Credential Security
- Risk: Passwords stored in plain text could be exposed in case of a data breach.
- Solution: Implemented bcrypt hashing for password storage, ensuring strong encryption and resistance to brute-force attacks.
-
Data Privacy and Uniqueness
- Risk: Duplicate or invalid email addresses and phone numbers could lead to unauthorized access or account duplication.
- Solution: Ensured email addresses and phone numbers are unique, preventing duplicate registrations and enforcing better identity management.
-
SQL Injection Attacks
- Risk: Malicious users could inject SQL queries into input fields, potentially modifying or extracting sensitive database information.
- Solution: Implemented prepared statements and parameterized queries, making SQL injection attacks ineffective.
-
Multi-Factor Authentication (MFA)
- Adding an extra layer of security by requiring a secondary verification step (e.g., email/SMS OTP) for login.
-
Rate Limiting & CAPTCHA
- Implementing rate limiting on login and registration attempts to prevent brute-force attacks.
- Adding CAPTCHA verification to avoid bot-based account creation and login attempts.
-
Role-Based Access Control (RBAC)
- Ensuring strict access control so that students and employers have appropriate permissions and cannot access restricted functionalities.
-
Secure API Endpoints
- Implementing authentication tokens (JWT or OAuth) for API requests.
- Enforcing HTTPS to secure data transmission.
- The current security implementation in JobSnap effectively protects against common risks such as password breaches, duplicate accounts, and SQL injection. Future enhancements like MFA, CAPTCHA, and RBAC will further improve the security posture of the platform.
- Implemented in Java using the Spring Boot framework.
- Configured to connect to a local Oracle Database instance via a configuration file (
application.properties
).
- Implemented in React.
- Run locally using the command:
npm start