Problem Statement: Portal berita konvensional seringkali membosankan dan gagal mempertahankan retensi pembaca (User Retention). Pengunjung biasanya hanya membaca satu artikel lalu pergi yang mengakibatkan Bounce Rate tinggi.
Tantangannya adalah menciptakan ekosistem membaca yang interaktif dan menguntungkan bagi pengguna, sehingga mereka termotivasi untuk membaca lebih banyak artikel setiap harinya.
Saya membangun Portal Berita berbasis PHP Native yang diintegrasikan dengan logika Sistem Gamifikasi.
Berdasarkan struktur database, saya merancang tabel khusus yang saling berelasi untuk menangani logika poin dan sistem penukaran hadiah agar integritas data tetap terjaga.
tb_user: Menyimpan total akumulasi poin pengguna (kolom poin).tb_berita: Menyimpan master konten artikel yang menjadi sumber poin.tb_riwayat: Mencatat riwayat/history baca agar pengguna tidak bisa mengakali sistem untuk mendapat poin ganda dari artikel yang sama.tb_tukar_poin: Menjadi log transaksi untuk penukaran poin menjadi hadiah (berfungsi sebagai bukti transaksi).Berikut adalah implementasi logika backend PHP untuk memberikan poin kepada pengguna secara otomatis saat validasi syarat membaca artikel telah terpenuhi.
// Cek apakah user sudah pernah baca artikel ini sebelumnya?
$cekRiwayat = mysqli_query($koneksi, "SELECT * FROM tb_riwayat
WHERE id_user='$uid' AND id_berita='$id_berita'");
if(mysqli_num_rows($cekRiwayat) == 0) {
// 1. Catat Riwayat Baca agar tidak ada double-claim
mysqli_query($koneksi, "INSERT INTO tb_riwayat (id_user, id_berita, tanggal)
VALUES ('$uid', '$id_berita', NOW())");
// 2. Tambah Poin User (+10) secara real-time
mysqli_query($koneksi, "UPDATE tb_user SET poin = poin + 10 WHERE id_user='$uid'");
// 3. Berikan Feedback Positif ke User
$alert = "Artikel selesai dibaca! Poin Anda bertambah +10.";
} else {
$alert = "Anda sudah membaca artikel ini sebelumnya.";
}