Job Portal Database System — DBMS Mini Project
A modern, high-performance Job Portal web application designed as a college DBMS mini-project. This project emphasizes the advantages of NoSQL over traditional SQL databases, specifically highlighting Embedded Documents, Aggregation Pipelines, and Multikey Indexing using MongoDB.
🚀 Features & Concepts
- Embedded Arrays vs Junction Tables: Job skills are stored as an array within the Job document, eliminating the need for complex, slow JOINs typical in relational databases.
- Advanced Aggregation (
$unwind,$group): Real-time analytics pipeline that deconstructs the skills array to calculate market demand across thousands of job listings. - Multikey Indexing (
IXSCAN): Demonstrates massive performance gains (from full collection scans to targeted index scans) when searching for specific job skills. - Massive Dataset: Pre-seeded with 8,000+ realistic documents sourced from real Indian Job Market Kaggle data (TCS, Wipro, Microsoft, Razorpay, etc.).
- Premium UI: A responsive, dark glassmorphism frontend built with vanilla HTML/JS/CSS for zero configuration overhead.
🛠️ Technology Stack
- Database: MongoDB
- Backend: Node.js, Express.js (v5)
- ODM: Mongoose
- Frontend: HTML5, Vanilla JavaScript, CSS3 (Custom Glassmorphism Design)
📦 Setup & Installation
Prerequisites
- Ensure Node.js (v18+) is installed.
- Ensure MongoDB is running locally on port
27017(can run automatically as a Windows service or via MongoDB Compass).
Instructions
- Navigate to the project directory:
bash cd "dbms mini project" - Install dependencies:
bash npm install - Seed the database with the massive Kaggle dataset (5000+ jobs, auto-generated applicants):
bash npm run seed-kaggle(Wait 10-15 seconds for it to parse the CSV and insert 8000+ records). - Start the server:
bash npm run start - Open your browser and go to: http://localhost:3000
📂 Project Structure
├── .env # Environment variables (Port, MongoDB URI)
├── package.json # Dependencies & scripts
├── server.js # Express app, server config, and DB connection
├── seed-kaggle.js # Advanced data generator and CSV parser
├── seed.js # Basic initial seed script
├── india_job_market_2024_2026.csv # Raw Kaggle dataset
├── models/ # Mongoose Schemas (Job, Applicant, Application, Company)
├── routes/ # REST API controllers and Aggregation logic
└── public/ # Frontend Single Page Application (HTML, CSS, JS)
📊 Analytics Highlights
The most impressive part of this project is the Aggregation Pipeline found in routes/analytics.js. It runs across 5000+ documents in milliseconds:
// Example: Skill Demand Aggregation
const skillDemand = await Job.aggregate([
{ $unwind: "$skills" }, // Flatten the skills array
{ $group: { _id: "$skills", count: { $sum: 1 } } }, // Count occurrences
{ $sort: { count: -1 } }, // Sort by most demanded
{ $limit: 10 } // Get top 10
]);
Log in or sign up for Devpost to join the conversation.