An Online Placement Information Gathering System (OPIGS) for managing alumni, students, companies, job postings and applications, notifications, and real-time chat. Built as a Software Engineering lab project (CS29006) for Spring 2023-24.
- Language(s): JavaScript (Node.js backend, React frontend), CSS, HTML
- Framework / runtime: Node.js + Express (backend), React + Vite (frontend)
- Notable libraries: mongoose (MongoDB), jsonwebtoken (JWT auth), cloudinary (file uploads), socket.io (real-time chat), axios (frontend HTTP client)
backend/ Express API, DB connection, routes, controllers, middlewares
app.js Express app and route wiring
server.js cloudinary init + start server
routes/ route definitions (alumni, student, company, job, admin, application, notification, Chat routes...)
controllers/ request handlers and business logic
models/ Mongoose models
database/ DB connection (dbConnection.js)
middlewares/ error handling, auth, etc.
public/ static assets served by backend
frontend/ React + Vite SPA
src/ React app sources
public/ frontend public assets
index.html
socket/ standalone socket server for chat (socket/index.js)
OPIGS_outline.pdf project outline
SOFTWARE REQUIREMENTS SPECIFICATION.pdf
How it fits together:
- The Express backend (backend/) exposes REST endpoints under
/api/v1/*(alumni, student, company, job, application, notification, admin) and hosts chat-related routes underbackend/Chat. The DB layer uses Mongoose to persist users, jobs, and applications. Cloudinary is used for media uploads. The React frontend (frontend/) communicates with the API and connects to the socket server for real-time messaging (socket/index.js).
- Backend
cd backend
npm install
# development
npm run dev # uses nodemon server.js
# production
npm start # node server.js
- Frontend
cd frontend
npm install
npm run dev # start vite dev server
- Socket server (chat)
cd socket
npm install
node index.js
Run all three (backend, frontend, socket) concurrently during development. Adjust ports/URLs via environment variables (below).
- PORT — backend port
- FRONTEND_URL — frontend origin allowed by CORS
- MONGO_URI — MongoDB connection string
- JWT_SECRET — secret for signing JSON Web Tokens
- CLOUDINARY_CLIENT_NAME, CLOUDINARY_CLIENT_API, CLOUDINARY_CLIENT_SECRET — Cloudinary credentials for uploads
backend/app.js— central Express app and route registrationbackend/server.js— Cloudinary init and server startbackend/package.json— backend dependencies and scriptsfrontend/package.json— frontend dependencies and scriptssocket/index.js— socket server entrypointbackend/Chat/— chat routes and message handlingOPIGS_outline.pdfandSOFTWARE REQUIREMENTS SPECIFICATION.pdf— project design & requirements