Skip to content

Pika-Gopher/DBMS_Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Campus Placement Management System

A comprehensive full-stack placement management system designed for colleges to streamline the recruitment process. The system facilitates communication between students, TPO (Training and Placement Officers), administrators, and recruiters.

πŸ—οΈ Architecture Overview

Backend (Deployed on Render)

  • Go 1.23 + Gin Framework v1.10.1: RESTful API server
  • MongoDB v1.17: Database for users, jobs, applications, companies
  • JWT Authentication: Role-based access control (jwt/v5)
  • Deployment: https://campusnest-backend-lkue.onrender.com

Frontend

  1. Flutter Mobile App (/frontend) - Mobile interface for students and TPO
  2. Next.js Web App (/web) - Admin and recruiter dashboard
  3. ML Service (/ML) - Resume parsing and analysis (Python/Flask)

πŸš€ Quick Start

Prerequisites

  • Flutter SDK (3.8.1+ / Dart SDK 3.8.1+)
  • Node.js (20+) & npm
  • Git

1. Clone Repository

git clone https://github.com/D-Justin-Dsouza/DBMS_Project.git
cd DBMS_Project

2. Run Flutter Mobile App

cd frontend
flutter pub get
flutter run

For Android Emulator:

flutter emulators --launch <emulator_id>
flutter run

For iOS Simulator (macOS only):

open -a Simulator
flutter run

For Chrome (Web):

flutter run -d chrome

3. Run Next.js Web App

cd web
npm install
npm run dev

Access at: http://localhost:3000


πŸ‘₯ Sample User Credentials

Admin Login

Email: teslin.j@admin.com
Password: password123

Access: Full system control, analytics, student management, company management

TPO (Training & Placement Officer) Login

Email: frank.w@tpo.com
Password: password123

Access: Department-wise student management, job drive creation, placement analytics

Student Login

Email:bob.w@student.com
Password: password123

Access: Job applications, resume upload, notifications, application tracking

Recruiter Login

Email: karen.h@innovateinc.com
Password: recruiter123

Access: View candidates, shortlist students, manage applications, download resumes


πŸ“± Features by Role

πŸŽ“ Student Features

  • View available job drives
  • Apply for jobs with resume
  • Track application status
  • Receive notifications
  • Update skills and profile
  • View placement statistics

πŸ‘¨β€πŸ’Ό TPO Features

  • Create and manage job drives
  • View department-wise placement stats
  • Send notifications to students
  • Search and filter students
  • Generate placement reports
  • Manage drive applications

🏒 Recruiter Features

  • View eligible candidates
  • Download resumes in bulk
  • Update application status
  • Manage company job drives
  • View candidate details
  • Shortlist/reject candidates

βš™οΈ Admin Features

  • Manage all students (add single/bulk via CSV)
  • Manage companies and recruiters
  • Create job drives
  • View college-wide analytics
  • Export comprehensive reports
  • Send announcements to all

πŸ—‚οΈ Project Structure

DBMS_Project/
β”œβ”€β”€ backend/                # Go/Gin REST API
β”‚   β”œβ”€β”€ controllers/       # HTTP handlers
β”‚   β”œβ”€β”€ models/           # Data models
β”‚   β”œβ”€β”€ services/         # Business logic
β”‚   β”œβ”€β”€ routes/           # API routes
β”‚   β”œβ”€β”€ middleware/       # Auth middleware
β”‚   └── config/           # Database config
β”‚
β”œβ”€β”€ frontend/             # Flutter mobile app
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ screens/      # UI screens
β”‚   β”‚   β”œβ”€β”€ student_screens/
β”‚   β”‚   β”œβ”€β”€ tpo_screens/
β”‚   β”‚   └── admin/
β”‚   └── assets/           # Images & resources
β”‚
β”œβ”€β”€ web/                  # Next.js 15.2 web app
β”‚   β”œβ”€β”€ app/              # Next.js app directory
β”‚   β”œβ”€β”€ components/       # React 19 components
β”‚   └── public/           # Static assets
β”‚
β”œβ”€β”€ ML/                   # Python ML service
β”‚   β”œβ”€β”€ main.py          # Flask API
β”‚   β”œβ”€β”€ models/          # ML models
β”‚   └── requirements.txt
β”‚
└── README.md            # This file

