Skip to content

satvikdua06-dev/STI

Repository files navigation

🎓 Summer Term Internship (STI) Portal

A full-stack, role-based internship lifecycle management system for LNMIIT.
Built with React, Node.js, Express, and MongoDB.


📋 Table of Contents


🔭 Overview

The STI Portal digitizes the entire summer internship lifecycle at LNMIIT — from application submission and multi-level approvals, through mentor assignment and internship tracking, to a dual-evaluator grading system. It replaces manual paperwork with a streamlined, role-based web application featuring real-time status tracking, automated email notifications, and a modern glassmorphic UI.


✨ Key Features

Category Features
Multi-Step Application Wizard 6-step guided form with auto-save drafts, company validation, course registration (off-site), and LUSIP exclusion declaration.
Multi-Level Approval Pipeline Sequential review by Coordinator → TPCR → E-Cell Lead → DoAA, with remarks and return-for-revision at each stage.
Real-Time Status Tracking Animated 8-step Timeline component with pulsing active indicators, unique per-step icons, and glassmorphic design.
Faculty Mentor Assignment Coordinators assign mentors; mentors accept/decline with workload tracking (max 10 students).
Manual Internship Commencement Students explicitly start their internship after final approval, ensuring dashboard consistency.
Dual-Evaluator Grading Industry Mentor (70 marks via secure tokenized link) + Faculty Mentor (30 marks) with auto-calculated final scores and letter grades.
Re-Evaluation Workflow Faculty can request re-evaluation; coordinators approve/deny the request.
Admin Analytics Application pipeline, stipend analysis, branch-wise CGPA, grade distribution, department stats, and mentor load index.
Email Notifications Automated SMTP notifications for approvals, mentor assignments, and evaluation invites.
Modern Premium UI Dark glassmorphic design with CSS custom properties, Framer Motion animations, and Lucide icons.

🏗 System Architecture

┌─────────────────────────────────────────────────────────────┐
│                        FRONTEND                             │
│          React 19 + Vite + Framer Motion                    │
│                                                             │
│  ┌──────────┐ ┌───────────┐ ┌──────┐ ┌──────┐ ┌─────────┐  │
│  │ Student  │ │Coordinator│ │ TPCR │ │ DoAA │ │  Admin  │  │
│  │Dashboard │ │ Dashboard │ │ Dash │ │ Dash │ │Dashboard│  │
│  └──────────┘ └───────────┘ └──────┘ └──────┘ └─────────┘  │
│  ┌──────────┐ ┌───────────────┐ ┌────────────────────────┐  │
│  │ Faculty  │ │  Application  │ │  Industry Mentor Eval  │  │
│  │  Mentor  │ │    Wizard     │ │   (Token-Based Page)   │  │
│  └──────────┘ └───────────────┘ └────────────────────────┘  │
└────────────────────────┬────────────────────────────────────┘
                         │ REST API (fetch)
                         ▼
┌─────────────────────────────────────────────────────────────┐
│                        BACKEND                              │
│              Node.js + Express + Mongoose                   │
│                                                             │
│  ┌──────────┐ ┌──────────────┐ ┌────────────┐ ┌─────────┐  │
│  │ /auth    │ │/applications │ │/evaluations│ │ /admin  │  │
│  │  routes  │ │    routes    │ │   routes   │ │ routes  │  │
│  └──────────┘ └──────────────┘ └────────────┘ └─────────┘  │
│                                                             │
│  ┌──────────────────────────────────────────────────────┐   │
│  │  Models: User, InternshipApplication, Evaluation,   │   │
│  │  AcademicYearConfig, ApprovedCompany, Notification   │   │
│  └──────────────────────────────────────────────────────┘   │
└────────────────────────┬────────────────────────────────────┘
                         │
                         ▼
                   ┌──────────┐
                   │ MongoDB  │
                   │  Atlas   │
                   └──────────┘

👥 User Roles & Dashboards

Role Dashboard Key Capabilities
Student StudentDashboard Submit applications via wizard, track status with animated timeline, edit profile, commence internship, view grades.
Coordinator CoordinatorDashboard Review & approve/return applications, assign faculty mentors, view department insights, approve re-evaluations.
TPCR TPCRDashboard Second-level review after coordinator approval, manage approved company registry.
E-Cell Lead CoordinatorDashboard (shared) Review entrepreneurship-related (Type C) applications.
DoAA DoAADashboard Final approval authority, system-wide application overview, export reports.
Faculty Mentor FacultyMentorDashboard Accept/decline mentor assignments, view mentee profiles with full student data, submit faculty evaluations (30 marks), request re-evaluations.
Admin AdminDashboard Full system oversight: user management, analytics (pipeline, stipend, CGPA, grades), company registry, academic year config, student repository.

