A Full‑Stack Job Application Portal built as part of a Database Management System (DBMS) course. JobOps allows users to browse job listings, apply with a resume and profile photo, save jobs, track applications, and manage their account – all wrapped in a clean, responsive interface.
- ✨ Features
- 🖼️ Screenshots
- ⚙️ Tech Stack
- 📁 Folder Structure
- 🚀 Getting Started
- 🎬 Demo Video
- 🐛 Troubleshooting
- 📄 License
- 📫 Contact
- User Authentication – Register, login, change password, delete account.
- Job Browsing – View all job postings with filters and search.
- Application Management – Apply to jobs, upload resume and profile photo.
- Saved Jobs – Bookmark jobs for later.
- Profile Management – Update personal details and uploaded documents.
- Admin Panel – (Optional) manage job listings and users.
- Responsive UI – Works on desktop and mobile devices.
All screenshots are located in the Demo_Media/ folder.
| Layer | Technologies |
|---|---|
| Frontend | React.js, Vite, Tailwind CSS, Axios |
| Backend | Node.js, Express.js, Multer, JWT, bcrypt |
| Database | MongoDB, Cloudinary API |
| File Storage | Local File System and Cloudinary Image Store |
| Build Tools | NPM, Nodemon, NVM |
JobOps-Project/
|
├── Backend/
│ ├── config/
│ ├── controllers/
│ ├── models/
│ ├── routes/
│ ├── middleware/
│ ├── uploads/
│ ├── server.js
│ ├── app.js
│ ├── .gitignore
│ ├── package-lock.json
│ └── package.json
|
├── Frontend/
│ ├── public/
│ ├── src/
│ ├── .eslintrc.cjs
│ ├── .gitignore
│ ├── index.html
│ ├── package-lock.json
│ ├── package.json
│ ├── postcss.config.js
│ ├── README.md
│ ├── tailwind.config.js
│ ├── vercel.json
│ └── vite.config.js
|
├── Demo_Media/
│ ├── AboutPage.png
│ ├── ApplicationPage.png
│ ├── AppliedJobs.png
│ ├── ChangePassword.png
│ ├── ContactPage1.png
│ ├── ContactPage2.png
│ ├── DBMS_Project_Preview.mp4
│ ├── DeleteAccount.png
│ ├── JobDescription.png
│ ├── JobFilterPage.png
│ ├── LoginPage.png
│ ├── MainPage1.png
│ ├── MainPage2.png
│ ├── ProfilePage.png
│ ├── RegistrationPage.png
│ ├── SavedJobs.png
│ └── WebAppLogo.png
|
├── Test_Images/
│ ├── SampleProfilePhoto.jpg
│ └── SampleResume.pdf
|
└── README.md (This File)
- Node.js (v22 or later, use "nvm" if needed) and npm installed.
- MongoDB installed and running locally (use "mongod" command in terminal).
- A code editor (VS Code recommended).
-
Navigate to the Backend folder:
cd Backend -
Install dependencies:
npm install
-
Create environment configuration:
- Copy
config/config.sample.env→config/config.env. - Fill in your database credentials and JWT secret.
- Copy
-
Set up the database:
- Create a PostgreSQL database (e.g.,
jobops). - Run the SQL scripts (provided in
config/db.sqlif available) to create tables.
- Create a PostgreSQL database (e.g.,
-
Start the backend server:
node server.js
The server will run on
http://localhost:5000(or the port you set).
-
Navigate to the Frontend folder:
cd Frontend -
Install dependencies:
npm install
-
Configure API base URL:
- Edit the
.envfile (or directly insrc/api.js) to point to your backend URL.
- Edit the
-
Run the development server:
npm run dev
The frontend will be available at
http://localhost:5173.
Note: If you encounter dependency issues, try
npm audit fixornpm audit fix --force.
Watch the full walkthrough on YouTube:
| Issue | Solution |
|---|---|
| Port conflict | Change the port in config.env (backend) or vite.config.js (frontend). |
| Database connection fails | Verify your PostgreSQL credentials and ensure the service is running. |
| Uploads not working | Check that the uploads/ folder exists and has write permissions. |
| Missing environment variables | Ensure config.env is present and contains all required keys. |
| npm install errors | Use npm install --legacy-peer-deps if you face dependency conflicts. |
This project is for educational purposes. Feel free to use and modify it for your own learning.
For questions, suggestions, or collaborations, reach out via GitHub or leave a comment on the demo video.
















