A complete full-stack job portal web application built with Java Spring Boot (Backend) and React + Vite (Frontend).
It supports secure authentication, job browsing, filtering, saving, applying, and role-based access for job seekers and employers.
This project is designed to provide a real-world job marketplace experience β from a job seeker discovering, applying, and tracking jobs,
to an employer posting jobs, managing applicants, and making hiring decisions.
Every feature was planned, built, and tested end-to-end, covering frontend, backend, database, and API integration.
π Live Demo: jobportal.dev
π GitHub: FullStackJobPortal
This application simulates the core workflows of modern job platforms like LinkedIn or Indeed but built entirely from scratch.
It includes secure JWT authentication, dynamic job listing, saving and applying features, applicant management, and a fully interactive dashboard for employers.
The project required:
- Building a REST API with authentication, file upload handling, and relational data modeling in the backend.
- Designing and implementing a responsive React UI from scratch without pre-made templates.
- Managing real-time-like updates (e.g., notifications, application status changes).
- Writing clean, maintainable code with modular architecture.
- Java 17
- Spring Boot
- Spring Security with JWT + OAuth2
- Hibernate (JPA)
- PostgreSQL
- Cloudinary (cloud file storage)
- Docker & Docker Compose
- Lombok
For the full backend documentation and implementation details,
please navigate to the Backend README.
- React.js
- Vite
- Axios
- Formik
- Context API
- Tailwind CSS
- DigitalOcean β Backend (Spring Boot + PostgreSQL)
- Vercel β Frontend (React)
- Cloudinary β File & image storage
- Custom domain β jobportal.dev
- Authentication: Secure sign up, sign in, and logout flows.
- Job Discovery: Browse, filter, and search jobs by title, location, and type.
- Job Details: View full job descriptions, responsibilities, and required skills.
- Job Saving: Save and unsave jobs with instant visual feedback.
- Applications: Apply to jobs, answer optional screening questions, and upload a resume.
- Tracking: View saved jobs, applied jobs, and detailed application status.
- Management: Withdraw applications at any time.
- Profile Editing: Update profile picture, resume, username, email, etc.
- Notifications: Get notified when application status changes, and mark notifications as read.
- Authentication: Sign up, sign in, and logout.
- Job Posting: Create and publish jobs with full details, responsibilities, skills, and optional screening questions.
- Job Management: Edit and delete posted jobs.
- Applicant Management: View applicants per job or across all jobs.
- Decision Making: Accept or reject applicants and notify them automatically.
- Resume Review: View resumes directly in-browser.
- Dashboard: View statistics for total jobs, applicants, accepted, rejected, and pending applications.
- 60+ unique UI screens designed and implemented manually.
- Fully functional backend with clean service-layer architecture and DTO separation (request/response).
- Real database integration (PostgreSQL) with optimized queries and entity relationships.
- Cloud file storage via Cloudinary for profile pictures and resume uploads.
- Pagination on all job listing endpoints for optimized performance and reduced server load.
- Notification system that mimics real-time updates using efficient state management.
- Role-based access control with @PreAuthorize annotations protecting every endpoint (JOB_SEEKER / EMPLOYER).
- Global exception handling ensuring consistent, proper error responses across the app.
- Dockerized backend for consistent and portable deployment.
- CORS security restricted to specific allowed origins only.
- Responsive design that adapts to all screen sizes including mobile.
- Deployed with a custom domain β fully accessible at jobportal.dev.

The landing page for both job seekers and employers, with clear options to sign up or log in.

Role selection menu ensuring users choose the correct account type before signing up or logging in.

Signup form with required details (name, username, password, DOB, email) and optional profile picture & resume.

Main job listing interface with job cards on the left and job details on the right.

Pagination controls allow browsing through more job postings.

Detailed job view with responsibilities, skills, and application options.

Filter jobs by type (Full-time, Part-time, Internship, etc.).

Example of searching for internships β results show only relevant positions.

Compact card layout displaying job title, company logo, location, and type.

Saving a job triggers a toast notification and fills the save icon.

Tabs for Saved, Applied, and Interviews, with job counts in each category.

Removing a saved job instantly updates the list and count.

Start of application process, beginning with screening questions.

Submitted application overview showing job info, resume link, and status.

Pop-up showing status changes for multiple job applications.

Detailed pop-up view with company logos, job titles, and status updates.

Dropdown list of notifications accessible from the navbar bell icon.

Signup form for employers with account info, company name, industry, email, and logo.

Empty dashboard shown after signing in before any jobs are posted.

Starting job creation by adding the title and description.

Step for entering skills required for the position.

Confirmation screen with options to view the job or add another.

Job details page with edit and delete controls.

Dashboard with counts for jobs and applicants after posting multiple jobs.

List of applicants for a specific job.

Detailed applicant view with resume link and application info.

Applicant status updated to "Accepted" with automatic notification.
To see all 60+ screenshots with detailed explanations for every step of both Job Seeker and Employer workflows:
β‘οΈ View Full Screenshot Walkthrough
project-root/ β README.md β Full_Walkthrough.md β backend/ β frontend/ βββ ScreenShots/