Nano Banana Pro
Agent skill for nano-banana-pro
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Sign in to like and favorite skills
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Insurance claim automation system - Event-driven backend automating claim processing from submission to disbursement.
# Start all services (Kafka, Redis, PostgreSQL) docker compose up -d # Stop and clean up docker compose down -v # Kafka UI: http://localhost:8081 # PostgreSQL: localhost:5432, DB/User/Password: claim/claim/changeme
# Build ./gradlew clean build # Run application ./gradlew bootRun # Run all tests ./gradlew test # Run specific test class ./gradlew test --tests com.insurance.claim.domain.model.ClaimTest # Run specific test method ./gradlew test --tests com.insurance.claim.domain.model.ClaimTest.testClaimCreation
The codebase follows strict DDD principles with clear layer separation:
api → application → domain ← infrastructure
Critical Rules:
ClaimRepository), infrastructure implements them (e.g., ClaimRepositoryAdapter)Claim aggregate contains state transition logic, not servicesapi/ - REST controllers, DTOs, exception handlers
ClaimController: HTTP endpointsrequest/: API request DTOs with validationresponse/: API response DTOsApiExceptionHandler: Global exception handlingapplication/ - Use case orchestration, transaction boundaries
ClaimService: Orchestrates domain operations, manages transactionsClaimMapper: Maps between API DTOs and domain modelsdomain/ - Core business logic (framework-agnostic)
model/Claim: Aggregate root with business rulesvo/: Value objects (ClaimNumber, Money)repository/: Repository interfaces (implemented by infrastructure)ClaimStatus: Domain enum (SUBMITTED, IN_REVIEW, APPROVED, REJECTED, PAID)infrastructure/ - External system adapters
persistence/claim/ClaimEntity: JPA entity (separate from domain Claim)persistence/claim/ClaimJpaRepository: Spring Data JPA repositorypersistence/claim/ClaimRepositoryAdapter: Implements domain ClaimRepository interfaceconfig/ - Spring configuration
logging/RequestResponseLoggingAspect: AOP-based API loggingClaim is an aggregate root managing its own state transitionsClaimNumber (auto-generated: CLM-YYYYMMDD-XXXXX), Money (encapsulates currency)ClaimRepositoryAdapter translates between Claim and ClaimEntityStart with Domain
domain/model/domain/repository/Implement Infrastructure
infrastructure/persistence/Add Application Service
application/service/application/dto/Expose via API
api/dto/api/controller/# 1. Domain layer (pure Java) src/main/java/com/insurance/claim/domain/model/Payment.java src/main/java/com/insurance/claim/domain/repository/PaymentRepository.java src/test/java/com/insurance/claim/domain/model/PaymentTest.java # 2. Infrastructure layer src/main/java/com/insurance/claim/infrastructure/persistence/payment/PaymentEntity.java src/main/java/com/insurance/claim/infrastructure/persistence/payment/PaymentJpaRepository.java src/main/java/com/insurance/claim/infrastructure/persistence/payment/PaymentRepositoryAdapter.java # 3. Application layer src/main/java/com/insurance/claim/application/service/PaymentService.java src/main/java/com/insurance/claim/application/dto/PaymentMapper.java # 4. API layer src/main/java/com/insurance/claim/api/controller/PaymentController.java src/main/java/com/insurance/claim/api/dto/request/PaymentRequest.java src/main/java/com/insurance/claim/api/dto/response/PaymentResponse.java
The system is being built with event-driven architecture in mind:
Event Flow:
claim.requested → claim.reviewed → claim.approved → claim.disbursed
Implementation Phases:
When implementing events:
domain/event/ (to be created)application.ymlinfrastructure/messaging/If-Match headersClaimNumber) in API responses, never internal database IDstraceIdcom.insurance.claim, INFO for root)ClaimTest, MoneyTest, ClaimNumberTest@SpringBootTestClaimServiceTest@Test void shouldCreateClaimWithValidData() { ... } @Test void shouldThrowExceptionWhenAmountIsNegative() { ... }
<type>: <description> Types: - feat: New feature - fix: Bug fix - docs: Documentation - refactor: Code improvement without behavior change - test: Test-related work - chore: Build/dependency maintenance
Consult these files before major changes:
docs/IMPLEMENTATION_PLAN.md: Technical decisions, risk management, phase-by-phase strategydocs/WBS.md: Detailed work breakdown, Gantt chart, current sprint statusdocs/PACKAGE_STRUCTURE.md: Layer-by-layer structure with code examplesdocs/API.md: API specificationsdocs/ERD.md: Database schemadocs/SEQUENCE.md: Sequence diagramsClaim, ClaimStatus, Money, ClaimNumberClaimEntity, ClaimJpaRepository, ClaimRepositoryAdapterClaimServicePOST /claims, GET /claims/{id}RequestResponseLoggingAspectPOST /claims - Create new claim GET /claims/{id} - Query claim by ID GET /health - Health check