Includes homelab deploy tooling, image position/zoom manifest persistence, and full trading/casino stack. Co-authored-by: Cursor <cursoragent@cursor.com>
81 lines
3.1 KiB
Markdown
81 lines
3.1 KiB
Markdown
# 🐂 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
|
||
```
|