Use when modifying the API Gateway: adding routes, configuring rate limiting, customizing JWT validation, adding global filters, or debugging gateway behavior. Covers the reactive WebFlux architecture, JwtAuthFilter with header propagation, Redis rate…
Use when adding or changing an ArchUnit fitness function, enforcing an architectural rule or coding convention, or wiring a new invariant into CI. Covers the guiding-vs-enforcing two-layer model, the architecture-tests module, the foundation-starter…
Use when adding or updating documentation — a module README, an ADR, the glossary, the conventions, or any docs/ page. Covers the hybrid single-source model (co-located READMEs vs centralised docs/), the terse AI-optimized format, the ADR template, and the…
Use when adding error handling, creating error codes, throwing business exceptions, or customizing error response format. Covers the ErrorCode→BusinessException→GlobalExceptionHandler pipeline, dual-format output (ApiResponse vs ProblemDetail), trace…
Use when working with Kafka messaging: defining events, creating topics, producing/consuming EventWrapper messages, configuring DLT/retry, or debugging Kafka deserialization. Covers EventPublisher trace propagation, Consumer/Producer contracts, topicNamer…
Use when implementing transactional outbox or idempotent inbox patterns, adding event publishing to a service transaction, creating InboxProcessor implementations, or adding outbox/inbox Flyway migrations. Covers the full lifecycle: OutboxService.save() in…
Use when configuring JWT security, adding public paths, modifying token validation, debugging authentication errors, or understanding the two-layer security architecture (gateway reactive filter vs service servlet filter). Covers SecurityProperties…
Use when creating a new microservice, adding a service module, or wiring starters into a service. Covers the exact layered package structure (api/application/domain/infrastructure), the 8-step creation checklist, config server integration, gateway route…