A role-based campus management platform designed to simplify and centralize institutional operations. The system enables efficient handling of facility maintenance, resource booking, and asset management through a structured and user-friendly interface. With secure access control for different user roles, it ensures smooth coordination between users, staff, and administrators. Features like real-time ticket management, organized communication, and reliable data handling help reduce manual effort and improve overall operational efficiency. Built with a modern, scalable architecture, the platform delivers a responsive experience and supports future enhancements.
- Dual Authentication: Supports both secure local login and Google OAuth2 integration.
- JWT-Based Security: Authentication handled via
HttpOnlyandSameSite=Laxcookies to protect against XSS and CSRF attacks. - Role-Based Access Control (RBAC): Fine-grained authorization for
ADMIN,TECHNICIAN, andUSERroles.
- Complete Lifecycle Management: Tickets progress through
OPEN,IN_PROGRESS,RESOLVED, andCLOSED/REJECTEDstates. - Interactive Communication: Users and technicians can collaborate via comments and attach up to 3 images per ticket.
- Smart Assignment Workflow: Admins assign tickets to technician groups, while technicians can claim, manage, and resolve tasks efficiently.
- Centralized Booking System: Reserve campus resources such as rooms, labs, and equipment.
- Conflict Prevention: Prevents double-booking with time-slot validation and availability checks.
- Approval Workflow: Booking requests can be approved or rejected by authorized roles.
- Usage Visibility: Clear view of current and upcoming reservations.
- Hierarchical Organization: Manage buildings, floors, and assets (e.g., projectors, AC units, labs).
- Real-Time Availability: Track the status and usability of resources across the campus.
- Event-Driven Alerts: Notifications for ticket updates, comments, booking actions, and assignments.
- Unread Tracking: Persistent notification logs with unread indicators.
| Layer | Technologies |
|---|---|
| Backend | Java 21, Spring Boot 3.4.x, Spring Security (JWT + OAuth2), Hibernate (JPA) |
| Database | MySQL 8.x, Flyway (Migration Management) |
| Frontend | React 18, Vite, Tailwind CSS, Framer Motion (Animations), Lucide Icons |
| DevOps | GitHub Actions (CI), Maven, npm |
%%{init: {'themeVariables': { 'fontSize': '18px' }}}%%
graph TB
%% Actors & Roles
subgraph Roles [Campus Roles]
User["π Student / Staff"]
Admin["π Administrator"]
Tech["π§ Technician"]
end
%% Frontend Layer
subgraph Frontend ["Frontend Layer (Vite + React)"]
direction TB
UI_Common["Common UI (Landing, Login, Register, Profile)"]
UI_User["User Workspace (Bookings, Tickets, Available Resources)"]
UI_Admin["Admin Control Panel (Management Preview, Reports)"]
UI_Tech["Technician Workbench (Assigned Tasks)"]
end
%% Backend Layer
subgraph Backend ["Backend Core (Spring Boot)"]
direction TB
subgraph Services [Business Logic]
M_Auth["π Auth Service (JWT + RBAC)"]
M_Ticket["π οΈ Ticket Module"]
M_Booking["π
Booking Module"]
M_Facility["π¦ Facility Module"]
M_Notif["π Notification Module"]
end
end
%% Infrastructure
subgraph Infrastructure [Data & External]
DB[("ποΈ MySQL Database")]
Storage[("π File Storage (Uploads)")]
Google[("π Google Identity")]
end
%% Relations
User -->|Requests Bookings/Tickets| UI_User
Admin -->|Manages Resources/Approvals| UI_Admin
Tech -->|Updates Maintenance Tasks| UI_Tech
Frontend -->|HTTP REST APIs + HttpOnly JWT| Backend
M_Auth -->|OAuth2 Protocol| Google
M_Ticket -->|Saves Attachments| Storage
Services -->|Persistent State| DB
- Java 21 or higher
- Node.js 18 or higher
- MySQL 8.x
- Maven 3.9+
- Create a MySQL database named
smartcampus. - Configure your environment variables (or update
application.yml):DB_URL=jdbc:mysql://localhost:3306/smartcampus DB_USERNAME=your_username DB_PASSWORD=your_password JWT_SECRET=your_long_secure_random_string GOOGLE_CLIENT_ID=your_id GOOGLE_CLIENT_SECRET=your_secret
- Run migrations and start the server:
The API will be available at
cd backend ./mvnw spring-boot:runhttp://localhost:8085.
- Install dependencies:
cd frontend npm install - Start the development server:
The UI will be available at
npm run dev
http://localhost:5173.
This project is part of the IT3030 - PAF 2026 coursework. All rights reserved.












