Backend Java
Backend Spring Boot 4 — autentikasi, manajemen pengguna, artikel, kuis, dan forum dengan sinkronisasi outbox ke engine Rust
Spring Boot 4.0.2 dengan Java 21, Gradle Kotlin DSL. Deployment: Heroku (prod/staging) + Docker. Backend Java berfungsi sebagai API gateway utama dan menangani autentikasi, manajemen pengguna, konten (artikel/kuis), fitur forum, dan sinkronisasi dengan engine gamifikasi Rust melalui pattern outbox.
Tech Stack
- Framework: Spring Boot 4.0.2 dengan Java 21
- Build Tool: Gradle Kotlin DSL
- Database: PostgreSQL dengan connection pooling HikariCP
- Security: Spring Security dengan autentikasi token JWT
- Code Quality: Lombok, PMD 7.0.0 (priority 5), cakupan JaCoCo
- Security Scanning: OWASP Dependency-Check (gagal pada CVSS 9.0+)
- Docker: Multi-stage build menggunakan
eclipse-temurin:21-jdkdaneclipse-temurin:21-jre
BacaanKuisController pada modul bacaankuis sudah ditandai sebagai deprecated. Gunakan ArticleController dan QuizController sebagai gantinya.
Struktur Package
Backend mengikuti prinsip Clean Architecture dengan pemisahan layer yang jelas:
* BacaanKuisController sudah deprecated — gunakan ArticleController dan QuizController sebagai gantinya
Dependensi Utama
| Category | Dependency | Version |
|---|---|---|
| Core | spring-boot-starter-web | 4.0.2 |
| Persistence | spring-boot-starter-data-jpa | 4.0.2 |
| Security | spring-boot-starter-security | 4.0.2 |
| JWT | jjwt-impl, jjwt-jackson | 0.12.6 |
| Database | hikariCP | 5.0.1 |
| PostgreSQL | postgresql | 42.7.3 |
| Validation | spring-boot-starter-validation | 4.0.2 |
| Utilities | Lombok | - |
| Testing | spring-boot-starter-test | 4.0.2 |
| Coverage | jacoco-maven-plugin | - |
| Security | dependency-check-maven | 9.0.0 |
Konvensi API Response
Semua response API menggunakan wrapper ApiResponse<T>:
// JSON responsee structure
{
"success": true,
"message": "Operation description",
"data": { /* responsee payload */ }
}Wrapper ini mendukung tiga factory:
ApiResponse.success(message, data)— operasi berhasilApiResponse.success(message)— response berhasil tanpa kontenApiResponse.error(message)— response error
Tautan ke Sub-Halaman
Authentication
Autentikasi berbasis JWT dengan login lokal, registrasi, dan Google OAuth SSO
User Management
Manajemen profil, batch lookup, perubahan password, dan soft delete akun
Outbox Pattern
Sinkronisasi fault-tolerant ke engine Rust melalui retry terjadwal
Deployment
- Production/Staging: Heroku
- Development: Docker Compose lokal
- Container Base: Multi-stage Docker menggunakan
eclipse-temurin:21-jre - Port: 8080
Backend Java adalah entry point utama untuk semua request frontend. Frontend TIDAK BOLEH memanggil backend Rust secara langsung (8081) — gunakan pattern BFF Java sebagai gantinya.