A full-stack, role-based internship lifecycle management system for LNMIIT.
Built with React, Node.js, Express, and MongoDB.
- Overview
- Key Features
- System Architecture
- User Roles & Dashboards
- Application Workflow
- Evaluation & Grading
- Tech Stack
- Project Structure
- Getting Started
- Deployment
- Environment Variables
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.
| 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. |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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 β
ββββββββββββ
| 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. |
ββββββββββββ βββββββββββββββββββ ββββββββββββββββββββ
β 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 | 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. |
The evaluation system uses a dual-evaluator model with a total of 100 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 |
Submitted by the assigned faculty mentor through their dashboard.
| Criterion | Max Marks |
|---|---|
| Report Clarity | 10 |
| Presentation Content | 10 |
| Presentation Delivery | 10 |
Final scores are auto-calculated and mapped to letter grades: O, A+, A, B+, B, C, F.
- Faculty mentor requests re-evaluation with remarks.
- Coordinator reviews and approves/denies the request.
- If approved, the industry mentor's evaluation link is re-activated.
| 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 |
| 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 |
| Technology | Purpose |
|---|---|
| MongoDB Atlas | Cloud-hosted NoSQL database |
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
- Node.js v18+
- MongoDB (local or Atlas)
- Git
git clone https://github.com/satvikdua06-dev/STI.git
cd STIcd backend
npm installCreate 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=5000Start the backend:
node server.jscd ../frontend
npm installOptionally create a frontend/.env file (defaults to http://localhost:5000/api):
VITE_API_URL=http://localhost:5000/apiStart the frontend:
npm run devNavigate to http://localhost:5173
| Service | Platform | Purpose |
|---|---|---|
| Frontend | Vercel | React SPA hosting |
| Backend | Render | Node.js API hosting |
| Database | MongoDB Atlas | Cloud database |
- Push to GitHub (already done β)
- Render: Create a Web Service β Root Dir:
backendβ Build:npm installβ Start:node server.jsβ Add env vars. - Vercel: Import repo β Root Dir:
frontendβ Framework: Vite β AddVITE_API_URLenv var pointing to your Render URL.
See the full Deployment Guide for detailed instructions.
| 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) |
| Variable | Required | Description |
|---|---|---|
VITE_API_URL |
β | Backend API URL (default: http://localhost:5000/api) |
Built with β€οΈ for LNMIIT