🔄 Application Workflow

 ┌──────────┐     ┌─────────────────┐     ┌──────────────────┐
 │  DRAFT   │────▶│    SUBMITTED    │────▶│ COORDINATOR      │
 │(auto-save)│    │                 │     │ REVIEW           │
 └──────────┘     └─────────────────┘     └────────┬─────────┘
                                                   │
                                    ┌──────────────┼──────────────┐
                                    ▼              ▼              ▼
                             ┌───────────┐  ┌───────────┐  ┌───────────┐
                             │ COORD     │  │ COORD     │  │ REJECTED  │
                             │ RETURNED  │  │ APPROVED  │  │           │
                             └───────────┘  └─────┬─────┘  └───────────┘
                                                  │
                                                  ▼
                                          ┌───────────────┐
                                          │  TPCR REVIEW  │
                                          └───────┬───────┘
                                                  │
                                    ┌─────────────┼──────────────┐
                                    ▼             ▼              ▼
                             ┌───────────┐ ┌────────────┐ ┌───────────┐
                             │   TPCR    │ │   TPCR     │ │ REJECTED  │
                             │ RETURNED  │ │  APPROVED  │ │           │
                             └───────────┘ └──────┬─────┘ └───────────┘
                                                  │
                                                  ▼
                                          ┌───────────────┐
                                          │ DoAA APPROVAL │
                                          └───────┬───────┘
                                                  │
                                    ┌─────────────┼──────────────┐
                                    ▼                            ▼
                             ┌───────────┐                ┌───────────┐
                             │ APPROVED  │                │ REJECTED  │
                             │ (Final)   │                │           │
                             └─────┬─────┘                └───────────┘
                                   │
                                   ▼  (Student clicks "Commence")
                             ┌───────────┐
                             │  ACTIVE   │
                             │(Internship│
                             │ Ongoing)  │
                             └─────┬─────┘
                                   │
                                   ▼
                             ┌───────────┐
                             │  GRADED   │
                             └───────────┘

Status Definitions

Status Description
draft Application saved but not yet submitted.
submitted Student has submitted the application.
coordinator_review Under review by department coordinator.
coordinator_approved Approved by coordinator, forwarded to TPCR.
coordinator_returned Returned to student for corrections.
tpcr_review Under review by TPCR office.
tpcr_approved Approved by TPCR, forwarded to DoAA.
approved Final approval granted by DoAA.
rejected Application rejected at any stage.
active Student has manually commenced the internship.
graded Final evaluation and grading completed.

📊 Evaluation & Grading

The evaluation system uses a dual-evaluator model with a total of 100 marks:

Industry Mentor Evaluation (70 Marks)

Submitted via a secure, tokenized link sent to the industry mentor's email — no login required.

Criterion Max Marks
Technical & Domain Skills 25
Problem Solving & Innovation 20
Work Ethics & Professionalism 15
Communication & Teamwork 10

Faculty Mentor Evaluation (30 Marks)

Submitted by the assigned faculty mentor through their dashboard.

Criterion Max Marks
Report Clarity 10
Presentation Content 10
Presentation Delivery 10

Grading Scale

Final scores are auto-calculated and mapped to letter grades: O, A+, A, B+, B, C, F.

Re-Evaluation Flow

  1. Faculty mentor requests re-evaluation with remarks.
  2. Coordinator reviews and approves/denies the request.
  3. If approved, the industry mentor's evaluation link is re-activated.

🛠 Tech Stack

Frontend

Technology Purpose
React 19 UI Framework
Vite 7 Build tool & dev server
React Router v7 Client-side routing
Framer Motion Page transitions & micro-animations
Lucide React Icon system
TypeScript Type safety (Timeline component)
Vanilla CSS Custom design system with HSL tokens

Backend

Technology Purpose
Node.js Runtime
Express 5 REST API framework
Mongoose MongoDB ODM
bcrypt Password hashing (12 salt rounds)
jsonwebtoken JWT authentication
Nodemailer SMTP email notifications
dotenv Environment configuration

