Skip to content

punithsai18/PlacementHub

Repository files navigation

PlacementHub – AI-Powered Cloud-Based Placement Management System

A full-stack placement management platform built on Microsoft Azure, featuring AI-powered resume analysis, real-time chat, and intelligent candidate search.


Architecture Overview

Frontend (React.js)
      │  Axios REST calls + WebSocket (Azure Web PubSub)
      ▼
Backend (Node.js / Express)
      │
      ├─ Azure SQL Database    ← Students, Companies, Jobs, Applications, Placements
      ├─ Azure Cosmos DB       ← Chat message history
      ├─ Azure Blob Storage    ← Resume files
      ├─ Azure AI Document Intelligence ← Resume data extraction
      ├─ Azure Cognitive Search ← Candidate skill search
      ├─ Azure Web PubSub      ← Real-time chat
      ├─ Azure Redis Cache     ← Session / rate-limit caching
      └─ Azure Notification Hubs ← Push notifications

Azure Functions (Serverless)
      └─ ResumeProcessor (Blob trigger) ← Auto-processes uploaded resumes

Tech Stack

Layer Technology
Frontend React 18, React Router v6, Axios, Azure Web PubSub Client
Backend Node.js, Express.js, Helmet, Morgan
Auth JWT (jsonwebtoken, bcryptjs)
SQL Database Azure SQL (mssql)
NoSQL Azure Cosmos DB
File Storage Azure Blob Storage
AI / ML Azure AI Document Intelligence
Search Azure Cognitive Search
Real-time Azure Web PubSub
Cache Azure Redis Cache
Serverless Azure Functions (Blob trigger)
Notifications Azure Notification Hubs

☁️ Azure Services Utilized

This project leverages a wide array of Microsoft Azure cloud services to deliver a scalable, secure, and intelligent application:

  1. Azure App Service (Web Apps)

    • Purpose: Hosts the Node.js backend API and serves the production-ready React frontend.
    • Why: Provides a fully managed platform with built-in auto-scaling, load balancing, and CI/CD integration.
  2. Azure SQL Database

    • Purpose: Acts as the primary relational data store. It holds structured data such as Student profiles, Company details, Job listings, and Application statuses.
    • Why: Offers a highly secure, fully managed SQL database engine with high availability out-of-the-box.
  3. Azure Blob Storage

    • Purpose: Securely stores unstructured binary files, specifically the resume documents (PDFs, DOCX) uploaded by students.
    • Why: Scalable and cost-effective object storage that integrates seamlessly with Azure AI services.
  4. Azure AI Document Intelligence (Form Recognizer)

    • Purpose: Automatically scans, parses, and extracts critical text, key-value pairs, and technical skills from the uploaded student resumes.
    • Why: Replaces manual data entry with state-of-the-art machine learning models to instantly build a candidate's skill profile.
  5. Azure Functions (Serverless)

    • Purpose: Runs a background ResumeProcessor blob-triggered function. The moment a resume is uploaded to Blob Storage, this function is invoked to analyze it asynchronously.
    • Why: Eliminates the need to manage infrastructure for background tasks. It scales automatically based on the volume of incoming resumes.
  6. Azure Web PubSub

    • Purpose: Powers the real-time, bi-directional WebSocket chat feature between students and companies.
    • Why: Simplifies the creation of real-time messaging without requiring the backend to maintain thousands of persistent WebSocket connections.
  7. Azure Cosmos DB

    • Purpose: Stores the high-velocity, unstructured real-time chat message history.
    • Why: A globally distributed, multi-model NoSQL database that guarantees low latency for read/write operations (ideal for chat apps).
  8. Azure Cognitive Search

    • Purpose: Enables advanced, full-text intelligent searching of candidates based on complex skill queries for companies.
    • Why: Provides AI-powered search indexing capabilities that go far beyond standard SQL LIKE queries.
  9. Azure Key Vault

    • Purpose: Securely stores sensitive connection strings, API keys, and database passwords.
    • Why: Keeps secrets out of the source code and centrally manages cryptographic keys and secrets.
  10. Azure Application Insights & Log Analytics

    • Purpose: Monitors the live application for performance anomalies, request failures, and logs application telemetry.
    • Why: Essential for diagnosing live production issues and understanding user behavior.

Project Structure

cloudPro/
├── backend/                        # Express.js API server
│   ├── server.js                   # Entry point
│   ├── .env.example                # Environment variable template
│   └── src/
│       ├── config/
│       │   ├── db.js               # Azure SQL + Cosmos DB clients
│       │   └── azure.js            # Azure service clients
│       ├── middleware/
│       │   └── auth.js             # JWT auth middleware
│       ├── routes/
│       │   ├── students.js         # Student API routes
│       │   ├── companies.js        # Company API routes
│       │   ├── chat.js             # Chat routes (Web PubSub token, history)
│       │   └── placements.js       # Placement tracking routes
│       ├── services/
│       │   ├── resumeService.js    # AI Document Intelligence integration
│       │   ├── blobService.js      # Azure Blob Storage operations
│       │   ├── searchService.js    # Azure Cognitive Search
│       │   ├── chatService.js      # Cosmos DB chat persistence
│       │   └── notificationService.js # Azure Notification Hubs
│       └── models/
│           └── sql-schema.sql      # Azure SQL DDL schema
├── azure-functions/                # Azure Serverless Functions
│   ├── host.json
│   ├── package.json
│   └── ResumeProcessor/
│       ├── function.json           # Blob trigger binding
│       └── index.js                # Resume processing logic
└── frontend/                       # React.js SPA
    ├── public/index.html
    └── src/
        ├── App.js                  # Routing
        ├── components/
        │   └── Navbar.js
        ├── pages/
        │   ├── student/
        │   │   ├── Register.js
        │   │   ├── Login.js
        │   │   ├── Dashboard.js
        │   │   ├── ResumeUpload.js
        │   │   ├── Jobs.js
        │   │   └── Applications.js
        │   ├── company/
        │   │   ├── Login.js
        │   │   ├── Dashboard.js
        │   │   ├── PostJob.js
        │   │   └── Applicants.js
        │   └── Chat.js
        └── services/
            ├── api.js              # Axios API layer
            └── chatService.js      # WebSocket client

Getting Started

Prerequisites

  • Node.js 18+
  • Azure subscription with required services provisioned

Backend Setup

cd backend
cp .env.example .env
# Fill in your Azure credentials in .env
npm install
npm start

Frontend Setup

cd frontend
npm install
npm start

Azure Functions Setup

cd azure-functions
npm install
# Install Azure Functions Core Tools
func start

Database Initialization

Run the SQL schema against your Azure SQL Database:

# Using sqlcmd or Azure Data Studio
sqlcmd -S haul.database.windows.net -d placementhub -U placementhub -P punith@123 -i backend/src/models/sql-schema.sql

API Reference

Student Endpoints

Method Endpoint Description
POST /api/students/register Register a new student
POST /api/students/login Student login
GET /api/students/profile Get student profile
PUT /api/students/profile Update student profile
POST /api/students/resume Upload resume (AI analysis)
GET /api/students/jobs Browse available jobs
POST /api/students/apply/:jobId Apply for a job
GET /api/students/applications Track application status

Company Endpoints

Method Endpoint Description
POST /api/companies/register Register a company
POST /api/companies/login Company login
POST /api/companies/jobs Post a new job
GET /api/companies/jobs List company's jobs
GET /api/companies/jobs/:jobId/applicants View applicants
PUT /api/companies/applications/:appId Update application status
GET /api/companies/search Search candidates by skills

Chat Endpoints

Method Endpoint Description
GET /api/chat/history/:userId Get chat history
POST /api/chat/token Get Web PubSub access token
POST /api/chat/message Save a chat message

Placement Endpoints

Method Endpoint Description
GET /api/placements All placements
GET /api/placements/stats Platform statistics
GET /api/placements/my Student's own placement

Environment Variables

Copy backend/.env.example to backend/.env and configure:

  • Azure SQL: Server, database, user, password
  • Azure Cosmos DB: Endpoint and key
  • Azure Blob Storage: Connection string
  • Azure AI Document Intelligence: Endpoint and key
  • Azure Cognitive Search: Endpoint, key, index name
  • Azure Web PubSub: Connection string and hub name
  • Azure Redis Cache: Connection string
  • Azure Notification Hubs: Connection string and hub name (optional)

Features

  • 🎓 Student Portal – Register, upload AI-analyzed resume, browse jobs, track applications
  • 🏢 Company Portal – Post jobs, view applicants, update application status, search candidates
  • 🤖 AI Resume Scanning – Azure AI Document Intelligence extracts skills, contact info automatically
  • 💬 Real-Time Chat – WebSocket-based messaging powered by Azure Web PubSub
  • 🔍 Candidate Search – Full-text search via Azure Cognitive Search
  • 📊 Placement Tracking – Track placed students and platform-wide statistics
  • 🔔 Push Notifications – Application status updates via Azure Notification Hubs
  • Serverless Processing – Azure Function auto-processes resume uploads from Blob Storage
  • 🔐 JWT Authentication – Stateless auth with role-based access control

Demo Credentials

You can log in to the company portal using any of the following demo credentials (all passwords are <CompanyName>@123):

  1. Google: hr@google.com / Google@123
  2. Microsoft: jobs@microsoft.com / Microsoft@123
  3. Amazon: recruit@amazon.com / Amazon@123
  4. Tesla: careers@tesla.com / Tesla@123
  5. Netflix: talent@netflix.com / Netflix@123
  6. Meta: careers@meta.com / Meta@123
  7. Apple: jobs@apple.com / Apple@123
  8. Oracle: hr@oracle.com / Oracle@123
  9. Adobe: careers@adobe.com / Adobe@123
  10. IBM: jobs@ibm.com / IBM@123

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors