How bbcares1/cats works
CATS is a training application and reimbursement management system. Employees plan and submit course applications, managers review them, and eligible employees can later submit fee claims with supporting documents; approved claims can be recorded as reimbursed. Administrators maintain staff, approval routing, course catalogue, holidays, and annual entitlements, while reporting and audit support oversight. The sampled sources show application and claim flows, document storage, and login-account loading. The README is empty, so additional wiring is represented only where the tree or excerpts support it.
Main entry points: ApplicationService.java Application lifecycle · ClaimService.java Claim lifecycle · OutboxProcessor.java Mail delivery · ClaimController.java Claim web
Components 30
Access and web
- Application web
src/main/java/sg/edu/nus/cats/web/EmployeeApplicationController.java - Claim web
src/main/java/sg/edu/nus/cats/web/ClaimController.java - Manager review
src/main/java/sg/edu/nus/cats/web/ManagerApprovalController.java - JSON API
src/main/java/sg/edu/nus/cats/web/api/CatsApiController.java - Login accounts
src/main/java/sg/edu/nus/cats/security/CatsUserDetailsService.java
Training workflows
- Application lifecycle
src/main/java/sg/edu/nus/cats/service/ApplicationService.java - Approval decisions
src/main/java/sg/edu/nus/cats/service/ApprovalService.java - Claim lifecycle
src/main/java/sg/edu/nus/cats/service/ClaimService.java - Document vault
src/main/java/sg/edu/nus/cats/service/DocumentStorageService.java - Calendar services
src/main/java/sg/edu/nus/cats/service/CalendarService.java - Entitlements
src/main/java/sg/edu/nus/cats/service/EntitlementService.java - Training ledger
src/main/java/sg/edu/nus/cats/service/LedgerService.java
Administration and oversight
- Admin services
src/main/java/sg/edu/nus/cats/service/StaffAdminService.java - Catalogue admin
src/main/java/sg/edu/nus/cats/service/CatalogueAdminService.java - Reports
src/main/java/sg/edu/nus/cats/service/ReportService.java - Audit trail
src/main/java/sg/edu/nus/cats/service/AuditService.java
Persistence and integrations
- Mail outbox
src/main/java/sg/edu/nus/cats/service/OutboxService.java - Mail delivery
src/main/java/sg/edu/nus/cats/service/OutboxProcessor.java - Mail templates
src/main/java/sg/edu/nus/cats/service/mail/MailTemplateService.java - Mail gateway
src/main/java/sg/edu/nus/cats/service/mail/MailGateway.java - Application database
- Private file storage
- Account repository
src/main/java/sg/edu/nus/cats/repository/UserAccountRepository.java - Application repository
src/main/java/sg/edu/nus/cats/repository/CourseApplicationRepository.java - Claim repository
src/main/java/sg/edu/nus/cats/repository/CourseClaimRepository.java - Document repository
src/main/java/sg/edu/nus/cats/repository/ClaimDocumentRepository.java
Other components
- Employee
- Manager
- Administrator
- SMTP service
Connections 32
- Employee → Application web: submits
- Application web → Application lifecycle: creates
- Application lifecycle → Application repository: saves
- Application lifecycle → Entitlements: checks
- Application lifecycle → Training ledger: updates
- Application lifecycle → Audit trail: records
- Manager → Manager review: reviews
- Manager review → Approval decisions: decides
- Employee → Claim web: files claim
- Claim web → Claim lifecycle: manages
- Claim lifecycle → Claim repository: reads and saves
- Claim lifecycle → Document vault: stores files
- Claim lifecycle → Document repository: saves metadata
- Claim web → Document vault: loads download
- Document vault → Private file storage: reads and writes
- JSON API → Application lifecycle: previews
- JSON API → Calendar services: requests calendar
- Login accounts → Account repository: loads account
- Account repository → Application database: queries
- Application repository → Application database: queries and saves
- Claim repository → Application database: queries and saves
- Document repository → Application database: queries and saves
- Administrator → Admin services: manages staff
- Administrator → Catalogue admin: maintains reference data
- Administrator → Entitlements: sets allowances
- Manager → Reports: views reports
- Application lifecycle → Mail outbox: queues notices
- Claim lifecycle → Mail outbox: queues notices
- Mail delivery → Mail outbox: processes messages
- Mail delivery → Mail templates: renders content
- Mail delivery → Mail gateway: sends through
- Mail gateway → SMTP service: delivers mail