How thebandsoftware/helpdesk_banmd works
Helpdesk lets employees identify themselves, report IT issues, follow their tickets, and attach images or comment; IT staff can review, assign, prioritize, and resolve them, with category statistics. The React app routes users to feature pages, which communicate with a Spring REST API; backend services enforce business rules and use repositories for MariaDB persistence. Attachments additionally use S3-compatible storage. The README documents the overall frontend/API/database relationship; individual feature-to-API calls are not established by the excerpts, so those edges are omitted.
Main entry points: TicketService.java Ticket rules · AttachmentService.java Attachment rules · App.tsx Page router · CommentService.java Comment rules
Components 31
Web application
- Page router
frontend/src/App.tsx - Ticket pages
frontend/src/features/tickets/TicketDetail.tsx - User selection
frontend/src/features/users/UserList.tsx - API client
frontend/src/shared/apiClient.ts
REST API
- Ticket endpoints
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/controllers/TicketController.java - Comment endpoints
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/controllers/CommentController.java - Attachment endpoints
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/controllers/AttachmentController.java - User endpoints
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/controllers/UserController.java - Ticket detail DTO
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/dtos/TicketDetailResponse.java - Ticket summary DTO
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/dtos/TicketSummaryResponse.java - API error handling
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/exceptions/ApiExceptionHandler.java
Ticket operations
- Ticket rules
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/TicketService.java - Comment rules
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/CommentService.java - User operations
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/UserService.java - Ticket mapping
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/mappers/TicketMapper.java - Ticket entity
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/entities/Ticket.java - User entity
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/entities/User.java - Ticket categories
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/enums/Category.java - User roles
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/enums/Role.java - Ticket statuses
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/enums/Status.java
Persistence
- Ticket repository
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/repositories/TicketRepository.java - User repository
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/repositories/UserRepository.java - MariaDB
- Comment repository
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/repositories/CommentRepository.java
File attachments
- Attachment rules
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/AttachmentService.java - Attachment repository
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/repositories/AttachmentRepository.java - File storage interface
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/FileStorageService.java - S3 storage adapter
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/S3FileStorageService.java - Attachment entity
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/entities/Attachment.java
Other components
- Employee or IT staff
- S3-compatible bucket
Connections 29
- Employee or IT staff → Page router: uses
frontend/src/App.tsx - Page router → Ticket pages: routes to
frontend/src/App.tsx - Page router → User selection: routes to
frontend/src/App.tsx - Page router → API client: provides API client
- API client → Ticket endpoints: calls /api
- Ticket endpoints → Ticket rules: delegates to
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/controllers/TicketController.java - Comment endpoints → Comment rules: delegates to
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/controllers/CommentController.java - Attachment endpoints → Attachment rules: delegates to
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/controllers/AttachmentController.java - Ticket rules → Ticket repository: queries and saves
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/TicketService.java - Ticket rules → User repository: looks up users
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/TicketService.java - Ticket rules → Ticket mapping: maps responses
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/TicketService.java - Ticket repository → MariaDB: persists records
README.md - User repository → MariaDB: persists records
README.md - Comment rules → Comment repository: reads and saves
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/CommentService.java - Comment rules → Ticket repository: checks ticket
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/CommentService.java - Comment rules → User repository: looks up author
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/CommentService.java - Attachment rules → Attachment repository: reads and saves
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/AttachmentService.java - Attachment rules → Ticket repository: checks ticket
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/AttachmentService.java - Attachment rules → User repository: checks uploader
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/AttachmentService.java - Attachment rules → File storage interface: stores file bytes
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/AttachmentService.java - S3 storage adapter → S3-compatible bucket: reads and writes objects
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/S3FileStorageService.java - S3 storage adapter → File storage interface: implements
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/S3FileStorageService.java - Ticket rules → Ticket entity: creates and updates
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/TicketService.java - Ticket rules → Ticket detail DTO: returns
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/TicketService.java - Ticket rules → Ticket summary DTO: returns
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/TicketService.java - Ticket entity → Ticket categories: uses category
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/entities/Ticket.java - Ticket entity → Ticket statuses: uses status
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/entities/Ticket.java - Ticket entity → User entity: references users
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/entities/Ticket.java - Attachment rules → Attachment entity: creates metadata
backend/helpdesk/src/main/java/com/thebanmd/helpdesk/services/AttachmentService.java