How johnphs-9/module4-deploy-simple-crm works
Simple CRM API is a Spring Boot customer-management backend. Clients authenticate with HTTP Basic for customer and health routes, or POST credentials to /auth/login for a JWT used on /api/**; authorized requests then use customer CRUD, search, and interaction endpoints. Customer operations pass through a service to JPA repositories and PostgreSQL. The README documents role-based access and PostgreSQL deployment; sampled sources show the customer and JWT call paths, while some endpoint/security wiring is documented rather than shown in excerpts.
Main entry points: CustomerServiceImpl.java Customer Service · CustomerRepository.java Customer Repository · CustomerController.java Customer API · InteractionRepository.java Interaction Repository
Components 20
API Endpoints
- Customer API
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/controller/CustomerController.java - Health Endpoint
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/controller/HealthController.java - Hello Endpoint
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/controller/HelloController.java
Authentication
- Login Endpoint
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/auth/AuthController.java - JWT Service
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/security/JwtService.java - JWT Filter
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/security/JwtAuthFilter.java - Security Config
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/config/SecurityConfig.java
Customer Domain
- Customer Service
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/service/CustomerServiceImpl.java - Service Contract
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/service/CustomerService.java - Customer Repository
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/repository/CustomerRepository.java - Interaction Repository
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/repository/InteractionRepository.java - Customer Model
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/model/Customer.java - Interaction Model
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/model/Interaction.java - PostgreSQL
Runtime Support
- Error Handler
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/exceptions/GlobalExceptionHandler.java - Missing Customer
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/exceptions/CustomerNotFoundException.java - Error Response
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/exceptions/ErrorResponse.java - Data Loader
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/service/DataLoader.java - Demo Service
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/service/DemoService.java
Other components
- API Client
Connections 22
- API Client → Customer API: calls customer routes
README.md - API Client → Health Endpoint: checks health
README.md - API Client → Login Endpoint: submits credentials
README.md - API Client → Hello Endpoint: calls hello route
- Customer API → Customer Service: delegates operations
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/controller/CustomerController.java - Customer API → Service Contract: uses contract
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/controller/CustomerController.java - Customer Service → Customer Repository: reads and writes
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/service/CustomerServiceImpl.java - Customer Service → Interaction Repository: saves interactions
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/service/CustomerServiceImpl.java - Customer Repository → Customer Model: persists entity
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/repository/CustomerRepository.java - Interaction Repository → Interaction Model: persists entity
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/repository/InteractionRepository.java - Customer Service → Customer Model: operates on
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/service/CustomerServiceImpl.java - Customer Service → Interaction Model: links interaction
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/service/CustomerServiceImpl.java - Customer Repository → PostgreSQL: stores entities
- Interaction Repository → PostgreSQL: stores entities
- Customer Service → Missing Customer: throws when absent
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/service/CustomerServiceImpl.java - Error Handler → Missing Customer: handles exception
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/exceptions/GlobalExceptionHandler.java - Error Handler → Error Response: returns error body
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/exceptions/GlobalExceptionHandler.java - Login Endpoint → JWT Service: issues token
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/auth/AuthController.java - Security Config → JWT Filter: registers filter
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/config/SecurityConfig.java - JWT Filter → JWT Service: validates token
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/security/JwtAuthFilter.java - Security Config → API Client: protects routes
README.md - Data Loader → Customer Repository: loads customers
simple-crm-api/src/main/java/sg/edu/ntu/simple_crm_api/service/DataLoader.java