A microservices-based architecture following principles:
- Domain-Driven Design.
- Event-Driven Architecture.
- Hexagonal Architecture.
- Separation of Concerns.
- Choreography pattern for service coordination.
- Saga pattern for distributed transactions.
- Outbox pattern for reliable event publishing.
- SOLID.
- Back-end: Spring Boot, Kotlin, Gradle Kotlin DSL (a separate build for each service).
- Database: PostgreSQL (a separate instance for each service).
- Message Broker: Apache Kafka KRaft (Zookeeper-less).
- Identity Provider: Keycloak (OAuth2 / OpenID Connect).
- API Documentation: OpenAPI (Swagger).
- Containerization: Docker / Podman.
- Authentication: Keycloak JWT + refresh tokens (HttpOnly secure cookie via BFF pattern).
- Testing: JUnit, Testcontainers.
- Static Analysis: ktlint, Detekt.
- Documentation: Dokka for code docs.
- Infrastructure as Code: Terraform for Kafka topic provisioning.
- Build and Dependency Management: Gradle with composite builds for modularization.
- Schema Management: Apache Avro with Schema Registry for versioning and compatibility.
- Architecture — components and design principles.
- Saga Pattern & Transactional Outbox — saga engine, outbox, idempotent receiver.
- Concurrency Control — optimistic locking, ETags, saga and outbox concurrency.
- Keycloak Configuration — realm setup, authentication flow, role management.
- Development Setup — prerequisites, getting started, service URLs, API testing, code style.
