A modern, production-ready Job Portal built with Spring Boot, React, and PostgreSQL. The application allows users to browse jobs, apply for positions, and manage job postings through a secure, scalable architecture. It is fully containerized using Docker and deployment-ready with Kubernetes.
- 🔐 JWT Authentication & Authorization
- 👤 Role-Based Access Control (Admin & User)
- 📋 Create, Update, Delete & Search Jobs
- 🔍 Advanced Filtering & Pagination
- 📝 Apply for Jobs
- 📂 Resume Upload Support
- ✅ Input Validation
⚠️ Global Exception Handling- 🐳 Dockerized Frontend & Backend
- ☸️ Kubernetes Deployment Manifests
- 🗄️ PostgreSQL Database
- 🌐 RESTful APIs
- Java 21
- Spring Boot
- Spring Security
- Spring Data JPA
- Hibernate
- PostgreSQL
- JWT
- Maven
- JUnit 5
- Mockito
- Spring Boot Test
- MockMvc
- React
- Vite
- Axios
- CSS
- Docker
- Docker Compose
- Kubernetes
- Nginx
- Terraform
- Helm
WeHire-Fullstack
│
├── jobapp/ # Spring Boot Backend
├── wehire-frontend/ # React Frontend
├── k8s/ # Kubernetes Manifests
├── docker-compose.yml
└── README.md
git clone https://github.com/<your-username>/WeHire-Fullstack.git
cd WeHire-FullstackThe backend includes automated tests using JUnit 5, Mockito, and Spring Boot Test.
The project currently covers:
- Service layer unit testing
- Controller layer testing
- Business logic validation
- Exception handling scenarios
- Authorization and ownership checks
To run all backend tests:
cd jobapp
mvn clean test
docker compose up --buildApplication URLs
| Service | URL |
|---|---|
| Frontend | http://localhost:5173 |
| Backend | http://localhost:8080 |
Apply the Kubernetes manifests:
kubectl apply -f k8s/Check resources:
kubectl get allHelm charts are used for Kubernetes deployments.
wehire-chart/
├── Chart.yaml
├── values.yaml
├── templates/
│ ├── backend-configmap.yaml
│ ├── backend-deployment.yaml
│ ├── backend-secret.yaml
│ ├── backend-service.yaml
│ ├── frontend-deployment.yaml
│ ├── frontend-service.yaml
│ ├── postgres-deployment.yaml
│ ├── postgres-pvc.yaml
│ ├── postgres-secret.yaml
│ └── postgres-service.yaml
└── charts/
The application uses:
- JWT Access Tokens
- Refresh Tokens
- BCrypt Password Encryption
- Spring Security
- User Registration
- User Login
- Refresh Token
- CRUD Job APIs
- Search Jobs
- Apply for Jobs
- File Upload
- Validation
- Exception Handling
GitHub Actions automatically runs on every push.
Pipeline:
Git Push | | GitHub Actions | | Backend:
- Maven build
- Docker image build
- Docker Hub push
Frontend:
- npm build
- Docker image build
- Docker Hub push
Karan Negi