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
Bacaan dan Kuis
Artikel, soal kuis, attempt pengguna, dan sinkronisasi hasil kuis ke Rust
Forum Diskusi
Komentar artikel, nested replies, reaction toggle, dan integrasi frontend
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 menangani autentikasi dan konten. Frontend berkomunikasi langsung dengan backend services sesuai konfigurasi environment.