Back to Projects
Project Writeup

GS&A Maintainence Portal

A full-stack enterprise complaint and service request portal for managing the complete lifecycle of IT and facility-related issues, from complaint registration through technician work, supervisor oversight, SLA escalation, owner verification, and final reporting.

Next.js
React
TypeScript
Node.js
MongoDB
Prisma
Tailwind CSS
Cloudinary
MinIO

What it does

The portal replaces scattered calls, messages, emails, and spreadsheets with a structured operational workflow. Users can raise complaints with a title, description, category, subcategory, priority, image, and precise location context such as campus, building, floor, room, or area. Each complaint keeps its owner, assigned technician, status, SLA context, work history, requirement requests, comments, escalation records, and closure verification trail in one place.

Role-based workflow

The system is designed around four roles rather than one generic dashboard. Users create complaints, track progress, and verify completion. Technicians view assigned work, submit updates, request parts or approvals, import material utilization rows, and mark work as completed. Supervisors assign technicians, monitor SLA-sensitive complaints, handle escalations, and approve or reject requirements. Admins manage users, roles, categories, subcategories, locations, SLA policies, reports, storage visibility, and system-wide analytics.

Complaint lifecycle

Complaints move through real operational states such as open, assigned, in progress, pending requirements, pending purchase, pending third-party support, on hold, escalated, resolved, and closed. Assignment metadata records which supervisor assigned the ticket, which technician owns the work, when the assignment happened, who resolved it, and what resolution was provided. Technicians can report completion, but the complaint only closes after the owner verifies a server-generated OTP sent through email.

Technician operations

Technician workflows support progress updates, completion notes, structured material usage, and requirement requests for parts, tools, approvals, support, or other dependencies. Material utilization can be entered manually or imported from Excel files, with rows stored as structured records instead of unsearchable text. This makes later reporting and supervisor review more reliable.

System design

The application uses Next.js App Router with TypeScript for pages and API routes, Prisma over MongoDB for typed persistence, NextAuth.js sessions for authentication, middleware and API guards for role-based access control, Socket.io for real-time complaint and approval updates, and polling/refetch fallbacks for reliability. Background cron workers support recurring SLA and notification checks.

SLA, reporting, and control

SLA policies can define expected response and resolution timelines by priority or category. Scheduled checks identify complaints nearing breach or already delayed, then surface notifications and escalation records for supervisors. Reporting turns complaint data into operational insight with filters such as category, subcategory, employee code, location, technician, status, priority, supervisor, and date range, with PDF and Excel exports for audits and reviews.

Security and accountability

The project protects important actions at both the route and API layers. Password flows use hashing, role checks prevent users from reaching unauthorized surfaces, and the completion OTP is hashed with expiry metadata before storage. This separates technician resolution from verified owner closure, preventing silent ticket closure and preserving an audit trail for completion requests and verification.

What I learned

This project strengthened my understanding of role-based workflows, production authentication, real-time dashboard synchronization, Prisma with MongoDB, secure OTP verification, structured Excel imports, reporting pipelines, SLA automation, and building enterprise dashboards around real operational responsibilities instead of decorative metrics.