An employer-facing recruitment tool that automatically evaluates candidate resumes, assigns skill-based scores, suggests job roles, and ranks applicants — built with the MERN stack.
- About
- Features
- Tech Stack
- Project Structure
- Getting Started
- Environment Variables
- API Reference
- Scoring Logic
- OOP Concepts
- Author
Smart Resume Analyzer is my OOP Mini Project originally implemented in Java and ported to a full MERN stack web application. It is designed for employers and HR teams to efficiently manage, evaluate, and rank candidates based on their technical skills and experience — eliminating manual resume screening.
| Feature | Description |
|---|---|
| 📊 Dashboard | Live stats — total candidates, average score, top score, role distribution |
| ➕ Add Candidate | Register applicants with skills, email, and experience |
| 🔍 Search by Skill | Instantly filter candidates by any technical skill |
| 📋 All Candidates | View all registered applicants with score badges and role tags |
| 🏆 Rankings | Leaderboard with podium view for top 3 performers |
| 🗑️ Delete | Remove candidates from the system |
| 🤖 Auto Scoring | Score calculated automatically on submission |
| 💼 Role Suggestion | AI-style role recommendation based on skill set |
Frontend
- React 19
- Axios
- CSS3 (custom dark theme, Google Fonts)
Backend
- Node.js + Express 4
- Mongoose (MongoDB ODM)
- dotenv, cors, nodemon
Database
- MongoDB Atlas (Non-SRV connection)
smart-resume-analyzer/
│
├── backend/
│ ├── config/
│ │ └── db.js # MongoDB connection
│ ├── controllers/
│ │ └── candidateController.js # Business logic (scoring, roles)
│ ├── models/
│ │ └── Candidate.js # Mongoose schema
│ ├── routes/
│ │ └── candidateRoutes.js # API route definitions
│ ├── .env # Environment variables (not committed)
│ ├── .env.example # Template for environment setup
│ ├── server.js # Express app entry point
│ └── package.json
│
├── frontend/
│ ├── public/
│ └── src/
│ ├── components/
│ │ ├── AddCandidate.js # Add candidate form
│ │ ├── CandidateList.js # All candidates view
│ │ ├── Dashboard.js # Stats & charts
│ │ ├── Ranking.js # Leaderboard
│ │ └── SearchBySkill.js # Skill search
│ ├── api.js # Axios base config
│ ├── App.js # Root component + sidebar nav
│ ├── App.css # Global styles
│ └── index.js
│
├── .gitignore
└── README.md
Make sure you have these installed:
- Node.js v18 or above
- Git
- A MongoDB Atlas account (free tier works)
git clone https://github.com/yourusername/smart-resume-analyzer.git
cd smart-resume-analyzercd backend
npm installCreate your .env file (see Environment Variables below), then:
npm run devYou should see:
Server running on port 8000
MongoDB Connected
Open a new terminal:
cd frontend
npm install
npm startApp opens at http://localhost:3000 ✅
Create a file called .env inside the backend/ folder:
MONGO_URI=mongodb://username:password@host1:27017,host2:27017/resumedb?ssl=true&replicaSet=atlas-xxxxx&authSource=admin
PORT=yourportnumber
⚠️ Never commit your.envfile. It is already listed in.gitignore.
💡 Tip for Indian networks: If
mongodb+srv://givesquerySrv ECONNREFUSED, use the Non-SRV connection string from Atlas → Connect → Drivers → toggle "I can't use a DNS SRV connection".
Copy .env.example as a template:
cp .env.example .envThis project was originally built in Java demonstrating core OOP principles, then ported to MERN:
| Concept | Java Implementation | MERN Equivalent |
|---|---|---|
| Encapsulation | private fields in Candidate |
Mongoose schema with controlled access |
| Inheritance | Candidate extends Person |
Shared fields across models |
| Polymorphism | Overridden display() method |
Component-level rendering |
| Abstraction | abstract class ResumeAnalyzer |
Controller functions hiding DB logic |
| Interface | SkillEvaluator interface |
evaluateSkills() in controller |
| Generics | ResumeDatabase<T> |
Mongoose generic model pattern |
| Collections | ArrayList, HashMap |
MongoDB documents + Atlas |
Yash Rajendra Raut
This project is licensed under the MIT License.
⭐ If this project helped you, consider giving it a star on GitHub!