# 🐂 PlayBull — Trading & Gamble (Spielgeld) Eine mobile-first Web-App, die **Live-Trading** mit echten Aktienkursen und ein **Casino** verbindet. Alles mit Spielgeld, alle Spieler teilen denselben Live-Markt. > ⚠️ Reines Spaßprojekt mit **Spielgeld**. Kein echtes Geld, kein echtes Glücksspiel. ## Features ### 📈 Trading (für alle sichtbar, Handel mit Login) - **Echte Startkurse** über die Finnhub-API (Aktien) + Live-Simulation - **Geteilter Live-Markt**: Kurse sind bei allen identisch und ticken jede Sekunde - **Long & Short**, Position-Netting, Live-P&L, Depot/Net-Worth - 14 Assets: Aktien (AAPL, TSLA, NVDA, …), Krypto/Meme (BTC, ETH, DOGE, BULL) - Live-Chart pro Asset (Canvas) ### 🎛️ Markt-Manipulation (Spaßmodus: jeder eingeloggte User) - **Pump 🚀 / Dump 📉**, Kurs hart **setzen**, **Halt/Resume**, **Reset** - Wirkt sofort für **alle** Spieler gleichzeitig (geteilter Live-Status) ### 🎰 Casino (Login erforderlich) - **🐔 Chicken Road** — Straße überqueren, Multiplikator steigt, rechtzeitig cashen (4 Schwierigkeiten) - **🃏 10×10 Karten-Deck** — 100 Felder, Bomben vermeiden, Multiplikator steigt pro sicherer Karte - **🚀 Crash** — server-autoritativ, raus bevor die Rakete crasht - **🎲 Dice** — Über/Unter mit einstellbarem Risiko - **🪙 Coinflip** — Kopf oder Zahl, 2× ### ⚙️ Einstellungen / Admin (Spaßmodus) - **Geld bearbeiten** bei sich selbst & anderen (hinzufügen / setzen, Quick-Buttons) - Markt-Kontrolle direkt aus den Einstellungen - Avatar wählen, Spielerliste ### 🏆 Social - Live-Aktivitäts-Feed (Trades, Wins, Manipulationen) als Ticker + Liste - Rangliste nach Net-Worth ## Tech-Stack - **Backend**: Node.js, Express, Socket.IO, eingebautes `node:sqlite` - **Auth**: JWT (httpOnly-Cookie) + bcrypt - **Frontend**: Vanilla JS (ES-Module), Canvas-Charts, mobile-first CSS - Keine Build-Tools nötig ## Start ```bash npm install npm start ``` Dann im Browser öffnen: **http://localhost:3000** (Handy: gleiche WLAN-IP, Port 3000). ## Konfiguration (`.env`) | Variable | Bedeutung | |---|---| | `PORT` | Server-Port (Default 3000) | | `JWT_SECRET` | Secret für Login-Tokens | | `FINNHUB_API_KEY` | API-Key für echte Aktienkurse | | `START_BALANCE` | Startguthaben neuer Spieler (Default 10000) | ## Verbindung Trading ↔ Casino Beide nutzen **denselben Spielgeld-Kontostand**. Gewinne aus dem Casino kannst du direkt im Trading einsetzen — und umgekehrt. Der erste registrierte User existiert gleichberechtigt; im Spaßmodus darf jeder eingeloggte Spieler den Markt manipulieren und Guthaben bearbeiten. ## Projektstruktur ``` server/ index.js Express + Socket.IO + Routen config.js .env-Loader db.js SQLite-Schema & Helper auth.js Register/Login/JWT market.js Finnhub + Live-Simulation + Manipulation trading.js Buy/Sell/Short, Portfolio, P&L games.js Chicken, Mines, Crash, Dice, Coinflip realtime.js Socket-Broadcast + Feed public/ index.html, css/styles.css, js/app.js ```