Database

Technology Purpose
MongoDB Atlas Cloud-hosted NoSQL database

📁 Project Structure

InternshipProject/
├── backend/
│   ├── models/
│   │   ├── User.js                    # User schema (7 roles)
│   │   ├── InternshipApplication.js   # Application schema (15 statuses)
│   │   ├── Evaluation.js              # Dual-evaluator grading
│   │   ├── AcademicYearConfig.js      # Term date configuration
│   │   ├── ApprovedCompany.js         # Company registry
│   │   ├── Notification.js            # In-app notifications
│   │   └── Undertaking.js             # Student undertaking/agreements
│   ├── routes/
│   │   ├── auth.js                    # Login, register, profile CRUD
│   │   ├── applications.js            # CRUD, review, mentor assignment
│   │   ├── evaluations.js             # Industry/faculty eval, grading
│   │   └── admin.js                   # Analytics, users, companies, config
│   ├── emailService.js                # SMTP notification helper
│   ├── middleware.js                   # JWT auth middleware
│   ├── server.js                      # Express entry point
│   └── .env                           # Environment variables (not tracked)
├── frontend/
│   ├── src/
│   │   ├── components/
│   │   │   ├── Timeline/
│   │   │   │   └── Timeline.tsx       # Premium 8-step status tracker
│   │   │   ├── Sidebar.jsx            # Role-adaptive navigation
│   │   │   ├── MetricCard.jsx         # Reusable analytics card
│   │   │   ├── ApplicationDetailModal.jsx
│   │   │   ├── StudentProfileModal.jsx
│   │   │   └── FacultyProfileModal.jsx
│   │   ├── pages/
│   │   │   ├── Login.jsx
│   │   │   ├── StudentDashboard.jsx
│   │   │   ├── CoordinatorDashboard.jsx
│   │   │   ├── TPCRDashboard.jsx
│   │   │   ├── DoAADashboard.jsx
│   │   │   ├── FacultyMentorDashboard.jsx
│   │   │   ├── AdminDashboard.jsx
│   │   │   ├── ApplicationWizard.jsx
│   │   │   └── IndustryMentorEval.jsx
│   │   ├── context/
│   │   │   └── AuthContext.jsx        # Global auth state & API config
│   │   ├── App.jsx                    # Root component & routing
│   │   └── index.css                  # Design system (HSL tokens, glass)
│   ├── vercel.json                    # SPA rewrite rules
│   └── package.json
├── .gitignore
└── README.md

🚀 Getting Started

Prerequisites

  • Node.js v18+
  • MongoDB (local or Atlas)
  • Git

1. Clone the Repository

git clone https://github.com/satvikdua06-dev/STI.git
cd STI

2. Setup Backend

cd backend
npm install

Create a backend/.env file:

MONGO_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/lnmiit_sti
JWT_SECRET=your_super_secret_key_here
SMTP_USER=your.email@gmail.com
SMTP_PASS=your_16_char_app_password
PORT=5000

Start the backend:

node server.js

3. Setup Frontend

cd ../frontend
npm install

Optionally create a frontend/.env file (defaults to http://localhost:5000/api):

VITE_API_URL=http://localhost:5000/api

Start the frontend:

npm run dev

4. Open in Browser

Navigate to http://localhost:5173


☁️ Deployment

Service Platform Purpose
Frontend Vercel React SPA hosting
Backend Render Node.js API hosting
Database MongoDB Atlas Cloud database

Quick Deploy Steps

  1. Push to GitHub (already done ✓)
  2. Render: Create a Web Service → Root Dir: backend → Build: npm install → Start: node server.js → Add env vars.
  3. Vercel: Import repo → Root Dir: frontend → Framework: Vite → Add VITE_API_URL env var pointing to your Render URL.

See the full Deployment Guide for detailed instructions.


🔐 Environment Variables

Backend (backend/.env)

Variable Required Description
MONGO_URI MongoDB connection string
JWT_SECRET Secret key for JWT signing
SMTP_USER Gmail address for sending emails
SMTP_PASS Gmail App Password (16 characters)
PORT Server port (default: 5000)

Frontend (frontend/.env)

Variable Required Description
VITE_API_URL Backend API URL (default: http://localhost:5000/api)

Built with ❤️ for LNMIIT

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors