Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

InternMatch — Student Skill & Internship Matching Portal

A full-stack web application that connects students with companies for internships using a transparent, rule-based matching system. Built with Node.js, Express, MongoDB, and vanilla JavaScript.

Table of Contents


Overview

InternMatch is a centralized platform that helps students discover internships by matching their skills against company requirements using a transparent, deterministic algorithm — no AI/ML involved. The platform supports three distinct user roles: Students, Companies, and Admins, each with a tailored dashboard and workflow.

Key Features

Students

  • Create and maintain a profile with a structured skill set
  • View internships ranked by match percentage
  • Apply to internships in a single click
  • Track application status in real time
  • Set location and internship-type preferences

Companies

  • Post and manage internship opportunities
  • View a ranked list of matched candidates per posting
  • Accept or reject applications
  • Track all active and past postings

Admins

  • View platform-wide statistics and analytics
  • Manage all registered users
  • Moderate internship postings
  • Access a centralized admin dashboard

Architecture

┌─────────────┐
│  Frontend   │  HTML, CSS, JavaScript
│  (Vanilla)  │
└──────┬──────┘
       │
┌──────▼──────┐
│   Express   │  REST API, JWT Auth
│   Backend   │  MVC Pattern
└──────┬──────┘
       │
┌──────▼──────┐
│   MongoDB   │  5 Collections
│  (Database) │  Indexed for Performance
└─────────────┘

Technology Stack

Layer Technology
Backend Node.js, Express.js
Database MongoDB with Mongoose
Authentication JWT with bcrypt
Frontend HTML5, CSS3, JavaScript (ES6+)
Architecture MVC Pattern

Database Schema

Collection Purpose
users Authentication data (email, password, role)
students Student profiles and skill sets
companies Company information
internships Job postings with required skills
applications Application tracking

Matching Algorithm

The matching engine compares student skills against internship requirements and applies eligibility checks and preference bonuses to compute a final match score.

Process:

  1. Compare student skills with the internship's required skills
  2. Calculate a base match score: (matched_skills / required_skills) × 100
  3. Apply eligibility filters:
    • Minimum CGPA
    • Degree requirement
    • Year of study
  4. Apply preference bonuses:
    • Location match: +5%
    • Internship type match: +5%
  5. Display the internship if the match score is ≥ 40%
  6. Flag as a Strong Match if the score is ≥ 70%

Example

Field Student Internship
Skills javascript, react, html, css Required: javascript, react, html
CGPA 8.5 Minimum: 7.5
  • Matched skills: 3 of 3 required → base match = (3/3) × 100 = 100%
  • CGPA check: eligible (8.5 ≥ 7.5)
  • Final match: 100% (Strong Match)

Getting Started

Prerequisites

  • Node.js v18 or higher
  • MongoDB v5 or higher (local installation recommended)
  • npm or yarn

Installation

  1. Clone the repository and navigate into the project

    cd "Smart Internship Checker"
  2. Install backend dependencies

    cd backend
    npm install
  3. Configure environment variables

    cp .env.example .env

    The default .env is preconfigured for a local MongoDB instance:

    MONGODB_URI=mongodb://localhost:27017/internship-matching
    JWT_SECRET=your_secret_key_here
    PORT=5000
    
  4. Start MongoDB

    # Windows — MongoDB typically runs as a service; if not:
    net start MongoDB
    
    # macOS
    brew services start mongodb-community
    
    # Linux
    sudo systemctl start mongod
  5. Start the server

    npm start
  6. Access the application

    http://localhost:5000
    

Testing

Manual end-to-end testing steps:

  1. Register as a Student — go to /register.html, select "Student," fill in details, and log in.
  2. Complete the student profile — add skills (e.g., javascript, react, node.js) and set preferences.
  3. Register as a Company — log out, register with the "Company" role, and complete the company profile.
  4. Post an internship — define required skills that overlap with the test student's skills, and set eligibility criteria.
  5. Verify matching — log in as the student, open "Matched Internships," confirm the match percentage, and apply.
  6. Review applications — log in as the company, open "Applications," and accept or reject candidates.

Project Structure

smart-internship-checker/
├── backend/
│   ├── config/
│   │   ├── db.js                  # MongoDB connection
│   │   └── config.js              # Environment config
│   ├── controllers/
│   │   ├── authController.js      # Authentication logic
│   │   ├── studentController.js   # Student operations
│   │   ├── companyController.js   # Company operations
│   │   ├── internshipController.js
│   │   ├── matchingController.js  # Matching algorithm
│   │   ├── applicationController.js
│   │   └── adminController.js
│   ├── middleware/
│   │   ├── auth.js                # JWT verification
│   │   └── roleAuth.js            # Role-based access control
│   ├── models/
│   │   ├── User.js
│   │   ├── Student.js
│   │   ├── Company.js
│   │   ├── Internship.js
│   │   └── Application.js
│   ├── routes/
│   │   ├── auth.js
│   │   ├── student.js
│   │   ├── company.js
│   │   ├── internship.js
│   │   ├── matching.js
│   │   ├── application.js
│   │   └── admin.js
│   ├── .env.example
│   ├── .env
│   ├── package.json
│   └── server.js                  # Main entry point
├── public/
│   ├── css/
│   │   ├── main.css               # Core design system
│   │   └── dashboard.css          # Dashboard styles
│   ├── js/
│   │   ├── api.js                 # API utilities
│   │   ├── auth.js                # Auth management
│   │   ├── utils.js               # Helper functions
│   │   ├── student.js             # Student dashboard logic
│   │   ├── company.js             # Company dashboard logic
│   │   └── admin.js               # Admin dashboard logic
│   ├── index.html                 # Landing page
│   ├── login.html
│   ├── register.html
│   ├── student-dashboard.html
│   ├── company-dashboard.html
│   └── admin-dashboard.html
├── test-data/
│   └── sample-data.json           # Sample/test data
└── README.md

Design System

  • Dark theme with glassmorphism effects
  • Gradient buttons with hover animations
  • Responsive grid layout
  • Custom CSS variables for design consistency
  • Mobile-first approach

Contributing

Contributions are welcome. If you find this project useful, consider starring the repository.

About

The SkillTern is a web-based platform , the process of matching student profiles with suitable internship opportunities. Instead of manually searching through endless job boards, students input their skills, academic performance, and preferences

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages