Zum Inhalt

Betrieb & Deployment

Tech-Stack

Technologie Version Zweck
Next.js 16.1.1 Full-Stack Framework
React 19.2.3 UI-Rendering
pg 8.17.2 PostgreSQL-Client
bcryptjs 2.4.3 Passwort-Hashing
jsonwebtoken 9.0.2 JWT-Auth
ethers 6.16.0 Blockchain-RPC

Deployment

Server-Konfiguration

  • Port: 3002 (dev und prod)
  • Host: gameadmin.itsolution.co.at
  • Prozess: Next.js Built-in Server (kein Docker)

NPM Scripts

npm run dev    # Entwicklungsserver (Port 3002)
npm run build  # Production Build
npm run start  # Production Server (Port 3002)

Next.js Konfiguration

Minimale Konfiguration (next.config.ts) — Standard Next.js 16 Einstellungen.

Datenbank-Verbindung

Haupt-Datenbank (lib/db.ts)

const db = new Pool({
  host: process.env.DB_HOST ?? "127.0.0.1",
  port: Number(process.env.DB_PORT ?? 5432),
  database: process.env.DB_NAME ?? "chainbets",
  user: process.env.DB_USER ?? "chainbets",
  password: process.env.DB_PASSWORD ?? "chainbets_dev_pw",
  max: 5,  // Connection Pool Size
});

Charity-Datenbank (lib/charityDb.ts)

const charityDb = new Pool({
  database: "chainbets_charity",
  max: 3,  // Kleinerer Pool für Charity-DB
  // ... gleiche Host/Port/Auth wie Haupt-DB
});

Umgebungsvariablen

Datenbank

Variable Beschreibung Default
DB_HOST PostgreSQL Host 127.0.0.1
DB_PORT PostgreSQL Port 5432
DB_NAME Datenbankname chainbets
DB_USER Benutzer chainbets
DB_PASSWORD Passwort chainbets_dev_pw

Authentifizierung

Variable Beschreibung Default
ADMIN_JWT_SECRET JWT-Signing-Secret chainbets-admin-dev-secret

Blockchain / RPC

Variable Beschreibung
RPC_URL Primary RPC Endpoint
NEXT_PUBLIC_RPC_URL Public RPC (Client-side)
PRIMARY_RPC_URL Fallback RPC

Smart Contracts

Variable Beschreibung
USDT USDT Token Contract
GAMEMANAGER GameManager Contract
SETTLEMENT Settlement V4 Contract
PRIZE_VAULT_V2 Prize Vault Contract
RESERVE_VAULT Reserve Vault Contract
CHARITY_VAULT Charity Vault Contract
AFFILIATE_VAULT Affiliate Vault Contract
CLAIM_ROUTER Claim Router Contract
GAME_TREASURY Game Treasury Contract
VRF_RECEIVER VRF Receiver Contract
OPERATOR Operator/Relayer Contract
TREASURY_SAFE Dev-Multisig
TREASURY_SAFE_PROD Prod-Multisig

Externe Dienste

Variable Beschreibung
ARBISCAN_API_KEY Arbiscan API Key

Sicherheit

Middleware (proxy.ts)

Die Middleware schützt alle Routen mit einer Whitelist:

  1. Öffentliche Routen (kein Auth nötig): /login, /api/auth/login
  2. Next.js Internals (durchgelassen): /_next/, /favicon.ico
  3. Geschützte Routen: Alle anderen — JWT-Cookie wird geprüft
  4. Unbekannte Routen: 404 (API) oder Redirect zu /login

Authentifizierung

  • Cookie: admin_session (httpOnly, secure in Production, SameSite=lax)
  • JWT-Ablauf: 24 Stunden
  • Passwort: bcrypt-gehashed in admin_users-Tabelle
  • Login: last_login Timestamp wird bei jedem Login aktualisiert

Berechtigungen

  • Kein Rollen-System — jeder authentifizierte Admin hat vollen Zugriff
  • Schreiboperationen nur auf: Vouchers (POST), Config (POST/PUT/DELETE), Charity (POST/PUT/DELETE), Maintenance (PUT)
  • Alle anderen Endpoints sind read-only

Referenzierte Datenbank-Tabellen

Tabelle Datenbank Verwendung
admin_users chainbets Admin-Konten & Passwörter
users chainbets Spielerprofile
tickets chainbets Ticket-Käufe
buy_intents chainbets Kaufabsichten-Lifecycle
extra_bonus_vouchers chainbets Bonus-Gutscheine
affiliate_rates chainbets Affiliate-Beziehungen
settlement_runs chainbets Settlement-Historie
settlement_winner_payouts chainbets Gewinner-Auszahlungen
user_error_logs chainbets Benutzer-Fehlerlogs
watchdog_runs chainbets Watchdog-Durchläufe
watchdog_alerts chainbets Watchdog-Alerts
seed_updates chainbets VRF/Drand-Seed-Updates
bo_config chainbets Plattform-Konfiguration
chain_stats chainbets Chain-Statistiken & Maintenance
settlement_pipeline_runs chainbets Pipeline-Status
voting_rounds chainbets_charity Charity-Abstimmungsrunden
projects chainbets_charity Charity-Projekte
votes chainbets_charity Abstimmungen

Blockchain-Integration

  • Netzwerk: Arbitrum Sepolia (Testnet, konfigurierbar)
  • Zugriff: Read-Only (keine Transaktionssignierung)
  • RPC-Provider: Alchemy
  • Externe Dienste: Chainlink VRF, Drand (League of Entropy)
  • E-Mail: Resend.com (Re-Engagement)