Skip to content

A full-featured Job Portal built with Spring Boot (Java 21), React (Vite), and MySQL. Supports authentication (JWT), CRUD job posting, file uploads, secure messaging, and an Admin Dashboard for platform management.

License

Notifications You must be signed in to change notification settings

SandunMunasinghe20/job-portal-springboot-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’Ό Fullstack Job Portal | Java Spring Boot + React (Vite) + MySQL

This is a personal Fullstack Job Portal project built individually using Spring Boot (Java 21), React (Vite), and MySQL. It includes secure authentication with JWT, role-based access control, job posting & applications, resume uploads, real-time messaging, and an Admin Dashboard. Designed and developed from scratch to demonstrate fullstack engineering skills with Spring Boot & React.

πŸ“‘ Table of Contents

πŸš€ Project Overview

This fullstack Job Portal allows seamless interaction between Employers and Job Seekers. Key features include:

πŸ§‘β€πŸ’Ό Employers can post, update, and delete job listings, and manage applications.

πŸ‘¨β€πŸŽ“ Job Seekers can browse, search, filter, and apply to jobs with uploaded resumes.

πŸ” Secure login, registration, and password management using Spring Security

  Passwords are hashed with BCryptPasswordEncoder
  
  JWT-based authentication for stateless sessions
  
  Role-based access control enforced via @PreAuthorize annotations

πŸ’¬ Messaging system enabling Employers and Job Seekers to communicate securely based on application status.

πŸ“‚ Upload and view resumes, profile pictures, and company logos securely.


❓ Why This Project?

  • This project is ideal for developers who want to learn how to build a fullstack job portal application using Spring Boot, React, and MySQL.
  • It covers authentication with JWT, secure file uploads, real-time messaging, and role-based access, making it a great reference for portfolio projects and enterprise-style applications.

πŸ§‘β€πŸ’» My Role as Developer

  • Designed and implemented RESTful APIs using Spring Boot
  • Built a responsive frontend UI using React + Vite + Tailwind CSS
  • Configured JWT-based authentication and role-based access using Spring Security
  • Designed database schema and relationships in MySQL
  • Integrated secure resume and profile image upload features
  • Managed CORS, error handling, and environment configurations

πŸ—οΈ Architecture

Layer Stack
Frontend React, Vite, Tailwind CSS, React Icons, React Router, React Toastify, ESLint
Backend Java 21, Spring Boot, Spring Data JPA, Spring Security, PMD
Database MySQL (local development), MariaDB via SkySQL (CI)
Tools Git, GitHub,Maven, Postman, JUnit

πŸ“Έ Screenshots

πŸ› οΈ Admin Dashboard

Admin Dashboard of Job Portal built with Spring Boot, React, and MySQL

πŸ“„ View Job Applications

Job Applications management page in Job Portal using React frontend and Spring Boot backend

πŸ“ Job Details Page

Detailed Job Posting page with description, requirements, and apply option in Fullstack Job Portal

πŸ‘€ Profile View

User Profile page showing resume upload, contact info, and job applications in Job Portal

πŸ”— Live Demo / Video


πŸ§ͺ Key Features (Functional Requirements)

πŸ” Authentication & Authorization

  • Login / Register / Forgot Password via email service
  • JWT Token based secure authentication
  • Role-based access control for Employers, Job Seekers, and Admins
  • Logout functionality for all roles

πŸ’¬ Messaging System

  • Employers can message job seekers only after a job application exists
  • Admins can message anyone
  • Self-messaging and same-role messaging is prohibited
  • Read receipts are enabled (users can see if their message was viewed)
  • Messages cannot be deleted to ensure platform integrity

🧭 Role Capabilities

πŸ‘¨β€πŸŽ“ Job Seekers

  • Browse and search all job posts
  • Apply to jobs with attached resume
  • View and update profile
  • Upload resume to profile and during job applications
  • View submitted applications

πŸ§‘β€πŸ’Ό Employers

  • Post, edit, delete only their own jobs
  • View received job applications
  • Approve, reject, or delete job applications
  • View and update profile
  • See all jobs on the portal

πŸ› οΈ Admins

  • View all jobs, applications, employers, and seekers
  • Activate or Deactivate User Accounts
  • Delete inappropriate jobs
  • Monitor platform activities

πŸ“‚ File Uploads

  • Upload and view resumes (PDF)
  • Upload and view profile pictures and company logos

🧩 Challenges Solved

  • Integrated JWT and Spring Security securely for role-based access
  • Solved CORS issues between frontend and backend during development
  • Designed clean RESTful APIs with proper separation of concerns
  • Normalized schema for user-job-application relationships
  • Maintained secure upload storage for resumes and images
  • Implemented Continuous Integration (CI) using GitHub Actions to automate backend builds, tests, and frontend linting