πŸ”Œ API Endpoints (Backend)

Authentication

POST /auth/login - Login with email/password

Student Routes

GET  /student/jobs - View available jobs
POST /student/jobs/:jobId/apply - Apply for job
GET  /student/applications - My applications
GET  /student/notifications - View notifications

TPO Routes

POST /tpo/drives - Create job drive
GET  /tpo/drives - List all drives
GET  /tpo/analytics - Placement analytics
POST /tpo/notifications - Send notifications
GET  /tpo/students - Department students

Admin Routes

POST /admin/student - Add single student
POST /admin/students/upload-csv - Bulk upload via CSV
GET  /admin/students - List all students
POST /admin/drives - Create job drive
GET  /admin/drives - List all drives
GET  /admin/analytics/placements - Placement stats
GET  /admin/analytics/companies - Company analytics
GET  /admin/companies - List all companies
POST /admin/company - Add company with recruiters

Recruiter Routes

GET  /rec/candidates - View eligible candidates
GET  /rec/job-drives - Company job drives
PUT  /rec/job-drives/:jobId/students/status - Update application status
GET  /rec/resumes/download-all - Download all resumes

πŸ› οΈ Development (Local Backend Setup)

If you want to run the backend locally:

Prerequisites

  • Go 1.23+
  • MongoDB (local or Atlas)

Steps

cd backend

# Set environment variables
export MONGODB_URI="mongodb://localhost:27017/campusNestDB"
export JWT_SECRET="your-secret-key-here"

# Install dependencies
go mod download

# Run server
go run main.go

Server runs on: http://localhost:8080


πŸ“Š Database Collections

  • users - Students, TPOs, Admins, Recruiters
  • jobs - Job postings/drives
  • applications - Student applications
  • companies - Registered companies
  • resumes - Uploaded resume files

🎨 Tech Stack

Backend

  • Go 1.23 + Gin v1.10.1
  • MongoDB Driver v1.17
  • JWT v5 (golang-jwt/jwt)
  • Bcrypt (golang.org/x/crypto)
  • CORS (gin-contrib/cors v1.7.6)

Mobile Frontend (Flutter)

  • Flutter SDK 3.8.1 / Dart 3.8.1
  • http v0.13.5 (API calls)
  • shared_preferences v2.2.2 (Local storage)
  • google_fonts v4.0.4
  • file_picker v8.0.6 (Resume upload)
  • fl_chart v0.68.0 (Charts)

Web Frontend

  • Next.js 15.2.3 (React 19)
  • TypeScript 5
  • Tailwind CSS 4
  • Recharts v3.3.0 (Data visualization)
  • Lucide React v0.548 (Icons)
  • jsPDF v3.0.3 (PDF generation)

ML Service

  • Python 3.13 + Flask 3.1.2
  • PyMuPDF v1.26.5 (PDF parsing)
  • Groq v0.32.0 (LLM API)
  • PyMongo v4.15.3
  • Gunicorn v23.0.0 (WSGI server)

πŸ“ Adding Students via CSV

Sample CSV Format

firstName,lastName,email,rollNumber,department,gender,cgpa,skills,placedStatus
John,Doe,john.doe@college.edu,CS2021001,Computer Science,Male,8.5,Python;Java;React,Not Placed
Jane,Smith,jane.smith@college.edu,IT2021045,Information Technology,Female,9.2,JavaScript;SQL,Placed

Upload Steps

  1. Login as Admin
  2. Navigate to Students β†’ Upload CSV
  3. Upload CSV to Cloudinary/file hosting
  4. Use API: POST /api/v1/admin/students/upload-csv
    {
      "csvUrl": "https://your-file-url.com/students.csv"
    }

Default Password: All uploaded students get password password123


πŸ” Security Features

  • JWT-based authentication
  • Role-based access control (Student/TPO/Admin/Recruiter)
  • Password hashing with Bcrypt
  • Protected API routes with middleware
  • Token expiration (72 hours)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published