SmartCampus MBSTU
Digital notice board and complaint management system for Mawlana Bhashani Science and Technology University.
The problem
MBSTU lacked a central place for students to find notices and file complaints; information lived in paper notices and unstructured Facebook groups.
System architecture
How a request flows through the stack: two clients, a role-gated Spring Boot API, and SQL Server. The whole stack runs via Docker Compose.
Clients
frontendRole-aware dashboards for students, faculty, and admins, plus a public kiosk view for notices.
Next.js 16 web appVanilla-JS frontendSpring Boot REST API
Java 17Spring Security + JWT gate every route by role across 13 controllers: notices, complaints, notifications, analytics, kiosk.
Microsoft SQL Server
dataSpring Data JPA persistence for notices with attachments, the complaint action trail, and per-user notification preferences.
Architecture
- Java 17 + Spring Boot REST API (Spring Data JPA) backed by Microsoft SQL Server, with a Next.js 16 web client and a lightweight vanilla-JS frontend; the whole stack runs via Docker Compose
- Spring Security with JWT auth and three roles (student, faculty, admin); each role's dashboard and API access are scoped to what it's permitted to do
- Notices with file attachments and saved-notice bookmarking, a complaint workflow with an action/audit trail (submitted → pending → in progress → resolved/closed/rejected), plus an analytics dashboard, a public kiosk mode, and public stats
- An in-app notification system with per-user notification preferences, raised when a notice is posted or a complaint changes state
Highlights
Role-based access control
Three permission tiers enforced with Spring Security and JWT: students manage their own complaints and read notices, faculty post notices and action complaints, admins oversee everything.
Tracked complaint lifecycle
Every complaint moves through a visible state flow (submitted → pending → in progress → resolved/closed/rejected) with an action trail, giving students accountability and staff an auditable record.