🧠 What I Learned

  • Building and securing fullstack applications end-to-end
  • React state management with Hooks and API integration
  • Designing scalable and normalized relational databases
  • Implementing security best practices with Spring Security & JWT
  • Handling uploads and file storage across the stack
  • Structuring clean code and maintaining modularity in large projects

βš™οΈ Non-Functional Requirements

πŸš€ Performance

  • APIs respond within <200ms for common operations (job search, profile retrieval)
  • Supports 2000+ concurrent users with minimal latency.

Load Testing Results (Proof):

  • Concurrent Users Tested: 2000
  • Total Requests: 2000
  • Average Response Time: 18 ms
  • Max Response Time: 154 ms
  • Std. Dev.: 4.24
  • Error %: 0%
  • Throughput: 10 requests/sec

Summary Report

πŸ” Security

  • Passwords hashed with BCryptPasswordEncoder
  • JWT-based authentication for stateless sessions
  • Role-based access enforced via Spring Security
  • Secure file uploads (resumes, profile images, company logos)

🎨 Usability

  • Responsive design across desktop, tablet, and mobile
  • Accessibility improvements (labels, ARIA roles, contrast)

πŸ“ˆ Scalability

  • REST APIs structured for horizontal scaling
  • Indexed queries in MySQL for efficient job searching

⚑ Reliability & Availability

  • Error handling with descriptive fallback messages
  • Auto-recovery on backend restart

πŸ› οΈ Maintainability

  • Layered architecture (controllers, services, repositories)
  • Static code analysis with PMD & SpotBugs
  • Consistent coding conventions and modular structure

🌍 Portability

  • Backend deployable on AWS EC2 or any cloud VM
  • Frontend can run on Vercel / Netlify with minimal configuration

πŸ› οΈ Tech Stack

Frontend:
React Vite TailwindCSS React Router

Backend:
Java Spring Boot Spring Security JPA

Database:
MySQL MariaDB

Testing:
JUnit Mockito Apache JMeter Postman

Code Quality:
PMD SpotBugs ESLint

DevOps & Tools:
Git GitHub GitHub Actions Node.js npm

βš™οΈ Setup Instructions

βœ… Prerequisites

  • Java 21
  • Node.js & npm
  • MySQL Server
  • Maven

πŸ› οΈ Backend Setup

CREATE DATABASE job_portal;

Edit application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/job_portal
spring.datasource.username=root
spring.datasource.password=your_password
spring.jpa.hibernate.ddl-auto=update

Run Backend:

./mvnw spring-boot:run

πŸ’» Frontend Setup

cd frontend
npm install
npm run dev

πŸ› οΈ Continuous Integration & Code Quality

Configured GitHub Actions to automatically run workflows on every push and pull request.

βš™οΈ Backend CI

  • Builds the Spring Boot project with Maven
  • Runs JUnit tests for backend services
  • Connects to SkySQL (MariaDB) for integration tests

πŸ’» Frontend CI

  • Runs ESLint for linting and formatting checks
  • Detects unused variables, accessibility issues, and potential React bugs
  • Prevents merging code with style or quality violations

πŸ–₯️ Local Developer Quality Checks

(Run manually in IntelliJ IDEA β€” not enforced in CI)

  • πŸ” PMD β†’ Detects code smells, complexity issues, and unused imports
  • 🐞 SpotBugs β†’ Finds potential runtime bugs, null-pointer risks, and concurrency problems

🎯 Benefits

  • 🐞 Catch bugs and regressions before deployment
  • 🎨 Maintain consistent code style across frontend & backend
  • ⚑ Faster feedback loops with automated tests
  • πŸ›‘οΈ Higher reliability and maintainability of the codebase

πŸ“Œ Roadmap

  • βœ… Login, Register, Forgot/Reset Password
  • βœ… Job Posting and Application Flows
  • βœ… MySQL Integration
  • βœ… Resume Upload & File Storage
  • βœ… Role-Based Messaging System
  • βœ… Admin View and Control Features
  • βœ… Notifications for Account activations and deactivations by Admin
  • βœ… Stats/Analytics
  • βœ… UI/UX Polish
  • βœ… Frontend deployed on Netlify
  • πŸ”œ Backend deployment (Render / Railway / AWS EC2)

πŸ‘€ Author

Sandun Munasinghe πŸ“§ e20259@eng.pdn.ac.lk πŸ“§ msandunlakshan2001@gmail.com πŸ”— GitHub Profile


πŸ“„ License

This project is licensed under the MIT License. See the LICENSE file for details.


About

A full-featured Job Portal built with Spring Boot (Java 21), React (Vite), and MySQL. Supports authentication (JWT), CRUD job posting, file uploads, secure messaging, and an Admin Dashboard for platform management.

Topics

Resources

License

Stars

Watchers

Forks