Back to Projects
Overview Konsep Role Wallet Slot Engine Database Architecture Roadmap
Dokumentasi Teknis

Blueprint Project Virtual Casino Web

Platform virtual casino berbasis web. User bermain dengan Virtual Coin; admin mengontrol mesin, probabilitas, dan payout. Semua hasil ditentukan server-side RNG.

Laravel 12 Blade · CSS · JS MySQL MVP 1.0

Project Overview

Platform virtual casino game berbasis web. User punya saldo virtual untuk bermain. Saldo tidak bisa ditambah sendiri — harus lewat request top-up yang disetujui admin.

2
Roles
1
Game (Slot)
10
DB Tables
56
Routes
23
Controllers
9
Models
Batasan MVP: Tidak ada uang asli — no deposit, withdrawal, payment gateway, crypto, transfer antar-user, atau betting antar-user. Saldo hanya Virtual Coin.

Alur Sistem

USER │ ├── Register / Login ├── Melihat saldo ├── Request Top Up │ ▼ ADMIN │ ├── Review Request ├── Approve → Saldo bertambah └── Reject → Status rejected │ ▼ USER MEMAINKAN SLOT │ ├── Bet → Spin → Menang / Kalah │ ▼ TRANSACTION + GAME HISTORY

Inti Desain

User & Admin

👤

User

Dashboard, Wallet, Request Top Up, Slot Machine, Game History, Transaction History. Tidak bisa ubah saldo, payout, atau konfigurasi mesin.

🛡️

Admin

Overview, User Management, Top Up Approval, Machine Config, Game History, Transaction History, Statistics, System Settings.

Authentication

Register → Create User → Create Wallet (balance = 0). Role disimpan di users.role (user / admin).

Wallet System

Setiap user punya satu wallet. Saldo hanya berubah lewat operasi server yang valid.

Jenis Perubahan Saldo

TypeContohKeterangan
TOPUP+100.000Admin approve top-up
BET−10.000User menempatkan taruhan
WIN+50.000Payout kemenangan
REFUND+10.000Pengembalian (jika perlu)

Top Up Flow

USER → Request Top Up (status: PENDING) │ ▼ ADMIN → Review │ ├── APPROVE → Wallet +amount · Transaction TOPUP · status=approved └── REJECT → status=rejected · saldo tidak berubah
Keamanan saldo: Semua operasi memakai DB transaction — BEGIN → Lock Wallet → Check → Deduct/Add → Create Transaction → Create Game Session → COMMIT. Error → ROLLBACK.

Classic Slot Engine

Game pertama: Classic Slot Machine 3 reel. Simbol memakai asset PNG/WebP (bukan emoji).

Simbol & Payout Default

CombinationMultiplier
3 × Cherry5×
3 × Lemon5×
3 × Bell10×
3 × Diamond20×
3 × Crown25×
3 × Lucky 750×

Game Flow (Server-side)

USER tekan SPIN │ ▼ SERVER ├── Cek machine status ├── Cek bet (min / max) ├── Cek saldo ├── Lock wallet ├── Generate RNG ├── Tentukan result ├── Hitung payout ├── Update wallet ├── Simpan transaction └── Simpan game session │ ▼ HASIL → CLIENT → ANIMASI REEL → TAMPILKAN
Penting: Browser tidak boleh mengirim result / payout. Browser hanya POST /game/slot/spin. Server yang menentukan semuanya.

Win Probability

Default 10%. Dipakai sebagai parameter RNG — bukan pola tetap “setiap 10 spin pasti menang”. Hasil tetap acak.

Admin Machine Config

Setiap perubahan konfigurasi dicatat di audit log.

Animasi Reel

Mesin, frame, tombol, background diam. Hanya REEL 1 → REEL 2 → REEL 3 yang bergerak dan berhenti berurutan.

Schema & Relationships

Tabel Utama

TableKey Columns
usersid, name, email, password, role
walletsid, user_id, balance
top_up_requestsid, user_id, amount, status, processed_by
transactionsid, user_id, type, amount, balance_before, balance_after
gamesid, name, slug, is_active
game_historiesid, user_id, game_id, bet, result, winnings
game_settingswin_probability, min_bet, max_bet, multipliers

Relationships

USER ├──── 1 : 1 ──── WALLET ├──── 1 : N ──── TOPUP_REQUEST ├──── 1 : N ──── TRANSACTION └──── 1 : N ──── GAME_HISTORY │ N : 1 ▼ GAME │ ├── GAME_SETTINGS └── PAYOUT_SETTINGS

Laravel Structure & Routes

Auth

showLogin, login, showRegister, register, logout

User Area

Dashboard, Wallet, TopUp, Transaction, Slot, GameHistory, Settings

Admin

Dashboard, User, TopUp (approve/reject), Machine, Transaction, GameHistory

Games

Slot (spin), FlipCoin, Roulette, Dice — server-side result

Route Blueprint

/login  /register  /logout
/dashboard  /wallet  /topup  /transactions  /game-history
/game/slot  /game/slot/spin
/admin/dashboard  /admin/users  /admin/topups
/admin/machines  /admin/transactions  /admin/game-history

Route /admin/* hanya untuk role admin (middleware).

Asset Structure (Slot)

public/assets/slot/
├── machine/   frame · background · spin-button
├── symbols/   cherry · lemon · grape · watermelon · bell · diamond · bar · crown · seven
└── effects/   win · coins · glow

Yang Dikunci vs Ditunda

Fitur MVP

Ditunda

Phase 01 → 17

Development tidak langsung bikin game. Ikuti urutan ini:

Phase 01
Laravel Setup
Phase 02
Database + Migration
Phase 03
Authentication
Phase 04
Role User / Admin
Phase 05
Wallet System
Phase 06
Top Up Request
Phase 07
Admin Approval
Phase 08
Transaction System
Phase 09
Slot Engine
Phase 10
RNG + Probability
Phase 11
Payout System
Phase 12
Slot Animation
Phase 13
Game History
Phase 14
Admin Dashboard
Phase 15
Statistics
Phase 16
Security Testing
Phase 17
UI Polish

Flow Lengkap

ADMIN ──Configure Machine──► SLOT ENGINE │ RNG · Probability · Payout │ USER ──Request Top Up──► ADMIN APPROVE ──► WALLET (Virtual Coin) │ │ Bet ▼ SLOT Spin → RNG → Result → Payout │ ┌─────────┴─────────┐ ▼ ▼ Transaction Game History
Dengan blueprint ini, coding bisa dimulai dari Phase 01 → database/migration tanpa mengubah arsitektur di tengah jalan.