Simulador de casino 100% de demostración. No procesa dinero real, no tiene depósitos, retiros, tarjetas ni criptomonedas. Todos los saldos son créditos virtuales sin ningún valor monetario, pensados únicamente para pruebas de producto, QA y demostraciones.
server/data/casino.dbcasino-demo/
├── server/ # API Express + SQLite
│ ├── src/
│ │ ├── db/ # esquema + seed
│ │ ├── games/ # motores de los 15 juegos (RNG, cartas, sesiones)
│ │ ├── middleware/ # auth JWT
│ │ └── routes/ # auth, users, games, promo, admin
│ └── data/casino.db # se crea automáticamente
├── client/ # SPA React
│ └── src/
│ ├── pages/ # Dashboard, Profile, Games, Bonuses, Promo, History...
│ ├── pages/admin/ # Panel de administrador
│ ├── games/ # UI de los 15 juegos
│ ├── components/ # Sidebar, Topbar, Modal, Toasts, etc.
│ └── context/ # Auth + Toasts
└── package.json # workspace raíz
Requisitos: Node.js 18+ y npm.
npm install
npm run seed # crea la base de datos y los datos de demostración
npm run dev # levanta API (puerto 4000) + cliente (puerto 5173)
Abre http://localhost:5173.
npm run seed solo hace falta la primera vez (o si borras server/data/casino.db).
El servidor también corre CREATE TABLE IF NOT EXISTS al arrancar, así que
npm run dev funciona igualmente sin seed previo, pero sin usuarios/códigos
de ejemplo.
| Usuario | Contraseña | Rol |
|---|---|---|
demo |
Demo123! |
Jugador (5000 créditos) |
admin |
Admin123! |
Administrador |
Puedes registrar cuentas nuevas libremente desde /register: el registro
acepta cualquier dato (no hay verificación real de identidad ni de email) y
otorga automáticamente el bono de bienvenida configurado.
El usuario admin ya viene creado por el seed. Si prefieres crear uno nuevo:
/register con tus propios datos.Con acceso a la base de datos (server/data/casino.db), promuévelo a admin:
sqlite3 server/data/casino.db "UPDATE users SET role='admin' WHERE username='TU_USUARIO';"
/admin.Creados automáticamente por el seed, canjeables desde /promo-codes:
WELCOME100 → +100 créditosDEMO500 → +500 créditosLUCKY1000 → +1000 créditosSlots, Roulette, Blackjack, Baccarat, Dice, Mines, Plinko, Crash, Wheel,
Coin Flip, Keno, Hi-Lo, Limbo, Towers y Video Poker. Todos usan únicamente
créditos virtuales, tienen su propia interfaz con animaciones e historial de
últimas jugadas, y su resultado se calcula en el servidor (nunca en el
cliente) a partir de la configuración vigente en Game Configuration en el
momento de la apuesta. El resultado nunca se modifica después de que el
usuario haya apostado.
Los juegos de una sola tirada (Slots, Roulette, Dice, Coin Flip, Wheel, Keno, Limbo, Plinko, Baccarat) resuelven la jugada en una sola petición. Los juegos por pasos (Blackjack, Mines, Towers, Hi-Lo, Crash, Video Poker) usan una sesión de servidor en memoria (se cierra sola tras 30 min de inactividad) para permitir decisiones sucesivas (pedir carta, revelar casilla, retirar créditos, etc.).
/admin)Protegido por rol (role = 'admin') además del login JWT normal.
Cualquier cambio administrativo (ajustar créditos, bloquear usuario, cambiar configuración de un juego, crear/editar código promo, etc.) queda registrado en el Admin Activity Log.
bcrypt.JWT_SECRET en server/.env, ver .env.example).server/.env)PORT=4000
JWT_SECRET=cambia-esto-en-tu-propia-copia
STARTING_CREDITS=5000