# trannam1304/smart-campus architecture

> Architecture diagram of the GitHub repository trannam1304/smart-campus, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/trannam1304/smart-campus
- Repository: https://github.com/trannam1304/smart-campus

## Overview

This is a Java/Spring backend scaffold for a smart-campus facility and study-room reservation platform. Its planned user-facing capabilities span authentication, room discovery, booking, device/facility operations, check-in, and notifications. The sampled controllers and service interfaces are largely TODOs, so the graph shows declared API mappings and dependency declarations, not a functioning request-to-result workflow. The README describes a broader project, but the supplied tree contains only the backend skeleton; detailed service behavior and external integrations cannot be confirmed.

Main entry points: [`backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/BookingController.java`](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/BookingController.java) (Booking API), [`backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/CheckinController.java`](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/CheckinController.java) (Check-in API), [`backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/NotificationController.java`](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/NotificationController.java) (Notification API), [`backend/backend-skeleton/src/main/java/com/smartcampus/backend/config/SecurityConfig.java`](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/config/SecurityConfig.java) (Security config)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and security"]
  node_auth_controller["Auth API"]
  node_security["Security config"]
  node_jwt_filter["JWT filter<br/>[JwtAuthFilter.java]"]
  node_jwt_provider["JWT provider"]
end

subgraph group_facility["Facility services"]
  node_room_controller["Room API"]
  node_room_service["Room service<br/>[RoomService.java]"]
  node_device_controller["Device API"]
  node_device_service["Device service<br/>[DeviceService.java]"]
end

subgraph group_reservation["Reservation services"]
  node_booking_controller["Booking API"]
  node_booking_service["Booking service"]
  node_checkin_controller["Check-in API"]
  node_checkin_service["Check-in service"]
  node_notification_controller["Notification API"]
  node_notification_service["Notification service"]
end

subgraph group_data["Domain data"]
  node_booking_repo["Booking repository"]
  node_booking_entity["Booking entity<br/>[Booking.java]"]
  node_room_repo["Room repository"]
  node_room_entity["Room entity<br/>[Room.java]"]
  node_incident_entity["Incident report"]
end

node_client(("API client"))

node_client -->|"HTTP requests"| node_auth_controller
node_client -->|"HTTP requests"| node_room_controller
node_client -->|"HTTP requests"| node_booking_controller
node_client -->|"HTTP requests"| node_checkin_controller
node_client -->|"HTTP requests"| node_device_controller
node_client -->|"HTTP requests"| node_notification_controller
node_security -->|"configures"| node_jwt_filter
node_booking_controller -->|"injects"| node_booking_service
node_checkin_controller -->|"injects"| node_checkin_service
node_notification_controller -->|"injects"| node_notification_service
node_booking_repo -->|"persists"| node_booking_entity

click node_auth_controller "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/AuthController.java"
click node_security "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/config/SecurityConfig.java"
click node_jwt_filter "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/security/JwtAuthFilter.java"
click node_jwt_provider "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/security/JwtTokenProvider.java"
click node_room_controller "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/RoomController.java"
click node_room_service "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/RoomService.java"
click node_device_controller "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/DeviceController.java"
click node_device_service "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/DeviceService.java"
click node_booking_controller "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/BookingController.java"
click node_booking_service "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/BookingService.java"
click node_checkin_controller "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/CheckinController.java"
click node_checkin_service "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/CheckinService.java"
click node_notification_controller "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/NotificationController.java"
click node_notification_service "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/NotificationService.java"
click node_booking_repo "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/repository/BookingRepository.java"
click node_booking_entity "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/entity/Booking.java"
click node_room_repo "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/repository/RoomRepository.java"
click node_room_entity "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/entity/Room.java"
click node_incident_entity "https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/entity/IncidentReport.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_auth_controller,node_security,node_jwt_filter,node_jwt_provider,node_client toneBlue
class node_room_controller,node_room_service,node_device_controller,node_device_service toneAmber
class node_booking_controller,node_booking_service,node_checkin_controller,node_checkin_service,node_notification_controller,node_notification_service toneMint
class node_booking_repo,node_booking_entity,node_room_repo,node_room_entity,node_incident_entity toneRose
```

## Components

### API and security

- [Auth API](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/AuthController.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/AuthController.java`
- [Security config](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/config/SecurityConfig.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/config/SecurityConfig.java`
- [JWT filter](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/security/JwtAuthFilter.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/security/JwtAuthFilter.java`
- [JWT provider](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/security/JwtTokenProvider.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/security/JwtTokenProvider.java`

### Facility services

- [Room API](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/RoomController.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/RoomController.java`
- [Room service](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/RoomService.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/RoomService.java`
- [Device API](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/DeviceController.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/DeviceController.java`
- [Device service](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/DeviceService.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/DeviceService.java`

### Reservation services

- [Booking API](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/BookingController.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/BookingController.java`
- [Booking service](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/BookingService.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/BookingService.java`
- [Check-in API](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/CheckinController.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/CheckinController.java`
- [Check-in service](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/CheckinService.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/CheckinService.java`
- [Notification API](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/NotificationController.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/controller/NotificationController.java`
- [Notification service](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/NotificationService.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/service/NotificationService.java`

### Domain data

- [Booking repository](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/repository/BookingRepository.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/repository/BookingRepository.java`
- [Booking entity](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/entity/Booking.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/entity/Booking.java`
- [Room repository](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/repository/RoomRepository.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/repository/RoomRepository.java`
- [Room entity](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/entity/Room.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/entity/Room.java`
- [Incident report](https://github.com/trannam1304/smart-campus/blob/main/backend/backend-skeleton/src/main/java/com/smartcampus/backend/entity/IncidentReport.java): `backend/backend-skeleton/src/main/java/com/smartcampus/backend/entity/IncidentReport.java`

### Other components

- **API client**

## Connections

- API client → Auth API: HTTP requests
- API client → Room API: HTTP requests
- API client → Booking API: HTTP requests
- API client → Check-in API: HTTP requests
- API client → Device API: HTTP requests
- API client → Notification API: HTTP requests
- Security config → JWT filter: configures
- Booking API → Booking service: injects
- Check-in API → Check-in service: injects
- Notification API → Notification service: injects
- Booking repository → Booking entity: persists
