Yomu
Java Backend

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-jdk dan eclipse-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

CategoryDependencyVersion
Corespring-boot-starter-web4.0.2
Persistencespring-boot-starter-data-jpa4.0.2
Securityspring-boot-starter-security4.0.2
JWTjjwt-impl, jjwt-jackson0.12.6
DatabasehikariCP5.0.1
PostgreSQLpostgresql42.7.3
Validationspring-boot-starter-validation4.0.2
UtilitiesLombok-
Testingspring-boot-starter-test4.0.2
Coveragejacoco-maven-plugin-
Securitydependency-check-maven9.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 berhasil
  • ApiResponse.success(message) — response berhasil tanpa konten
  • ApiResponse.error(message) — response error

Tautan ke Sub-Halaman

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.

On this page