From 94b6cc3be92df904f27cea0da9b90adbdd8cfec5 Mon Sep 17 00:00:00 2001 From: Mike Date: Thu, 2 Jul 2026 08:31:36 +0200 Subject: [PATCH] Initial PlayBull release with Trilogy Hub integration. Includes homelab deploy tooling, image position/zoom manifest persistence, and full trading/casino stack. Co-authored-by: Cursor --- .env.example | 6 + .gitignore | 8 + README.md | 80 + deploy/caddy-trilogyhub.snippet | 21 + deploy/cloudflare-ddns-update.sh | 74 + deploy/cloudflared/config.yml | 26 + deploy/connect-trilogyhub.sh | 114 + deploy/duckdns-update.bat | 15 + deploy/duckdns-update.sh | 32 + deploy/env.homelab.example | 33 + deploy/finish-on-server.sh | 16 + deploy/fix-domain.sh | 135 ++ deploy/homelab-exec.ps1 | 33 + deploy/homelab-git-check.ps1 | 13 + deploy/homelab-lib.ps1 | 130 ++ deploy/homelab-safe-pull.sh | 11 + deploy/homelab.credentials.example | 13 + deploy/install-homelab.sh | 212 ++ deploy/nginx/bestewebsite-lan.conf | 21 + deploy/nginx/bestewebsite.conf | 35 + deploy/nginx/playbull.conf | 43 + deploy/nginx/trilogyhub.conf | 33 + deploy/push-homelab.ps1 | 139 ++ deploy/quick-start-homelab.sh | 28 + deploy/setup-all.bat | 4 + deploy/setup-all.ps1 | 11 + deploy/sync-user.sh | 32 + deploy/systemd/cloudflare-ddns-update.service | 12 + deploy/systemd/cloudflare-ddns-update.timer | 10 + deploy/systemd/cloudflared-playbull.service | 17 + deploy/systemd/duckdns-update.service | 12 + deploy/systemd/duckdns-update.timer | 11 + deploy/systemd/playbull.service | 18 + deploy/test-ports.ps1 | 5 + package-lock.json | 1939 +++++++++++++++++ package.json | 24 + public/app.js | 797 +++++++ public/css/styles.css | 496 +++++ public/image-editor.js | 190 ++ public/index.html | 880 ++++++++ public/js/app.js | 1225 +++++++++++ public/js/framed-image.js | 156 ++ public/js/image-editor.js | 198 ++ public/js/upload-helper.js | 72 + public/play.html | 98 + public/playbull.js | 460 ++++ public/uploads/manifest.json | 7 + public/uploads/page-home_Magic_Mike.jpg | Bin 0 -> 123197 bytes public/uploads/page-home_Nico_Gonzales.jpg | Bin 0 -> 118499 bytes public/uploads/page-home_Paris.jpg | Bin 0 -> 117421 bytes public/uploads/page-home_Team_Photo.jpg | Bin 0 -> 160652 bytes public/uploads/page-nico_Hero_Background.jpg | Bin 0 -> 161996 bytes server/auth.js | 70 + server/config.js | 40 + server/db.js | 208 ++ server/games.js | 247 +++ server/index.js | 399 ++++ server/market.js | 184 ++ server/realtime.js | 15 + server/trading.js | 98 + 60 files changed, 9206 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 README.md create mode 100644 deploy/caddy-trilogyhub.snippet create mode 100644 deploy/cloudflare-ddns-update.sh create mode 100644 deploy/cloudflared/config.yml create mode 100644 deploy/connect-trilogyhub.sh create mode 100644 deploy/duckdns-update.bat create mode 100644 deploy/duckdns-update.sh create mode 100644 deploy/env.homelab.example create mode 100644 deploy/finish-on-server.sh create mode 100644 deploy/fix-domain.sh create mode 100644 deploy/homelab-exec.ps1 create mode 100644 deploy/homelab-git-check.ps1 create mode 100644 deploy/homelab-lib.ps1 create mode 100644 deploy/homelab-safe-pull.sh create mode 100644 deploy/homelab.credentials.example create mode 100644 deploy/install-homelab.sh create mode 100644 deploy/nginx/bestewebsite-lan.conf create mode 100644 deploy/nginx/bestewebsite.conf create mode 100644 deploy/nginx/playbull.conf create mode 100644 deploy/nginx/trilogyhub.conf create mode 100644 deploy/push-homelab.ps1 create mode 100644 deploy/quick-start-homelab.sh create mode 100644 deploy/setup-all.bat create mode 100644 deploy/setup-all.ps1 create mode 100644 deploy/sync-user.sh create mode 100644 deploy/systemd/cloudflare-ddns-update.service create mode 100644 deploy/systemd/cloudflare-ddns-update.timer create mode 100644 deploy/systemd/cloudflared-playbull.service create mode 100644 deploy/systemd/duckdns-update.service create mode 100644 deploy/systemd/duckdns-update.timer create mode 100644 deploy/systemd/playbull.service create mode 100644 deploy/test-ports.ps1 create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/app.js create mode 100644 public/css/styles.css create mode 100644 public/image-editor.js create mode 100644 public/index.html create mode 100644 public/js/app.js create mode 100644 public/js/framed-image.js create mode 100644 public/js/image-editor.js create mode 100644 public/js/upload-helper.js create mode 100644 public/play.html create mode 100644 public/playbull.js create mode 100644 public/uploads/manifest.json create mode 100644 public/uploads/page-home_Magic_Mike.jpg create mode 100644 public/uploads/page-home_Nico_Gonzales.jpg create mode 100644 public/uploads/page-home_Paris.jpg create mode 100644 public/uploads/page-home_Team_Photo.jpg create mode 100644 public/uploads/page-nico_Hero_Background.jpg create mode 100644 server/auth.js create mode 100644 server/config.js create mode 100644 server/db.js create mode 100644 server/games.js create mode 100644 server/index.js create mode 100644 server/market.js create mode 100644 server/realtime.js create mode 100644 server/trading.js diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..66501e9 --- /dev/null +++ b/.env.example @@ -0,0 +1,6 @@ +# PlayBull — kopiere nach .env und fuelle aus +PORT=3080 +JWT_SECRET= +FINNHUB_API_KEY= +START_BALANCE=10000 +TRUST_PROXY=1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..09e986f --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +node_modules/ +data/ +*.log +.DS_Store +.cursor/ +.env +deploy/env.homelab +deploy/homelab.credentials diff --git a/README.md b/README.md new file mode 100644 index 0000000..539bed8 --- /dev/null +++ b/README.md @@ -0,0 +1,80 @@ +# 🐂 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 +``` diff --git a/deploy/caddy-trilogyhub.snippet b/deploy/caddy-trilogyhub.snippet new file mode 100644 index 0000000..ab36ec5 --- /dev/null +++ b/deploy/caddy-trilogyhub.snippet @@ -0,0 +1,21 @@ +# Trilogy Hub — Caddy-Block (Homelab: progress-caddy) +# Datei auf dem Server: /home/gizzler/pgs2/finalprogressharing/Caddyfile +# Nach Aenderung: docker exec progress-caddy caddy reload --config /etc/caddy/Caddyfile + +trilogyhub.de, www.trilogyhub.de { + encode gzip zstd + @ws { + header Connection *Upgrade* + header Upgrade websocket + } + reverse_proxy 192.168.178.49:3080 +} + +halmc.duckdns.org { + encode gzip zstd + @ws { + header Connection *Upgrade* + header Upgrade websocket + } + reverse_proxy 192.168.178.49:3080 +} diff --git a/deploy/cloudflare-ddns-update.sh b/deploy/cloudflare-ddns-update.sh new file mode 100644 index 0000000..ce5eccd --- /dev/null +++ b/deploy/cloudflare-ddns-update.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash +# Cloudflare Dynamic DNS — aktualisiert A/AAAA wenn sich die Fritz!Box-WAN-IP aendert. +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +ENV_FILE="${SCRIPT_DIR}/env.homelab" +STATE_FILE="${SCRIPT_DIR}/.cf-ddns-last-ip" + +[[ -f "${ENV_FILE}" ]] || { echo "cloudflare-ddns: ${ENV_FILE} fehlt" >&2; exit 1; } +# shellcheck source=/dev/null +source <(sed 's/\r$//' "${ENV_FILE}") + +: "${CLOUDFLARE_API_TOKEN:?CLOUDFLARE_API_TOKEN fehlt}" +: "${CLOUDFLARE_ZONE_ID:?CLOUDFLARE_ZONE_ID fehlt}" + +APP_DOMAIN="${APP_DOMAIN:-trilogyhub.de}" +DDNS_RECORD="${DDNS_RECORD_NAME:-home.${APP_DOMAIN}}" +DDNS_PROXIED="${DDNS_PROXIED:-true}" + +IPV4="$(curl -4 -fsS --max-time 15 https://api.ipify.org 2>/dev/null || true)" +IPV6="$(curl -6 -fsS --max-time 15 https://api64.ipify.org 2>/dev/null || true)" +[[ -n "${IPV4}" || -n "${IPV6}" ]] || { echo "cloudflare-ddns: keine IP" >&2; exit 1; } + +CURRENT="${IPV4}|${IPV6}" +LAST="$(cat "${STATE_FILE}" 2>/dev/null || true)" +if [[ "${CURRENT}" == "${LAST}" ]]; then + echo "$(date -Is) cloudflare-ddns ${DDNS_RECORD}: unveraendert v4=${IPV4:-none}" + exit 0 +fi + +export CF_API="https://api.cloudflare.com/client/v4" +export CF_ZONE="${CLOUDFLARE_ZONE_ID}" +export CF_TOKEN="${CLOUDFLARE_API_TOKEN}" +export CF_PROXIED="${DDNS_PROXIED}" + +upsert() { + local rtype="$1" ip="$2" + [[ -n "${ip}" ]] || return 0 + python3 - "${DDNS_RECORD}" "${rtype}" "${ip}" <<'PY' +import json, os, sys, urllib.request +name, rtype, ip = sys.argv[1:4] +api = os.environ["CF_API"] +zone = os.environ["CF_ZONE"] +token = os.environ["CF_TOKEN"] +proxied = os.environ.get("CF_PROXIED", "true").lower() == "true" +headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"} +list_url = f"{api}/zones/{zone}/dns_records?type={rtype}&name={name}" +with urllib.request.urlopen(urllib.request.Request(list_url, headers=headers), timeout=20) as r: + data = json.load(r) +if not data.get("success"): + raise SystemExit(f"list failed: {data}") +body = json.dumps({"type": rtype, "name": name, "content": ip, "ttl": 120, "proxied": proxied}).encode() +recs = data.get("result", []) +if recs: + url = f"{api}/zones/{zone}/dns_records/{recs[0]['id']}" + req = urllib.request.Request(url, data=body, headers=headers, method="PUT") + act = "aktualisiert" +else: + url = f"{api}/zones/{zone}/dns_records" + req = urllib.request.Request(url, data=body, headers=headers, method="POST") + act = "angelegt" +with urllib.request.urlopen(req, timeout=20) as r: + out = json.load(r) +if not out.get("success"): + raise SystemExit(f"write failed: {out}") +print(f"{rtype} {name} -> {ip} ({act})") +PY +} + +upsert A "${IPV4}" +upsert AAAA "${IPV6}" +echo "${CURRENT}" > "${STATE_FILE}" +chmod 600 "${STATE_FILE}" 2>/dev/null || true +echo "$(date -Is) cloudflare-ddns fertig" diff --git a/deploy/cloudflared/config.yml b/deploy/cloudflared/config.yml new file mode 100644 index 0000000..fb7820c --- /dev/null +++ b/deploy/cloudflared/config.yml @@ -0,0 +1,26 @@ +# Cloudflare Tunnel — HTTPS am Edge, kein Port-Forwarding noetig. +# Token wird per systemd EnvironmentFile gesetzt (deploy/env.homelab). +# +# Zero Trust Dashboard: +# Networks → Tunnels → Create → Cloudflared +# Public Hostname: trilogyhub.de → http://127.0.0.1:3080 +# Tunnel-Token in CLOUDFLARE_TUNNEL_TOKEN eintragen +# +# Hinweis: Hostnames im Zero-Trust-Dashboard eintragen (Token-Install). +# Cloudflare-DDNS meldet WAN-IP fuer home.trilogyhub.de (optional). + +tunnel: playbull +credentials-file: /etc/cloudflared/playbull.json + +ingress: + - hostname: trilogyhub.de + service: http://127.0.0.1:3080 + originRequest: + noTLSVerify: true + httpHostHeader: trilogyhub.de + - hostname: www.trilogyhub.de + service: http://127.0.0.1:3080 + originRequest: + noTLSVerify: true + httpHostHeader: www.trilogyhub.de + - service: http_status:404 diff --git a/deploy/connect-trilogyhub.sh b/deploy/connect-trilogyhub.sh new file mode 100644 index 0000000..8f5bf9f --- /dev/null +++ b/deploy/connect-trilogyhub.sh @@ -0,0 +1,114 @@ +#!/usr/bin/env bash +# trilogyhub.de mit Homelab-Website verbinden (Nginx + optional Certbot + Tunnel-Hinweis) +set -euo pipefail + +DOMAIN="${1:-trilogyhub.de}" +PORT="${APP_PORT:-3080}" + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +APP_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" +ENV_FILE="${APP_DIR}/deploy/env.homelab" + +if [[ "${EUID}" -ne 0 ]]; then + echo "sudo bash deploy/connect-trilogyhub.sh" >&2 + exit 1 +fi + +[[ -f "${ENV_FILE}" ]] || { echo "${ENV_FILE} fehlt" >&2; exit 1; } +sed -i 's/\r$//' "${ENV_FILE}" 2>/dev/null || true +# shellcheck source=/dev/null +source "${ENV_FILE}" + +PORT="${APP_PORT:-3080}" +DOMAIN="${APP_DOMAIN:-${DOMAIN}}" + +echo "==> Verbinde ${DOMAIN} → 127.0.0.1:${PORT}" + +# env aktualisieren +grep -q '^APP_DOMAIN=' "${ENV_FILE}" && sed -i "s|^APP_DOMAIN=.*|APP_DOMAIN=${DOMAIN}|" "${ENV_FILE}" || echo "APP_DOMAIN=${DOMAIN}" >> "${ENV_FILE}" + +# LAN (Fritz-Netz) +sed -i 's/\r$//' "${APP_DIR}/deploy/nginx/bestewebsite-lan.conf" 2>/dev/null || true +cp "${APP_DIR}/deploy/nginx/trilogyhub.conf" /etc/nginx/sites-available/trilogyhub 2>/dev/null || \ +cp "${APP_DIR}/deploy/nginx/bestewebsite.conf" /etc/nginx/sites-available/trilogyhub + +# HTTP-only zuerst (fuer Certbot) +cat > /etc/nginx/sites-available/trilogyhub < /etc/nginx/sites-available/bestewebsite-legacy <<'LEG' +server { + listen 80; + listen [::]:80; + server_name halmc.duckdns.org pimmelschwanz.duckdns.org; + return 301 https://trilogyhub.de$request_uri; +} +LEG + ln -sf /etc/nginx/sites-available/bestewebsite-legacy /etc/nginx/sites-enabled/bestewebsite-legacy 2>/dev/null || true +fi + +nginx -t +systemctl reload nginx + +# App muss laufen +if ! curl -sf "http://127.0.0.1:${PORT}/" >/dev/null; then + echo "WARNUNG: nichts auf Port ${PORT} — playbull.service starten" >&2 + systemctl restart playbull 2>/dev/null || true +fi + +# Certbot wenn DNS auf diesen Server zeigt +if command -v certbot >/dev/null 2>&1; then + echo "==> Versuche Let's Encrypt fuer ${DOMAIN}..." + if certbot --nginx -d "${DOMAIN}" -d "www.${DOMAIN}" \ + --non-interactive --agree-tos --redirect \ + -m "admin@${DOMAIN}" 2>/dev/null; then + echo " SSL OK" + else + echo " SSL noch nicht moeglich (DNS/Cloudflare noch nicht aktiv) — HTTP auf Port 80 ist vorbereitet" + fi +fi + +# Cloudflare Tunnel +if [[ -n "${CLOUDFLARE_TUNNEL_TOKEN:-}" ]]; then + echo "==> Cloudflare Tunnel" + cloudflared service uninstall 2>/dev/null || true + cloudflared service install "${CLOUDFLARE_TUNNEL_TOKEN}" + systemctl enable cloudflared + systemctl restart cloudflared + echo " Im Cloudflare-Dashboard Public Hostname setzen:" + echo " ${DOMAIN} + www.${DOMAIN} → http://127.0.0.1:${PORT}" +fi + +nginx -t && systemctl reload nginx + +echo "" +echo "=== Fertig ===" +echo "App: http://127.0.0.1:${PORT}/" +echo "LAN: http://192.168.178.49/" +echo "Domain: http://${DOMAIN}/ (sobald DNS auf Homelab/Cloudflare zeigt)" +echo "HTTPS: https://${DOMAIN}/ (nach Cloudflare Active + Tunnel ODER Certbot)" diff --git a/deploy/duckdns-update.bat b/deploy/duckdns-update.bat new file mode 100644 index 0000000..ef5c461 --- /dev/null +++ b/deploy/duckdns-update.bat @@ -0,0 +1,15 @@ +@echo off +REM DuckDNS IP-Updater fuer Windows (optional, falls kein Linux-Homelab-Timer) +setlocal +cd /d "%~dp0.." +if not exist "deploy\env.homelab" ( + echo deploy\env.homelab fehlt + exit /b 1 +) +for /f "usebackq tokens=1,2 delims==" %%a in ("deploy\env.homelab") do ( + if "%%a"=="DUCKDNS_TOKEN" set DUCKDNS_TOKEN=%%b + if "%%a"=="DUCKDNS_DOMAIN" set DUCKDNS_DOMAIN=%%b +) +for /f "delims=" %%i in ('powershell -NoProfile -Command "(Invoke-WebRequest -Uri 'https://api.ipify.org' -UseBasicParsing).Content"') do set IPV4=%%i +for /f "tokens=1 delims=." %%s in ("%DUCKDNS_DOMAIN%") do set SUB=%%s +powershell -NoProfile -Command "$r=(Invoke-WebRequest -Uri 'https://www.duckdns.org/update?domains=%SUB%&token=%DUCKDNS_TOKEN%&verbose=true&ip=%IPV4%' -UseBasicParsing).Content; Write-Host (Get-Date -Format o) 'duckdns' '%SUB%:' $r 'ip=' '%IPV4%'" diff --git a/deploy/duckdns-update.sh b/deploy/duckdns-update.sh new file mode 100644 index 0000000..ec44896 --- /dev/null +++ b/deploy/duckdns-update.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# DuckDNS IP-Updater — holt oeffentliche IPv4/IPv6 und meldet sie an DuckDNS. +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# shellcheck source=/dev/null +source "${SCRIPT_DIR}/env.homelab" + +: "${DUCKDNS_TOKEN:?DUCKDNS_TOKEN fehlt in deploy/env.homelab}" +: "${DUCKDNS_DOMAIN:?DUCKDNS_DOMAIN fehlt in deploy/env.homelab}" + +SUBDOMAIN="${DUCKDNS_DOMAIN%%.*}" + +IPV4="$(curl -4 -fsS --max-time 15 https://api.ipify.org 2>/dev/null || true)" +IPV6="$(curl -6 -fsS --max-time 15 https://api64.ipify.org 2>/dev/null || true)" + +if [[ -z "${IPV4}" && -z "${IPV6}" ]]; then + echo "duckdns-update: keine oeffentliche IP ermittelbar" >&2 + exit 1 +fi + +URL="https://www.duckdns.org/update?domains=${SUBDOMAIN}&token=${DUCKDNS_TOKEN}&verbose=true" +[[ -n "${IPV4}" ]] && URL+="&ip=${IPV4}" +[[ -n "${IPV6}" ]] && URL+="&ipv6=${IPV6}" + +RESP="$(curl -fsS --max-time 20 "${URL}")" +echo "$(date -Is) duckdns ${SUBDOMAIN}: ${RESP} (v4=${IPV4:-none} v6=${IPV6:-none})" + +case "${RESP}" in + OK*) exit 0 ;; + *) exit 1 ;; +esac diff --git a/deploy/env.homelab.example b/deploy/env.homelab.example new file mode 100644 index 0000000..47a0ffb --- /dev/null +++ b/deploy/env.homelab.example @@ -0,0 +1,33 @@ +# Homelab-Konfiguration (deploy/env.homelab auf dem Server — NICHT committen) +HOMELAB_SSH=gizzler@192.168.178.49 + +# === Hauptdomain (Strato, DNS bei Cloudflare) === +APP_DOMAIN=trilogyhub.de + +# Cloudflare Tunnel (Zero Trust → Networks → Tunnels → dein Tunnel → Install command / Token) +# Public Hostnames im Dashboard eintragen: +# trilogyhub.de → http://127.0.0.1:3080 +# www.trilogyhub.de → http://127.0.0.1:3080 +CLOUDFLARE_TUNNEL_TOKEN= + +# Cloudflare Dynamic DNS — meldet Fritz!Box-WAN-IP an Cloudflare (alle 5 Min) +# API Token: My Profile → API Tokens → Create → Zone DNS Edit (nur trilogyhub.de) +# Zone ID: Cloudflare Dashboard → trilogyhub.de → Overview → rechts „Zone ID“ +CLOUDFLARE_API_TOKEN= +CLOUDFLARE_ZONE_ID= +# Welcher DNS-Name bekommt die aktuelle IP? (home.* empfohlen wenn Hauptdomain per Tunnel laeuft) +DDNS_RECORD_NAME=home.trilogyhub.de +DDNS_PROXIED=true + +# Legacy DuckDNS (optional, kann leer bleiben) +DUCKDNS_TOKEN= +DUCKDNS_DOMAIN= + +# PlayBull +APP_PORT=3080 +APP_DIR=/home/gizzler/bestewebsite/bestewebsite +APP_USER=gizzler + +# App-Secrets +JWT_SECRET=bitte-aendern +FINNHUB_API_KEY= diff --git a/deploy/finish-on-server.sh b/deploy/finish-on-server.sh new file mode 100644 index 0000000..328155b --- /dev/null +++ b/deploy/finish-on-server.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +# Auf dem Homelab ausfuehren (nach push-homelab.ps1), wenn der Installer per SSH abbrach: +# cd ~/bestewebsite/bestewebsite && bash deploy/finish-on-server.sh +set -euo pipefail + +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$DIR" +chmod +x deploy/install-homelab.sh deploy/duckdns-update.sh 2>/dev/null || true + +echo "==> PlayBull Installer (braucht sudo-Passwort auf dem Server)" +echo " Ziel: ${APP_DIR} (playbull.service)" +sudo bash deploy/install-homelab.sh + +echo "" +echo "Pruefen:" +systemctl status playbull --no-pager || true diff --git a/deploy/fix-domain.sh b/deploy/fix-domain.sh new file mode 100644 index 0000000..0c2f063 --- /dev/null +++ b/deploy/fix-domain.sh @@ -0,0 +1,135 @@ +#!/usr/bin/env bash +# Domain-Migration auf dem Homelab (DuckDNS + Nginx + Certbot) +# Usage: sudo bash deploy/fix-domain.sh [neue-domain] +set -euo pipefail + +NEW_DOMAIN="${1:-trilogyhub.de}" +OLD_DOMAIN="${2:-halmc.duckdns.org}" + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +APP_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" + +if [[ "${EUID}" -ne 0 ]]; then + echo "Bitte als root: sudo bash deploy/fix-domain.sh" >&2 + exit 1 +fi + +ENV_FILE="${APP_DIR}/deploy/env.homelab" +if [[ ! -f "${ENV_FILE}" ]]; then + echo "deploy/env.homelab fehlt" >&2 + exit 1 +fi + +echo "==> Domain: ${OLD_DOMAIN} -> ${NEW_DOMAIN}" + +# env.homelab aktualisieren (Token behalten, CRLF entfernen) +sed -i 's/\r$//' "${ENV_FILE}" +if grep -q '^APP_DOMAIN=' "${ENV_FILE}"; then + sed -i "s|^APP_DOMAIN=.*|APP_DOMAIN=${NEW_DOMAIN}|" "${ENV_FILE}" +else + echo "APP_DOMAIN=${NEW_DOMAIN}" >> "${ENV_FILE}" +fi +if grep -q '^DUCKDNS_DOMAIN=' "${ENV_FILE}"; then + sed -i "s|^DUCKDNS_DOMAIN=.*|DUCKDNS_DOMAIN=${NEW_DOMAIN}|" "${ENV_FILE}" +else + echo "DUCKDNS_DOMAIN=${NEW_DOMAIN}" >> "${ENV_FILE}" +fi +chmod 600 "${ENV_FILE}" + +# DuckDNS IP aktualisieren +if grep -q '^DUCKDNS_TOKEN=.\+' "${ENV_FILE}" 2>/dev/null; then + echo "==> DuckDNS Update" + bash "${APP_DIR}/deploy/duckdns-update.sh" || echo " DuckDNS-Update fehlgeschlagen (manuell pruefen)" +else + echo " DuckDNS-Token leer — Update uebersprungen" +fi + +# Nginx LAN +echo "==> Nginx LAN" +sed -i 's/\r$//' "${APP_DIR}/deploy/nginx/bestewebsite-lan.conf" "${APP_DIR}/deploy/nginx/bestewebsite.conf" 2>/dev/null || true +cp "${APP_DIR}/deploy/nginx/bestewebsite-lan.conf" /etc/nginx/sites-available/bestewebsite-lan +ln -sf /etc/nginx/sites-available/bestewebsite-lan /etc/nginx/sites-enabled/00-bestewebsite-lan + +# Nginx öffentlich — zuerst HTTP-only für Certbot +echo "==> Nginx HTTP (Certbot-Vorbereitung)" +cat > /etc/nginx/sites-available/bestewebsite < Certbot fuer ${NEW_DOMAIN}" +CERTBOT_EMAIL="admin@${NEW_DOMAIN}" +if certbot certificates 2>/dev/null | grep -q "${NEW_DOMAIN}"; then + certbot renew --nginx --quiet || true +else + certbot --nginx -d "${NEW_DOMAIN}" --non-interactive --agree-tos --redirect -m "${CERTBOT_EMAIL}" || { + echo "Certbot fehlgeschlagen — pruefe ob ${NEW_DOMAIN} auf diese Maschine zeigt (Port 80)." >&2 + exit 1 + } +fi + +# Finales Nginx-Template — Certbot-Zertifikat einbinden (kein erneutes certbot install) +echo "==> Nginx HTTPS finalisieren" +cp "${APP_DIR}/deploy/nginx/bestewebsite.conf" /etc/nginx/sites-available/bestewebsite +if [[ ! -f "/etc/letsencrypt/live/${NEW_DOMAIN}/fullchain.pem" ]]; then + echo "Zertifikat fehlt fuer ${NEW_DOMAIN}" >&2 + exit 1 +fi +ln -sf /etc/nginx/sites-available/bestewebsite /etc/nginx/sites-enabled/bestewebsite +nginx -t +systemctl reload nginx + +# Alte Domain optional auf neue weiterleiten (falls noch DNS zeigt) +if [[ "${OLD_DOMAIN}" != "${NEW_DOMAIN}" ]]; then + cat > /etc/nginx/sites-available/bestewebsite-legacy < ${NEW_DOMAIN} aktiv" + else + rm -f /etc/nginx/sites-enabled/bestewebsite-legacy + fi +fi + +systemctl restart playbull || true + +echo "" +echo "=== Fertig ===" +echo "HTTPS: https://${NEW_DOMAIN}" +echo "LAN: http://192.168.178.49" +echo "Test: curl -sfI https://${NEW_DOMAIN}/ | head -3" diff --git a/deploy/homelab-exec.ps1 b/deploy/homelab-exec.ps1 new file mode 100644 index 0000000..65bc22a --- /dev/null +++ b/deploy/homelab-exec.ps1 @@ -0,0 +1,33 @@ +#Requires -Version 5.1 +<# +.SYNOPSIS + Fuehrt einen Befehl auf dem Homelab aus (ohne interaktives SSH-Passwort). + +.USAGE + .\deploy\homelab-exec.ps1 "systemctl status playbull --no-pager" + .\deploy\homelab-exec.ps1 -Sudo "bash deploy/install-homelab.sh" +#> +param( + [Parameter(Position = 0, Mandatory = $true)] + [string]$Command, + + [switch]$Sudo, + [string]$WorkDir = "", + [int]$TimeoutSeconds = 120 +) + +$ErrorActionPreference = "Stop" +. "$PSScriptRoot/homelab-lib.ps1" + +$config = Get-HomelabConfig +$result = Invoke-HomelabRemote -Config $config -Command $Command -Sudo:$Sudo -WorkDir $WorkDir -TimeoutSeconds $TimeoutSeconds + +if ($result.Output) { + $result.Output | ForEach-Object { Write-Output $_ } +} +if ($result.Error) { + $result.Error | ForEach-Object { [Console]::Error.WriteLine($_) } +} +if ($result.ExitStatus -ne 0) { + exit $result.ExitStatus +} diff --git a/deploy/homelab-git-check.ps1 b/deploy/homelab-git-check.ps1 new file mode 100644 index 0000000..860cffe --- /dev/null +++ b/deploy/homelab-git-check.ps1 @@ -0,0 +1,13 @@ +#Requires -Version 5.1 +$ErrorActionPreference = "Stop" +. "$PSScriptRoot/homelab-lib.ps1" +$config = Get-HomelabConfig +$cmds = @( + "git status -sb", + "git diff --stat | head -30", + "curl -s http://127.0.0.1:3080/api/images | head -c 200" +) +foreach ($c in $cmds) { + Write-Host "`n>> $c" -ForegroundColor Cyan + & "$PSScriptRoot/homelab-exec.ps1" $c +} diff --git a/deploy/homelab-lib.ps1 b/deploy/homelab-lib.ps1 new file mode 100644 index 0000000..5548cc2 --- /dev/null +++ b/deploy/homelab-lib.ps1 @@ -0,0 +1,130 @@ +# Gemeinsame Homelab-Hilfen (credentials + Posh-SSH) +function Read-HomelabKeyValueFile { + param([string]$Path) + $map = @{} + if (-not (Test-Path $Path)) { return $map } + Get-Content $Path | ForEach-Object { + $line = $_.Trim() + if ($line -eq "" -or $line.StartsWith("#")) { return } + if ($line -match '^([^=]+)=(.*)$') { + $map[$Matches[1].Trim()] = $Matches[2].Trim() + } + } + return $map +} + +function Ensure-PoshSshModule { + if (-not (Get-Module -ListAvailable -Name Posh-SSH)) { + Install-Module -Name Posh-SSH -Scope CurrentUser -Force -AllowClobber + } + Import-Module Posh-SSH -ErrorAction Stop +} + +function Get-HomelabConfig { + $deployDir = $PSScriptRoot + $credFile = Join-Path $deployDir "homelab.credentials" + if (-not (Test-Path $credFile)) { + throw "deploy/homelab.credentials fehlt." + } + + $cred = Read-HomelabKeyValueFile $credFile + $envFile = Read-HomelabKeyValueFile (Join-Path $deployDir "env.homelab") + + $hostName = $cred["HOMELAB_HOST"] + $user = $cred["HOMELAB_USER"] + $password = $cred["HOMELAB_PASSWORD"] + $sudoPassword = if ($cred["HOMELAB_SUDO_PASSWORD"]) { $cred["HOMELAB_SUDO_PASSWORD"] } else { $password } + + if ([string]::IsNullOrWhiteSpace($hostName)) { $hostName = "192.168.178.49" } + if ([string]::IsNullOrWhiteSpace($user)) { $user = "gizzler" } + if ([string]::IsNullOrWhiteSpace($password)) { + throw "HOMELAB_PASSWORD in deploy/homelab.credentials ist leer." + } + + $appDir = if ($cred["HOMELAB_APP_DIR"]) { $cred["HOMELAB_APP_DIR"] } + elseif ($envFile["APP_DIR"]) { $envFile["APP_DIR"] } + else { "/home/gizzler/bestewebsite/bestewebsite" } + + $sec = ConvertTo-SecureString $password -AsPlainText -Force + $psCred = New-Object System.Management.Automation.PSCredential ($user, $sec) + + return [PSCustomObject]@{ + HostName = $hostName + User = $user + Password = $password + SudoPassword = $sudoPassword + AppDir = $appDir + Credential = $psCred + SshTarget = "${user}@${hostName}" + } +} + +function Resolve-HomelabIPv4 { + param([string]$HostName) + if ($HostName -match '^\d+\.\d+\.\d+\.\d+$') { return $HostName } + try { + $v4 = [System.Net.Dns]::GetHostAddresses($HostName) | + Where-Object { $_.AddressFamily -eq [System.Net.Sockets.AddressFamily]::InterNetwork } | + Select-Object -First 1 + if ($v4) { return $v4.ToString() } + } catch { } + return $HostName +} + +function New-HomelabSession { + param($Config) + Ensure-PoshSshModule + $target = Resolve-HomelabIPv4 $Config.HostName + $session = New-SSHSession -ComputerName $target -Credential $Config.Credential -AcceptKey -ConnectionTimeout 30 + if (-not $session) { throw "SSH-Verbindung zu $($Config.User)@${target} fehlgeschlagen." } + return $session +} + +function Invoke-HomelabRemote { + param( + $Config, + [string]$Command, + [switch]$Sudo, + [string]$WorkDir = "", + [int]$TimeoutSeconds = 120 + ) + if ([string]::IsNullOrWhiteSpace($WorkDir)) { $WorkDir = $Config.AppDir } + + $remoteCmd = $Command + if ($Sudo) { + $inner = if ($WorkDir) { "cd '$WorkDir' && $Command" } else { $Command } + $escaped = $inner.Replace("'", "'\''") + $remoteCmd = "echo '$($Config.SudoPassword)' | sudo -S bash -lc '$escaped'" + } elseif ($WorkDir) { + $remoteCmd = "cd '$WorkDir' && $Command" + } + + $session = New-HomelabSession $Config + try { + $result = Invoke-SSHCommand -SessionId $session.SessionId -Command $remoteCmd -TimeOut $TimeoutSeconds + return $result + } + finally { + Remove-SSHSession -SessionId $session.SessionId | Out-Null + } +} + +function Send-HomelabPath { + param( + $Config, + [string]$LocalPath, + [string]$RemoteDir + ) + Ensure-PoshSshModule + $target = Resolve-HomelabIPv4 $Config.HostName + $remoteDir = ($RemoteDir.TrimEnd('/') + '/') + + $sftp = New-SFTPSession -ComputerName $target -Credential $Config.Credential -AcceptKey + if (-not $sftp) { throw "SFTP-Verbindung zu ${target} fehlgeschlagen." } + try { + Set-SFTPItem -SessionId $sftp.SessionId -Path $LocalPath -Destination $remoteDir -Force + } + finally { + Remove-SFTPSession -SessionId $sftp.SessionId | Out-Null + } +} diff --git a/deploy/homelab-safe-pull.sh b/deploy/homelab-safe-pull.sh new file mode 100644 index 0000000..a1fb437 --- /dev/null +++ b/deploy/homelab-safe-pull.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# Auf dem Homelab: Trilogy pullen, PlayBull-Overlay sichern. +set -euo pipefail +cd "$(dirname "$0")/.." +git stash push -u -m "playbull-vor-trilogy-pull-$(date +%Y%m%d-%H%M)" -- \ + . ':(exclude)node_modules' ':(exclude)node_modules/**' \ + ':(exclude)data' ':(exclude)data/**' \ + ':(exclude)playbull-deploy.tgz' ':(exclude)deploy/env.homelab' \ + ':(exclude)deploy/homelab.credentials' ':(exclude).env' || true +git pull origin main +git status -sb diff --git a/deploy/homelab.credentials.example b/deploy/homelab.credentials.example new file mode 100644 index 0000000..c0920df --- /dev/null +++ b/deploy/homelab.credentials.example @@ -0,0 +1,13 @@ +# Lokale Homelab-Zugangsdaten (NICHT committen) +# Kopieren nach: deploy/homelab.credentials +# Ziel auf dem Server: ~/bestewebsite/bestewebsite + +HOMELAB_HOST=mikeshomelab +HOMELAB_USER=gizzler +HOMELAB_PASSWORD=dein-ssh-passwort + +# Optional — falls sudo ein anderes Passwort braucht (sonst = HOMELAB_PASSWORD) +# HOMELAB_SUDO_PASSWORD= + +# Optional — Arbeitsverzeichnis auf dem Server (Standard aus env.homelab) +# HOMELAB_APP_DIR=/home/gizzler/bestewebsite/bestewebsite diff --git a/deploy/install-homelab.sh b/deploy/install-homelab.sh new file mode 100644 index 0000000..727e46d --- /dev/null +++ b/deploy/install-homelab.sh @@ -0,0 +1,212 @@ +#!/usr/bin/env bash +# PlayBull Homelab-Installer — Ziel: ~/bestewebsite/bestewebsite +# DuckDNS + playbull.service + Cloudflare Tunnel (cloudflared service install) +set -euo pipefail + +if [[ "${EUID}" -ne 0 ]]; then + echo "Bitte als root ausfuehren: sudo bash deploy/install-homelab.sh" >&2 + exit 1 +fi + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" + +if [[ ! -f "${SCRIPT_DIR}/env.homelab" ]]; then + cp "${SCRIPT_DIR}/env.homelab.example" "${SCRIPT_DIR}/env.homelab" + echo "deploy/env.homelab erstellt — Token eintragen und erneut starten." >&2 + exit 1 +fi + +# shellcheck source=/dev/null +source <(sed 's/\r$//' "${SCRIPT_DIR}/env.homelab") + +APP_PORT="${APP_PORT:-3080}" +APP_DIR="${APP_DIR:-/home/gizzler/bestewebsite/bestewebsite}" +APP_DIR="${APP_DIR//$'\r'/}" +APP_USER="${APP_USER:-gizzler}" +APP_USER="${APP_USER//$'\r'/}" +DUCKDNS_DOMAIN="${DUCKDNS_DOMAIN//$'\r'/}" +DUCKDNS_TOKEN="${DUCKDNS_TOKEN//$'\r'/}" +APP_DOMAIN="${APP_DOMAIN:-trilogyhub.de}" +APP_DOMAIN="${APP_DOMAIN//$'\r'/}" +CLOUDFLARE_API_TOKEN="${CLOUDFLARE_API_TOKEN//$'\r'/}" +CLOUDFLARE_ZONE_ID="${CLOUDFLARE_ZONE_ID//$'\r'/}" +CLOUDFLARE_TUNNEL_TOKEN="${CLOUDFLARE_TUNNEL_TOKEN//$'\r'/}" +JWT_SECRET="${JWT_SECRET//$'\r'/}" +FINNHUB_API_KEY="${FINNHUB_API_KEY//$'\r'/}" + +echo "==> PlayBull / Trilogy Hub Homelab Setup" +echo " Domain: ${APP_DOMAIN}" +echo " Port: ${APP_PORT}" +echo " Pfad: ${APP_DIR}" +echo "" + +install_unit() { + local src="$1" dest="$2" + sed -e "s|__APP_DIR__|${APP_DIR}|g" \ + -e "s|__APP_USER__|${APP_USER}|g" \ + "${src}" > "${dest}" +} + +need_pkg() { command -v "$1" >/dev/null 2>&1; } + +if [[ "${SKIP_APT:-0}" != "1" ]] && command -v apt-get >/dev/null 2>&1; then + echo "==> Paketlisten aktualisieren..." + apt-get update -qq + PKGS=(curl ca-certificates rsync build-essential libvips-dev) + MISSING=() + for p in "${PKGS[@]}"; do need_pkg "$p" || MISSING+=("$p"); done + if ((${#MISSING[@]})); then + apt-get install -y "${MISSING[@]}" + fi +elif [[ "${SKIP_APT:-0}" != "1" ]] && command -v dnf >/dev/null 2>&1; then + dnf install -y curl ca-certificates rsync gcc-c++ make vips-devel +fi + +if ! command -v cloudflared >/dev/null 2>&1; then + echo "==> cloudflared installieren" + ARCH="$(uname -m)" + case "${ARCH}" in + x86_64) CF_ARCH=amd64 ;; + aarch64|arm64) CF_ARCH=arm64 ;; + *) echo "Unsupported arch: ${ARCH}" >&2; exit 1 ;; + esac + curl -fsSL "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-${CF_ARCH}" \ + -o /usr/local/bin/cloudflared + chmod +x /usr/local/bin/cloudflared + ln -sf /usr/local/bin/cloudflared /usr/bin/cloudflared +fi + +if ! command -v node >/dev/null 2>&1 || [[ "$(node -p "process.versions.node.split('.')[0]")" -lt 24 ]]; then + echo "==> Node.js 24 installieren (NodeSource)" + if command -v apt-get >/dev/null 2>&1; then + curl -fsSL https://deb.nodesource.com/setup_24.x | bash - + apt-get install -y nodejs + else + dnf install -y nodejs + fi +fi + +mkdir -p "${APP_DIR}" "${APP_DIR}/data" "${APP_DIR}/public/uploads" +if [[ "${REPO_ROOT}" != "${APP_DIR}" ]]; then + echo "==> Dateien nach ${APP_DIR} synchronisieren" + rsync -a --delete \ + --exclude node_modules \ + --exclude data \ + --exclude .git \ + --exclude server.js \ + --exclude server.py \ + --exclude start.bat \ + "${REPO_ROOT}/" "${APP_DIR}/" +fi + +chown -R "${APP_USER}:${APP_USER}" "${APP_DIR}" 2>/dev/null || true +chmod +x "${APP_DIR}/deploy/duckdns-update.sh" \ + "${APP_DIR}/deploy/cloudflare-ddns-update.sh" \ + "${APP_DIR}/deploy/finish-on-server.sh" \ + "${APP_DIR}/deploy/sync-user.sh" 2>/dev/null || true + +# ---- .env (nur ergaenzen, nicht ueberschreiben) ---- +ENV_FILE="${APP_DIR}/.env" +touch "${ENV_FILE}" +grep -q '^PORT=' "${ENV_FILE}" 2>/dev/null \ + && sed -i "s/^PORT=.*/PORT=${APP_PORT}/" "${ENV_FILE}" \ + || echo "PORT=${APP_PORT}" >> "${ENV_FILE}" +grep -q '^TRUST_PROXY=' "${ENV_FILE}" 2>/dev/null || echo "TRUST_PROXY=1" >> "${ENV_FILE}" +grep -q '^START_BALANCE=' "${ENV_FILE}" 2>/dev/null || echo "START_BALANCE=10000" >> "${ENV_FILE}" +grep -q '^JWT_SECRET=' "${ENV_FILE}" 2>/dev/null || { [[ -n "${JWT_SECRET:-}" ]] && echo "JWT_SECRET=${JWT_SECRET}" >> "${ENV_FILE}"; } +grep -q '^FINNHUB_API_KEY=' "${ENV_FILE}" 2>/dev/null || { [[ -n "${FINNHUB_API_KEY:-}" ]] && echo "FINNHUB_API_KEY=${FINNHUB_API_KEY}" >> "${ENV_FILE}"; } + +if [[ "${APP_USER}" == "root" ]]; then + bash -c "cd '${APP_DIR}' && npm install --omit=dev" +else + sudo -u "${APP_USER}" bash -c "cd '${APP_DIR}' && npm install --omit=dev" +fi + +# ---- Alten bestewebsite-Service abloesen ---- +if systemctl is-active --quiet bestewebsite.service 2>/dev/null; then + echo "==> bestewebsite.service stoppen (Migration zu playbull)" + systemctl stop bestewebsite.service +fi +systemctl disable bestewebsite.service 2>/dev/null || true + +# ---- Cloudflare Tunnel (wie bestewebsite: cloudflared service install) ---- +if [[ -n "${CLOUDFLARE_TUNNEL_TOKEN:-}" ]]; then + echo "==> Cloudflare Tunnel" + systemctl stop cloudflared-playbull.service 2>/dev/null || true + systemctl disable cloudflared-playbull.service 2>/dev/null || true + cloudflared service uninstall 2>/dev/null || true + cloudflared service install "${CLOUDFLARE_TUNNEL_TOKEN}" + systemctl enable cloudflared + systemctl restart cloudflared + echo " cloudflared gestartet." +else + echo "" + echo ">>> CLOUDFLARE_TUNNEL_TOKEN fehlt in deploy/env.homelab" + echo " Zero Trust → Tunnel → Public Hostname: ${APP_DOMAIN} -> http://127.0.0.1:${APP_PORT}" + echo "" +fi + +# ---- Cloudflare Dynamic DNS (ersetzt DuckDNS) ---- +echo "==> Cloudflare DDNS Timer" +install_unit "${APP_DIR}/deploy/systemd/cloudflare-ddns-update.service" /etc/systemd/system/cloudflare-ddns-update.service +cp "${APP_DIR}/deploy/systemd/cloudflare-ddns-update.timer" /etc/systemd/system/ +chmod 600 "${APP_DIR}/deploy/env.homelab" +if [[ -n "${CLOUDFLARE_API_TOKEN:-}" && -n "${CLOUDFLARE_ZONE_ID:-}" ]]; then + "${APP_DIR}/deploy/cloudflare-ddns-update.sh" || echo " Cloudflare-DDNS fehlgeschlagen (API/Zone pruefen)" +else + echo " Cloudflare-DDNS uebersprungen (CLOUDFLARE_API_TOKEN oder ZONE_ID leer)" +fi + +# ---- DuckDNS (legacy, optional) ---- +if [[ -n "${DUCKDNS_TOKEN:-}" ]]; then + echo "==> DuckDNS (legacy)" + install_unit "${APP_DIR}/deploy/systemd/duckdns-update.service" /etc/systemd/system/duckdns-update.service + cp "${APP_DIR}/deploy/systemd/duckdns-update.timer" /etc/systemd/system/ + "${APP_DIR}/deploy/duckdns-update.sh" || true +fi + +# ---- playbull systemd ---- +echo "==> playbull.service" +install_unit "${APP_DIR}/deploy/systemd/playbull.service" /etc/systemd/system/playbull.service + +systemctl daemon-reload +if [[ -n "${CLOUDFLARE_API_TOKEN:-}" && -n "${CLOUDFLARE_ZONE_ID:-}" ]]; then + systemctl enable --now cloudflare-ddns-update.timer + systemctl start cloudflare-ddns-update.service || true +else + systemctl disable cloudflare-ddns-update.timer 2>/dev/null || true +fi +if [[ -n "${DUCKDNS_TOKEN:-}" ]]; then + systemctl enable --now duckdns-update.timer + systemctl start duckdns-update.service || true +else + systemctl disable duckdns-update.timer 2>/dev/null || true +fi +systemctl enable --now playbull.service +systemctl restart playbull.service + +# ---- Optional Nginx ---- +if [[ "${USE_NGINX_VHOST:-0}" == "1" ]]; then + echo "==> Nginx VHost (optional)" + if command -v apt-get >/dev/null 2>&1; then + apt-get install -y nginx certbot python3-certbot-nginx + fi + cp "${APP_DIR}/deploy/nginx/playbull.conf" /etc/nginx/sites-available/playbull + ln -sf /etc/nginx/sites-available/playbull /etc/nginx/sites-enabled/playbull + certbot --nginx -d "${APP_DOMAIN}" -d "www.${APP_DOMAIN}" --non-interactive --agree-tos -m "admin@${APP_DOMAIN}" || true + nginx -t && systemctl reload nginx +fi + +echo "" +echo "=== Fertig ===" +echo "Pfad: ${APP_DIR}" +echo "Intern: http://127.0.0.1:${APP_PORT}" +echo "DuckDNS: ${DUCKDNS_DOMAIN:-(deaktiviert)}" +echo "Status: systemctl status playbull cloudflared cloudflare-ddns-update.timer" +if [[ -n "${CLOUDFLARE_TUNNEL_TOKEN:-}" ]]; then + echo "HTTPS: https://${APP_DOMAIN}" +fi +echo "" +echo "Hinweis: JWT_SECRET und FINNHUB_API_KEY in ${ENV_FILE} pruefen, dann:" +echo " sudo systemctl restart playbull" diff --git a/deploy/nginx/bestewebsite-lan.conf b/deploy/nginx/bestewebsite-lan.conf new file mode 100644 index 0000000..5357407 --- /dev/null +++ b/deploy/nginx/bestewebsite-lan.conf @@ -0,0 +1,21 @@ +# LAN / Fritz-Netz — HTTP auf Server-IP und Hostname (ohne TLS) +# Install: sudo cp deploy/nginx/bestewebsite-lan.conf /etc/nginx/sites-available/bestewebsite-lan +# sudo ln -sf /etc/nginx/sites-available/bestewebsite-lan /etc/nginx/sites-enabled/00-bestewebsite-lan + +server { + listen 80 default_server; + listen [::]:80 default_server; + server_name 192.168.178.49 mikeshomelab _; + + client_max_body_size 30m; + + location / { + proxy_pass http://127.0.0.1:3080; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_read_timeout 86400; + } +} diff --git a/deploy/nginx/bestewebsite.conf b/deploy/nginx/bestewebsite.conf new file mode 100644 index 0000000..c5c1985 --- /dev/null +++ b/deploy/nginx/bestewebsite.conf @@ -0,0 +1,35 @@ +# Öffentlicher HTTPS-VHost — DuckDNS → PlayBull :3080 +# Install: sudo cp deploy/nginx/bestewebsite.conf /etc/nginx/sites-available/bestewebsite +# sudo ln -sf /etc/nginx/sites-available/bestewebsite /etc/nginx/sites-enabled/ +# sudo certbot --nginx -d halmc.duckdns.org --non-interactive --agree-tos --redirect +# sudo nginx -t && sudo systemctl reload nginx + +server { + server_name halmc.duckdns.org; + + client_max_body_size 30m; + + location / { + proxy_pass http://127.0.0.1:3080; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_read_timeout 86400; + } + + listen [::]:443 ssl; + listen 443 ssl; + ssl_certificate /etc/letsencrypt/live/halmc.duckdns.org/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/halmc.duckdns.org/privkey.pem; + include /etc/letsencrypt/options-ssl-nginx.conf; + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; +} + +server { + listen 80; + listen [::]:80; + server_name halmc.duckdns.org; + return 301 https://$host$request_uri; +} diff --git a/deploy/nginx/playbull.conf b/deploy/nginx/playbull.conf new file mode 100644 index 0000000..7655c50 --- /dev/null +++ b/deploy/nginx/playbull.conf @@ -0,0 +1,43 @@ +# Optional: 3. Website auf bestehendem Nginx :443 (SNI). +# PlayBull laeuft intern auf Port 3080 — kein Konflikt mit anderen Sites. +# +# Install: sudo cp deploy/nginx/playbull.conf /etc/nginx/sites-available/playbull +# sudo ln -sf /etc/nginx/sites-available/playbull /etc/nginx/sites-enabled/ +# sudo certbot --nginx -d halmc.duckdns.org +# sudo nginx -t && sudo systemctl reload nginx + +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name halmc.duckdns.org; + + # certbot legt Zertifikate an: + # ssl_certificate /etc/letsencrypt/live/halmc.duckdns.org/fullchain.pem; + # ssl_certificate_key /etc/letsencrypt/live/halmc.duckdns.org/privkey.pem; + + client_max_body_size 10m; + + location / { + proxy_pass http://127.0.0.1:3080; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + proxy_read_timeout 86400; + } +} + +server { + listen 80; + listen [::]:80; + server_name halmc.duckdns.org; + return 301 https://$host$request_uri; +} diff --git a/deploy/nginx/trilogyhub.conf b/deploy/nginx/trilogyhub.conf new file mode 100644 index 0000000..bd7285d --- /dev/null +++ b/deploy/nginx/trilogyhub.conf @@ -0,0 +1,33 @@ +# Öffentlicher HTTPS-VHost — trilogyhub.de (+ optional www) +# Mit Cloudflare Tunnel: oft nicht noetig (Tunnel terminiert HTTPS). +# Mit Nginx + Let's Encrypt: certbot --nginx -d trilogyhub.de -d www.trilogyhub.de + +server { + server_name trilogyhub.de www.trilogyhub.de; + + client_max_body_size 30m; + + location / { + proxy_pass http://127.0.0.1:3080; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_read_timeout 86400; + } + + listen [::]:443 ssl; + listen 443 ssl; + ssl_certificate /etc/letsencrypt/live/trilogyhub.de/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/trilogyhub.de/privkey.pem; + include /etc/letsencrypt/options-ssl-nginx.conf; + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; +} + +server { + listen 80; + listen [::]:80; + server_name trilogyhub.de www.trilogyhub.de; + return 301 https://$host$request_uri; +} diff --git a/deploy/push-homelab.ps1 b/deploy/push-homelab.ps1 new file mode 100644 index 0000000..ae20831 --- /dev/null +++ b/deploy/push-homelab.ps1 @@ -0,0 +1,139 @@ +#Requires -Version 5.1 +<# +.SYNOPSIS + Kopiert PlayBull nach ~/bestewebsite/bestewebsite und startet install-homelab.sh. + Nutzt deploy/homelab.credentials (Posh-SSH) wenn vorhanden. +#> +param( + [string]$SshTarget = "", + [string]$RemoteDir = "", + [switch]$SkipInstall, + [switch]$UserOnly +) + +$ErrorActionPreference = "Stop" +$Root = Split-Path $PSScriptRoot -Parent +$CredFile = Join-Path $PSScriptRoot "homelab.credentials" +$UseCredentials = Test-Path $CredFile + +function Assert-LastExit { + param([string]$Step) + if ($LASTEXITCODE -ne 0) { + throw "${Step} fehlgeschlagen (Exit ${LASTEXITCODE})." + } +} + +$EnvFile = Join-Path $PSScriptRoot "env.homelab" +if (-not (Test-Path $EnvFile)) { + Write-Error "deploy/env.homelab fehlt." +} + +$envContent = Get-Content $EnvFile -Raw +if ($RemoteDir -eq "" -and $envContent -match '(?m)^APP_DIR=(.+)$') { + $RemoteDir = $Matches[1].Trim() +} +if ([string]::IsNullOrWhiteSpace($RemoteDir)) { + $RemoteDir = "/home/gizzler/bestewebsite/bestewebsite" +} + +if ($UseCredentials) { + . "$PSScriptRoot/homelab-lib.ps1" + $config = Get-HomelabConfig + if ($SshTarget -eq "") { $SshTarget = $config.SshTarget } + + Write-Host "==> Sync nach $($config.SshTarget):${RemoteDir} (homelab.credentials)" -ForegroundColor Cyan + Invoke-HomelabRemote -Config $config -Command "mkdir -p '$RemoteDir'" -WorkDir "" | Out-Null + + $archiveWin = Join-Path $env:TEMP "playbull-deploy.tgz" + if (Test-Path $archiveWin) { Remove-Item $archiveWin -Force } + $tarExe = Join-Path $env:SystemRoot "System32\tar.exe" + $tarItems = @("server", "public", "package.json", "package-lock.json", "deploy", ".env.example") + Push-Location $Root + try { + & $tarExe -czf $archiveWin @tarItems + if ($LASTEXITCODE -ne 0) { throw "tar-Archiv fehlgeschlagen." } + } + finally { Pop-Location } + + $sizeMb = [math]::Round((Get-Item $archiveWin).Length / 1MB, 1) + Write-Host " -> Archiv ${sizeMb} MB" -ForegroundColor DarkGray + Send-HomelabPath -Config $config -LocalPath $archiveWin -RemoteDir $RemoteDir + + $extractCmd = @' +cp deploy/env.homelab deploy/env.homelab.bak 2>/dev/null || true +tar xzf playbull-deploy.tgz && rm -f playbull-deploy.tgz +if [ -f deploy/env.homelab.bak ]; then + for key in DUCKDNS_TOKEN CLOUDFLARE_TUNNEL_TOKEN CLOUDFLARE_API_TOKEN CLOUDFLARE_ZONE_ID JWT_SECRET FINNHUB_API_KEY APP_DOMAIN; do + old=$(grep -m1 "^${key}=" deploy/env.homelab.bak 2>/dev/null | cut -d= -f2- | tr -d '\r') + if [ -n "$old" ]; then + if grep -q "^${key}=" deploy/env.homelab 2>/dev/null; then + sed -i "s|^${key}=.*|${key}=${old}|" deploy/env.homelab + else + echo "${key}=${old}" >> deploy/env.homelab + fi + fi + done + rm -f deploy/env.homelab.bak +fi +sed -i 's/\r$//' deploy/env.homelab deploy/*.sh deploy/nginx/*.conf 2>/dev/null || true +'@ + $extract = Invoke-HomelabRemote -Config $config -Command $extractCmd -WorkDir $RemoteDir -TimeoutSeconds 300 + $extract.Output | ForEach-Object { Write-Output $_ } + if ($extract.ExitStatus -ne 0) { exit $extract.ExitStatus } + Remove-Item $archiveWin -Force -ErrorAction SilentlyContinue + + if ($UserOnly) { + Write-Host "==> User-Sync" + $r = Invoke-HomelabRemote -Config $config -Command "bash deploy/sync-user.sh" -WorkDir $RemoteDir -TimeoutSeconds 300 + $r.Output | ForEach-Object { Write-Output $_ } + if ($r.ExitStatus -ne 0) { exit $r.ExitStatus } + Write-Host "Fertig (User-Modus)." -ForegroundColor Green + exit 0 + } + + if ($SkipInstall) { + Write-Host "Sync fertig. Installer: .\deploy\homelab-exec.ps1 -Sudo 'bash deploy/install-homelab.sh'" -ForegroundColor Cyan + exit 0 + } + + Write-Host "==> Installer auf Homelab" + $install = Invoke-HomelabRemote -Config $config -Sudo -Command "chmod +x deploy/*.sh && bash deploy/install-homelab.sh" -WorkDir $RemoteDir -TimeoutSeconds 900 + $install.Output | ForEach-Object { Write-Output $_ } + if ($install.Error) { $install.Error | ForEach-Object { [Console]::Error.WriteLine($_) } } + if ($install.ExitStatus -ne 0) { exit $install.ExitStatus } + + Write-Host "" + Write-Host "==> Verifikation" -ForegroundColor Cyan + $verify = Invoke-HomelabRemote -Config $config -Command "systemctl is-active playbull cloudflared 2>/dev/null; curl -sf http://127.0.0.1:3080/api/market | head -c 80; echo; test -f public/image-editor.js && echo image-editor.js OK" -WorkDir $RemoteDir + $verify.Output | ForEach-Object { Write-Output $_ } + if ($verify.ExitStatus -ne 0) { exit $verify.ExitStatus } + + Write-Host "" + Write-Host "Fertig. https://trilogyhub.de" -ForegroundColor Green + exit 0 +} + +# Fallback: interaktives ssh/scp +if ($SshTarget -eq "" -and $envContent -match '(?m)^HOMELAB_SSH=(.+)$') { + $SshTarget = $Matches[1].Trim() +} +if ([string]::IsNullOrWhiteSpace($SshTarget) -or $SshTarget -eq "root@dein-server") { + Write-Error "HOMELAB_SSH setzen oder deploy/homelab.credentials anlegen." +} + +Write-Host "SSH mit Passwort (interaktiv)..." -ForegroundColor Yellow +ssh $SshTarget "mkdir -p '$RemoteDir'" +Assert-LastExit "ssh mkdir" + +$items = @("server", "public", "package.json", "package-lock.json", "deploy", ".env.example") +foreach ($item in $items) { + $local = Join-Path $Root $item + if (Test-Path $local) { + scp -r $local "${SshTarget}:${RemoteDir}/" + Assert-LastExit "scp $item" + } +} + +if ($SkipInstall) { exit 0 } +ssh -t $SshTarget "cd '$RemoteDir' && chmod +x deploy/*.sh && sudo bash deploy/install-homelab.sh" +Assert-LastExit "install-homelab.sh" diff --git a/deploy/quick-start-homelab.sh b/deploy/quick-start-homelab.sh new file mode 100644 index 0000000..fb0e98a --- /dev/null +++ b/deploy/quick-start-homelab.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +# Schnellstart auf dem Homelab als normaler User (gizzler) +# DuckDNS + systemd brauchen einmal: sudo bash deploy/install-homelab.sh +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "${SCRIPT_DIR}/.." + +echo "==> PlayBull Quick-Start ($(whoami)@$(hostname))" + +if [[ ! -f .env ]]; then + echo "Erstelle .env — bitte Werte eintragen:" + cp -n .env.example .env 2>/dev/null || true + ${EDITOR:-nano} .env +fi + +if [[ ! -f deploy/env.homelab ]]; then + cp deploy/env.homelab.example deploy/env.homelab + ${EDITOR:-nano} deploy/env.homelab +fi + +command -v node >/dev/null || { echo "Node.js fehlt. Bitte installieren (v24+)."; exit 1; } +npm install --omit=dev + +echo "" +echo "Test starten: npm start" +echo "Dauerbetrieb: sudo bash deploy/install-homelab.sh (fragt sudo-Passwort)" +echo "" diff --git a/deploy/setup-all.bat b/deploy/setup-all.bat new file mode 100644 index 0000000..52cdcb5 --- /dev/null +++ b/deploy/setup-all.bat @@ -0,0 +1,4 @@ +@echo off +cd /d "%~dp0.." +powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0setup-all.ps1" +pause diff --git a/deploy/setup-all.ps1 b/deploy/setup-all.ps1 new file mode 100644 index 0000000..0b17415 --- /dev/null +++ b/deploy/setup-all.ps1 @@ -0,0 +1,11 @@ +#Requires -Version 5.1 +# Ein-Klick: Sync + Installer + Verifikation auf dem Homelab +$ErrorActionPreference = "Stop" +Set-Location (Split-Path $PSScriptRoot -Parent) +Write-Host "=== PlayBull Homelab Setup ===" -ForegroundColor Cyan +& "$PSScriptRoot\push-homelab.ps1" +if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } +Write-Host "" +Write-Host "=== Status ===" -ForegroundColor Cyan +& "$PSScriptRoot\homelab-exec.ps1" "systemctl status playbull cloudflared --no-pager -l | head -40" +& "$PSScriptRoot\homelab-exec.ps1" "grep -E '^(PORT|JWT_SECRET|FINNHUB_API_KEY)=' .env | sed 's/=.*/=***/'" diff --git a/deploy/sync-user.sh b/deploy/sync-user.sh new file mode 100644 index 0000000..d5eb4c5 --- /dev/null +++ b/deploy/sync-user.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# Ohne systemd/sudo: Dateien nach ~/playbull kopieren und npm install. +# Auf dem Homelab: cd ~/bestewebsite/bestewebsite && bash deploy/sync-user.sh +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +SRC="$(cd "${SCRIPT_DIR}/.." && pwd)" +# shellcheck source=/dev/null +[[ -f "${SCRIPT_DIR}/env.homelab" ]] && source "${SCRIPT_DIR}/env.homelab" +APP_DIR="${APP_DIR:-/home/gizzler/bestewebsite/bestewebsite}" +APP_PORT="${APP_PORT:-3080}" + +mkdir -p "${APP_DIR}" +rsync -a --delete \ + --exclude node_modules --exclude data --exclude .git \ + "${SRC}/" "${APP_DIR}/" + +cd "${APP_DIR}" +command -v node >/dev/null || { echo "Node.js fehlt (v24+)."; exit 1; } +npm install --omit=dev + +ENV="${APP_DIR}/.env" +touch "${ENV}" +grep -q '^PORT=' "${ENV}" 2>/dev/null && sed -i "s/^PORT=.*/PORT=${APP_PORT}/" "${ENV}" || echo "PORT=${APP_PORT}" >> "${ENV}" +grep -q '^TRUST_PROXY=' "${ENV}" 2>/dev/null || echo "TRUST_PROXY=1" >> "${ENV}" + +echo "" +echo "=== Sync fertig: ${APP_DIR} ===" +echo "Start (Test): cd ${APP_DIR} && node server/index.js" +echo "Dauerbetrieb: bash deploy/finish-on-server.sh (sudo + systemd)" +echo "" +echo "Falls schon laeuft: pkill -f 'node server/index.js' ; cd ${APP_DIR} && nohup node server/index.js >> data/server.log 2>&1 &" diff --git a/deploy/systemd/cloudflare-ddns-update.service b/deploy/systemd/cloudflare-ddns-update.service new file mode 100644 index 0000000..cc0a2c0 --- /dev/null +++ b/deploy/systemd/cloudflare-ddns-update.service @@ -0,0 +1,12 @@ +[Unit] +Description=Cloudflare Dynamic DNS updater (Trilogy Hub) +After=network-online.target +Wants=network-online.target + +[Service] +Type=oneshot +ExecStart=__APP_DIR__/deploy/cloudflare-ddns-update.sh +User=root + +[Install] +WantedBy=multi-user.target diff --git a/deploy/systemd/cloudflare-ddns-update.timer b/deploy/systemd/cloudflare-ddns-update.timer new file mode 100644 index 0000000..325bbf7 --- /dev/null +++ b/deploy/systemd/cloudflare-ddns-update.timer @@ -0,0 +1,10 @@ +[Unit] +Description=Cloudflare DDNS alle 5 Minuten pruefen + +[Timer] +OnBootSec=2min +OnUnitActiveSec=5min +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/deploy/systemd/cloudflared-playbull.service b/deploy/systemd/cloudflared-playbull.service new file mode 100644 index 0000000..3e5fe7c --- /dev/null +++ b/deploy/systemd/cloudflared-playbull.service @@ -0,0 +1,17 @@ +[Unit] +Description=Cloudflare Tunnel for PlayBull (HTTPS) +After=network-online.target playbull.service +Wants=network-online.target +Requires=playbull.service + +[Service] +Type=simple +User=root +EnvironmentFile=/opt/playbull/deploy/env.homelab +# Token-Modus: einfachster Weg aus dem Zero-Trust-Dashboard +ExecStart=/bin/bash -c 'exec /usr/bin/cloudflared tunnel --no-autoupdate run --token "$CLOUDFLARE_TUNNEL_TOKEN"' +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target diff --git a/deploy/systemd/duckdns-update.service b/deploy/systemd/duckdns-update.service new file mode 100644 index 0000000..5711317 --- /dev/null +++ b/deploy/systemd/duckdns-update.service @@ -0,0 +1,12 @@ +[Unit] +Description=DuckDNS IP updater for PlayBull homelab +After=network-online.target +Wants=network-online.target + +[Service] +Type=oneshot +ExecStart=__APP_DIR__/deploy/duckdns-update.sh +User=root + +[Install] +WantedBy=multi-user.target diff --git a/deploy/systemd/duckdns-update.timer b/deploy/systemd/duckdns-update.timer new file mode 100644 index 0000000..bb82984 --- /dev/null +++ b/deploy/systemd/duckdns-update.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Run DuckDNS IP update every 5 minutes + +[Timer] +OnBootSec=1min +OnUnitActiveSec=5min +AccuracySec=1min +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/deploy/systemd/playbull.service b/deploy/systemd/playbull.service new file mode 100644 index 0000000..c7e5907 --- /dev/null +++ b/deploy/systemd/playbull.service @@ -0,0 +1,18 @@ +[Unit] +Description=PlayBull — Trilogy Hub + Trading + Casino +After=network.target + +[Service] +Type=simple +User=__APP_USER__ +Group=__APP_USER__ +WorkingDirectory=__APP_DIR__ +EnvironmentFile=__APP_DIR__/.env +Environment=NODE_ENV=production +Environment=TRUST_PROXY=1 +ExecStart=/usr/bin/node __APP_DIR__/server/index.js +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target diff --git a/deploy/test-ports.ps1 b/deploy/test-ports.ps1 new file mode 100644 index 0000000..ff31f10 --- /dev/null +++ b/deploy/test-ports.ps1 @@ -0,0 +1,5 @@ +$ip = "192.168.178.49" +foreach ($port in 22, 80, 443, 3080) { + $r = Test-NetConnection -ComputerName $ip -Port $port -WarningAction SilentlyContinue + Write-Output "Port ${port}: $($r.TcpTestSucceeded)" +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b5ca2df --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1939 @@ +{ + "name": "playbull", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "playbull", + "version": "1.0.0", + "dependencies": { + "bcryptjs": "^2.4.3", + "cookie": "^0.6.0", + "cookie-parser": "^1.4.7", + "express": "^4.22.2", + "jsonwebtoken": "^9.0.3", + "multer": "^1.4.5-lts.1", + "sharp": "^0.33.5", + "socket.io": "^4.8.3" + }, + "engines": { + "node": ">=24" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "license": "MIT" + }, + "node_modules/@types/cors": { + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.0.1.tgz", + "integrity": "sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw==", + "license": "MIT", + "dependencies": { + "undici-types": "~8.3.0" + } + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "license": "MIT", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", + "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.15.1", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz", + "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==", + "license": "MIT", + "dependencies": { + "cookie": "0.7.2", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-parser/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.6.9", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.9.tgz", + "integrity": "sha512-clKkw4C7nJ22mGgoVcCg6V/W/TxdNyIOTr89k2ONZu81qqkddPFDF0LXcbAwhzPD8DjkiRCjzuiO6Y+fkpD4vg==", + "license": "MIT", + "dependencies": { + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "@types/ws": "^8.5.12", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.7.2", + "cors": "~2.8.5", + "debug": "~4.4.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.21.0" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz", + "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.5", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.15.1", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "license": "MIT" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/multer": { + "version": "1.4.5-lts.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.2.tgz", + "integrity": "sha512-VzGiVigcG9zUAoCNU+xShztrlr1auZOlurXynNvO9GiWD1/mTBbUljOKY+qMeazBqXgRnjzeEgJI/wyjJUHg9A==", + "deprecated": "Multer 1.x is impacted by a number of vulnerabilities, which have been patched in 2.x. You should upgrade to the latest 2.x version.", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", + "license": "MIT" + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.15.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", + "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", + "license": "BSD-3-Clause", + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/socket.io": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.3.tgz", + "integrity": "sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.4.1", + "engine.io": "~6.6.0", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.8.tgz", + "integrity": "sha512-6Oy52pbg+kvdCVvjcN+FnY7BvxZ7cIHNScbvztT/It5d0vbwoJoVZmF2gjJmnV0/4WlXRfG15zc45ySk9Ah8bw==", + "license": "MIT", + "dependencies": { + "debug": "~4.4.1", + "ws": "~8.21.0" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-adapter/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/socket.io-parser": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.4.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ws": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..5de8b7d --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "playbull", + "version": "1.0.0", + "description": "PlayBull - Spielgeld Trading & Gamble Plattform mit Live-Kursen", + "type": "module", + "main": "server/index.js", + "scripts": { + "start": "node server/index.js", + "dev": "node --watch server/index.js" + }, + "engines": { + "node": ">=24" + }, + "dependencies": { + "bcryptjs": "^2.4.3", + "cookie": "^0.6.0", + "cookie-parser": "^1.4.7", + "express": "^4.22.2", + "jsonwebtoken": "^9.0.3", + "multer": "^1.4.5-lts.1", + "sharp": "^0.33.5", + "socket.io": "^4.8.3" + } +} diff --git a/public/app.js b/public/app.js new file mode 100644 index 0000000..703d74a --- /dev/null +++ b/public/app.js @@ -0,0 +1,797 @@ +/* ============================================================ + Trilogy Hub — app.js + Routing, animations, photo slots, theme, Paris dashboard + ============================================================ */ +(() => { + "use strict"; + + const prefersReduced = window.matchMedia("(prefers-reduced-motion: reduce)").matches; + const $ = (s, c = document) => c.querySelector(s); + const $$ = (s, c = document) => Array.from(c.querySelectorAll(s)); + + /* -------------------- DATA -------------------- */ + const mikeProducts = [ + { name: "Japanese Maple 'Emperor'", price: "€280", desc: "A stunning deep-red showstopper for any garden." }, + { name: "Blue Atlas Cedar", price: "€450", desc: "Majestic evergreen with silver-blue needles. Rare and sought after." }, + { name: "Olive Tree (300 years old)", price: "€1,200", desc: "History in your garden. Delivered with full root care." }, + { name: "Himalayan Birch", price: "€190", desc: "Striking white bark, perfect for modern minimalist gardens." }, + ]; + + const mikeReviews = [ + { text: "Mike delivered a 200-year-old olive tree to our terrace. Unreal quality.", who: "Thomas K., Munich" }, + { text: "The Japanese Maple is the centerpiece of our garden. Worth every cent.", who: "Anna L., Stuttgart" }, + { text: "Professional, fast, and the tree arrived in perfect condition.", who: "Stefan B., Frankfurt" }, + { text: "Magic Tree Co. transformed our backyard. Highly recommend.", who: "Julia R., Heidelberg" }, + { text: "Best purchase we've ever made for our property.", who: "Markus & Sara W., Freiburg" }, + ]; + + const nicoListings = [ + { name: "Penthouse Stuttgart-Mitte", price: "€1.85M", size: "180m²", desc: "Floor-to-ceiling windows, rooftop terrace, panoramic city views." }, + { name: "Villa Bebenhausen", price: "€2.3M", size: "320m²", desc: "Secluded forest estate with heated pool and private driveway." }, + { name: "Modern Loft Tübingen", price: "€620,000", size: "110m²", desc: "Industrial chic in the heart of the old town. Fully renovated." }, + { name: "Investment Apartment Block Esslingen", price: "€4.1M", size: "8 units", desc: "Fully rented, 5.8% yield. Backed by PG Trading Management." }, + ]; + + const nicoTestimonials = [ + { text: "Nico sold our Stuttgart apartment in 12 days above asking price. Unmatched.", who: "Familie Berger" }, + { text: "NovaTerra found us our dream home in Tübingen. We never felt rushed.", who: "Dr. Katrin M." }, + { text: "Professional, discreet, and results-driven. The best broker in the region.", who: "Investment Group H." }, + { text: "Nico's market knowledge is extraordinary. He knows every street.", who: "Marc V., Stuttgart" }, + ]; + + // Play-money portfolio. Holdings total ≈ €7,277,360 + buying power €57,539.31 = €7,334,899.31 + const positions = [ + { ticker: "AAPL", company: "Apple Inc.", shares: 2000, avg: 165.0, price: 182.3 }, + { ticker: "NVDA", company: "NVIDIA Corp.", shares: 1500, avg: 420.0, price: 875.4 }, + { ticker: "TSLA", company: "Tesla Inc.", shares: 1000, avg: 240.0, price: 198.7 }, + { ticker: "MSFT", company: "Microsoft", shares: 1200, avg: 310.0, price: 378.9 }, + { ticker: "META", company: "Meta Platforms", shares: 900, avg: 285.0, price: 478.2 }, + { ticker: "AMZN", company: "Amazon", shares: 1500, avg: 135.0, price: 184.6 }, + { ticker: "GOOGL", company: "Alphabet Inc.", shares: 1000, avg: 140.0, price: 178.2 }, + { ticker: "AMD", company: "Adv. Micro Devices", shares: 2000, avg: 110.0, price: 162.4 }, + { ticker: "BTC-EUR", company: "Bitcoin", shares: 50, avg: 38000.0, price: 61200.0 }, + { ticker: "ETH-EUR", company: "Ethereum", shares: 200, avg: 2200.0, price: 3380.0 }, + ]; + + const tradeLog = [ + "BUY NVDA 200 shares @ €820.00 — June 18, 2026", + "BUY ETH-EUR 50 @ €2,900.00 — June 10, 2026", + "SELL TSLA 300 shares @ €225.00 — May 28, 2026", + "BUY BTC-EUR 10 @ €54,000.00 — May 12, 2026", + "BUY AAPL 500 shares @ €170.00 — April 30, 2026", + ]; + + const fmtEUR = (n, dec = 2) => "€" + n.toLocaleString("en-US", { minimumFractionDigits: dec, maximumFractionDigits: dec }); + const fmtSigned = (n) => (n >= 0 ? "+" : "-") + "€" + Math.abs(n).toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2 }); + + const PORTFOLIO_TOTAL = 7334899.31; + const BUYING_POWER = 57539.31; + const TODAY_PNL = 48213.55; + + /* -------------------- RENDER LISTS -------------------- */ + function slotMarkup(label, minH = "200px") { + return `
+
${label}
+ ${label}${label} +
`; + } + + function renderMike() { + $("#mikeProducts").innerHTML = mikeProducts.map((p, i) => ` +
+ ${slotMarkup("Product Photo " + (i + 1), "190px")} +
+
+

${p.name}

+ ${p.price} +
+

${p.desc}

+ +
+
`).join(""); + + $("#mikeReviews").innerHTML = mikeReviews.map((r) => ` +
+
★★★★★
+
"${r.text}"
+
— ${r.who}
+
`).join(""); + + $("#mikeGallery").innerHTML = Array.from({ length: 6 }, (_, i) => + `
${slotMarkup("Customer Photo " + (i + 1), "200px")}
`).join(""); + restoreSlotImages($("#page-magic-mike")); + } + + function renderNico() { + $("#nicoListings").innerHTML = nicoListings.map((p, i) => ` +
+ ${slotMarkup("Listing Photo " + (i + 1), "230px")} +
+
+ ${p.price}${p.size} +
+

${p.name}

+

${p.desc}

+ +
+
`).join(""); + + $("#nicoTestimonials").innerHTML = nicoTestimonials.map((r) => ` +
+ +
"${r.text}"
+
— ${r.who}
+
`).join(""); + + const galleryLabels = ["Client Handshake", "Property Visit", "Signing Moment", "Property Visit 2", "Client Handshake 2", "Signing Moment 2"]; + $("#nicoGallery").innerHTML = galleryLabels.map((l) => `
${slotMarkup(l, "200px")}
`).join(""); + restoreSlotImages($("#page-nico")); + } + + /* -------------------- PHOTO SLOTS -------------------- */ + const IMAGE_STORE_KEY = "trilogy-hub-uploads"; + + function getSlotId(slot) { + if (!slot.dataset.slotId) { + const page = slot.closest(".page")?.id || "global"; + const name = slot.dataset.slot || "upload"; + slot.dataset.slotId = `${page}::${name}`; + } + return slot.dataset.slotId; + } + + function readImageStore() { + try { return JSON.parse(localStorage.getItem(IMAGE_STORE_KEY) || "{}"); } + catch { return {}; } + } + + function writeImageStore(store) { + try { localStorage.setItem(IMAGE_STORE_KEY, JSON.stringify(store)); return true; } + catch (err) { console.warn("Image save to localStorage failed (quota?):", err); return false; } + } + + // Downscale + re-encode uploads so they actually fit in localStorage. + function compressImage(file, maxDim = 1600, quality = 0.82) { + return new Promise((resolve, reject) => { + if (!file || !file.type || !file.type.startsWith("image/")) { + reject(new Error("Not an image")); + return; + } + const url = URL.createObjectURL(file); + const img = new Image(); + img.onload = () => { + URL.revokeObjectURL(url); + try { + let { width, height } = img; + if (width > maxDim || height > maxDim) { + const scale = maxDim / Math.max(width, height); + width = Math.round(width * scale); + height = Math.round(height * scale); + } + const canvas = document.createElement("canvas"); + canvas.width = width; canvas.height = height; + const ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0, width, height); + // PNGs with transparency keep PNG; everything else becomes JPEG for size. + const isPng = file.type === "image/png"; + const out = canvas.toDataURL(isPng ? "image/png" : "image/jpeg", quality); + resolve(out); + } catch (err) { reject(err); } + }; + img.onerror = () => { URL.revokeObjectURL(url); reject(new Error("Image decode failed")); }; + img.src = url; + }); + } + + // Server mode: when the page is served by server.js, images are written as + // real files into ./uploads. Otherwise we fall back to localStorage. + const server = { available: false }; + let remoteImages = {}; // slotId -> "/uploads/xxx.jpg" + + async function loadServerImages() { + try { + const res = await fetch("/api/images", { cache: "no-store" }); + if (!res.ok) throw new Error("no server"); + remoteImages = await res.json(); + server.available = true; + } catch { + server.available = false; + } + } + + function normalizeImageEntry(val) { + if (!val) return null; + if (typeof val === "string") return { url: val, focus: { x: 0.5, y: 0.5 }, zoom: 1 }; + return { + url: val.url || val.dataUrl, + focus: val.focus || { x: val.focusX ?? 0.5, y: val.focusY ?? 0.5 }, + zoom: val.zoom ?? 1, + }; + } + + function applyImageToSlot(slot, entry) { + const meta = normalizeImageEntry(entry); + if (!meta?.url) return; + const img = slot.querySelector("img.preview"); + if (!img) return; + img.src = meta.url; + slot.dataset.focusX = meta.focus.x; + slot.dataset.focusY = meta.focus.y; + slot.dataset.zoom = meta.zoom; + slot.classList.add("has-image"); + + const paint = () => { + const { computeLayout, applyLayout } = window.TrilogyImageEditor || {}; + if (!computeLayout || !applyLayout) return; + const fw = slot.clientWidth; + const fh = slot.clientHeight; + if (fw < 2 || fh < 2) return; + const layout = computeLayout( + img.naturalWidth, img.naturalHeight, fw, fh, + { x: +slot.dataset.focusX, y: +slot.dataset.focusY }, + +slot.dataset.zoom, + ); + applyLayout(img, layout); + }; + if (img.complete && img.naturalWidth) paint(); + else img.addEventListener("load", paint, { once: true }); + } + + function saveSlotImage(slot, dataUrl, meta) { + const id = getSlotId(slot); + const focus = meta?.focus || { x: 0.5, y: 0.5 }; + const zoom = meta?.zoom ?? 1; + applyImageToSlot(slot, { url: dataUrl, focus, zoom }); + + const payload = { id, dataUrl, focusX: focus.x, focusY: focus.y, zoom }; + + if (server.available) { + fetch("/api/upload", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(payload), + }) + .then((r) => (r.ok ? r.json() : Promise.reject(new Error("upload failed")))) + .then((data) => { + if (data && data.url) { + remoteImages[id] = { url: data.url, focus, zoom }; + applyImageToSlot(slot, remoteImages[id]); + } + }) + .catch((err) => { + console.warn("Server upload failed, falling back to localStorage:", err); + const store = readImageStore(); + store[id] = { url: dataUrl, focus, zoom }; + writeImageStore(store); + }); + } else { + const store = readImageStore(); + store[id] = { url: dataUrl, focus, zoom }; + writeImageStore(store); + } + } + + function restoreSlotImages(root = document) { + const store = readImageStore(); + $$(".photo-slot", root).forEach((slot) => { + const id = getSlotId(slot); + const entry = normalizeImageEntry(remoteImages[id] || store[id]); + if (entry) applyImageToSlot(slot, entry); + }); + } + + let fileInput; + function initPhotoSlots() { + fileInput = document.createElement("input"); + fileInput.type = "file"; + fileInput.accept = "image/*"; + fileInput.style.display = "none"; + document.body.appendChild(fileInput); + + let currentSlot = null; + fileInput.addEventListener("change", () => { + const file = fileInput.files && fileInput.files[0]; + const slot = currentSlot; + currentSlot = null; + fileInput.value = ""; + if (!file || !slot) return; + + const existingFocus = { + x: parseFloat(slot.dataset.focusX) || 0.5, + y: parseFloat(slot.dataset.focusY) || 0.5, + }; + const existingZoom = parseFloat(slot.dataset.zoom) || 1; + + compressImage(file) + .then((dataUrl) => { + if (!window.TrilogyImageEditor) return { dataUrl, meta: { focus: existingFocus, zoom: existingZoom } }; + return window.TrilogyImageEditor.open({ + file, + slot, + focus: existingFocus, + zoom: existingZoom, + imageSrc: dataUrl, + }).then((meta) => (meta ? { dataUrl, meta } : null)); + }) + .then((result) => { + if (!result) return; + saveSlotImage(slot, result.dataUrl, result.meta); + }) + .catch(() => { + const reader = new FileReader(); + reader.onload = (e) => { + const dataUrl = e.target.result; + if (window.TrilogyImageEditor) { + window.TrilogyImageEditor.open({ file, slot, imageSrc: dataUrl }) + .then((meta) => { if (meta) saveSlotImage(slot, dataUrl, meta); }); + } else { + saveSlotImage(slot, dataUrl, { focus: { x: 0.5, y: 0.5 }, zoom: 1 }); + } + }; + reader.readAsDataURL(file); + }); + }); + + const openFor = (slot) => { currentSlot = slot; fileInput.click(); }; + + document.addEventListener("click", (e) => { + const slot = e.target.closest(".photo-slot"); + if (!slot) return; + e.preventDefault(); + e.stopPropagation(); + openFor(slot); + }); + document.addEventListener("keydown", (e) => { + if ((e.key === "Enter" || e.key === " ") && e.target.classList?.contains("photo-slot")) { + e.preventDefault(); + e.stopPropagation(); + openFor(e.target); + } + }); + + restoreSlotImages(); + } + + /* -------------------- THEME -------------------- */ + function initTheme() { + const root = document.documentElement; + $("#themeToggle").addEventListener("click", () => { + root.classList.toggle("dark"); + if (window.allocationChart && typeof window.allocationChart.update === "function") { + window.allocationChart.update(); + } + }); + } + + /* -------------------- MOBILE MENU -------------------- */ + function initMobileMenu() { + const btn = $("#menuToggle"), menu = $("#mobileMenu"); + btn.addEventListener("click", () => { + const open = menu.classList.toggle("hidden") === false; + btn.setAttribute("aria-expanded", String(open)); + }); + } + + /* -------------------- ROUTING -------------------- */ + const routes = ["home", "magic-mike", "nico", "paris", "casino"]; + let currentRoute = null; + + function setActiveNav(route) { + $$(".nav-link[data-route]").forEach((b) => b.classList.toggle("active", b.dataset.route === route)); + } + + function animateIn(pageEl) { + if (prefersReduced) return; + runSplitting(pageEl); + setupReveals(pageEl); + } + + function showPage(route, instant = false) { + if (!routes.includes(route)) route = "home"; + if (route === currentRoute) return; + + const next = $("#page-" + route); + const prev = currentRoute ? $("#page-" + currentRoute) : null; + + const swap = () => { + if (prev) prev.classList.remove("active"); + next.classList.add("active"); + window.scrollTo(0, 0); + setActiveNav(route); + currentRoute = route; + if (window.lucide) window.lucide.createIcons(); + restoreSlotImages(next); + animateIn(next); + if (route === "paris") refreshParisIcons(); + if (window.ScrollTrigger) ScrollTrigger.refresh(); + }; + + if (instant || prefersReduced || !prev) { + swap(); + if (next) gsap.set(next, { opacity: 1 }); + return; + } + + gsap.timeline() + .to(prev, { opacity: 0, duration: 0.25, ease: "power2.out" }) + .add(() => { swap(); gsap.set(next, { opacity: 0 }); }) + .to(next, { opacity: 1, duration: 0.35, ease: "power2.out" }); + } + + function routeFromHash() { + const h = (location.hash || "#home").replace("#", ""); + return routes.includes(h) ? h : "home"; + } + + function initRouting() { + // delegate data-route buttons + document.addEventListener("click", (e) => { + const btn = e.target.closest("[data-route]"); + if (!btn) return; + e.preventDefault(); + const r = btn.dataset.route; + $("#mobileMenu").classList.add("hidden"); + if ("#" + r === location.hash) showPage(r); + else location.hash = "#" + r; + }); + window.addEventListener("hashchange", () => showPage(routeFromHash())); + showPage(routeFromHash(), true); + } + + /* -------------------- SPLITTING + REVEALS -------------------- */ + function runSplitting(scope) { + if (typeof Splitting !== "function") return; + const targets = $$("[data-splitting]", scope).filter((el) => !el.dataset.split); + targets.forEach((el) => (el.dataset.split = "1")); + if (!targets.length) return; + Splitting({ target: targets, by: "chars" }); + targets.forEach((el) => { + const chars = $$(".char", el); + gsap.set(chars, { opacity: 0, y: 24 }); + gsap.to(chars, { opacity: 1, y: 0, duration: 0.5, ease: "power3.out", stagger: 0.04 }); + }); + } + + function setupReveals(scope) { + const els = $$(".reveal", scope).filter((el) => !el.dataset.revealed && !el.classList.contains("photo-slot")); + els.forEach((el, i) => { + el.dataset.revealed = "1"; + const isCard = el.classList.contains("card-hover"); + gsap.fromTo(el, { opacity: 0, y: 30 }, { + opacity: 1, y: 0, duration: 0.8, ease: "power3.out", + // Stagger siblings that share the same parent for a polished cascade + delay: Math.min(0.18, (i % 4) * 0.06), + scrollTrigger: { trigger: el, start: "top 88%", once: true }, + // Hand transform control back to CSS so card tilt/hover keeps working + onComplete: () => { if (isCard) gsap.set(el, { clearProps: "transform" }); }, + }); + }); + } + + /* -------------------- COUNT-UP -------------------- */ + function formatCounter(el, value) { + const dec = parseInt(el.dataset.decimals || "0", 10); + const prefix = el.dataset.prefix || ""; + return prefix + value.toLocaleString("en-US", { minimumFractionDigits: dec, maximumFractionDigits: dec }); + } + + function countUp(el) { + const target = parseFloat(el.dataset.counter); + if (Number.isNaN(target)) return; + + const setValue = (v) => { el.textContent = formatCounter(el, v); }; + + // Always show final value immediately as fallback + setValue(target); + + if (prefersReduced || typeof gsap === "undefined") return; + + const obj = { v: 0 }; + setValue(0); + gsap.to(obj, { + v: target, duration: 1.4, ease: "power2.out", + onUpdate: () => setValue(obj.v), + onComplete: () => setValue(target), + }); + } + + function updateDashboardKPIs(scope) { + $$("[data-counter]", scope || $("#parisDashboard")).forEach(countUp); + } + + /* -------------------- PARIS DASHBOARD -------------------- */ + let loggedIn = false; + let priceTimer = null; + + function refreshParisIcons() { if (window.lucide) window.lucide.createIcons(); } + + function renderWatchlist() { + const body = $("#watchlistBody"); + body.innerHTML = positions.map((p, i) => { + const pl = (p.price - p.avg) * p.shares; + const plPct = ((p.price - p.avg) / p.avg) * 100; + const cls = pl >= 0 ? "text-success" : "text-error"; + return ` + ${p.ticker} + ${p.company} + ${p.shares} + ${fmtEUR(p.avg)} + ${fmtEUR(p.price)} + ${fmtSigned(pl)} + ${(plPct >= 0 ? "+" : "") + plPct.toFixed(1)}% + `; + }).join(""); + } + + function renderTradeLog() { + $("#tradeLog").innerHTML = tradeLog.map((t) => { + const isBuy = t.startsWith("BUY"); + return `
+ ${isBuy ? "BUY" : "SELL"} + ${t} +
`; + }).join(""); + } + + const chartColors = ["#c9a84c", "#2f9e8f", "#5b7aa6", "#9a958a", "#7d8a4f"]; + function buildChart() { + const ctx = $("#allocationChart"); + if (!ctx || typeof Chart === "undefined") return; + const data = positions.map((p) => p.price * p.shares); + const labels = positions.map((p) => p.ticker); + const palette = labels.map((_, i) => chartColors[i % chartColors.length]); + + if (window.allocationChart) window.allocationChart.destroy(); + window.allocationChart = new Chart(ctx, { + type: "doughnut", + data: { labels, datasets: [{ data, backgroundColor: palette, borderColor: "transparent", borderWidth: 2, hoverOffset: 8 }] }, + options: { + cutout: "62%", responsive: true, + plugins: { + legend: { display: false }, + tooltip: { callbacks: { label: (c) => ` ${c.label}: ${fmtEUR(c.parsed)}` } }, + }, + animation: { animateRotate: !prefersReduced, duration: prefersReduced ? 0 : 900 }, + }, + }); + + const total = data.reduce((a, b) => a + b, 0); + $("#chartLegend").innerHTML = labels.map((l, i) => ` +
+ ${l} + ${((data[i] / total) * 100).toFixed(1)}% +
`).join(""); + } + + function startLivePrices() { + if (priceTimer) clearInterval(priceTimer); + if (prefersReduced) return; + priceTimer = setInterval(() => { + const i = Math.floor(Math.random() * positions.length); + const p = positions[i]; + const pct = (Math.random() * 0.4 + 0.1) / 100; // 0.1–0.5% + const dir = Math.random() > 0.5 ? 1 : -1; + p.price = p.price * (1 + dir * pct); + + const priceCell = $(`[data-price="${i}"]`); + const plCell = $(`[data-pl="${i}"]`); + const plPctCell = $(`[data-plpct="${i}"]`); + if (!priceCell) return; + + const pl = (p.price - p.avg) * p.shares; + const plPct = ((p.price - p.avg) / p.avg) * 100; + priceCell.textContent = fmtEUR(p.price); + plCell.textContent = fmtSigned(pl); + plPctCell.textContent = (plPct >= 0 ? "+" : "") + plPct.toFixed(1) + "%"; + const cls = pl >= 0 ? "text-success" : "text-error"; + plCell.className = `py-3 px-4 text-right font-semibold ${cls}`; + plPctCell.className = `py-3 px-4 text-right font-semibold ${cls}`; + + const flash = dir > 0 ? "flash-up" : "flash-down"; + priceCell.classList.remove("flash-up", "flash-down"); + void priceCell.offsetWidth; + priceCell.classList.add(flash); + + if (window.allocationChart) { + window.allocationChart.data.datasets[0].data[i] = p.price * p.shares; + window.allocationChart.update("none"); + } + }, 8000); + } + + function revealDashboard() { + loggedIn = true; + $("#parisLogin").classList.add("hidden"); + $("#parisDashboard").classList.remove("hidden"); + renderWatchlist(); + renderTradeLog(); + refreshParisIcons(); + + // KPIs first — must not depend on chart init + updateDashboardKPIs(); + + // Chart after layout paint (canvas needs visible dimensions) + requestAnimationFrame(() => { + try { buildChart(); } catch (err) { console.warn("Chart init skipped:", err); } + if (window.ScrollTrigger) ScrollTrigger.refresh(); + }); + + startLivePrices(); + } + + function initParis() { + $("#loginForm").addEventListener("submit", (e) => { + e.preventDefault(); + const u = $("#username").value.trim(); + const pw = $("#password").value; + const err = $("#loginError"); + if (u === "paris" && pw === "trading123") { + err.textContent = ""; + revealDashboard(); + } else { + err.textContent = "Invalid credentials. Try paris / trading123."; + } + }); + $("#logoutBtn").addEventListener("click", () => { + loggedIn = false; + if (priceTimer) clearInterval(priceTimer); + $("#parisDashboard").classList.add("hidden"); + $("#parisLogin").classList.remove("hidden"); + $("#username").value = ""; $("#password").value = ""; + }); + } + + /* -------------------- LENIS SMOOTH SCROLL -------------------- */ + function initLenis() { + if (typeof Lenis === "undefined" || prefersReduced) return; + const lenis = new Lenis({ duration: 1.05, easing: (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)) }); + function raf(time) { lenis.raf(time); requestAnimationFrame(raf); } + requestAnimationFrame(raf); + if (window.ScrollTrigger) lenis.on("scroll", ScrollTrigger.update); + } + + /* -------------------- MOTION micro-interactions -------------------- */ + function initMotion() { + // Subtle press feedback on primary buttons via Motion if available; CSS handles hover. + if (!window.Motion || prefersReduced) return; + } + + /* -------------------- SCROLL PROGRESS BAR -------------------- */ + function initScrollProgress() { + const bar = $("#scrollProgress"); + if (!bar || prefersReduced) return; + let ticking = false; + const update = () => { + const doc = document.documentElement; + const max = doc.scrollHeight - window.innerHeight; + const pct = max > 0 ? (window.scrollY / max) * 100 : 0; + bar.style.width = Math.min(100, Math.max(0, pct)) + "%"; + ticking = false; + }; + window.addEventListener("scroll", () => { + if (!ticking) { requestAnimationFrame(update); ticking = true; } + }, { passive: true }); + window.addEventListener("resize", update, { passive: true }); + update(); + } + + /* -------------------- PARALLAX (orbs + hero images) -------------------- */ + function initParallax() { + if (prefersReduced) return; + const isMobile = () => window.matchMedia("(max-width: 767px)").matches; + let ticking = false; + const update = () => { + const y = window.scrollY; + const mobile = isMobile(); + $$("[data-parallax]").forEach((el) => { + // Lighter parallax on phones to keep scrolling buttery. + const speed = (parseFloat(el.dataset.parallax) || 0.1) * (mobile ? 0.5 : 1); + el.style.transform = `translate3d(0, ${y * speed}px, 0)`; + }); + // Hero background images: drift slightly slower than scroll, kept scaled so edges never show. + $$("[data-parallax-img]").forEach((img) => { + if (!img.closest(".has-image")) return; + if (mobile) return; + const slot = img.closest(".photo-slot"); + const rect = img.getBoundingClientRect(); + const offset = (rect.top + rect.height / 2 - window.innerHeight / 2); + const speed = parseFloat(img.dataset.parallaxImg) || 0.15; + const parallaxY = -offset * speed; + if (slot && window.TrilogyImageEditor) { + const fw = slot.clientWidth; + const fh = slot.clientHeight; + if (fw > 0 && fh > 0 && img.naturalWidth) { + const layout = window.TrilogyImageEditor.computeLayout( + img.naturalWidth, img.naturalHeight, fw, fh, + { x: +slot.dataset.focusX || 0.5, y: +slot.dataset.focusY || 0.5 }, + +slot.dataset.zoom || 1, + ); + layout.top += parallaxY; + window.TrilogyImageEditor.applyLayout(img, layout); + return; + } + } + img.style.transform = `scale(1.14) translate3d(0, ${parallaxY.toFixed(1)}px, 0)`; + }); + ticking = false; + }; + const onScroll = () => { if (!ticking) { requestAnimationFrame(update); ticking = true; } }; + window.addEventListener("scroll", onScroll, { passive: true }); + window.addEventListener("resize", onScroll, { passive: true }); + update(); + } + + /* -------------------- 3D CARD TILT -------------------- */ + function initCardTilt() { + if (prefersReduced || !window.matchMedia("(pointer: fine)").matches) return; + const MAX = 6; // degrees — subtle + document.addEventListener("pointermove", (e) => { + const card = e.target.closest(".card-hover"); + if (!card) return; + const r = card.getBoundingClientRect(); + const px = (e.clientX - r.left) / r.width - 0.5; + const py = (e.clientY - r.top) / r.height - 0.5; + card.style.setProperty("--ry", (px * MAX).toFixed(2) + "deg"); + card.style.setProperty("--rx", (-py * MAX).toFixed(2) + "deg"); + }); + document.addEventListener("pointerout", (e) => { + const card = e.target.closest(".card-hover"); + if (!card) return; + card.style.setProperty("--rx", "0deg"); + card.style.setProperty("--ry", "0deg"); + }); + } + + /* -------------------- MAGNETIC BUTTONS -------------------- */ + function initMagneticButtons() { + if (prefersReduced || !window.matchMedia("(pointer: fine)").matches) return; + const STRENGTH = 0.28, MAX = 7; + document.addEventListener("pointermove", (e) => { + const btn = e.target.closest(".btn"); + if (!btn) return; + const r = btn.getBoundingClientRect(); + let dx = (e.clientX - (r.left + r.width / 2)) * STRENGTH; + let dy = (e.clientY - (r.top + r.height / 2)) * STRENGTH; + dx = Math.max(-MAX, Math.min(MAX, dx)); + dy = Math.max(-MAX, Math.min(MAX, dy)); + btn.style.transform = `translate(${dx.toFixed(1)}px, ${dy.toFixed(1)}px) scale(1.03)`; + }); + document.addEventListener("pointerout", (e) => { + const btn = e.target.closest(".btn"); + if (!btn) return; + btn.style.transform = ""; + }); + } + + /* -------------------- INIT -------------------- */ + document.addEventListener("DOMContentLoaded", () => { + document.body.classList.add("js-ready"); + if (window.gsap && window.ScrollTrigger) gsap.registerPlugin(ScrollTrigger); + + renderMike(); + renderNico(); + if (window.lucide) window.lucide.createIcons(); + + initPhotoSlots(); + initTheme(); + initMobileMenu(); + initParis(); + initLenis(); + initMotion(); + initScrollProgress(); + initParallax(); + initCardTilt(); + initMagneticButtons(); + initRouting(); + + // Detect the upload server and restore any images already saved on disk. + loadServerImages().then(() => { + restoreSlotImages(document); + if (window.ScrollTrigger) ScrollTrigger.refresh(); + }); + + window.addEventListener("resize", () => { + restoreSlotImages(document); + }); + }); +})(); diff --git a/public/css/styles.css b/public/css/styles.css new file mode 100644 index 0000000..9addea2 --- /dev/null +++ b/public/css/styles.css @@ -0,0 +1,496 @@ +/* ============================================================ + PlayBull — Trilogy Hub Edition + Luxury gold-on-ink theme · mobile-first · animated arcade + ============================================================ */ +:root { + /* TrilogyHub palette */ + --bg: #0a0a0a; + --bg-2: #111111; + --bg-3: #161616; + --surface: #161616; + --surface-2: #1e1e1e; + --surface-3: #242424; + --line: rgba(201, 168, 76, 0.18); + --line-soft: rgba(255, 255, 255, 0.07); + --text: #f4f1e9; + --muted: #a8a39a; + --faint: #6e6a62; + + --gold: #c9a84c; + --gold-soft: #d8bd6e; + --gold-deep: #9a7c26; + --green: #46c98b; + --green-soft: rgba(70, 201, 139, 0.14); + --red: #e0625e; + --red-soft: rgba(224, 98, 94, 0.14); + + /* legacy aliases kept so existing inline styles stay on-brand */ + --accent: #c9a84c; + --accent-2: #d8bd6e; + --purple: #c9a84c; + + --radius: 16px; + --ease: cubic-bezier(0.16, 1, 0.3, 1); + --safe-b: env(safe-area-inset-bottom, 0px); + --font-display: 'Cabinet Grotesk', ui-sans-serif, system-ui, sans-serif; + --font-body: 'Satoshi', ui-sans-serif, system-ui, sans-serif; +} + +* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; } +html, body { margin: 0; padding: 0; } +html { -webkit-text-size-adjust: 100%; } +body { + font-family: var(--font-body); + background: + radial-gradient(1100px 560px at 50% -260px, rgba(201, 168, 76, 0.10), transparent 60%), + radial-gradient(800px 500px at 100% 110%, rgba(201, 168, 76, 0.05), transparent 60%), + var(--bg); + color: var(--text); + min-height: 100dvh; + padding-bottom: calc(76px + var(--safe-b)); + overscroll-behavior-y: none; + -webkit-font-smoothing: antialiased; + line-height: 1.5; +} +/* fine grain texture overlay for depth */ +body::before { + content: ""; position: fixed; inset: 0; z-index: 0; pointer-events: none; + opacity: 0.025; mix-blend-mode: overlay; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); +} +#app, .topbar, .ticker, .bottom-nav, .modal-backdrop, .toast-wrap { position: relative; z-index: 1; } + +h1 { font-size: clamp(1.45rem, 5vw, 1.75rem); margin: 0; font-family: var(--font-display); font-weight: 800; letter-spacing: -0.01em; } +h2 { font-size: 1rem; margin: 18px 0 8px; color: var(--muted); font-weight: 700; letter-spacing: 0.01em; } +h2 small { color: var(--faint); font-weight: 500; } +small { font-weight: 400; } +button { font-family: inherit; cursor: pointer; border: none; } +.accent { color: var(--gold); } + +body.pb-embed { padding-bottom: calc(76px + var(--safe-b)); } +body.pb-embed main { padding-top: 10px; } + +/* ---------- Topbar ---------- */ +.topbar { + position: sticky; top: 0; z-index: 40; + display: flex; align-items: center; justify-content: space-between; + padding: 12px clamp(14px, 4vw, 22px); + padding-top: max(12px, env(safe-area-inset-top)); + background: linear-gradient(180deg, rgba(10, 10, 10, 0.92), rgba(10, 10, 10, 0.7)); + backdrop-filter: blur(16px) saturate(1.2); + border-bottom: 1px solid var(--line); +} +.brand { display: flex; align-items: center; gap: 10px; font-family: var(--font-display); font-weight: 800; font-size: 1.2rem; letter-spacing: -0.01em; } +.brand-logo { + font-size: 1.4rem; display: grid; place-items: center; width: 36px; height: 36px; + border-radius: 10px; background: radial-gradient(circle at 30% 25%, rgba(201,168,76,.3), rgba(201,168,76,.06)); + border: 1px solid var(--line); + filter: drop-shadow(0 0 10px rgba(201, 168, 76, 0.4)); +} +.brand .accent, .brand-name .accent { color: var(--gold); } +.topbar-right { display: flex; align-items: center; gap: 10px; } +.balance-chip { + display: flex; align-items: center; gap: 6px; + background: linear-gradient(135deg, rgba(201,168,76,.16), rgba(201,168,76,.04)); + border: 1px solid var(--line); padding: 7px 13px; border-radius: 999px; + font-weight: 800; font-variant-numeric: tabular-nums; color: var(--gold-soft); +} +.balance-chip .coin { filter: drop-shadow(0 0 6px var(--gold)); } +.btn-auth { + background: var(--gold); color: #0a0a0a; + padding: 9px 18px; border-radius: 999px; font-weight: 800; font-size: .9rem; + box-shadow: 0 8px 24px -8px rgba(201, 168, 76, 0.6); + transition: transform .3s var(--ease), box-shadow .3s var(--ease); +} +.btn-auth:active { transform: scale(.96); } + +/* ---------- Ticker ---------- */ +.ticker { overflow: hidden; border-bottom: 1px solid var(--line-soft); background: rgba(17,17,17,.6); height: 32px; } +.ticker-track { display: flex; gap: 30px; white-space: nowrap; align-items: center; height: 32px; padding-left: 100%; animation: scroll 40s linear infinite; } +.ticker-track:hover { animation-play-state: paused; } +.ticker-item { font-size: .76rem; color: var(--muted); letter-spacing: .01em; } +.ticker-item b { color: var(--gold-soft); } +@keyframes scroll { to { transform: translateX(-100%); } } + +/* ---------- Views ---------- */ +main { padding: clamp(14px, 4vw, 22px); max-width: 760px; margin: 0 auto; } +.view { display: none; } +.view.active { display: block; animation: viewIn .4s var(--ease); } +@keyframes viewIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } } +.view-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; } +.view-head h1 { display: flex; align-items: center; gap: 4px; } +.live-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--green); margin: 0 4px 0 8px; box-shadow: 0 0 0 0 var(--green); animation: pulse 1.6s infinite; } +@keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(70,201,139,.6);} 70%{ box-shadow: 0 0 0 9px rgba(70,201,139,0);} 100%{ box-shadow:0 0 0 0 rgba(70,201,139,0);} } + +/* ---------- Segmented control ---------- */ +.seg { display: inline-flex; background: var(--surface-2); border: 1px solid var(--line-soft); border-radius: 999px; padding: 3px; } +.seg-btn { background: transparent; color: var(--muted); padding: 7px 15px; border-radius: 999px; font-weight: 700; font-size: .82rem; transition: color .25s, background .25s; } +.seg-btn.active { background: var(--gold); color: #0a0a0a; box-shadow: 0 4px 12px -4px rgba(201,168,76,.6); } + +/* ---------- Asset list ---------- */ +.asset-list { display: flex; flex-direction: column; gap: 9px; } +.asset-row { + display: grid; grid-template-columns: 44px 1fr auto; gap: 13px; align-items: center; + background: var(--surface); border: 1px solid var(--line-soft); border-radius: 14px; padding: 13px 15px; + transition: transform .12s var(--ease), border-color .25s, box-shadow .25s; cursor: pointer; +} +.asset-row:hover { border-color: var(--line); box-shadow: 0 10px 30px -18px rgba(0,0,0,.8); } +.asset-row:active { transform: scale(.985); } +.asset-emoji { font-size: 1.45rem; width: 44px; height: 44px; display: grid; place-items: center; background: var(--surface-2); border-radius: 12px; border: 1px solid var(--line-soft); } +.asset-info { min-width: 0; } +.asset-info .sym { font-weight: 800; font-family: var(--font-display); letter-spacing: .01em; } +.asset-info .name { color: var(--muted); font-size: .76rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.asset-price { text-align: right; } +.asset-price .px { font-weight: 800; font-variant-numeric: tabular-nums; } +.asset-price .chg { font-size: .76rem; font-weight: 700; font-variant-numeric: tabular-nums; } +.up { color: var(--green); } .down { color: var(--red); } +.flash-up { animation: fu .7s var(--ease); } .flash-down { animation: fd .7s var(--ease); } +@keyframes fu { 0% { background: var(--green-soft); border-color: var(--green);} 100%{ background: var(--surface); border-color: var(--line-soft);} } +@keyframes fd { 0% { background: var(--red-soft); border-color: var(--red);} 100%{ background: var(--surface); border-color: var(--line-soft);} } +.badge-halt { font-size: .6rem; background: var(--red-soft); color: var(--red); padding: 2px 6px; border-radius: 6px; margin-left: 6px; vertical-align: middle; font-weight: 700; } + +/* ---------- Games grid ---------- */ +.games-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 13px; } +.game-card { + position: relative; border-radius: 18px; padding: 16px; min-height: 150px; + display: flex; flex-direction: column; justify-content: space-between; + background: linear-gradient(165deg, var(--surface-2), var(--surface)); + border: 1px solid var(--line-soft); overflow: hidden; cursor: pointer; + transition: transform .25s var(--ease), border-color .3s, box-shadow .3s; +} +.game-card:hover { transform: translateY(-4px); border-color: var(--line); box-shadow: 0 22px 50px -26px rgba(0,0,0,.9); } +.game-card:active { transform: scale(.97); } +.game-card .g-emoji { font-size: 2.5rem; filter: drop-shadow(0 6px 14px rgba(0,0,0,.5)); transition: transform .4s var(--ease); } +.game-card:hover .g-emoji { transform: translateY(-3px) rotate(-6deg) scale(1.08); } +.game-card .g-name { font-weight: 800; font-size: 1.06rem; margin-top: 10px; font-family: var(--font-display); } +.game-card .g-desc { color: var(--muted); font-size: .73rem; margin-top: 2px; line-height: 1.35; } +.game-card .g-tag { position: absolute; top: 12px; right: 12px; font-size: .58rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--gold); border: 1px solid var(--line); border-radius: 999px; padding: 3px 8px; background: rgba(201,168,76,.08); } +.game-card::after { content: ""; position: absolute; inset: 0; background: radial-gradient(150px 100px at 100% 0%, var(--glow, rgba(201,168,76,.22)), transparent 70%); pointer-events: none; } +.game-card::before { content: ""; position: absolute; inset: 0; background: linear-gradient(120deg, transparent 30%, rgba(255,255,255,.05) 50%, transparent 70%); transform: translateX(-120%); transition: transform .7s var(--ease); } +.game-card:hover::before { transform: translateX(120%); } + +/* ---------- Buttons ---------- */ +.btn { padding: 14px 16px; border-radius: 13px; font-weight: 800; font-size: .95rem; width: 100%; color: var(--text); background: var(--surface-2); border: 1px solid var(--line-soft); transition: transform .12s var(--ease), box-shadow .3s, filter .2s; } +.btn:active { transform: scale(.97); } +.btn-green { background: linear-gradient(135deg, #4fd99a, #2fa873); color: #052012; box-shadow: 0 8px 22px -8px rgba(70,201,139,.5); } +.btn-red { background: linear-gradient(135deg, #ec716d, #c44743); color: #fff; box-shadow: 0 8px 22px -8px rgba(224,98,94,.5); } +.btn-accent { background: var(--gold); color: #0a0a0a; box-shadow: 0 8px 22px -8px rgba(201,168,76,.6); } +.btn-gold { background: linear-gradient(135deg, var(--gold-soft), var(--gold-deep)); color: #1a1305; box-shadow: 0 8px 22px -8px rgba(201,168,76,.6); } +.btn-ghost { background: var(--surface); border-color: var(--line); color: var(--text); } +.btn-ghost:active { filter: brightness(1.15); } +.btn:disabled { opacity: .4; pointer-events: none; } +.btn-row { display: flex; gap: 10px; } +.link { background: none; color: var(--gold); text-decoration: underline; text-underline-offset: 2px; padding: 0; font-weight: 700; } + +/* ---------- Inputs ---------- */ +.field { margin-bottom: 13px; } +.field label { display: block; font-size: .76rem; color: var(--muted); margin-bottom: 6px; font-weight: 600; letter-spacing: .01em; } +input, select { + width: 100%; padding: 13px 14px; border-radius: 12px; background: var(--bg-2); + border: 1px solid var(--line-soft); color: var(--text); font-size: 1rem; font-family: inherit; + font-variant-numeric: tabular-nums; transition: border-color .25s, box-shadow .25s; +} +input:focus, select:focus { outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px rgba(201,168,76,.15); } +.chips { display: flex; gap: 8px; flex-wrap: wrap; } +.chip { background: var(--surface-2); border: 1px solid var(--line-soft); color: var(--text); padding: 8px 13px; border-radius: 999px; font-weight: 700; font-size: .82rem; transition: all .2s var(--ease); } +.chip:active { transform: scale(.94); } +.chip.active { border-color: var(--gold); background: rgba(201,168,76,.18); color: var(--gold-soft); } + +/* ---------- Cards ---------- */ +.card { background: var(--surface); border: 1px solid var(--line-soft); border-radius: var(--radius); padding: 16px; margin-bottom: 12px; } +.stat-row { display: flex; justify-content: space-between; align-items: center; padding: 9px 0; border-bottom: 1px solid var(--line-soft); gap: 10px; } +.stat-row:last-child { border: none; } +.stat-row .k { color: var(--muted); } +.stat-row .v { font-weight: 800; font-variant-numeric: tabular-nums; } +.big-num { font-size: clamp(1.9rem, 8vw, 2.3rem); font-weight: 900; font-family: var(--font-display); font-variant-numeric: tabular-nums; letter-spacing: -0.02em; } + +/* ---------- Chart ---------- */ +.chart-wrap { background: var(--bg-2); border: 1px solid var(--line-soft); border-radius: 14px; padding: 8px; margin-bottom: 14px; } +canvas { display: block; width: 100%; } + +/* ---------- Modal ---------- */ +.modal-backdrop:not([hidden]) { + position: fixed; inset: 0; background: rgba(5,5,5,.78); backdrop-filter: blur(8px); z-index: 100; + display: flex; align-items: flex-end; justify-content: center; + animation: backIn .25s ease; +} +@keyframes backIn { from { opacity: 0; } to { opacity: 1; } } +.modal-backdrop[hidden] { display: none !important; } +.modal { + background: linear-gradient(180deg, var(--surface), var(--bg-2)); + border: 1px solid var(--line); border-top-color: var(--line); + border-radius: 24px 24px 0 0; width: 100%; max-width: 580px; max-height: 93dvh; overflow-y: auto; + padding: 20px; padding-bottom: calc(22px + var(--safe-b)); + box-shadow: 0 -20px 60px -20px rgba(0,0,0,.8); + animation: slideUp .34s var(--ease); +} +@keyframes slideUp { from { transform: translateY(100%); } to { transform: none; } } +@media (min-width: 600px) { .modal-backdrop { align-items: center; } .modal { border-radius: 22px; } } +.modal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; gap: 10px; } +.modal-head h2 { margin: 0; color: var(--text); font-size: 1.3rem; font-family: var(--font-display); font-weight: 800; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } +.modal-close { background: var(--surface-2); width: 34px; height: 34px; border-radius: 50%; color: var(--muted); font-size: 1.05rem; flex-shrink: 0; transition: background .2s, color .2s; } +.modal-close:hover { background: var(--red-soft); color: var(--red); } +.handle { width: 42px; height: 4px; background: var(--line); border-radius: 99px; margin: -8px auto 16px; } + +/* ---------- Bottom nav ---------- */ +.bottom-nav { + position: fixed; bottom: 0; left: 0; right: 0; z-index: 50; + display: grid; grid-template-columns: repeat(5, 1fr); + background: linear-gradient(180deg, rgba(13,13,13,.86), rgba(10,10,10,.97)); + backdrop-filter: blur(18px); border-top: 1px solid var(--line); + padding-bottom: var(--safe-b); +} +.nav-btn { background: none; color: var(--faint); font-size: .64rem; font-weight: 700; padding: 10px 0 9px; display: flex; flex-direction: column; align-items: center; gap: 4px; letter-spacing: .02em; transition: color .2s; position: relative; } +.nav-btn span { font-size: 1.3rem; filter: grayscale(.6) opacity(.7); transition: transform .25s var(--ease), filter .25s; } +.nav-btn.active { color: var(--gold-soft); } +.nav-btn.active span { filter: none; transform: translateY(-3px) scale(1.12); } +.nav-btn.active::after { content: ""; position: absolute; top: 4px; width: 26px; height: 3px; border-radius: 99px; background: var(--gold); box-shadow: 0 0 10px var(--gold); } + +/* ---------- Toast ---------- */ +.toast-wrap { position: fixed; top: 70px; left: 0; right: 0; z-index: 200; display: flex; flex-direction: column; align-items: center; gap: 8px; pointer-events: none; padding: 0 12px; } +.toast { background: var(--surface-2); border: 1px solid var(--line); padding: 12px 18px; border-radius: 13px; font-weight: 700; font-size: .9rem; box-shadow: 0 14px 40px rgba(0,0,0,.6); animation: toastIn .35s var(--ease); max-width: 92%; text-align: center; } +.toast.win { border-color: var(--green); background: linear-gradient(135deg, #123322, var(--surface-2)); color: #d6f7e6; } +.toast.lose { border-color: var(--red); background: linear-gradient(135deg, #331616, var(--surface-2)); color: #f7d6d6; } +@keyframes toastIn { from { transform: translateY(-18px) scale(.95); opacity: 0; } to { transform: none; opacity: 1; } } + +/* ---------- Feed ---------- */ +.feed-list { display: flex; flex-direction: column; gap: 6px; } +.feed-item { display: flex; gap: 9px; align-items: center; font-size: .85rem; padding: 10px 13px; background: var(--surface); border: 1px solid var(--line-soft); border-radius: 11px; } +.feed-item .ago { color: var(--faint); margin-left: auto; font-size: .7rem; white-space: nowrap; } + +/* ---------- Leaderboard ---------- */ +.lb-row { display: grid; grid-template-columns: 36px 1fr auto; gap: 11px; align-items: center; padding: 12px 14px; background: var(--surface); border: 1px solid var(--line-soft); border-radius: 13px; margin-bottom: 7px; } +.lb-rank { font-weight: 900; color: var(--faint); font-family: var(--font-display); font-size: 1.05rem; text-align: center; } +.lb-row.me { border-color: var(--gold); background: linear-gradient(135deg, rgba(201,168,76,.08), var(--surface)); } +.lb-user { display: flex; align-items: center; gap: 10px; min-width: 0; } +.lb-user b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + +/* ============================================================ + GAME: CHICKEN ROAD — animated scene + ============================================================ */ +.chicken-stage { + position: relative; border-radius: 18px; overflow: hidden; + border: 1px solid var(--line); margin-bottom: 14px; + background: linear-gradient(180deg, #0d1b12 0%, #0a0a0a 60%); + box-shadow: inset 0 0 60px rgba(0,0,0,.6); +} +.chicken-track { + display: flex; gap: 0; overflow-x: auto; padding: 0; scroll-behavior: smooth; + scrollbar-width: none; -webkit-overflow-scrolling: touch; +} +.chicken-track::-webkit-scrollbar { display: none; } +.lane { + min-width: 78px; height: 200px; position: relative; flex: 0 0 auto; + display: flex; flex-direction: column; align-items: center; justify-content: flex-end; + background: + repeating-linear-gradient(0deg, #1c1c1c 0 22px, #181818 22px 44px); + border-right: 2px dashed rgba(201,168,76,.22); +} +.lane:first-child { border-left: 2px solid rgba(201,168,76,.3); } +.lane.curb { background: repeating-linear-gradient(0deg, #15301f 0 14px, #112818 14px 28px); min-width: 60px; } +.lane.curb .mult-flag { color: var(--green); border-color: var(--green); background: var(--green-soft); } +.lane .mult-flag { + position: absolute; top: 10px; left: 50%; transform: translateX(-50%); + font-size: .72rem; font-weight: 800; color: var(--gold-soft); font-family: var(--font-display); + background: rgba(10,10,10,.7); border: 1px solid var(--line); border-radius: 999px; padding: 3px 8px; + white-space: nowrap; transition: all .3s var(--ease); z-index: 3; +} +.lane.passed { background: repeating-linear-gradient(0deg, #16291d 0 22px, #122318 22px 44px); } +.lane.passed .mult-flag { background: var(--green-soft); border-color: var(--green); color: #8df0bd; } +.lane.current { background: repeating-linear-gradient(0deg, #2a2410 0 22px, #221d0c 22px 44px); } +.lane.current::after { content: ""; position: absolute; inset: 0; box-shadow: inset 0 0 0 2px var(--gold); border-radius: 2px; animation: laneGlow 1.2s ease-in-out infinite; } +@keyframes laneGlow { 0%,100% { opacity: .4; } 50% { opacity: 1; } } +.lane.dead { background: repeating-linear-gradient(0deg, #2a1212 0 22px, #221010 22px 44px); } +.lane .car { + position: absolute; top: -60px; left: 50%; transform: translateX(-50%); + font-size: 2rem; filter: drop-shadow(0 6px 8px rgba(0,0,0,.6)); +} +.lane.dead .car { animation: carSlam .5s var(--ease) forwards; } +@keyframes carSlam { 0% { top: -60px; } 60% { top: 78px; } 75% { top: 64px; } 100% { top: 72px; } } +/* the chicken hero rides on top of the stage */ +.chicken-hero { + position: absolute; bottom: 16px; left: 22px; font-size: 2.2rem; z-index: 5; + pointer-events: none; + filter: drop-shadow(0 8px 10px rgba(0,0,0,.6)); + will-change: transform, left; +} +.chicken-hero.hop { animation: hop .35s var(--ease); } +@keyframes hop { 0% { transform: translateY(0) scaleY(1); } 30% { transform: translateY(-46px) scaleY(1.15) scaleX(.9); } 70% { transform: translateY(-46px) scaleY(1.1); } 100% { transform: translateY(0) scaleY(1); } } +.chicken-hero.idle { animation: bob 1.4s ease-in-out infinite; } +@keyframes bob { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-5px); } } +.chicken-hud { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 10px 0; } +.chicken-hud .mult-big { font-family: var(--font-display); font-weight: 900; color: var(--gold); font-size: 1.6rem; font-variant-numeric: tabular-nums; } +.stage-shake { animation: shake .5s var(--ease); } +@keyframes shake { 0%,100% { transform: translateX(0); } 20% { transform: translateX(-8px); } 40% { transform: translateX(7px); } 60% { transform: translateX(-5px); } 80% { transform: translateX(4px); } } +.boom-flash { position: absolute; inset: 0; background: radial-gradient(circle, rgba(224,98,94,.5), transparent 70%); opacity: 0; pointer-events: none; z-index: 6; } +.boom-flash.go { animation: boomFlash .5s ease; } +@keyframes boomFlash { 0% { opacity: 1; } 100% { opacity: 0; } } + +/* ============================================================ + GAME: MINES 10x10 — 3D card flips + ============================================================ */ +.mines-grid { display: grid; grid-template-columns: repeat(10, 1fr); gap: 4px; margin: 12px 0; perspective: 700px; } +.tile { + aspect-ratio: 1; border-radius: 8px; position: relative; transform-style: preserve-3d; + transition: transform .4s var(--ease); cursor: pointer; +} +.tile:active { transform: scale(.9); } +.tile .face { position: absolute; inset: 0; border-radius: 8px; display: grid; place-items: center; font-size: clamp(.7rem, 2.6vw, 1rem); backface-visibility: hidden; } +.tile .face.back { + background: linear-gradient(160deg, var(--surface-3), var(--surface-2)); + border: 1px solid var(--line-soft); color: var(--faint); +} +.tile .face.back::before { content: ""; position: absolute; inset: 4px; border-radius: 5px; border: 1px solid rgba(201,168,76,.12); } +.tile .face.front { transform: rotateY(180deg); } +.tile.flipped { transform: rotateY(180deg); } +.tile.safe .face.front { background: radial-gradient(circle at 50% 35%, rgba(70,201,139,.35), var(--green-soft)); border: 1px solid var(--green); animation: gemPop .45s var(--ease); } +@keyframes gemPop { 0% { transform: rotateY(180deg) scale(.4); } 70% { transform: rotateY(180deg) scale(1.18); } 100% { transform: rotateY(180deg) scale(1); } } +.tile.bomb .face.front { background: radial-gradient(circle at 50% 35%, rgba(224,98,94,.45), var(--red-soft)); border: 1px solid var(--red); } +.tile.bomb.hit { animation: bombHit .5s var(--ease); z-index: 2; } +@keyframes bombHit { 0% { transform: rotateY(180deg) scale(1); } 40% { transform: rotateY(180deg) scale(1.4); } 100% { transform: rotateY(180deg) scale(1); } } +.tile.dim { opacity: .3; } + +/* ============================================================ + GAME: CRASH — canvas rocket + ============================================================ */ +.crash-stage { position: relative; border-radius: 18px; overflow: hidden; border: 1px solid var(--line); margin-bottom: 14px; background: linear-gradient(180deg, #0c1020, #0a0a0a); } +.crash-stage canvas { width: 100%; height: 240px; display: block; } +.crash-overlay { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; pointer-events: none; } +.crash-mult { font-size: clamp(2.6rem, 14vw, 3.6rem); font-weight: 900; font-family: var(--font-display); font-variant-numeric: tabular-nums; color: var(--text); text-shadow: 0 4px 30px rgba(0,0,0,.6); transition: color .2s, transform .15s; } +.crash-mult.boom { color: var(--red); animation: crashShake .5s var(--ease); } +@keyframes crashShake { 0%,100% { transform: translateX(0); } 25% { transform: translate(-6px,3px) rotate(-2deg); } 50% { transform: translate(6px,-2px) rotate(2deg); } 75% { transform: translate(-4px,2px); } } +.crash-sub { color: var(--muted); font-weight: 700; font-size: .85rem; margin-top: 6px; } + +/* legacy crash display fallback */ +.crash-display { text-align: center; padding: 28px 0; background: var(--bg-2); border-radius: 16px; border: 1px solid var(--line-soft); margin-bottom: 14px; } + +/* ============================================================ + GAME: DICE — animated roll bar + ============================================================ */ +.dice-bar-wrap { position: relative; margin: 18px 0 30px; padding: 0 6px; } +.dice-bar { position: relative; height: 14px; border-radius: 99px; overflow: hidden; background: var(--red); } +.dice-bar .win-zone { position: absolute; top: 0; bottom: 0; background: linear-gradient(90deg, #4fd99a, #2fa873); transition: all .25s var(--ease); } +.dice-marker { + position: absolute; top: 50%; width: 34px; height: 34px; border-radius: 12px; + background: var(--gold); color: #0a0a0a; display: grid; place-items: center; + font-weight: 900; font-size: .72rem; font-family: var(--font-display); + transform: translate(-50%, -50%); box-shadow: 0 6px 16px rgba(0,0,0,.5); z-index: 3; + transition: left .08s linear; +} +.dice-marker.settle { transition: left .5s cubic-bezier(.34,1.56,.64,1); } +.dice-scale { display: flex; justify-content: space-between; margin-top: 8px; color: var(--faint); font-size: .68rem; font-weight: 700; } +.dice-result { font-family: var(--font-display); font-weight: 900; font-size: 2.4rem; text-align: center; font-variant-numeric: tabular-nums; margin: 6px 0; transition: color .3s; } + +/* ============================================================ + GAME: COINFLIP — true 3D coin + ============================================================ */ +.coin-stage { display: grid; place-items: center; height: 200px; perspective: 900px; margin: 10px 0; } +.coin { position: relative; width: 120px; height: 120px; transform-style: preserve-3d; transition: transform .1s; } +.coin .side { + position: absolute; inset: 0; border-radius: 50%; display: grid; place-items: center; + font-size: 3rem; backface-visibility: hidden; + background: radial-gradient(circle at 35% 30%, var(--gold-soft), var(--gold-deep)); + border: 4px solid #8a6e1f; box-shadow: inset 0 0 18px rgba(0,0,0,.4), 0 14px 30px -10px rgba(0,0,0,.7); + color: #2a1d00; +} +.coin .heads { transform: translateZ(2px); } +.coin .tails { transform: rotateY(180deg) translateZ(2px); } +.coin.spin-heads { animation: spinHeads 2.4s cubic-bezier(.3,.1,.2,1) forwards; } +.coin.spin-tails { animation: spinTails 2.4s cubic-bezier(.3,.1,.2,1) forwards; } +@keyframes spinHeads { 0% { transform: rotateY(0) translateY(0); } 50% { transform: rotateY(1440deg) translateY(-50px); } 100% { transform: rotateY(2520deg) translateY(0); } } +@keyframes spinTails { 0% { transform: rotateY(0) translateY(0); } 50% { transform: rotateY(1440deg) translateY(-50px); } 100% { transform: rotateY(2700deg) translateY(0); } } + +/* ---------- misc ---------- */ +.login-hint { text-align: center; color: var(--muted); margin-top: 24px; padding: 22px; background: var(--surface); border: 1px solid var(--line-soft); border-radius: 14px; } +.muted { color: var(--muted); } +.center { text-align: center; } +.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } +.pill { display: inline-block; padding: 3px 9px; border-radius: 999px; font-size: .7rem; font-weight: 800; } +.pill.long { background: var(--green-soft); color: var(--green); } +.pill.short { background: var(--red-soft); color: var(--red); } +.spacer { height: 10px; } +.result-emoji { font-size: 3rem; text-align: center; margin: 8px 0; } +.stat-tile { background: var(--surface); border: 1px solid var(--line-soft); border-radius: 14px; padding: 12px; text-align: center; } +.stat-tile .lbl { color: var(--muted); font-size: .72rem; font-weight: 600; } +.stat-tile .val { font-weight: 900; font-family: var(--font-display); font-size: 1.15rem; margin-top: 2px; font-variant-numeric: tabular-nums; } + +/* ---------- Framed images (Avatar etc.) ---------- */ +.framed-image { overflow: hidden; position: relative; background: var(--surface-2); flex-shrink: 0; } +.framed-image--avatar { aspect-ratio: 1; border-radius: 50%; } +.framed-image img { position: absolute; pointer-events: none; user-select: none; max-width: none; } +.framed-image--avatar-sm { width: 36px; height: 36px; } +.framed-image--avatar-md { width: 48px; height: 48px; } +.framed-image--avatar-lg { width: 120px; height: 120px; } +.framed-image--avatar-xl { width: min(72vw, 260px); height: min(72vw, 260px); } + +.framed-image--gallery { aspect-ratio: 1; border-radius: 14px; } +.framed-image--gallery-sm { width: 80px; height: 80px; } +.framed-image--gallery-md { width: 100%; max-width: 140px; height: auto; aspect-ratio: 1; } +.framed-image--gallery-lg { width: 140px; height: 140px; } +.framed-image--gallery-xl { width: min(72vw, 280px); height: min(72vw, 280px); } + +.framed-image--banner { aspect-ratio: 3 / 1; border-radius: 14px; } +.framed-image--banner-sm { width: 120px; height: 40px; } +.framed-image--banner-md { width: 100%; max-width: 200px; height: auto; aspect-ratio: 3; } +.framed-image--banner-lg { width: 240px; height: 80px; } +.framed-image--banner-xl { width: min(92vw, 360px); height: auto; aspect-ratio: 3; } + +.framed-image--card { aspect-ratio: 2 / 3; border-radius: 12px; } +.framed-image--card-sm { width: 48px; height: 72px; } +.framed-image--card-md { width: 80px; height: 120px; } +.framed-image--card-lg { width: 100px; height: 150px; } +.framed-image--card-xl { width: min(50vw, 200px); height: auto; aspect-ratio: 2/3; } + +.avatar-emoji { display: inline-grid; place-items: center; line-height: 1; } +.avatar-emoji--sm { font-size: 1.35rem; width: 36px; height: 36px; } +.avatar-emoji--md { font-size: 1.6rem; width: 48px; height: 48px; } +.avatar-emoji--lg { font-size: 3.5rem; width: 120px; height: 120px; } + +.profile-avatar-row { display: flex; align-items: center; gap: 16px; margin-bottom: 14px; } +.profile-avatar-actions { display: flex; flex-direction: column; gap: 8px; flex: 1; } +.profile-avatar-actions .btn { width: auto; font-size: .85rem; padding: 10px 14px; } + +.btn-auth--avatar { padding: 0; width: 38px; height: 38px; border-radius: 50%; overflow: hidden; display: grid; place-items: center; background: var(--surface-2); border: 1px solid var(--line); font-size: 1.2rem; box-shadow: none; } +.btn-auth--avatar .framed-image--avatar-sm, +.btn-auth--avatar .avatar-emoji--sm { width: 38px; height: 38px; } + +.account-head { display: flex; align-items: center; gap: 12px; } +.account-head h2 { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; } + +/* ---------- Image position editor ---------- */ +.image-editor-backdrop { z-index: 110; } +.image-editor-modal { max-height: 94dvh; } +.image-editor-hint { font-size: .82rem; margin: 0 0 14px; } +.image-editor-preview-wrap { display: flex; justify-content: center; margin-bottom: 16px; } +.image-editor-preview { touch-action: none; cursor: grab; border: 2px solid var(--line); box-shadow: 0 12px 40px rgba(0,0,0,.35); } +.image-editor-preview:active { cursor: grabbing; } +.image-editor-zoom-field input[type="range"] { padding: 0; height: 6px; -webkit-appearance: none; appearance: none; background: var(--line); border: none; border-radius: 99px; } +.image-editor-zoom-field input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 22px; height: 22px; border-radius: 50%; background: var(--gold); box-shadow: 0 2px 8px rgba(201,168,76,.5); } +.image-editor-zoom-field label { display: flex; justify-content: space-between; align-items: center; } + +/* ---------- Uploads Galerie ---------- */ +.uploads-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; margin-top: 14px; } +.upload-item { display: flex; flex-direction: column; gap: 8px; align-items: stretch; } +.upload-item .framed-image--gallery-md, +.upload-item .framed-image--banner-md, +.upload-item .framed-image--card-md { width: 100%; max-width: none; } +.upload-item-actions { display: flex; gap: 6px; flex-wrap: wrap; } +.upload-item-actions .chip { font-size: .72rem; padding: 5px 8px; } +.uploads-toolbar { display: flex; flex-direction: column; gap: 10px; } +.image-upload-wrap { display: contents; } + +/* range input global (dice etc.) */ +input[type="range"] { -webkit-appearance: none; appearance: none; height: 6px; padding: 0; background: var(--surface-3); border: none; border-radius: 99px; } +input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 24px; height: 24px; border-radius: 50%; background: var(--gold); box-shadow: 0 2px 10px rgba(201,168,76,.5); cursor: pointer; } +input[type="range"]::-moz-range-thumb { width: 24px; height: 24px; border: none; border-radius: 50%; background: var(--gold); box-shadow: 0 2px 10px rgba(201,168,76,.5); cursor: pointer; } + +@media (prefers-reduced-motion: reduce) { + *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; } +} + +/* very small phones */ +@media (max-width: 360px) { + .games-grid { gap: 10px; } + .game-card { min-height: 138px; padding: 13px; } + .lane { min-width: 70px; } +} diff --git a/public/image-editor.js b/public/image-editor.js new file mode 100644 index 0000000..61ce1bf --- /dev/null +++ b/public/image-editor.js @@ -0,0 +1,190 @@ +/* Trilogy Hub — Bild-Positions-Editor (gleicher Rahmen wie Slot-Anzeige) */ +(() => { + "use strict"; + + function computeLayout(imgW, imgH, frameW, frameH, focus, zoom) { + const fx = focus?.x ?? 0.5; + const fy = focus?.y ?? 0.5; + const z = Math.max(1, zoom ?? 1); + const cover = Math.max(frameW / imgW, frameH / imgH); + const scale = cover * z; + const w = imgW * scale; + const h = imgH * scale; + let left = frameW / 2 - fx * w; + let top = frameH / 2 - fy * h; + left = Math.min(0, Math.max(frameW - w, left)); + top = Math.min(0, Math.max(frameH - h, top)); + return { width: w, height: h, left, top }; + } + + function focusFromLayout(imgW, imgH, frameW, frameH, layout, zoom) { + const z = Math.max(1, zoom ?? 1); + const cover = Math.max(frameW / imgW, frameH / imgH); + const w = imgW * cover * z; + const h = imgH * cover * z; + return { + x: Math.min(1, Math.max(0, (frameW / 2 - layout.left) / w)), + y: Math.min(1, Math.max(0, (frameH / 2 - layout.top) / h)), + }; + } + + function applyLayout(img, layout) { + img.style.width = layout.width + "px"; + img.style.height = layout.height + "px"; + img.style.left = layout.left + "px"; + img.style.top = layout.top + "px"; + } + + function loadImage(src) { + return new Promise((resolve, reject) => { + const img = new Image(); + img.onload = () => resolve(img); + img.onerror = () => reject(new Error("Bild konnte nicht geladen werden")); + img.src = src; + }); + } + + function slotFrameSize(slot) { + const cs = getComputedStyle(slot); + let w = slot.offsetWidth; + let h = slot.offsetHeight; + if (w < 40) w = slot.parentElement?.offsetWidth || 320; + if (h < 40) { + const mh = cs.minHeight; + h = mh && mh !== "0px" ? parseFloat(mh) : 220; + } + const isHero = slot.classList.contains("!rounded-none") || slot.closest(".min-h-\\[72vh\\]"); + const maxPreview = isHero ? 400 : 300; + const ar = w / h; + if (w > maxPreview) { w = maxPreview; h = w / ar; } + return { width: Math.round(w), height: Math.round(h), radius: cs.borderRadius, label: slot.dataset.slot || "Bild" }; + } + + async function open({ file, slot, focus, zoom, imageSrc }) { + let src = imageSrc; + let revoke = null; + if (file) { src = URL.createObjectURL(file); revoke = src; } + + const frame = slotFrameSize(slot); + let img; + try { img = await loadImage(src); } + catch (e) { if (revoke) URL.revokeObjectURL(revoke); throw e; } + + const state = { + focus: { x: focus?.x ?? 0.5, y: focus?.y ?? 0.5 }, + zoom: Math.max(1, zoom ?? 1), + dragging: false, lastX: 0, lastY: 0, pinchDist: 0, pinchZoom: 1, + }; + + return new Promise((resolve) => { + const backdrop = document.createElement("div"); + backdrop.className = "img-editor-backdrop"; + backdrop.innerHTML = ` +
+
+

${frame.label} positionieren

+ +
+

So wird das Bild im Rahmen angezeigt — ziehen & zoomen

+
+
+ +
+
+ + +
+ + +
+
`; + + document.body.appendChild(backdrop); + document.body.style.overflow = "hidden"; + + const frameEl = backdrop.querySelector("#ieFrame"); + const imgEl = backdrop.querySelector("#ieImg"); + const zoomInput = backdrop.querySelector("#ieZoom"); + const zoomVal = backdrop.querySelector("#ieZoomVal"); + let layout = { left: 0, top: 0, width: 0, height: 0 }; + + const fw = () => frameEl.clientWidth; + const fh = () => frameEl.clientHeight; + + function syncFromFocus() { + layout = computeLayout(img.naturalWidth, img.naturalHeight, fw(), fh(), state.focus, state.zoom); + applyLayout(imgEl, layout); + } + function syncFocusFromLayout() { + state.focus = focusFromLayout(img.naturalWidth, img.naturalHeight, fw(), fh(), layout, state.zoom); + } + function finish(result) { + document.body.style.overflow = ""; + backdrop.remove(); + if (revoke) URL.revokeObjectURL(revoke); + resolve(result); + } + function setZoom(z) { + const old = { ...layout }; + state.zoom = Math.min(4, Math.max(1, z)); + layout = computeLayout(img.naturalWidth, img.naturalHeight, fw(), fh(), state.focus, state.zoom); + const cx = fw() / 2, cy = fh() / 2; + const rx = (cx - old.left) / old.width; + const ry = (cy - old.top) / old.height; + layout.left = cx - rx * layout.width; + layout.top = cy - ry * layout.height; + layout.left = Math.min(0, Math.max(fw() - layout.width, layout.left)); + layout.top = Math.min(0, Math.max(fh() - layout.height, layout.top)); + syncFocusFromLayout(); + applyLayout(imgEl, layout); + zoomInput.value = state.zoom; + zoomVal.textContent = state.zoom.toFixed(1) + "×"; + } + + imgEl.addEventListener("load", syncFromFocus, { once: true }); + if (imgEl.complete) syncFromFocus(); + + frameEl.addEventListener("pointerdown", (e) => { + if (e.target.closest("button, input")) return; + state.dragging = true; + state.lastX = e.clientX; + state.lastY = e.clientY; + frameEl.setPointerCapture(e.pointerId); + e.preventDefault(); + }); + frameEl.addEventListener("pointermove", (e) => { + if (!state.dragging) return; + layout.left = Math.min(0, Math.max(fw() - layout.width, layout.left + e.clientX - state.lastX)); + layout.top = Math.min(0, Math.max(fh() - layout.height, layout.top + e.clientY - state.lastY)); + state.lastX = e.clientX; + state.lastY = e.clientY; + applyLayout(imgEl, layout); + syncFocusFromLayout(); + }); + frameEl.addEventListener("pointerup", () => { state.dragging = false; }); + frameEl.addEventListener("pointercancel", () => { state.dragging = false; }); + frameEl.addEventListener("wheel", (e) => { e.preventDefault(); setZoom(state.zoom + (e.deltaY > 0 ? -0.08 : 0.08)); }, { passive: false }); + frameEl.addEventListener("touchstart", (e) => { + if (e.touches.length === 2) { + state.pinchDist = Math.hypot(e.touches[0].clientX - e.touches[1].clientX, e.touches[0].clientY - e.touches[1].clientY); + state.pinchZoom = state.zoom; + } + }, { passive: true }); + frameEl.addEventListener("touchmove", (e) => { + if (e.touches.length === 2 && state.pinchDist > 0) { + e.preventDefault(); + const dist = Math.hypot(e.touches[0].clientX - e.touches[1].clientX, e.touches[0].clientY - e.touches[1].clientY); + setZoom(state.pinchZoom * (dist / state.pinchDist)); + } + }, { passive: false }); + + zoomInput.addEventListener("input", () => setZoom(+zoomInput.value)); + backdrop.addEventListener("click", (e) => { if (e.target === backdrop) finish(null); }); + backdrop.querySelector(".img-editor-close").onclick = () => finish(null); + backdrop.querySelector('[data-act="reset"]').onclick = () => { state.focus = { x: 0.5, y: 0.5 }; state.zoom = 1; setZoom(1); }; + backdrop.querySelector('[data-act="save"]').onclick = () => { syncFocusFromLayout(); finish({ focus: { ...state.focus }, zoom: state.zoom }); }; + }); + } + + window.TrilogyImageEditor = { open, computeLayout, applyLayout }; +})(); diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..57b7d14 --- /dev/null +++ b/public/index.html @@ -0,0 +1,880 @@ + + + + + + Trilogy Hub — Three Hustlers. One Vision. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+ + + + +
+ +
+ +
+
+

Trees · Properties · Markets

+

+ Three Hustlers.
One Vision. +

+

+ Trees. Properties. Markets. We don't just talk — we build. +

+
+ + +
+ + +
+
+
+
Magic Mike
+ Magic Mike + Magic Mike +
+
+

Magic Mike

+

Founder · Magic Tree Co.

+
+
+
+
+
Nico Gonzales
+ Nico Gonzales + Nico Gonzales +
+
+

Nico Gonzales

+

Broker · NovaTerra Immobilien

+
+
+
+
+
Paris
+ Paris + Paris +
+
+

Paris

+

Strategist · PG Trading Management

+
+
+
+
+
+ + +
+
+
+

Our Story

+

It started with a handshake and a vision.

+

+ Mike plants the seeds — literally. Nico turns land into legacy. Paris reads the market like a map. + Together, we invest in each other's ventures and grow as one unit. +

+

+ PG Trading Management finances stakes in Nico's real estate portfolio. Magic Tree supplies rare ornamental + trees to Nico's high-end property projects. Three businesses. One ecosystem. +

+
+
+
Team Photo
+ Team photo + Team Photo +
+
+
+ + +
+
+

The Trilogy

+

Three founders, three crafts.

+
+
+
+ +

Magic Mike

+

Magic Tree Co.

+

Rare and ornamental trees for luxury gardens — from Japanese Maples to 300-year-old olive trees.

+ +
+
+ +

Nico Gonzales

+

NovaTerra Immobilien

+

Premium real estate across Baden-Württemberg — buying, selling, and developing property into legacy.

+ +
+
+ +

Paris

+

PG Trading Management

+

Real markets, no risk, full thrill. A paper-trading dashboard powered by live-simulated prices.

+ +
+
+
+
+ + + + +
+ +
+
+
Hero Background
+ Magic Tree Co. hero +
+
+
+

Magic Tree Co.

+

Every Garden Tells a Story

+

Premium ornamental trees, delivered with craftsmanship and a guarantee.

+
+
+ + +
+
+
Mike's Portrait
+ Mike portrait + Mike's Portrait +
+
+

About Mike

+

Where nature meets craftsmanship.

+

+ Mike has been cultivating rare and ornamental trees for over a decade. From Japanese Maples to Giant + Sequoias, every tree he sells carries a story and a guarantee. Magic Tree Co. is more than a nursery — + it's where nature meets craftsmanship. +

+
+
+ + +
+
+
+

The Collection

+

Featured Trees

+
+
+
+
+ + +
+
+

Word of Mouth

+

Customer Reviews

+
+
+
+ + +
+
+
+

Happy Customers

+

Their Gardens, Transformed

+
+
+
+
+
+ + + + +
+ +
+
+
Hero Background
+ NovaTerra hero +
+
+
+

NovaTerra Immobilien · New Ground. New Possibilities.

+

Your Property. Your Legacy.

+

Premium real estate, brokered with discretion and results.

+
+
+ + +
+
+

About Nico

+

Closing premium deals across the region.

+

+ Nico Gonzales has been closing premium real estate deals across Baden-Württemberg for years. With a network + spanning developers, investors, and private buyers, NovaTerra Immobilien is your partner for buying, selling, + and developing property — backed by the investment muscle of PG Trading Management. +

+
+
+
Nico's Headshot
+ Nico headshot + Nico's Headshot +
+
+ + +
+
+
+

Portfolio

+

Featured Listings

+
+
+
+
+ + +
+
+

Trusted By

+

Client Testimonials

+
+
+
+ + +
+
+
+

Moments

+

Deals & Handshakes

+
+
+
+
+
+ + + + +
+ +
+
+ +

PG Trading Management

+

Your Portfolio. Your Game.

+

Real markets. No risk. Full thrill.

+
+
+

Member Login

+

Demo access — user: paris / pass: trading123

+ + + + + + +
+
+ + + +
+ + + + +
+ + + + +
+ +
+ + +
+
+
+ + TrilogyHub +
+ +
+
+ Trilogy Hub © 2025 — Built by three, grown together. +
+
+ + + + + + + + diff --git a/public/js/app.js b/public/js/app.js new file mode 100644 index 0000000..315bf88 --- /dev/null +++ b/public/js/app.js @@ -0,0 +1,1225 @@ +// ===================== PlayBull Frontend ===================== +import { renderAvatar, renderUploadItem, hydrateFramedImages, isImageAvatar, avatarEmoji } from './framed-image.js'; +import { uploadImageWithEditor, repositionImageWithEditor, appendPositionFields } from './upload-helper.js'; + +const $ = (s, r = document) => r.querySelector(s); +const $$ = (s, r = document) => [...r.querySelectorAll(s)]; + +const state = { + user: null, + assets: new Map(), // symbol -> asset obj + liveHistory: new Map(), // symbol -> [{t,p}] + filter: 'all', + selected: null, + socket: null, +}; + +// ---------- API ---------- +async function api(path, body, method = 'POST') { + const opts = { method, headers: { 'Content-Type': 'application/json' }, credentials: 'same-origin' }; + if (body && method !== 'GET') opts.body = JSON.stringify(body); + const res = await fetch(path, method === 'GET' ? { credentials: 'same-origin' } : opts); + const data = await res.json().catch(() => ({ ok: false, error: 'Netzwerkfehler' })); + if (!res.ok && !data.error) data.error = 'Fehler ' + res.status; + return data; +} +const get = (p) => api(p, null, 'GET'); + +async function apiForm(path, formData, method = 'POST') { + const res = await fetch(path, { method, body: formData, credentials: 'same-origin' }); + const data = await res.json().catch(() => ({ ok: false, error: 'Netzwerkfehler' })); + if (!res.ok && !data.error) data.error = 'Fehler ' + res.status; + return data; +} + +async function apiDelete(path) { + const res = await fetch(path, { method: 'DELETE', credentials: 'same-origin' }); + const data = await res.json().catch(() => ({ ok: false, error: 'Netzwerkfehler' })); + if (!res.ok && !data.error) data.error = 'Fehler ' + res.status; + return data; +} + +// ---------- Formatters ---------- +const nf = new Intl.NumberFormat('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); +const nf4 = new Intl.NumberFormat('de-DE', { minimumFractionDigits: 0, maximumFractionDigits: 4 }); +function fmt(n) { return nf.format(Number(n) || 0); } +function coins(n) { return `🪙 ${fmt(n)}`; } +function px(n) { const v = Number(n); return v < 1 ? nf4.format(v) : nf.format(v); } +function timeAgo(ts) { + const s = Math.floor((Date.now() - ts) / 1000); + if (s < 60) return s + 's'; + if (s < 3600) return Math.floor(s / 60) + 'm'; + if (s < 86400) return Math.floor(s / 3600) + 'h'; + return Math.floor(s / 86400) + 'd'; +} + +// ---------- Toast ---------- +function toast(msg, type = '') { + const el = document.createElement('div'); + el.className = 'toast ' + type; + el.innerHTML = msg; + $('#toastWrap').appendChild(el); + setTimeout(() => { el.style.opacity = '0'; el.style.transition = 'opacity .3s'; }, 2600); + setTimeout(() => el.remove(), 3000); +} + +// ---------- Celebration FX ---------- +const GOLD_CONFETTI = ['#c9a84c', '#d8bd6e', '#f4f1e9', '#46c98b', '#8a6e1f']; +function burstConfetti(opts = {}) { + if (typeof window.confetti !== 'function') return; + window.confetti({ particleCount: 110, spread: 75, startVelocity: 42, ticks: 180, origin: { y: 0.55 }, colors: GOLD_CONFETTI, disableForReducedMotion: true, ...opts }); +} +function bigWinFX(mult = 1) { + burstConfetti({ particleCount: Math.min(60 + mult * 18, 220), spread: 100 }); + if (mult >= 3) setTimeout(() => burstConfetti({ angle: 60, origin: { x: 0, y: 0.6 } }), 120); + if (mult >= 3) setTimeout(() => burstConfetti({ angle: 120, origin: { x: 1, y: 0.6 } }), 220); +} +function gsapOK() { return typeof window.gsap !== 'undefined'; } + +// ---------- Modal ---------- +function openModal(html) { + $('#modalBox').innerHTML = `
${html}`; + $('#modal').hidden = false; + document.body.style.overflow = 'hidden'; +} +function closeModal() { + $('#modal').hidden = true; + document.body.style.overflow = ''; + state.selected = null; +} +$('#modal').addEventListener('click', (e) => { if (e.target.id === 'modal') closeModal(); }); + +// ---------- Balance ---------- +function setBalance(b) { + if (!state.user) return; + state.user.balance = b; + const bal = $('#balanceValue'); + if (bal) bal.textContent = fmt(b); +} +function updateAuthUI() { + const btn = $('#authBtn'); + const chip = $('#balanceChip'); + const bal = $('#balanceValue'); + if (btn) { + if (state.user) { + if (chip) chip.hidden = false; + if (bal) bal.textContent = fmt(state.user.balance); + btn.className = 'btn-auth btn-auth--avatar'; + btn.innerHTML = renderAvatar(state.user.avatar, { size: 'sm' }); + hydrateFramedImages(btn); + btn.onclick = openAccountMenu; + } else { + if (chip) chip.hidden = true; + btn.className = 'btn-auth'; + btn.textContent = 'Login'; + btn.onclick = openAuthModal; + } + } + const hint = $('#gamesLoginHint'); + if (hint) hint.hidden = !!state.user; +} + +// ===================== AUTH ===================== +function openAuthModal(mode = 'login') { + const isLogin = mode === 'login'; + openModal(` + +
+
+
+ +

+ ${isLogin ? 'Noch kein Account?' : 'Schon registriert?'} + +

+ `); + $('#auSwitch').onclick = () => openAuthModal(isLogin ? 'register' : 'login'); + $('#auSubmit').onclick = async () => { + const username = $('#auUser').value.trim(); + const password = $('#auPass').value; + const r = await api(isLogin ? '/api/login' : '/api/register', { username, password }); + if (!r.ok) { $('#auErr').textContent = r.error; return; } + state.user = r.user; + updateAuthUI(); + closeModal(); + toast(`Willkommen, ${r.user.username}! 🎉`, 'win'); + renderActiveView(); + }; + $('#auPass').addEventListener('keydown', (e) => { if (e.key === 'Enter') $('#auSubmit').click(); }); +} +window._closeModal = closeModal; + +function openAccountMenu() { + const u = state.user; + openModal(` + +
Guthaben${coins(u.balance)}
+ +
+ + `); + hydrateFramedImages($('#modalBox')); + $('#goSettings').onclick = () => { closeModal(); switchView('settings'); }; + $('#logoutBtn').onclick = async () => { + await api('/api/logout', {}); + state.user = null; updateAuthUI(); closeModal(); renderActiveView(); + toast('Ausgeloggt'); + }; +} + +// ===================== NAVIGATION ===================== +function switchView(name) { + $$('.view').forEach(v => v.classList.toggle('active', v.id === 'view-' + name)); + $$('.nav-btn').forEach(b => b.classList.toggle('active', b.dataset.view === name)); + window.scrollTo(0, 0); + renderActiveView(); +} +$$('.nav-btn').forEach(b => b.onclick = () => switchView(b.dataset.view)); +$('#brandHome')?.addEventListener('click', () => switchView('trading')); +$$('[data-open-auth]').forEach(b => b.onclick = () => openAuthModal()); + +function activeView() { + const v = $$('.view').find(v => v.classList.contains('active')); + return v ? v.id.replace('view-', '') : 'trading'; +} +function renderActiveView() { + const v = activeView(); + if (v === 'trading') renderAssets(); + else if (v === 'games') renderGames(); + else if (v === 'portfolio') renderPortfolio(); + else if (v === 'social') renderSocial(); + else if (v === 'settings') renderSettings(); +} + +// ===================== TRADING ===================== +function renderAssets() { + const list = $('#assetList'); + const arr = [...state.assets.values()].filter(a => state.filter === 'all' || a.type === state.filter); + list.innerHTML = arr.map(a => assetRowHTML(a)).join(''); + $$('.asset-row', list).forEach(row => row.onclick = () => openAssetDetail(row.dataset.sym)); +} +function assetRowHTML(a) { + const cls = a.change >= 0 ? 'up' : 'down'; + const sign = a.change >= 0 ? '+' : ''; + return ` +
+
${a.emoji}
+
+
${a.symbol}${a.halted ? 'HALT' : ''}
+
${a.name}
+
+
+
${px(a.price)}
+
${sign}${fmt(a.changePct)}%
+
+
`; +} +$$('#marketFilter .seg-btn').forEach(b => b.onclick = () => { + $$('#marketFilter .seg-btn').forEach(x => x.classList.remove('active')); + b.classList.add('active'); + state.filter = b.dataset.f; + renderAssets(); +}); + +async function openAssetDetail(sym) { + state.selected = sym; + const a = state.assets.get(sym); + openModal(` + +
${px(a.price)}
+
${a.change>=0?'+':''}${fmt(a.change)} (${fmt(a.changePct)}%)
+
+ + ${state.user ? tradePanelHTML() : ''} + +

🎛️ Markt manipulieren (wirkt für ALLE)

+ ${state.user ? manipPanelHTML() : '
Login nötig
'} + `); + drawChartFor(sym); + if (state.user) wireTradePanel(sym), wireManipPanel(sym); +} +window._openAuth = () => openAuthModal(); + +function tradePanelHTML() { + return ` +
+
+ + + + + +
+
+
+ + +
`; +} +function wireTradePanel(sym) { + const qty = $('#tQty'); + const updEst = () => { + const a = state.assets.get(sym); + const cost = (parseFloat(qty.value) || 0) * a.price; + $('#tEst').textContent = `≈ ${coins(cost)}`; + }; + qty.addEventListener('input', updEst); updEst(); + $$('.chip[data-amt]').forEach(c => c.onclick = () => { qty.value = c.dataset.amt; updEst(); }); + $('.chip[data-max]')?.addEventListener('click', () => { + const a = state.assets.get(sym); + qty.value = (state.user.balance / a.price).toFixed(4); + updEst(); + }); + $('#btnBuy').onclick = () => doTrade(sym, 'buy', parseFloat(qty.value)); + $('#btnSell').onclick = () => doTrade(sym, 'sell', parseFloat(qty.value)); +} +async function doTrade(sym, side, qty) { + if (!(qty > 0)) return toast('Menge ungültig', 'lose'); + const r = await api('/api/trade', { symbol: sym, side, qty }); + if (!r.ok) return toast(r.error, 'lose'); + setBalance(r.balance); + toast(`${side === 'buy' ? 'Gekauft' : 'Verkauft'}: ${fmt(qty)} ${sym} @ ${px(r.price)}`, 'win'); +} + +function manipPanelHTML() { + return ` +
+ + +
+
+
+ + +
+
+
+ + + +
`; +} +function wireManipPanel(sym) { + $$('[data-mp]').forEach(b => b.onclick = async () => { + const action = b.dataset.mp; + const value = action === 'set' ? parseFloat($('#mSet').value) : (action === 'pump' || action === 'dump' ? 3 : 0); + const r = await api('/api/manipulate', { symbol: sym, action, value }); + if (!r.ok) return toast(r.error, 'lose'); + toast(`${sym}: ${action} ✅`); + }); +} + +// ---------- Chart ---------- +async function drawChartFor(sym) { + let hist = state.liveHistory.get(sym); + if (!hist || hist.length < 5) { + const r = await get(`/api/market/${sym}/history`); + if (r.ok) { hist = r.history; state.liveHistory.set(sym, hist.slice()); } + } + drawChart(); +} +function drawChart() { + const c = $('#chart'); if (!c) return; + const sym = state.selected; if (!sym) return; + const hist = state.liveHistory.get(sym) || []; + const dpr = window.devicePixelRatio || 1; + const w = c.clientWidth, h = 180; + c.width = w * dpr; c.height = h * dpr; + const ctx = c.getContext('2d'); ctx.scale(dpr, dpr); + ctx.clearRect(0, 0, w, h); + if (hist.length < 2) return; + const ys = hist.map(p => p.p); + let min = Math.min(...ys), max = Math.max(...ys); + if (min === max) { min *= 0.999; max *= 1.001; } + const pad = 10; + const X = i => pad + (i / (hist.length - 1)) * (w - 2 * pad); + const Y = v => h - pad - ((v - min) / (max - min)) * (h - 2 * pad); + const up = ys[ys.length - 1] >= ys[0]; + const col = up ? '#1fd17a' : '#ff4d61'; + // Fill + const grad = ctx.createLinearGradient(0, 0, 0, h); + grad.addColorStop(0, up ? 'rgba(31,209,122,.25)' : 'rgba(255,77,97,.25)'); + grad.addColorStop(1, 'rgba(0,0,0,0)'); + ctx.beginPath(); ctx.moveTo(X(0), Y(ys[0])); + hist.forEach((p, i) => ctx.lineTo(X(i), Y(p.p))); + ctx.lineTo(X(hist.length - 1), h - pad); ctx.lineTo(X(0), h - pad); ctx.closePath(); + ctx.fillStyle = grad; ctx.fill(); + // Line + ctx.beginPath(); ctx.moveTo(X(0), Y(ys[0])); + hist.forEach((p, i) => ctx.lineTo(X(i), Y(p.p))); + ctx.strokeStyle = col; ctx.lineWidth = 2; ctx.lineJoin = 'round'; ctx.stroke(); + // Last dot + const lx = X(hist.length - 1), ly = Y(ys[ys.length - 1]); + ctx.beginPath(); ctx.arc(lx, ly, 3.5, 0, 7); ctx.fillStyle = col; ctx.fill(); +} + +// ===================== GAMES ===================== +const GAMES = [ + { id: 'chicken', emoji: '🐔', name: 'Chicken Road', desc: 'Überquere die Spuren, cashe vor dem Crash', tag: 'Skill', glow: 'rgba(201,168,76,.28)' }, + { id: 'mines', emoji: '🃏', name: '10×10 Deck', desc: '100 Karten, finde die Diamanten', tag: 'Cards', glow: 'rgba(70,201,139,.24)' }, + { id: 'crash', emoji: '🚀', name: 'Crash', desc: 'Raus bevor die Rakete explodiert', tag: 'Live', glow: 'rgba(224,98,94,.26)' }, + { id: 'mine_dice', emoji: '🎲', name: 'Dice', desc: 'Über/Unter — wähle dein Risiko', tag: 'Classic', glow: 'rgba(201,168,76,.24)' }, + { id: 'coin', emoji: '🪙', name: 'Coinflip', desc: 'Kopf oder Zahl, 2×', tag: '50/50', glow: 'rgba(216,189,110,.26)' }, +]; +function renderGames() { + $('#gamesGrid').innerHTML = GAMES.map((g, i) => ` +
+ ${g.tag} +
${g.emoji}
+
+
${g.name}
+
${g.desc}
+
+
`).join(''); + const cards = $$('.game-card'); + cards.forEach(c => c.onclick = () => { + if (!state.user) return openAuthModal(); + openGame(c.dataset.game); + }); + if (gsapOK()) gsap.from(cards, { opacity: 0, y: 18, scale: .96, duration: .5, ease: 'power3.out', stagger: .07 }); + $('#gamesLoginHint').hidden = !!state.user; +} +function openGame(id) { + if (id === 'chicken') gameChicken(); + else if (id === 'mines') gameMines(); + else if (id === 'crash') gameCrash(); + else if (id === 'mine_dice') gameDice(); + else if (id === 'coin') gameCoin(); +} +function betHeader(title, emoji) { + return ` +
Guthaben: ${coins(state.user.balance)}
`; +} +function refreshGBal() { const el = $('#gBal'); if (el) el.textContent = `Guthaben: ${coins(state.user.balance)}`; } + +// ---------- Chicken Road ---------- +function gameChicken() { + openModal(`${betHeader('Chicken Road', '🐔')} +
+
+
+
+ + + + +
+
+ +
+ `); + let diff = 'easy'; + $$('#chDiff .chip').forEach(c => c.onclick = () => { $$('#chDiff .chip').forEach(x => x.classList.remove('active')); c.classList.add('active'); diff = c.dataset.d; }); + let round = null, busy = false; + + function buildStage(rd) { + const cells = ['
START
']; + rd.mults.forEach((m, i) => cells.push( + `
${m.toFixed(2)}×
🚗
`)); + $('#chTrack').innerHTML = cells.join(''); + } + function markLanes(rd) { + for (let i = 0; i <= rd.lanes; i++) { + const c = $(`#cell-${i}`); if (!c) continue; + c.classList.toggle('passed', i > 0 && i <= rd.lane); + c.classList.toggle('current', i === rd.lane + 1); + } + } + function scrollTo(lane) { + const cell = $(`#cell-${lane}`); if (!cell) return; + $('#chTrack').scrollTo({ left: Math.max(0, cell.offsetLeft - 24), behavior: 'smooth' }); + } + function hop() { + const hero = $('#chHero'); if (!hero) return; + hero.classList.remove('idle', 'hop'); void hero.offsetWidth; hero.classList.add('hop'); + setTimeout(() => hero && hero.classList.add('idle'), 360); + } + function setMult(v) { + const el = $('#chMult'); if (!el) return; + el.textContent = v.toFixed(2) + '×'; + if (gsapOK()) gsap.fromTo(el, { scale: 1.4 }, { scale: 1, duration: .4, ease: 'back.out(3)' }); + } + + $('#chStart').onclick = async () => { + if (busy) return; busy = true; + const bet = parseFloat($('#chBet').value); + const r = await api('/api/games/chicken/start', { bet, difficulty: diff }); + busy = false; + if (!r.ok) return toast(r.error, 'lose'); + setBalance(r.balance); refreshGBal(); + round = { id: r.roundId, mults: r.multipliers, lane: 0, lanes: r.lanes, bet }; + $('#chSetup').hidden = true; $('#chPlay').hidden = false; + buildStage(round); markLanes(round); scrollTo(0); + $('#chHero').textContent = '🐔'; $('#chHero').className = 'chicken-hero idle'; + $('#chMult').textContent = '1.00×'; + }; + + $('#chWalk').onclick = async () => { + if (!round || busy) return; busy = true; + const r = await api('/api/games/chicken/step', { roundId: round.id }); + if (!r.ok) { busy = false; return toast(r.error, 'lose'); } + setBalance(r.balance ?? state.user.balance); refreshGBal(); + if (r.dead) { + hop(); + const cell = $(`#cell-${r.lane}`); + if (cell) cell.classList.add('dead'); + scrollTo(r.lane); + setTimeout(() => { + const stage = $('#chStage'), hero = $('#chHero'), boom = $('#chBoom'); + if (stage) { stage.classList.remove('stage-shake'); void stage.offsetWidth; stage.classList.add('stage-shake'); } + if (boom) { boom.classList.remove('go'); void boom.offsetWidth; boom.classList.add('go'); } + if (hero) { hero.classList.remove('idle'); hero.textContent = '💥'; } + toast('💥 Erwischt! Verloren.', 'lose'); + }, 280); + endChicken(); + } else { + round.lane = r.lane; + hop(); markLanes(round); scrollTo(round.lane); + setMult(r.multiplier); + if (r.maxed) { bigWinFX(r.multiplier); toast(`🏁 Ende erreicht! +${coins(r.payout)}`, 'win'); endChicken(); } + else busy = false; + } + }; + $('#chCash').onclick = async () => { + if (!round || busy) return; busy = true; + const r = await api('/api/games/chicken/cashout', { roundId: round.id }); + if (!r.ok) { busy = false; return toast(r.error, 'lose'); } + setBalance(r.balance); refreshGBal(); + bigWinFX(r.multiplier); + toast(`💰 Cashout ${r.multiplier.toFixed(2)}× → +${coins(r.payout)}`, 'win'); + endChicken(); + }; + function endChicken() { + round = null; + setTimeout(() => { busy = false; if ($('#chPlay')) { $('#chSetup').hidden = false; $('#chPlay').hidden = true; } }, 1600); + } +} + +// ---------- Mines 10x10 ---------- +function gameMines() { + openModal(`${betHeader('10×10 Karten-Deck', '🃏')} +
+
+
+
+ + + + +
+
+ +
+ `); + let bombs = 10; + $$('#mBombs .chip').forEach(c => c.onclick = () => { $$('#mBombs .chip').forEach(x => x.classList.remove('active')); c.classList.add('active'); bombs = +c.dataset.b; }); + let round = null, busy = false; + const tileHTML = (i) => `
`; + function flip(t, kind, sym) { + t.classList.add('flipped', kind); + const f = t.querySelector('.front'); if (f) f.textContent = sym; + } + function setStats(mult) { + const mEl = $('#mMult'), pEl = $('#mPay'); + if (mEl) mEl.textContent = mult.toFixed(2) + '×'; + if (pEl) pEl.textContent = fmt(round.bet * mult); + if (gsapOK() && mEl) gsap.fromTo([mEl, pEl], { scale: 1.25 }, { scale: 1, duration: .35, ease: 'back.out(2.5)' }); + } + $('#mStart').onclick = async () => { + if (busy) return; busy = true; + const bet = parseFloat($('#mBet').value); + const r = await api('/api/games/mines/start', { bet, bombs }); + busy = false; + if (!r.ok) return toast(r.error, 'lose'); + setBalance(r.balance); refreshGBal(); + round = { id: r.roundId, bet, picks: 0, mult: 1, over: false }; + $('#mSetup').hidden = true; $('#mPlay').hidden = false; + $('#mMult').textContent = '1.00×'; $('#mPay').textContent = '0'; + $('#mGrid').innerHTML = Array.from({ length: 100 }, (_, i) => tileHTML(i)).join(''); + $$('#mGrid .tile').forEach(t => t.onclick = () => revealTile(+t.dataset.i, t)); + if (gsapOK()) gsap.from('#mGrid .tile', { opacity: 0, scale: .5, duration: .35, ease: 'power2.out', stagger: { each: .004, from: 'center', grid: [10, 10] } }); + }; + async function revealTile(i, el) { + if (!round || round.over || el.classList.contains('flipped') || busy) return; + busy = true; + const r = await api('/api/games/mines/reveal', { roundId: round.id, index: i }); + if (!r.ok) { busy = false; return toast(r.error, 'lose'); } + if (r.bomb) { + round.over = true; + flip(el, 'bomb', '💣'); el.classList.add('hit'); + const stage = $('#mGrid'); + if (stage) { stage.classList.remove('stage-shake'); void stage.offsetWidth; stage.classList.add('stage-shake'); } + r.mines.forEach((m, idx) => { + if (m === i) return; + const t = $(`#mGrid .tile[data-i="${m}"]`); + if (t) setTimeout(() => flip(t, 'bomb', '💣'), 60 + idx * 18); + }); + $$('#mGrid .tile').forEach(t => { if (!t.classList.contains('flipped')) t.classList.add('dim'); }); + setBalance(r.balance); refreshGBal(); + toast('💥 Bombe! Verloren.', 'lose'); + endMines(); + } else { + flip(el, 'safe', '💎'); + round.picks = r.picks; round.mult = r.multiplier; + setStats(r.multiplier); + if (r.cleared) { setBalance(r.balance); refreshGBal(); bigWinFX(r.multiplier); toast(`🏆 Deck geknackt! +${coins(r.payout)}`, 'win'); endMines(); } + else busy = false; + } + } + $('#mCash').onclick = async () => { + if (!round || round.over || busy) return; busy = true; + const r = await api('/api/games/mines/cashout', { roundId: round.id }); + if (!r.ok) { busy = false; return toast(r.error, 'lose'); } + round.over = true; + setBalance(r.balance); refreshGBal(); + r.mines.forEach((m, idx) => { const t = $(`#mGrid .tile[data-i="${m}"]`); if (t && !t.classList.contains('flipped')) setTimeout(() => flip(t, 'bomb', '💣'), idx * 14); }); + bigWinFX(r.multiplier); + toast(`💰 +${coins(r.payout)} (${r.multiplier.toFixed(2)}×)`, 'win'); + endMines(); + }; + function endMines() { if (round) round.over = true; setTimeout(() => { busy = false; if ($('#mPlay')) { $('#mSetup').hidden = false; $('#mPlay').hidden = true; } }, 1800); } +} + +// ---------- Crash ---------- +function gameCrash() { + openModal(`${betHeader('Crash', '🚀')} +
+
+ +
+ `); + let round = null, raf = null, poll = null, particles = []; + const stars = Array.from({ length: 46 }, () => ({ x: Math.random(), y: Math.random(), r: Math.random() * 1.3 + 0.3, tw: Math.random() * 6 })); + + function cv() { + const c = $('#crCanvas'); if (!c) return null; + const dpr = window.devicePixelRatio || 1; + const w = c.clientWidth || 320, h = 240; + if (c.width !== Math.round(w * dpr)) { c.width = w * dpr; c.height = h * dpr; } + const ctx = c.getContext('2d'); ctx.setTransform(dpr, 0, 0, dpr, 0, 0); + return { ctx, w, h }; + } + function rocketPos(elapsed, m, w, h) { + const curMax = Math.max(1.4, m * 1.12), pad = 14; + const x = pad + Math.min(1, elapsed / Math.max(elapsed, 1)) * (w - 2 * pad); + const y = h - pad - ((m - 1) / (curMax - 1)) * (h - 2 * pad); + return { x, y, curMax, pad }; + } + function draw(elapsed, m, color) { + const ctxv = cv(); if (!ctxv) return; const { ctx, w, h } = ctxv; + ctx.clearRect(0, 0, w, h); + // stars + stars.forEach(s => { ctx.globalAlpha = .35 + .45 * Math.abs(Math.sin(elapsed / 700 + s.tw)); ctx.fillStyle = '#d8bd6e'; ctx.beginPath(); ctx.arc(s.x * w, s.y * h, s.r, 0, 7); ctx.fill(); }); + ctx.globalAlpha = 1; + const { x: rx, y: ry, curMax, pad } = rocketPos(elapsed, m, w, h); + const N = 64; + // fill under curve + const grad = ctx.createLinearGradient(0, 0, 0, h); + grad.addColorStop(0, color === 'red' ? 'rgba(224,98,94,.30)' : 'rgba(201,168,76,.30)'); + grad.addColorStop(1, 'rgba(0,0,0,0)'); + ctx.beginPath(); ctx.moveTo(pad, h - pad); + for (let i = 0; i <= N; i++) { const t = elapsed * i / N; const mm = Math.exp(round.k * t); const x = pad + (i / N) * (rx - pad); const y = h - pad - ((mm - 1) / (curMax - 1)) * (h - 2 * pad); ctx.lineTo(x, y); } + ctx.lineTo(rx, h - pad); ctx.closePath(); ctx.fillStyle = grad; ctx.fill(); + // curve line + ctx.beginPath(); + for (let i = 0; i <= N; i++) { const t = elapsed * i / N; const mm = Math.exp(round.k * t); const x = pad + (i / N) * (rx - pad); const y = h - pad - ((mm - 1) / (curMax - 1)) * (h - 2 * pad); i === 0 ? ctx.moveTo(x, y) : ctx.lineTo(x, y); } + ctx.strokeStyle = color === 'red' ? '#e0625e' : '#d8bd6e'; ctx.lineWidth = 3; ctx.lineJoin = 'round'; + ctx.shadowColor = color === 'red' ? 'rgba(224,98,94,.7)' : 'rgba(201,168,76,.6)'; ctx.shadowBlur = 12; ctx.stroke(); ctx.shadowBlur = 0; + if (color !== 'red') { + // flame + const fl = 8 + Math.random() * 8; + ctx.fillStyle = 'rgba(255,180,60,.8)'; ctx.beginPath(); ctx.moveTo(rx - 6, ry + 6); ctx.lineTo(rx - 16 - fl, ry + 12); ctx.lineTo(rx - 6, ry + 14); ctx.closePath(); ctx.fill(); + // rocket + ctx.font = '22px serif'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; + ctx.save(); ctx.translate(rx, ry); ctx.rotate(-Math.PI / 5); ctx.fillText('🚀', 0, 0); ctx.restore(); + } + // particles (explosion) + particles.forEach(p => { + p.x += p.vx; p.y += p.vy; p.vy += 0.12; p.life -= 0.022; p.vx *= 0.99; + ctx.globalAlpha = Math.max(0, p.life); ctx.fillStyle = p.c; ctx.beginPath(); ctx.arc(p.x, p.y, p.s, 0, 7); ctx.fill(); + }); + particles = particles.filter(p => p.life > 0); + ctx.globalAlpha = 1; + } + function explode(x, y) { + const cols = ['#e0625e', '#ffb43c', '#d8bd6e', '#f4f1e9']; + for (let i = 0; i < 46; i++) { const a = Math.random() * Math.PI * 2, sp = 1 + Math.random() * 5; particles.push({ x, y, vx: Math.cos(a) * sp, vy: Math.sin(a) * sp - 1, s: 1.5 + Math.random() * 3, life: 1, c: cols[i % cols.length] }); } + } + + $('#crStart').onclick = async () => { + const bet = parseFloat($('#crBet').value); + const r = await api('/api/games/crash/start', { bet }); + if (!r.ok) return toast(r.error, 'lose'); + setBalance(r.balance); refreshGBal(); + round = { id: r.roundId, k: r.k, start: Date.now(), over: false, bet }; + particles = []; + $('#crSetup').hidden = true; $('#crPlay').hidden = false; + $('#crMult').classList.remove('boom'); $('#crMult').style.color = ''; $('#crSub').textContent = '🚀 steigt…'; + animate(); + poll = setInterval(checkStatus, 280); + }; + function animate() { + if (!round || round.over) return; + const elapsed = Date.now() - round.start; + const m = Math.exp(round.k * elapsed); + $('#crMult').textContent = m.toFixed(2) + '×'; + $('#crMult').style.color = m >= 2 ? 'var(--gold-soft)' : ''; + draw(elapsed, m, 'gold'); + raf = requestAnimationFrame(animate); + } + async function checkStatus() { + if (!round || round.over) return; + const r = await api('/api/games/crash/status', { roundId: round.id }); + if (r.ok && r.crashed) boom(r.multiplier); + } + function boom(at) { + if (!round) return; + round.over = true; cancelAnimationFrame(raf); clearInterval(poll); + const elapsed = Date.now() - round.start; + const ctxv = cv(); + if (ctxv) { const p = rocketPos(elapsed, at, ctxv.w, ctxv.h); explode(p.x, p.y); } + $('#crMult').textContent = at.toFixed(2) + '×'; $('#crMult').classList.add('boom'); + $('#crSub').textContent = '💥 CRASHED!'; + const stage = $('#crStage'); if (stage) { stage.classList.remove('stage-shake'); void stage.offsetWidth; stage.classList.add('stage-shake'); } + boomLoop(elapsed, at); + toast('💥 Crashed! Verloren.', 'lose'); + endCrash(); + } + function boomLoop(elapsed, at) { + if (!particles.length) return; + draw(elapsed, at, 'red'); + requestAnimationFrame(() => boomLoop(elapsed, at)); + } + $('#crCash').onclick = async () => { + if (!round || round.over) return; + const r = await api('/api/games/crash/cashout', { roundId: round.id }); + if (!r.ok) return toast(r.error, 'lose'); + round.over = true; cancelAnimationFrame(raf); clearInterval(poll); + setBalance(r.balance); refreshGBal(); + if (r.crashed) { + const elapsed = Date.now() - round.start; const ctxv = cv(); + if (ctxv) { const p = rocketPos(elapsed, r.crashPoint || 1, ctxv.w, ctxv.h); explode(p.x, p.y); boomLoop(elapsed, r.crashPoint || 1); } + $('#crMult').classList.add('boom'); $('#crSub').textContent = '💥 zu spät!'; toast('💥 Zu spät!', 'lose'); + } else { + $('#crMult').textContent = r.multiplier.toFixed(2) + '×'; $('#crMult').style.color = 'var(--green)'; $('#crSub').textContent = '💰 Cashout!'; + bigWinFX(r.multiplier); toast(`💰 ${r.multiplier.toFixed(2)}× → +${coins(r.payout)}`, 'win'); + } + endCrash(); + }; + function endCrash() { setTimeout(() => { if ($('#crPlay')) { $('#crSetup').hidden = false; $('#crPlay').hidden = true; } round = null; }, 2200); } +} + +// ---------- Dice ---------- +function gameDice() { + openModal(`${betHeader('Dice', '🎲')} +
+
50
+
0255075100
+
+
Bereit?
+
+
+
+
+
+
+
Gewinnchance
50%
+
Multiplikator
1.98×
+
+ `); + let dir = 'under', rolling = false; + const upd = () => { + const t = +$('#dTarget').value; $('#dTval').textContent = t; + const chance = dir === 'under' ? t : 100 - t; + $('#dChance').textContent = chance + '%'; + $('#dMult').textContent = ((100 / chance) * 0.99).toFixed(2) + '×'; + const zone = $('#dZone'); + if (dir === 'under') { zone.style.left = '0%'; zone.style.right = 'auto'; zone.style.width = t + '%'; } + else { zone.style.left = t + '%'; zone.style.right = '0'; zone.style.width = (100 - t) + '%'; } + }; + function moveMarker(v, settle) { + const m = $('#dMark'); if (!m) return; + m.classList.toggle('settle', !!settle); + m.style.left = v + '%'; m.textContent = (Math.round(v * 10) / 10).toFixed(1); + } + $('#dTarget').addEventListener('input', upd); + $$('#dDir .chip').forEach(c => c.onclick = () => { $$('#dDir .chip').forEach(x => x.classList.remove('active')); c.classList.add('active'); dir = c.dataset.d; upd(); }); + upd(); + $('#dRoll').onclick = async () => { + if (rolling) return; rolling = true; + const btn = $('#dRoll'); btn.disabled = true; + $('#dRes').textContent = '🎲'; $('#dRes').className = 'dice-result muted'; + const r = await api('/api/games/dice', { bet: parseFloat($('#dBet').value), target: +$('#dTarget').value, direction: dir }); + if (!r.ok) { rolling = false; btn.disabled = false; return toast(r.error, 'lose'); } + setBalance(r.balance); refreshGBal(); + // spin the marker, then settle on the real roll + let ticks = 0; const spin = setInterval(() => { moveMarker(2 + Math.random() * 96, false); ticks++; }, 55); + setTimeout(() => { + clearInterval(spin); + moveMarker(r.roll, true); + const res = $('#dRes'); res.textContent = r.roll.toFixed(2); + res.className = 'dice-result ' + (r.win ? 'up' : 'down'); + if (r.win) { bigWinFX(r.multiplier); toast(`🎉 Gewonnen! +${coins(r.payout)}`, 'win'); } + else toast('😢 Verloren', 'lose'); + rolling = false; btn.disabled = false; + }, 760); + }; +} + +// ---------- Coinflip ---------- +function gameCoin() { + openModal(`${betHeader('Coinflip', '🪙')} +
👑
🔢
+
+
+ + +
`); + let busy = false; + async function flip(choice) { + if (busy) return; busy = true; + $('#cHeads').disabled = $('#cTails').disabled = true; + const coin = $('#cCoin'); + coin.classList.remove('spin-heads', 'spin-tails'); coin.style.transform = 'none'; void coin.offsetWidth; + const r = await api('/api/games/coinflip', { bet: parseFloat($('#cBet').value), choice }); + if (!r.ok) { busy = false; $('#cHeads').disabled = $('#cTails').disabled = false; return toast(r.error, 'lose'); } + setBalance(r.balance); refreshGBal(); + coin.style.transform = ''; + coin.classList.add(r.flip === 'heads' ? 'spin-heads' : 'spin-tails'); + setTimeout(() => { + if (r.win) { bigWinFX(2); toast(`🎉 ${r.flip === 'heads' ? 'Kopf' : 'Zahl'}! +${coins(r.payout)}`, 'win'); } + else toast(`😢 ${r.flip === 'heads' ? 'Kopf' : 'Zahl'} — verloren`, 'lose'); + busy = false; $('#cHeads').disabled = $('#cTails').disabled = false; + }, 2400); + } + $('#cHeads').onclick = () => flip('heads'); + $('#cTails').onclick = () => flip('tails'); +} + +// ===================== PORTFOLIO ===================== +async function renderPortfolio() { + const el = $('#portfolioContent'); + if (!state.user) { el.innerHTML = ''; return; } + const r = await get('/api/portfolio'); + if (!r.ok) { el.innerHTML = `
${r.error}
`; return; } + const p = r.portfolio; + const pnlTotal = p.holdings.reduce((s, h) => s + h.pnl, 0); + el.innerHTML = ` +
+
Gesamtwert (Net Worth)
+
${coins(p.netWorth)}
+
💵 Cash${coins(p.balance)}
+
📊 Positionen${coins(p.holdingsValue)}
+
P&L offen${pnlTotal>=0?'+':''}${fmt(pnlTotal)}
+
+

Positionen

+ ${p.holdings.length ? p.holdings.map(h => ` +
+
${h.emoji}
+
+
${h.symbol} ${h.side.toUpperCase()}
+
${fmt(h.quantity)} @ ${px(h.avgPrice)}
+
+
+
${coins(h.value)}
+
${h.pnl>=0?'+':''}${fmt(h.pnl)} (${fmt(h.pnlPct)}%)
+
+
`).join('') : '
Noch keine Positionen. Geh ins Trading! 📈
'} +

Letzte Trades

+
`; + $$('#portfolioContent .asset-row').forEach(row => row.onclick = () => { switchView('trading'); openAssetDetail(row.dataset.sym); }); + const tr = await get('/api/trades'); + if (tr.ok) $('#tradeHist').innerHTML = tr.trades.slice(0, 15).map(t => ` +
${t.side === 'buy' ? '🟢' : '🔴'}${t.side === 'buy' ? 'Kauf' : 'Verkauf'} ${fmt(t.qty)} ${t.symbol} @ ${px(t.price)}${timeAgo(t.ts)}
`).join('') || '
'; +} + +// ===================== SOCIAL ===================== +async function renderSocial() { + const r = await get('/api/leaderboard'); + const lb = $('#leaderboardContent'); + if (r.ok) { + lb.innerHTML = r.leaderboard.map((u, i) => ` +
+
${['🥇','🥈','🥉'][i] || '#' + (i + 1)}
+
${renderAvatar(u.avatar, { size: 'sm' })}${u.username}
+
${coins(u.netWorth)}
+
`).join(''); + hydrateFramedImages(lb); + } + const f = await get('/api/feed'); + if (f.ok) renderFeedList(f.feed); +} +function renderFeedList(feed) { + const el = $('#feedList'); if (!el) return; + const icon = { win: '🏆', trade: '💱', manip: '🎛️', admin: '💰', join: '🎉' }; + el.innerHTML = feed.map(f => `
${icon[f.kind] || '•'}${f.text}${timeAgo(f.ts)}
`).join(''); +} + +// ===================== SETTINGS / ADMIN ===================== +async function handleAvatarFile(file) { + if (!file) return; + try { + await uploadImageWithEditor(file, { + frame: 'avatar', + uploadFn: async (f, result) => { + const fd = new FormData(); + fd.append('file', f); + appendPositionFields(fd, result); + const r = await apiForm('/api/settings/avatar/image', fd); + if (!r.ok) { toast(r.error, 'lose'); return null; } + state.user.avatar = r.avatar; + updateAuthUI(); + renderSettings(); + toast('Profilbild gespeichert ✅', 'win'); + return r; + }, + }); + } catch (e) { + toast(e.message || 'Upload fehlgeschlagen', 'lose'); + } +} + +async function adjustAvatarPosition() { + const av = state.user?.avatar; + if (!isImageAvatar(av)) return; + try { + await repositionImageWithEditor(av, { + frame: 'avatar', + saveFn: async (result) => { + const r = await api('/api/settings/avatar/image/position', { + focusX: result.focus.x, + focusY: result.focus.y, + zoom: result.zoom, + }, 'PATCH'); + if (!r.ok) { toast(r.error, 'lose'); return null; } + state.user.avatar = r.avatar; + updateAuthUI(); + renderSettings(); + toast('Position gespeichert ✅', 'win'); + return r; + }, + }); + } catch (e) { + toast(e.message || 'Fehler', 'lose'); + } +} + +async function removeAvatarImage() { + const r = await apiDelete('/api/settings/avatar/image'); + if (!r.ok) return toast(r.error, 'lose'); + state.user.avatar = r.avatar; + updateAuthUI(); + renderSettings(); + toast('Profilbild entfernt'); +} + +let selectedUploadFrame = 'gallery'; + +async function handleGalleryUpload(file, frame) { + if (!file) return; + try { + await uploadImageWithEditor(file, { + frame, + uploadFn: async (f, result) => { + const fd = new FormData(); + fd.append('file', f); + appendPositionFields(fd, result, frame); + const r = await apiForm('/api/uploads', fd); + if (!r.ok) { toast(r.error, 'lose'); return null; } + toast('Bild hochgeladen ✅', 'win'); + renderSettings(); + return r; + }, + }); + } catch (e) { + toast(e.message || 'Upload fehlgeschlagen', 'lose'); + } +} + +async function repositionGalleryItem(item) { + try { + await repositionImageWithEditor(item, { + frame: item.frame, + saveFn: async (result) => { + const r = await api(`/api/uploads/${item.id}/position`, { + focusX: result.focus.x, + focusY: result.focus.y, + zoom: result.zoom, + }, 'PATCH'); + if (!r.ok) { toast(r.error, 'lose'); return null; } + toast('Position gespeichert ✅', 'win'); + renderSettings(); + return r; + }, + }); + } catch (e) { + toast(e.message || 'Fehler', 'lose'); + } +} + +async function deleteGalleryItem(id) { + const r = await apiDelete(`/api/uploads/${id}`); + if (!r.ok) return toast(r.error, 'lose'); + toast('Bild gelöscht'); + renderSettings(); +} + +async function renderSettings() { + const el = $('#settingsContent'); + if (!state.user) { el.innerHTML = ''; return; } + const av = state.user.avatar; + const hasImage = isImageAvatar(av); + const currentEmoji = avatarEmoji(av); + const uploadsRes = await get('/api/uploads'); + const uploads = uploadsRes.ok ? uploadsRes.uploads : []; + el.innerHTML = ` +
+

👤 Profil

+
+ ${renderAvatar(av, { size: 'lg' })} +
+ + + ${hasImage ? '' : ''} + ${hasImage ? '' : ''} +
+
+
+
${['🐂','🚀','💎','🔥','🤑','👑','🦍','🐳','🃏','🎰'].map(e => ``).join('')}
+
+
+ +
+

🖼️ Uploads

+

Bilder hochladen — Editor zeigt den Rahmen wie auf der Seite.

+
+
+ +
+ + + +
+
+ + +
+
+ ${uploads.length ? uploads.map(renderUploadItem).join('') : '

Noch keine Uploads

'} +
+
+ +
+

💰 Geld bearbeiten

+

Spaßmodus: jeder darf bei sich & anderen Geld ändern.

+
+
+
+ + +
+
+
+ + + + +
+
+ +
+

🎛️ Markt-Kontrolle

+

Pumpe/dumpe Kurse für ALLE Spieler gleichzeitig.

+
+
+ + + +
+
+ +
+

👥 Alle Spieler

+
+
`; + + hydrateFramedImages(el); + + const fileInput = $('#avFile'); + $('#avUploadBtn').onclick = () => fileInput.click(); + fileInput.onchange = () => { + const f = fileInput.files?.[0]; + fileInput.value = ''; + handleAvatarFile(f); + }; + $('#avReposition')?.addEventListener('click', adjustAvatarPosition); + $('#avRemoveImg')?.addEventListener('click', removeAvatarImage); + + $$('#uploadFrameChips .chip').forEach(c => c.onclick = () => { + selectedUploadFrame = c.dataset.uframe; + $$('#uploadFrameChips .chip').forEach(x => x.classList.toggle('active', x.dataset.uframe === selectedUploadFrame)); + }); + const galleryInput = $('#galleryFile'); + $('#galleryUploadBtn').onclick = () => galleryInput.click(); + galleryInput.onchange = () => { + const f = galleryInput.files?.[0]; + galleryInput.value = ''; + handleGalleryUpload(f, selectedUploadFrame); + }; + + const uploadMap = new Map(uploads.map(u => [u.id, u])); + $$('[data-upload-repos]').forEach(btn => btn.onclick = () => { + const item = uploadMap.get(+btn.dataset.uploadRepos); + if (item) repositionGalleryItem(item); + }); + $$('[data-upload-del]').forEach(btn => btn.onclick = () => deleteGalleryItem(+btn.dataset.uploadDel)); + + $$('#avChips .chip').forEach(c => c.onclick = async () => { + const r = await api('/api/settings/avatar', { avatar: c.dataset.av }); + if (r.ok) { state.user.avatar = r.avatar; updateAuthUI(); renderSettings(); } + }); + + const users = (await get('/api/users')).users || []; + const sel = $('#adUser'); + sel.innerHTML = users.map(u => ``).join(''); + $('#userList').innerHTML = users.map(u => `
${renderAvatar(u.avatar, { size: 'sm' })} ${u.username}${coins(u.balance)}
`).join(''); + hydrateFramedImages($('#userList')); + + const doBalance = async (mode, amount) => { + const r = await api('/api/admin/balance', { userId: +sel.value, mode, amount }); + if (!r.ok) return toast(r.error, 'lose'); + toast('Guthaben aktualisiert ✅', 'win'); + if (+sel.value === state.user.id) setBalance(r.balance); + renderSettings(); + }; + $('#adAdd').onclick = () => doBalance('add', parseFloat($('#adAmount').value)); + $('#adSet').onclick = () => doBalance('set', parseFloat($('#adAmount').value)); + $$('[data-quick]').forEach(c => c.onclick = () => doBalance('add', +c.dataset.quick)); + + $$('[data-mc]').forEach(b => b.onclick = async () => { + const action = b.dataset.mc; + const r = await api('/api/manipulate', { symbol: $('#mkSym').value, action, value: action === 'reset' ? 0 : 4 }); + if (!r.ok) return toast(r.error, 'lose'); + toast(`${$('#mkSym').value}: ${action} ✅`); + }); +} + +// ===================== LIVE (Socket.IO) ===================== +function connectSocket() { + const socket = io(); + state.socket = socket; + socket.on('hello', ({ assets, feed }) => { + assets.forEach(a => state.assets.set(a.symbol, a)); + if (activeView() === 'trading') renderAssets(); + if (feed) buildTicker(feed); + }); + socket.on('prices', ({ data }) => { + data.forEach(d => { + const a = state.assets.get(d.s); + if (!a) return; + const prev = a.price; + a.price = d.p; a.change = d.c; a.changePct = d.cp; a.halted = !!d.h; + // live history + let h = state.liveHistory.get(d.s); if (!h) { h = []; state.liveHistory.set(d.s, h); } + h.push({ t: Date.now(), p: d.p }); if (h.length > 120) h.shift(); + updateAssetRow(d.s, prev); + if (state.selected === d.s) updateDetail(a); + }); + if (state.selected) drawChart(); + }); + socket.on('feed', (f) => { + addTickerItem(f); + if (activeView() === 'social') get('/api/feed').then(r => r.ok && renderFeedList(r.feed)); + }); + socket.on('balance_changed', ({ userId, balance }) => { + if (state.user && userId === state.user.id) setBalance(balance); + }); + socket.on('manip', ({ symbol, action, by }) => { /* feed handles UI */ }); +} +function updateAssetRow(sym, prevPrice) { + const row = $(`#row-${sym}`); if (!row) return; + const a = state.assets.get(sym); + const pxEl = row.querySelector('[data-px]'); const chgEl = row.querySelector('[data-chg]'); + if (pxEl) pxEl.textContent = px(a.price); + if (chgEl) { chgEl.textContent = (a.change >= 0 ? '+' : '') + fmt(a.changePct) + '%'; chgEl.className = 'chg ' + (a.change >= 0 ? 'up' : 'down'); } + if (a.price !== prevPrice) { + row.classList.remove('flash-up', 'flash-down'); + void row.offsetWidth; + row.classList.add(a.price > prevPrice ? 'flash-up' : 'flash-down'); + } +} +function updateDetail(a) { + const p = $('#dPrice'); if (p) p.textContent = px(a.price); + const c = $('#dChg'); if (c) { c.textContent = `${a.change>=0?'+':''}${fmt(a.change)} (${fmt(a.changePct)}%)`; c.className = a.change >= 0 ? 'up' : 'down'; } +} + +// ---------- Ticker ---------- +function buildTicker(feed) { + const t = $('#tickerTrack'); + if (!t) return; + const items = (feed && feed.length) ? feed.map(f => f.text) : ['Willkommen bei PlayBull 🐂', 'Echte Kurse · Live · Spielgeld']; + t.innerHTML = items.map(x => `${x}`).join('') + items.map(x => `${x}`).join(''); +} +function addTickerItem(f) { + const t = $('#tickerTrack'); if (!t) return; + const s = document.createElement('span'); s.className = 'ticker-item'; s.innerHTML = f.text; + t.prepend(s); + while (t.children.length > 60) t.lastChild.remove(); +} + +// ===================== INIT ===================== +async function init() { + const embed = new URLSearchParams(location.search).has('embed'); + if (embed) { + document.body.classList.add('pb-embed'); + $('#pbTopbar')?.remove(); + $('#feedTicker')?.remove(); + } + const me = await get('/api/me'); + if (me.ok && me.user) state.user = me.user; + updateAuthUI(); + const m = await get('/api/market'); + if (m.ok) m.assets.forEach(a => state.assets.set(a.symbol, a)); + connectSocket(); + if (embed) switchView('games'); + else renderActiveView(); + setInterval(() => { // Ticker-Zeiten & Feed leichtgewichtig aktualisieren + if (activeView() === 'social') { /* live via socket */ } + }, 1000); +} +const authBtn = $('#authBtn'); +if (authBtn) authBtn.onclick = openAuthModal; +init(); diff --git a/public/js/framed-image.js b/public/js/framed-image.js new file mode 100644 index 0000000..4104c26 --- /dev/null +++ b/public/js/framed-image.js @@ -0,0 +1,156 @@ +// Gemeinsame Transform-Logik für Editor-Vorschau und finale Anzeige + +export const FRAMES = { + avatar: { + id: 'avatar', + aspectRatio: 1, + label: 'Profilbild', + cssClass: 'framed-image framed-image--avatar', + previewClass: 'framed-image--avatar-xl', + sizes: { sm: 'framed-image--avatar-sm', md: 'framed-image--avatar-md', lg: 'framed-image--avatar-lg' }, + }, + gallery: { + id: 'gallery', + aspectRatio: 1, + label: 'Quadrat', + cssClass: 'framed-image framed-image--gallery', + previewClass: 'framed-image--gallery-xl', + sizes: { sm: 'framed-image--gallery-sm', md: 'framed-image--gallery-md', lg: 'framed-image--gallery-lg' }, + }, + banner: { + id: 'banner', + aspectRatio: 3, + label: 'Banner', + cssClass: 'framed-image framed-image--banner', + previewClass: 'framed-image--banner-xl', + sizes: { sm: 'framed-image--banner-sm', md: 'framed-image--banner-md', lg: 'framed-image--banner-lg' }, + }, + card: { + id: 'card', + aspectRatio: 2 / 3, + label: 'Karte', + cssClass: 'framed-image framed-image--card', + previewClass: 'framed-image--card-xl', + sizes: { sm: 'framed-image--card-sm', md: 'framed-image--card-md', lg: 'framed-image--card-lg' }, + }, +}; + +export function computeFramedLayout(imgW, imgH, frameW, frameH, focus, zoom) { + const fx = focus?.x ?? 0.5; + const fy = focus?.y ?? 0.5; + const z = Math.max(1, zoom ?? 1); + const cover = Math.max(frameW / imgW, frameH / imgH); + const scale = cover * z; + const w = imgW * scale; + const h = imgH * scale; + let left = frameW / 2 - fx * w; + let top = frameH / 2 - fy * h; + left = Math.min(0, Math.max(frameW - w, left)); + top = Math.min(0, Math.max(frameH - h, top)); + return { width: w, height: h, left, top, scale }; +} + +export function focusFromLayout(imgW, imgH, frameW, frameH, layout, zoom) { + const z = Math.max(1, zoom ?? 1); + const cover = Math.max(frameW / imgW, frameH / imgH); + const scale = cover * z; + const w = imgW * scale; + const h = imgH * scale; + return { + x: Math.min(1, Math.max(0, (frameW / 2 - layout.left) / w)), + y: Math.min(1, Math.max(0, (frameH / 2 - layout.top) / h)), + }; +} + +export function applyFramedLayout(imgEl, layout) { + imgEl.style.width = `${layout.width}px`; + imgEl.style.height = `${layout.height}px`; + imgEl.style.left = `${layout.left}px`; + imgEl.style.top = `${layout.top}px`; +} + +export function loadImage(src) { + return new Promise((resolve, reject) => { + const img = new Image(); + img.onload = () => resolve(img); + img.onerror = () => reject(new Error('Bild konnte nicht geladen werden')); + img.src = src; + }); +} + +function sizeClass(frame, size) { + const preset = FRAMES[frame] || FRAMES.gallery; + return preset.sizes[size] || preset.sizes.sm; +} + +export function isImageAvatar(avatar) { + return avatar && typeof avatar === 'object' && avatar.type === 'image' && avatar.url; +} + +export function avatarEmoji(avatar) { + if (!avatar) return '🐂'; + if (typeof avatar === 'string') return avatar; + if (isImageAvatar(avatar)) return avatar.emoji || '🐂'; + return avatar.value || '🐂'; +} + +export function renderFramedImage({ url, focus, zoom, frame = 'gallery', size = 'sm', alt = '' }) { + const preset = FRAMES[frame] || FRAMES.gallery; + const fx = focus?.x ?? 0.5; + const fy = focus?.y ?? 0.5; + const z = zoom ?? 1; + return `
+ ${escapeAttr(alt)} +
`; +} + +export function renderUploadItem(item) { + return `
+ ${renderFramedImage({ url: item.url, focus: item.focus, zoom: item.zoom, frame: item.frame, size: 'md' })} +
+ + +
+
`; +} + +export function renderAvatar(avatar, { size = 'sm', alt = '' } = {}) { + if (isImageAvatar(avatar)) { + return renderFramedImage({ + url: avatar.url, + focus: avatar.focus, + zoom: avatar.zoom, + frame: 'avatar', + size, + alt, + }); + } + const emoji = avatarEmoji(avatar); + const cls = size === 'lg' ? 'avatar-emoji avatar-emoji--lg' : size === 'md' ? 'avatar-emoji avatar-emoji--md' : 'avatar-emoji avatar-emoji--sm'; + return ``; +} + +export function hydrateFramedImages(root = document) { + root.querySelectorAll('.framed-image-host[data-framed]').forEach((host) => { + const img = host.querySelector('img'); + if (!img) return; + const apply = () => { + const layout = computeFramedLayout( + img.naturalWidth, + img.naturalHeight, + host.clientWidth, + host.clientHeight, + { x: +host.dataset.fx, y: +host.dataset.fy }, + +host.dataset.zoom, + ); + applyFramedLayout(img, layout); + }; + if (img.complete && img.naturalWidth) apply(); + else img.addEventListener('load', apply, { once: true }); + }); +} + +function escapeAttr(s) { + return String(s).replace(/&/g, '&').replace(/"/g, '"').replace(/} + */ +export async function openImagePositionEditor({ file, url, focus, zoom, frame = 'avatar' } = {}) { + const preset = FRAMES[frame] || FRAMES.avatar; + let src = url; + if (file) src = URL.createObjectURL(file); + + let img; + try { + img = await loadImage(src); + } catch (e) { + if (file) URL.revokeObjectURL(src); + throw e; + } + + const state = { + focus: { x: focus?.x ?? 0.5, y: focus?.y ?? 0.5 }, + zoom: Math.max(1, zoom ?? 1), + img, + dragging: false, + lastX: 0, + lastY: 0, + pinchDist: 0, + pinchZoom: 1, + }; + + return new Promise((resolve) => { + const backdrop = document.createElement('div'); + backdrop.className = 'modal-backdrop image-editor-backdrop'; + backdrop.innerHTML = ` + `; + + document.body.appendChild(backdrop); + document.body.style.overflow = 'hidden'; + + const frameEl = backdrop.querySelector('#ieFrame'); + const imgEl = backdrop.querySelector('#ieImg'); + const zoomInput = backdrop.querySelector('#ieZoom'); + const zoomVal = backdrop.querySelector('#ieZoomVal'); + + let layout = { left: 0, top: 0, width: 0, height: 0, scale: 1 }; + + function syncFromFocus() { + const fw = frameEl.clientWidth; + const fh = frameEl.clientHeight; + layout = computeFramedLayout(img.naturalWidth, img.naturalHeight, fw, fh, state.focus, state.zoom); + applyFramedLayout(imgEl, layout); + } + + function syncFocusFromLayout() { + const fw = frameEl.clientWidth; + const fh = frameEl.clientHeight; + state.focus = focusFromLayout(img.naturalWidth, img.naturalHeight, fw, fh, layout, state.zoom); + } + + function finish(result) { + document.body.style.overflow = ''; + backdrop.remove(); + if (file) URL.revokeObjectURL(src); + resolve(result); + } + + function onPointerDown(e) { + if (e.target.closest('button, input')) return; + state.dragging = true; + state.lastX = e.clientX; + state.lastY = e.clientY; + frameEl.setPointerCapture(e.pointerId); + e.preventDefault(); + } + + function onPointerMove(e) { + if (!state.dragging) return; + const dx = e.clientX - state.lastX; + const dy = e.clientY - state.lastY; + state.lastX = e.clientX; + state.lastY = e.clientY; + const fw = frameEl.clientWidth; + const fh = frameEl.clientHeight; + layout.left = Math.min(0, Math.max(fw - layout.width, layout.left + dx)); + layout.top = Math.min(0, Math.max(fh - layout.height, layout.top + dy)); + applyFramedLayout(imgEl, layout); + syncFocusFromLayout(); + } + + function onPointerUp(e) { + state.dragging = false; + try { frameEl.releasePointerCapture(e.pointerId); } catch { /* ignore */ } + } + + function onWheel(e) { + e.preventDefault(); + const delta = e.deltaY > 0 ? -0.08 : 0.08; + setZoom(state.zoom + delta); + } + + function setZoom(z) { + const fw = frameEl.clientWidth; + const fh = frameEl.clientHeight; + const oldZoom = state.zoom; + state.zoom = Math.min(4, Math.max(1, z)); + const oldLayout = { ...layout }; + layout = computeFramedLayout(img.naturalWidth, img.naturalHeight, fw, fh, state.focus, state.zoom); + // Fokuspunkt in der Mitte halten beim Zoomen + const cx = fw / 2; + const cy = fh / 2; + const relX = (cx - oldLayout.left) / oldLayout.width; + const relY = (cy - oldLayout.top) / oldLayout.height; + layout.left = cx - relX * layout.width; + layout.top = cy - relY * layout.height; + layout.left = Math.min(0, Math.max(fw - layout.width, layout.left)); + layout.top = Math.min(0, Math.max(fh - layout.height, layout.top)); + syncFocusFromLayout(); + applyFramedLayout(imgEl, layout); + zoomInput.value = state.zoom; + zoomVal.textContent = `${state.zoom.toFixed(1)}×`; + } + + imgEl.addEventListener('load', syncFromFocus, { once: true }); + if (imgEl.complete) syncFromFocus(); + else requestAnimationFrame(syncFromFocus); + + frameEl.addEventListener('pointerdown', onPointerDown); + frameEl.addEventListener('pointermove', onPointerMove); + frameEl.addEventListener('pointerup', onPointerUp); + frameEl.addEventListener('pointercancel', onPointerUp); + frameEl.addEventListener('wheel', onWheel, { passive: false }); + + // Pinch-Zoom auf Touch + frameEl.addEventListener('touchstart', (e) => { + if (e.touches.length === 2) { + state.pinchDist = Math.hypot( + e.touches[0].clientX - e.touches[1].clientX, + e.touches[0].clientY - e.touches[1].clientY, + ); + state.pinchZoom = state.zoom; + } + }, { passive: true }); + frameEl.addEventListener('touchmove', (e) => { + if (e.touches.length === 2 && state.pinchDist > 0) { + e.preventDefault(); + const dist = Math.hypot( + e.touches[0].clientX - e.touches[1].clientX, + e.touches[0].clientY - e.touches[1].clientY, + ); + setZoom(state.pinchZoom * (dist / state.pinchDist)); + } + }, { passive: false }); + + zoomInput.addEventListener('input', () => setZoom(+zoomInput.value)); + + backdrop.addEventListener('click', (e) => { + if (e.target === backdrop) finish(null); + }); + backdrop.querySelector('[data-act="cancel"]').onclick = () => finish(null); + backdrop.querySelector('[data-act="reset"]').onclick = () => { + state.focus = { x: 0.5, y: 0.5 }; + state.zoom = 1; + zoomInput.value = 1; + zoomVal.textContent = '1.0×'; + syncFromFocus(); + }; + backdrop.querySelector('[data-act="save"]').onclick = () => { + syncFocusFromLayout(); + finish({ focus: { ...state.focus }, zoom: state.zoom }); + }; + }); +} diff --git a/public/js/upload-helper.js b/public/js/upload-helper.js new file mode 100644 index 0000000..7e90faa --- /dev/null +++ b/public/js/upload-helper.js @@ -0,0 +1,72 @@ +import { openImagePositionEditor } from './image-editor.js'; + +/** + * Öffnet Editor und lädt Bild hoch. Für Avatar, Galerie und alle anderen Uploads. + */ +export async function uploadImageWithEditor(file, { frame, uploadFn }) { + if (!file) return null; + const result = await openImagePositionEditor({ file, frame }); + if (!result) return null; + return uploadFn(file, result); +} + +/** + * Editor für bestehendes Bild, dann Position speichern. + */ +export async function repositionImageWithEditor(item, { frame, saveFn }) { + const result = await openImagePositionEditor({ + url: item.url, + focus: item.focus, + zoom: item.zoom, + frame: frame || item.frame || 'gallery', + }); + if (!result) return null; + return saveFn(result); +} + +/** + * Verbindet einen File-Input mit Editor + Upload-Callback. + */ +export function wireImageFileInput(input, { frame, onPick }) { + input.addEventListener('change', async () => { + const file = input.files?.[0]; + input.value = ''; + if (!file) return; + try { + await onPick(file, frame); + } catch (e) { + throw e; + } + }); +} + +/** + * Erstellt versteckten File-Input + Button — Editor öffnet sich immer vor Upload. + */ +export function createImageUploadButton({ label, frame, onPick, className = 'btn btn-accent' }) { + const wrap = document.createElement('div'); + wrap.className = 'image-upload-wrap'; + const btn = document.createElement('button'); + btn.type = 'button'; + btn.className = className; + btn.textContent = label; + const input = document.createElement('input'); + input.type = 'file'; + input.accept = 'image/*'; + input.hidden = true; + btn.onclick = () => input.click(); + wireImageFileInput(input, { + frame, + onPick: async (file) => onPick(file, frame), + }); + wrap.append(btn, input); + return wrap; +} + +export function appendPositionFields(fd, result, frame) { + fd.append('focusX', result.focus.x); + fd.append('focusY', result.focus.y); + fd.append('zoom', result.zoom); + if (frame) fd.append('frame', frame); + return fd; +} diff --git a/public/play.html b/public/play.html new file mode 100644 index 0000000..7d0495d --- /dev/null +++ b/public/play.html @@ -0,0 +1,98 @@ + + + + + + + + PlayBull — Trilogy Hub Trading & Arcade + + + + + + + + + +
+
+ + PlayBull +
+
+ + +
+
+ + +
+ +
+ +
+
+

Markt live

+
+ + + +
+
+
+
+ + +
+

Casino 🎰

+
+ +
+ + +
+

Portfolio 💼

+
+
+ + +
+

Rangliste 🏆

+
+

Aktivität

+
+
+ + +
+

Einstellungen ⚙️

+
+
+
+ + + + + + + + +
+ + + + + diff --git a/public/playbull.js b/public/playbull.js new file mode 100644 index 0000000..0b0e97e --- /dev/null +++ b/public/playbull.js @@ -0,0 +1,460 @@ +/* ============================================================ + PlayBull Integration — verbindet Trilogy Hub mit dem + PlayBull-Backend (echtes Login, Live-Trading, Casino). + Additiv: laeuft NACH app.js, ohne dessen Logik zu entfernen. + ============================================================ */ +(() => { + "use strict"; + const $ = (s, c = document) => c.querySelector(s); + const $$ = (s, c = document) => Array.from(c.querySelectorAll(s)); + + const PB = { + user: null, + assets: new Map(), + portfolio: null, + socket: null, + chart: null, + parisLive: false, + casinoLoaded: false, + }; + window.PlayBull = PB; + + /* -------------------- API -------------------- */ + async function api(path, body, method = "POST") { + const opts = { method, headers: { "Content-Type": "application/json" }, credentials: "same-origin" }; + if (body && method !== "GET") opts.body = JSON.stringify(body); + const res = await fetch(path, method === "GET" ? { credentials: "same-origin" } : opts); + const data = await res.json().catch(() => ({ ok: false, error: "Netzwerkfehler" })); + return data; + } + const get = (p) => api(p, null, "GET"); + + /* -------------------- Format -------------------- */ + const eur = (n, d = 2) => "€" + (Number(n) || 0).toLocaleString("de-DE", { minimumFractionDigits: d, maximumFractionDigits: d }); + const px = (n) => (Number(n) < 1 ? (Number(n)).toLocaleString("de-DE", { maximumFractionDigits: 4 }) : eur(n)); + const signed = (n) => (n >= 0 ? "+" : "-") + "€" + Math.abs(Number(n) || 0).toLocaleString("de-DE", { minimumFractionDigits: 2, maximumFractionDigits: 2 }); + + /* -------------------- Toast -------------------- */ + function toast(msg, type = "") { + let wrap = $("#pbToasts"); + if (!wrap) { + wrap = document.createElement("div"); + wrap.id = "pbToasts"; + wrap.style.cssText = "position:fixed;top:80px;left:0;right:0;z-index:200;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none"; + document.body.appendChild(wrap); + } + const el = document.createElement("div"); + const border = type === "win" ? "var(--success)" : type === "lose" ? "var(--error)" : "var(--border)"; + el.style.cssText = `pointer-events:auto;background:var(--surface);border:1px solid ${border};color:var(--text);padding:11px 18px;border-radius:12px;font-weight:600;font-size:.9rem;box-shadow:0 10px 30px rgba(0,0,0,.45);max-width:90%`; + el.innerHTML = msg; + wrap.appendChild(el); + setTimeout(() => { el.style.transition = "opacity .3s"; el.style.opacity = "0"; }, 2600); + setTimeout(() => el.remove(), 3000); + } + + /* -------------------- Modal -------------------- */ + function openModal(html, maxw = "440px") { + closeModal(); + const back = document.createElement("div"); + back.className = "modal-backdrop"; + back.id = "pbModal"; + back.innerHTML = `
${html}
`; + document.body.appendChild(back); + back.addEventListener("click", (e) => { if (e.target === back) closeModal(); }); + if (window.lucide) window.lucide.createIcons(); + return back; + } + function closeModal() { const m = $("#pbModal"); if (m) m.remove(); } + PB.closeModal = closeModal; + + /* -------------------- Auth -------------------- */ + function openAuthModal(mode = "login") { + const isLogin = mode === "login"; + openModal(` +
+

${isLogin ? "Login" : "Registrieren"} 🐂

+ +
+ + + + +

+ +

+ ${isLogin ? "Noch kein Account?" : "Schon registriert?"} + +

`); + $("#pbModal [data-close]").onclick = closeModal; + $("#pbAuthSwitch").onclick = () => openAuthModal(isLogin ? "register" : "login"); + const submit = async () => { + const username = $("#pbUser").value.trim(); + const password = $("#pbPass").value; + const r = await api(isLogin ? "/api/login" : "/api/register", { username, password }); + if (!r.ok) { $("#pbAuthErr").textContent = r.error || "Fehler"; return; } + PB.user = r.user; + closeModal(); + toast(`Willkommen, ${r.user.username}! 🎉`, "win"); + onAuthChange(); + }; + $("#pbAuthSubmit").onclick = submit; + $("#pbPass").addEventListener("keydown", (e) => { if (e.key === "Enter") submit(); }); + setTimeout(() => $("#pbUser")?.focus(), 50); + } + PB.openAuthModal = openAuthModal; + + async function logout() { + await api("/api/logout", {}); + PB.user = null; + PB.parisLive = false; + onAuthChange(); + toast("Ausgeloggt"); + } + + function onAuthChange() { + // Members-only Navigation ein/ausblenden + $$("[data-members]").forEach((el) => { el.hidden = !PB.user; }); + // aktuelle Seite aktualisieren + const route = (location.hash || "#home").replace("#", ""); + if (route === "paris") setupParis(); + if (route === "casino") setupCasino(); + // Falls eingeloggt: Portfolio laden + if (PB.user) loadPortfolio(); + } + + /* -------------------- Portfolio / Markt -------------------- */ + async function loadMarket() { + const r = await get("/api/market"); + if (r.ok) r.assets.forEach((a) => PB.assets.set(a.symbol, a)); + } + async function loadPortfolio() { + if (!PB.user) return; + const r = await get("/api/portfolio"); + if (r.ok) { PB.portfolio = r.portfolio; if (PB.user) PB.user.balance = r.portfolio.balance; } + } + + /* ==================== PARIS — LIVE TRADING ==================== */ + function setupParis() { + // Demo-Handler von app.js abklemmen: Login-Form + Logout klonen + const form = $("#loginForm"); + if (form && !form.dataset.pbWired) { + const clone = form.cloneNode(true); + form.replaceWith(clone); + clone.dataset.pbWired = "1"; + clone.addEventListener("submit", async (e) => { + e.preventDefault(); + const u = clone.querySelector("#username").value.trim(); + const pw = clone.querySelector("#password").value; + const err = clone.querySelector("#loginError"); + // 1) Login versuchen, 2) sonst automatisch registrieren + let r = await api("/api/login", { username: u, password: pw }); + if (!r.ok) { + const reg = await api("/api/register", { username: u, password: pw }); + if (reg.ok) r = reg; + } + if (!r.ok) { err.textContent = r.error || "Login fehlgeschlagen"; return; } + err.textContent = ""; + PB.user = r.user; + onAuthChange(); + revealDashboard(); + }); + // Hinweis-Text anpassen + const hint = clone.querySelector("p.text-faint"); + if (hint) hint.innerHTML = 'Dein PlayBull-Konto — neu? Einfach Name + Passwort eingeben, der Account wird automatisch erstellt.'; + } + const logoutBtn = $("#logoutBtn"); + if (logoutBtn && !logoutBtn.dataset.pbWired) { + const lc = logoutBtn.cloneNode(true); + logoutBtn.replaceWith(lc); + lc.dataset.pbWired = "1"; + lc.addEventListener("click", () => { logout(); $("#parisDashboard").classList.add("hidden"); $("#parisLogin").classList.remove("hidden"); }); + } + if (PB.user) revealDashboard(); + } + + async function revealDashboard() { + if (!PB.user) return; + $("#parisLogin")?.classList.add("hidden"); + $("#parisDashboard")?.classList.remove("hidden"); + await loadPortfolio(); + injectDashboardExtras(); + renderMarketTable(); + renderTradeLog(); + renderHoldings(); + updateKpis(); + requestAnimationFrame(() => { try { buildAllocationChart(); } catch {} }); + PB.parisLive = true; + if (window.lucide) window.lucide.createIcons(); + } + + // Logged-in-as Anzeige + Casino-CTA in die Navbar setzen + function injectDashboardExtras() { + const chip = $$("#parisDashboard .chip").find((c) => /Logged in as|Eingeloggt/.test(c.textContent)); + if (chip) chip.textContent = `Eingeloggt: ${PB.user.username}`; + const bar = $("#parisDashboard .wrap.flex"); + if (bar && !$("#pbCasinoCta")) { + const a = document.createElement("button"); + a.id = "pbCasinoCta"; + a.className = "btn btn-ghost !min-h-0 !py-2.5"; + a.innerHTML = 'Casino & Games '; + a.onclick = () => { location.hash = "#casino"; }; + const logout = $("#parisDashboard #logoutBtn"); + logout?.parentElement?.insertBefore(a, logout); + } + } + + function updateKpis() { + const p = PB.portfolio; if (!p) return; + const pnl = (p.holdings || []).reduce((s, h) => s + h.pnl, 0); + // Reihenfolge im KPI-Grid: Portfolio Value, Today's P&L, Open Positions, Buying Power + const grid = $("#parisDashboard .grid.grid-cols-2"); + if (grid) { + const vals = $$("[data-counter]", grid); + if (vals[0]) vals[0].textContent = eur(p.netWorth); + if (vals[1]) { vals[1].textContent = signed(pnl); vals[1].style.color = pnl >= 0 ? "var(--success)" : "var(--error)"; } + if (vals[2]) vals[2].textContent = String((p.holdings || []).length); + if (vals[3]) vals[3].textContent = eur(p.balance); + // statische "(+0.66%)" Klammer hinter P&L entfernen, falls vorhanden + const pnlExtra = vals[1]?.parentElement?.querySelector("span.text-sm"); + if (pnlExtra) pnlExtra.textContent = ""; + } + // Portfolio-Wert oben in der Navbar + const navPv = $("#parisDashboard .text-right [data-counter]"); + if (navPv) navPv.textContent = eur(p.netWorth); + } + + function renderMarketTable() { + const table = $("#watchlistTable"); + if (!table) return; + const assets = [...PB.assets.values()]; + const posBySym = {}; + (PB.portfolio?.holdings || []).forEach((h) => (posBySym[h.symbol] = h)); + table.innerHTML = ` + + + Asset + Kurs + 24h + Position + Aktionen + + + + ${assets.map((a) => { + const pos = posBySym[a.symbol]; + const cls = a.changePct >= 0 ? "text-success" : "text-error"; + return ` + ${a.emoji || ""} ${a.symbol}
${a.name}
+ ${px(a.price)} + ${a.changePct >= 0 ? "+" : ""}${(a.changePct).toFixed(2)}% + ${pos ? pos.quantity + (pos.side === "short" ? " (S)" : "") : "—"} + + + + + + + `; + }).join("")} + `; + $$("#watchlistTable tr[data-sym]").forEach((tr) => { + const sym = tr.dataset.sym; + tr.querySelector("[data-buy]").onclick = () => openTradeModal(sym, "buy"); + tr.querySelector("[data-sell]").onclick = () => openTradeModal(sym, "sell"); + tr.querySelector("[data-pump]").onclick = () => manipulate(sym, "pump"); + tr.querySelector("[data-dump]").onclick = () => manipulate(sym, "dump"); + }); + } + + async function manipulate(sym, action) { + const r = await api("/api/manipulate", { symbol: sym, action, value: action === "pump" || action === "dump" ? 3 : 0 }); + if (!r.ok) return toast(r.error, "lose"); + toast(`${sym}: ${action === "pump" ? "🚀 gepumpt" : "📉 gedumpt"} (für alle)`); + } + + function openTradeModal(sym, side) { + const a = PB.assets.get(sym); + openModal(` +
+

${a.emoji || ""} ${sym} ${a.name}

+ +
+
+ Kurs + ${px(a.price)} +
+
+ + +
+ + +
+ ${[0.1, 1, 5, 10].map((v) => ``).join("")} + +
+

+ +

Guthaben: ${eur(PB.user.balance)}

`); + let mode = side; + const qty = $("#tmQty"); + const refresh = () => { + const cur = PB.assets.get(sym); + $("#tmPx").textContent = px(cur.price); + const cost = (parseFloat(qty.value) || 0) * cur.price; + $("#tmEst").textContent = `≈ ${eur(cost)}`; + $("#tmGo").textContent = mode === "buy" ? "Jetzt kaufen" : "Jetzt verkaufen"; + $("#tmGo").className = "btn w-full " + (mode === "buy" ? "btn-primary" : "btn-ghost"); + }; + $("#pbModal [data-close]").onclick = closeModal; + $$("#pbModal [data-mode]").forEach((b) => b.onclick = () => { + mode = b.dataset.mode; + $$("#pbModal [data-mode]").forEach((x) => x.className = "btn flex-1 " + (x.dataset.mode === mode ? "btn-primary" : "btn-ghost")); + refresh(); + }); + $$("#pbModal [data-amt]").forEach((c) => c.onclick = () => { qty.value = c.dataset.amt; refresh(); }); + $("#pbModal [data-max]").onclick = () => { qty.value = (PB.user.balance / PB.assets.get(sym).price).toFixed(4); refresh(); }; + qty.addEventListener("input", refresh); + $("#tmGo").onclick = async () => { + const r = await api("/api/trade", { symbol: sym, side: mode, qty: parseFloat(qty.value) }); + if (!r.ok) return toast(r.error, "lose"); + const tradedQty = parseFloat(qty.value); + PB.user.balance = r.balance; + closeModal(); + toast(`${mode === "buy" ? "Gekauft" : "Verkauft"}: ${tradedQty} ${sym} @ ${px(r.price)}`, "win"); + await loadPortfolio(); + updateKpis(); renderMarketTable(); renderTradeLog(); buildAllocationChart(); + }; + refresh(); + } + + async function renderTradeLog() { + const log = $("#tradeLog"); + if (!log) return; + const r = await get("/api/trades"); + const trades = r.ok ? r.trades : []; + log.innerHTML = trades.length ? trades.slice(0, 12).map((t) => { + const isBuy = t.side === "buy"; + const d = new Date(t.ts).toLocaleString("de-DE", { day: "2-digit", month: "short", hour: "2-digit", minute: "2-digit" }); + return `
+ ${isBuy ? "BUY" : "SELL"} + ${t.qty} ${t.symbol} @ ${px(t.price)} + ${d} +
`; + }).join("") : '
Noch keine Trades.
'; + } + + function renderHoldings() { updateKpis(); } + + const chartColors = ["#c9a84c", "#2f9e8f", "#5b7aa6", "#9a958a", "#7d8a4f", "#b8763a", "#6a8caf", "#a85f7a"]; + function buildAllocationChart() { + const ctx = $("#allocationChart"); + if (!ctx || typeof Chart === "undefined") return; + const holds = (PB.portfolio?.holdings || []).filter((h) => Math.abs(h.value) > 0.01); + const data = holds.map((h) => Math.abs(h.value)); + const labels = holds.map((h) => h.symbol); + if (PB.chart) PB.chart.destroy(); + if (!data.length) { + const c2 = ctx.getContext("2d"); c2.clearRect(0, 0, ctx.width, ctx.height); + $("#chartLegend").innerHTML = '

Noch keine Positionen.

'; + return; + } + PB.chart = new Chart(ctx, { + type: "doughnut", + data: { labels, datasets: [{ data, backgroundColor: labels.map((_, i) => chartColors[i % chartColors.length]), borderColor: "transparent", borderWidth: 2, hoverOffset: 8 }] }, + options: { cutout: "62%", responsive: true, plugins: { legend: { display: false }, tooltip: { callbacks: { label: (c) => ` ${c.label}: ${eur(c.parsed)}` } } } }, + }); + const total = data.reduce((a, b) => a + b, 0); + $("#chartLegend").innerHTML = labels.map((l, i) => ` +
+ ${l} + ${((data[i] / total) * 100).toFixed(1)}% +
`).join(""); + } + + /* ==================== CASINO (eingebettete Arcade) ==================== */ + function setupCasino() { + const gate = $("#casinoGate"), wrap = $("#casinoFrameWrap"); + if (!gate || !wrap) return; + if (PB.user) { + gate.classList.add("hidden"); + wrap.classList.remove("hidden"); + const frame = $("#casinoFrame"); + if (frame) { + const url = "/play.html?embed=1"; + if (!frame.src.includes("embed=1")) frame.src = url; + PB.casinoLoaded = true; + } + } else { + gate.classList.remove("hidden"); + wrap.classList.add("hidden"); + } + const btn = $("#casinoLoginBtn"); + if (btn && !btn.dataset.pbWired) { btn.dataset.pbWired = "1"; btn.onclick = () => openAuthModal(); } + if (window.lucide) window.lucide.createIcons(); + } + + /* -------------------- Live (Socket.IO) -------------------- */ + function connectSocket() { + if (typeof io === "undefined") return; + const socket = io(); + PB.socket = socket; + socket.on("hello", ({ assets }) => { assets && assets.forEach((a) => PB.assets.set(a.symbol, a)); }); + socket.on("prices", ({ data }) => { + data.forEach((d) => { + const a = PB.assets.get(d.s); + if (!a) return; + const prev = a.price; + a.price = d.p; a.change = d.c; a.changePct = d.cp; a.halted = !!d.h; + if ((location.hash || "#home").replace("#", "") === "paris" && PB.parisLive) { + const row = $(`#watchlistTable tr[data-sym="${d.s}"]`); + if (row) { + const pxc = row.querySelector("[data-px]"), chc = row.querySelector("[data-chg]"); + if (pxc) { pxc.textContent = px(d.p); pxc.classList.remove("flash-up", "flash-down"); void pxc.offsetWidth; pxc.classList.add(d.p >= prev ? "flash-up" : "flash-down"); } + if (chc) { chc.textContent = (d.cp >= 0 ? "+" : "") + d.cp.toFixed(2) + "%"; chc.className = "py-3 px-3 text-right " + (d.cp >= 0 ? "text-success" : "text-error"); } + } + } + }); + // Portfolio-Wert live nachrechnen + if (PB.portfolio && PB.parisLive) recomputeLive(); + }); + socket.on("balance_changed", ({ userId, balance }) => { + if (PB.user && userId === PB.user.id) { PB.user.balance = balance; if (PB.portfolio) PB.portfolio.balance = balance; updateKpis(); } + }); + } + function recomputeLive() { + const p = PB.portfolio; if (!p) return; + let hv = 0; + (p.holdings || []).forEach((h) => { + const a = PB.assets.get(h.symbol); + if (a) { h.price = a.price; h.value = h.quantity * a.price; h.pnl = h.value - h.quantity * h.avgPrice; } + hv += h.value; + }); + p.holdingsValue = hv; p.netWorth = p.balance + hv; + updateKpis(); + if (PB.chart) { PB.chart.data.datasets[0].data = (p.holdings || []).filter(h => Math.abs(h.value) > 0.01).map(h => Math.abs(h.value)); PB.chart.update("none"); } + } + + /* -------------------- Route Hooks -------------------- */ + function onRoute() { + const route = (location.hash || "#home").replace("#", ""); + if (route === "paris") setupParis(); + if (route === "casino") setupCasino(); + } + PB.onRoute = onRoute; + + /* -------------------- Init -------------------- */ + async function init() { + await loadMarket(); + const me = await get("/api/me"); + if (me.ok && me.user) { PB.user = me.user; await loadPortfolio(); } + $$("[data-members]").forEach((el) => { el.hidden = !PB.user; }); + connectSocket(); + window.addEventListener("hashchange", onRoute); + // Erststart-Route behandeln (z.B. direkt auf #paris) + onRoute(); + } + + if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", init); + else init(); +})(); diff --git a/public/uploads/manifest.json b/public/uploads/manifest.json new file mode 100644 index 0000000..ef53726 --- /dev/null +++ b/public/uploads/manifest.json @@ -0,0 +1,7 @@ +{ + "page-home::Magic Mike": "/uploads/page-home_Magic_Mike.jpg", + "page-home::Nico Gonzales": "/uploads/page-home_Nico_Gonzales.jpg", + "page-home::Paris": "/uploads/page-home_Paris.jpg", + "page-home::Team Photo": "/uploads/page-home_Team_Photo.jpg", + "page-nico::Hero Background": "/uploads/page-nico_Hero_Background.jpg" +} \ No newline at end of file diff --git a/public/uploads/page-home_Magic_Mike.jpg b/public/uploads/page-home_Magic_Mike.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b1ec2b162fb868e382f8c6c4fa15dbfdb34ed265 GIT binary patch literal 123197 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

0qZhL$Cxcp}@^EwsBn>@Im^Z0wdXDT}f- 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 jXYvb>qzR57EuwEor~%|!W8#)kIOd#CeR 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 m7FUS}(d-yD8qf6~h@G9=HKchaw-#nIY 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

3-3B1U-{7xAGsU{VMvP1XVph7dKZ|9andh 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

    pbp)z-QE`Dve&A7bC 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 CiJYDQ literal 0 HcmV?d00001 diff --git a/public/uploads/page-nico_Hero_Background.jpg b/public/uploads/page-nico_Hero_Background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..57d1ae72e4dd2c4912f29ea52a393d25629776df GIT binary patch literal 161996 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

    o~V)Bl6kEUxk8=5Ab$3+F{9PSl$Fa7J6 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 literal 0 HcmV?d00001 diff --git a/server/auth.js b/server/auth.js new file mode 100644 index 0000000..f5c3cec --- /dev/null +++ b/server/auth.js @@ -0,0 +1,70 @@ +import bcrypt from 'bcryptjs'; +import jwt from 'jsonwebtoken'; +import { config } from './config.js'; +import { Users } from './db.js'; + +const COOKIE = 'pb_token'; + +export function signToken(user) { + return jwt.sign({ id: user.id, username: user.username }, config.JWT_SECRET, { expiresIn: '30d' }); +} + +export function setAuthCookie(res, token) { + res.cookie(COOKIE, token, { + httpOnly: true, + sameSite: 'lax', + maxAge: 30 * 24 * 60 * 60 * 1000, + }); +} + +export function clearAuthCookie(res) { + res.clearCookie(COOKIE); +} + +function readToken(req) { + const c = req.cookies?.[COOKIE]; + if (c) return c; + const h = req.headers.authorization; + if (h && h.startsWith('Bearer ')) return h.slice(7); + return null; +} + +// Haengt req.user an, wenn eingeloggt (sonst null). Blockiert nicht. +export function optionalAuth(req, _res, next) { + req.user = null; + const token = readToken(req); + if (token) { + try { + const decoded = jwt.verify(token, config.JWT_SECRET); + const u = Users.byId(decoded.id); + if (u) req.user = u; + } catch { /* ungueltig -> Gast */ } + } + next(); +} + +// Erzwingt Login (fuer Gamble & Trades). +export function requireAuth(req, res, next) { + if (!req.user) return res.status(401).json({ error: 'Login erforderlich' }); + next(); +} + +export async function registerUser(username, password) { + username = String(username || '').trim(); + if (username.length < 3 || username.length > 20) throw new Error('Username: 3-20 Zeichen'); + if (!/^[a-zA-Z0-9_]+$/.test(username)) throw new Error('Nur Buchstaben, Zahlen, _'); + if (String(password || '').length < 4) throw new Error('Passwort: min. 4 Zeichen'); + if (Users.byName(username)) throw new Error('Username bereits vergeben'); + const hash = await bcrypt.hash(password, 10); + return Users.create(username, hash, config.START_BALANCE); +} + +export async function loginUser(username, password) { + const u = Users.byName(String(username || '').trim()); + if (!u) throw new Error('Falscher Username oder Passwort'); + const ok = await bcrypt.compare(String(password || ''), u.password_hash); + if (!ok) throw new Error('Falscher Username oder Passwort'); + return u; +} + +export { COOKIE }; diff --git a/server/config.js b/server/config.js new file mode 100644 index 0000000..bbdae5a --- /dev/null +++ b/server/config.js @@ -0,0 +1,40 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.resolve(__dirname, '..'); + +// Minimaler .env Parser (keine externe Abhaengigkeit noetig) +function loadEnv() { + const file = path.join(ROOT, '.env'); + if (!fs.existsSync(file)) return; + const txt = fs.readFileSync(file, 'utf8'); + for (const line of txt.split(/\r?\n/)) { + const trimmed = line.trim(); + if (!trimmed || trimmed.startsWith('#')) continue; + const idx = trimmed.indexOf('='); + if (idx === -1) continue; + const key = trimmed.slice(0, idx).trim(); + const val = trimmed.slice(idx + 1).trim(); + if (!(key in process.env)) process.env[key] = val; + } +} + +loadEnv(); + +export const config = { + ROOT, + PORT: Number(process.env.PORT || 3000), + JWT_SECRET: process.env.JWT_SECRET || 'dev-secret-change-me', + FINNHUB_API_KEY: process.env.FINNHUB_API_KEY || '', + START_BALANCE: Number(process.env.START_BALANCE || 10000), + DATA_DIR: path.join(ROOT, 'data'), + PUBLIC_DIR: path.join(ROOT, 'public'), + UPLOADS_DIR: path.join(ROOT, 'data', 'uploads', 'avatars'), + FILES_DIR: path.join(ROOT, 'data', 'uploads', 'files'), +}; + +if (!fs.existsSync(config.DATA_DIR)) fs.mkdirSync(config.DATA_DIR, { recursive: true }); +if (!fs.existsSync(config.UPLOADS_DIR)) fs.mkdirSync(config.UPLOADS_DIR, { recursive: true }); +if (!fs.existsSync(config.FILES_DIR)) fs.mkdirSync(config.FILES_DIR, { recursive: true }); diff --git a/server/db.js b/server/db.js new file mode 100644 index 0000000..06c9795 --- /dev/null +++ b/server/db.js @@ -0,0 +1,208 @@ +import { DatabaseSync } from 'node:sqlite'; +import path from 'node:path'; +import { config } from './config.js'; + +const db = new DatabaseSync(path.join(config.DATA_DIR, 'playbull.db')); + +db.exec(` + PRAGMA journal_mode = WAL; + + CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + password_hash TEXT NOT NULL, + balance REAL NOT NULL DEFAULT 0, + avatar TEXT DEFAULT '🐂', + created_at INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS holdings ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL, + symbol TEXT NOT NULL, + quantity REAL NOT NULL DEFAULT 0, + avg_price REAL NOT NULL DEFAULT 0, + UNIQUE(user_id, symbol) + ); + + CREATE TABLE IF NOT EXISTS trades ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL, + symbol TEXT NOT NULL, + side TEXT NOT NULL, + qty REAL NOT NULL, + price REAL NOT NULL, + ts INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS games ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL, + game TEXT NOT NULL, + bet REAL NOT NULL, + payout REAL NOT NULL, + result TEXT, + ts INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS feed ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + kind TEXT NOT NULL, + text TEXT NOT NULL, + ts INTEGER NOT NULL + ); + + CREATE TABLE IF NOT EXISTS uploads ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL, + url TEXT NOT NULL, + frame TEXT NOT NULL DEFAULT 'gallery', + focus_x REAL DEFAULT 0.5, + focus_y REAL DEFAULT 0.5, + zoom REAL DEFAULT 1.0, + created_at INTEGER NOT NULL + ); +`); + +// Migration: Avatar-Bild + Positions-Metadaten +const userCols = db.prepare('PRAGMA table_info(users)').all().map((c) => c.name); +if (!userCols.includes('avatar_image')) db.exec('ALTER TABLE users ADD COLUMN avatar_image TEXT'); +if (!userCols.includes('avatar_focus_x')) db.exec('ALTER TABLE users ADD COLUMN avatar_focus_x REAL DEFAULT 0.5'); +if (!userCols.includes('avatar_focus_y')) db.exec('ALTER TABLE users ADD COLUMN avatar_focus_y REAL DEFAULT 0.5'); +if (!userCols.includes('avatar_zoom')) db.exec('ALTER TABLE users ADD COLUMN avatar_zoom REAL DEFAULT 1.0'); + +export default db; + +// ---- User Helpers ---- +export const Users = { + create(username, hash, balance) { + const info = db.prepare( + 'INSERT INTO users (username, password_hash, balance, created_at) VALUES (?,?,?,?)' + ).run(username, hash, balance, Date.now()); + return this.byId(info.lastInsertRowid); + }, + byId(id) { + return db.prepare('SELECT * FROM users WHERE id = ?').get(id); + }, + byName(name) { + return db.prepare('SELECT * FROM users WHERE username = ? COLLATE NOCASE').get(name); + }, + all() { + return db.prepare(` + SELECT id, username, balance, avatar, avatar_image, avatar_focus_x, avatar_focus_y, avatar_zoom, created_at + FROM users ORDER BY balance DESC + `).all(); + }, + setBalance(id, balance) { + db.prepare('UPDATE users SET balance = ? WHERE id = ?').run(Math.max(0, balance), id); + }, + addBalance(id, delta) { + const u = this.byId(id); + if (!u) return null; + const nb = Math.max(0, u.balance + delta); + db.prepare('UPDATE users SET balance = ? WHERE id = ?').run(nb, id); + return nb; + }, + setAvatar(id, avatar) { + db.prepare('UPDATE users SET avatar = ? WHERE id = ?').run(avatar, id); + }, + setAvatarImage(id, imagePath, focusX, focusY, zoom) { + db.prepare(` + UPDATE users SET avatar_image = ?, avatar_focus_x = ?, avatar_focus_y = ?, avatar_zoom = ? + WHERE id = ? + `).run(imagePath, focusX, focusY, zoom, id); + }, + setAvatarPosition(id, focusX, focusY, zoom) { + db.prepare(` + UPDATE users SET avatar_focus_x = ?, avatar_focus_y = ?, avatar_zoom = ? + WHERE id = ? + `).run(focusX, focusY, zoom, id); + }, + clearAvatarImage(id) { + db.prepare(` + UPDATE users SET avatar_image = NULL, avatar_focus_x = 0.5, avatar_focus_y = 0.5, avatar_zoom = 1.0 + WHERE id = ? + `).run(id); + }, + count() { + return db.prepare('SELECT COUNT(*) c FROM users').get().c; + }, +}; + +// ---- Holdings Helpers ---- +export const Holdings = { + forUser(userId) { + return db.prepare('SELECT * FROM holdings WHERE user_id = ?').all(userId); + }, + get(userId, symbol) { + return db.prepare('SELECT * FROM holdings WHERE user_id = ? AND symbol = ?').get(userId, symbol); + }, + upsert(userId, symbol, quantity, avgPrice) { + db.prepare(` + INSERT INTO holdings (user_id, symbol, quantity, avg_price) VALUES (?,?,?,?) + ON CONFLICT(user_id, symbol) DO UPDATE SET quantity = excluded.quantity, avg_price = excluded.avg_price + `).run(userId, symbol, quantity, avgPrice); + }, + remove(userId, symbol) { + db.prepare('DELETE FROM holdings WHERE user_id = ? AND symbol = ?').run(userId, symbol); + }, +}; + +export const Trades = { + add(userId, symbol, side, qty, price) { + db.prepare('INSERT INTO trades (user_id, symbol, side, qty, price, ts) VALUES (?,?,?,?,?,?)') + .run(userId, symbol, side, qty, price, Date.now()); + }, + forUser(userId, limit = 50) { + return db.prepare('SELECT * FROM trades WHERE user_id = ? ORDER BY ts DESC LIMIT ?').all(userId, limit); + }, +}; + +export const Games = { + add(userId, game, bet, payout, result) { + db.prepare('INSERT INTO games (user_id, game, bet, payout, result, ts) VALUES (?,?,?,?,?,?)') + .run(userId, game, bet, payout, JSON.stringify(result || {}), Date.now()); + }, + forUser(userId, limit = 50) { + return db.prepare('SELECT * FROM games WHERE user_id = ? ORDER BY ts DESC LIMIT ?').all(userId, limit); + }, +}; + +export const Feed = { + add(kind, text) { + db.prepare('INSERT INTO feed (kind, text, ts) VALUES (?,?,?)').run(kind, text, Date.now()); + // alte Eintraege aufraeumen + db.prepare('DELETE FROM feed WHERE id NOT IN (SELECT id FROM feed ORDER BY ts DESC LIMIT 100)').run(); + }, + recent(limit = 30) { + return db.prepare('SELECT * FROM feed ORDER BY ts DESC LIMIT ?').all(limit); + }, +}; + +export const Uploads = { + forUser(userId) { + return db.prepare('SELECT * FROM uploads WHERE user_id = ? ORDER BY created_at DESC').all(userId); + }, + byId(id) { + return db.prepare('SELECT * FROM uploads WHERE id = ?').get(id); + }, + create(userId, frame, focusX, focusY, zoom) { + const info = db.prepare(` + INSERT INTO uploads (user_id, url, frame, focus_x, focus_y, zoom, created_at) + VALUES (?,?,?,?,?,?,?) + `).run(userId, 'pending', frame, focusX, focusY, zoom, Date.now()); + return this.byId(info.lastInsertRowid); + }, + setUrl(id, url) { + db.prepare('UPDATE uploads SET url = ? WHERE id = ?').run(url, id); + return this.byId(id); + }, + setPosition(id, focusX, focusY, zoom) { + db.prepare('UPDATE uploads SET focus_x = ?, focus_y = ?, zoom = ? WHERE id = ?') + .run(focusX, focusY, zoom, id); + return this.byId(id); + }, + remove(id) { + db.prepare('DELETE FROM uploads WHERE id = ?').run(id); + }, +}; diff --git a/server/games.js b/server/games.js new file mode 100644 index 0000000..b40715d --- /dev/null +++ b/server/games.js @@ -0,0 +1,247 @@ +import crypto from 'node:crypto'; +import { Users, Games } from './db.js'; +import { pushFeed } from './realtime.js'; + +const HOUSE_EDGE = 0.99; // 1% Hausvorteil +const rounds = new Map(); // roundId -> state + +function rid() { return crypto.randomBytes(12).toString('hex'); } +function rand() { return crypto.randomBytes(4).readUInt32BE(0) / 0xffffffff; } +function round(n, d = 2) { const f = Math.pow(10, d); return Math.round(n * f) / f; } + +function debit(userId, amount) { + const u = Users.byId(userId); + if (!u) return { ok: false, error: 'User fehlt' }; + if (amount <= 0) return { ok: false, error: 'Einsatz muss > 0 sein' }; + if (u.balance < amount) return { ok: false, error: 'Nicht genug Guthaben' }; + Users.setBalance(userId, u.balance - amount); + return { ok: true, balance: u.balance - amount }; +} + +function credit(userId, amount) { + return Users.addBalance(userId, amount); +} + +function settle(userId, game, bet, payout, result) { + Games.add(userId, game, bet, payout, result); + const u = Users.byId(userId); + if (payout >= bet * 5 && payout > 0) { + pushFeed('win', `${u?.username || 'Spieler'} gewinnt ${round(payout)} 🪙 bei ${game} (${round(payout / bet, 2)}x)`); + } + return Users.byId(userId)?.balance; +} + +// ============ CHICKEN ROAD ============ +// Huhn ueberquert Fahrbahnen. Jede Spur erhoeht den Multiplikator, +// aber es droht ein Crash (Auto). Cashout jederzeit moeglich. +const CHICKEN_DIFF = { + easy: { p: 0.04, lanes: 24 }, + medium: { p: 0.10, lanes: 20 }, + hard: { p: 0.20, lanes: 16 }, + insane: { p: 0.35, lanes: 12 }, +}; + +function chickenMultipliers(p, lanes) { + // Faire Multiplikatoren: 1/(1-p)^k * HouseEdge + const arr = []; + for (let k = 1; k <= lanes; k++) { + arr.push(round(HOUSE_EDGE / Math.pow(1 - p, k), 2)); + } + return arr; +} + +export function chickenStart(userId, bet, difficulty = 'medium') { + bet = Number(bet); + const diff = CHICKEN_DIFF[difficulty] || CHICKEN_DIFF.medium; + const d = debit(userId, bet); + if (!d.ok) return d; + const mults = chickenMultipliers(diff.p, diff.lanes); + const id = rid(); + rounds.set(id, { type: 'chicken', userId, bet, p: diff.p, lanes: diff.lanes, mults, lane: 0, alive: true, difficulty }); + return { ok: true, roundId: id, lanes: diff.lanes, multipliers: mults, balance: d.balance }; +} + +export function chickenStep(userId, roundId) { + const r = rounds.get(roundId); + if (!r || r.type !== 'chicken' || r.userId !== userId || !r.alive) return { ok: false, error: 'Runde ungueltig' }; + // Crash-Check auf der naechsten Spur + if (rand() < r.p) { + r.alive = false; + rounds.delete(roundId); + const bal = settle(userId, 'chicken', r.bet, 0, { crashedAt: r.lane + 1, difficulty: r.difficulty }); + return { ok: true, dead: true, lane: r.lane + 1, balance: bal }; + } + r.lane += 1; + const multiplier = r.mults[r.lane - 1]; + if (r.lane >= r.lanes) { + // Maximum erreicht -> automatischer Cashout + const payout = round(r.bet * multiplier); + credit(userId, payout); + rounds.delete(roundId); + const bal = settle(userId, 'chicken', r.bet, payout, { lane: r.lane, multiplier, maxed: true }); + return { ok: true, dead: false, maxed: true, lane: r.lane, multiplier, payout, balance: bal }; + } + return { ok: true, dead: false, lane: r.lane, multiplier, nextMultiplier: r.mults[r.lane] }; +} + +export function chickenCashout(userId, roundId) { + const r = rounds.get(roundId); + if (!r || r.type !== 'chicken' || r.userId !== userId || !r.alive) return { ok: false, error: 'Runde ungueltig' }; + if (r.lane === 0) return { ok: false, error: 'Erst mind. 1 Schritt gehen' }; + const multiplier = r.mults[r.lane - 1]; + const payout = round(r.bet * multiplier); + credit(userId, payout); + rounds.delete(roundId); + const bal = settle(userId, 'chicken', r.bet, payout, { lane: r.lane, multiplier }); + return { ok: true, payout, multiplier, lane: r.lane, balance: bal }; +} + +// ============ 10x10 MINES KARTEN-DECK ============ +const GRID = 100; +function minesMultiplier(bombs, picks) { + let m = 1; + for (let i = 0; i < picks; i++) { + m *= (GRID - i) / (GRID - bombs - i); + } + return round(m * HOUSE_EDGE, 4); +} + +export function minesStart(userId, bet, bombs = 10) { + bet = Number(bet); + bombs = Math.max(1, Math.min(95, Math.floor(Number(bombs)))); + const d = debit(userId, bet); + if (!d.ok) return d; + // Bomben-Positionen geheim ziehen + const positions = new Set(); + while (positions.size < bombs) positions.add(Math.floor(rand() * GRID)); + const id = rid(); + rounds.set(id, { type: 'mines', userId, bet, bombs, mines: positions, revealed: new Set(), alive: true }); + return { ok: true, roundId: id, bombs, grid: GRID, balance: d.balance, nextMultiplier: minesMultiplier(bombs, 1) }; +} + +export function minesReveal(userId, roundId, index) { + const r = rounds.get(roundId); + if (!r || r.type !== 'mines' || r.userId !== userId || !r.alive) return { ok: false, error: 'Runde ungueltig' }; + index = Math.floor(Number(index)); + if (index < 0 || index >= GRID) return { ok: false, error: 'Feld ungueltig' }; + if (r.revealed.has(index)) return { ok: false, error: 'Feld schon offen' }; + + if (r.mines.has(index)) { + r.alive = false; + rounds.delete(roundId); + const bal = settle(userId, 'mines', r.bet, 0, { hitBomb: index, bombs: r.bombs }); + return { ok: true, bomb: true, index, mines: [...r.mines], balance: bal }; + } + r.revealed.add(index); + const picks = r.revealed.size; + const safeLeft = GRID - r.bombs - picks; + const multiplier = minesMultiplier(r.bombs, picks); + const next = safeLeft > 0 ? minesMultiplier(r.bombs, picks + 1) : null; + if (safeLeft === 0) { + // Alle sicheren Felder gefunden -> Auto-Cashout + const payout = round(r.bet * multiplier); + credit(userId, payout); + rounds.delete(roundId); + const bal = settle(userId, 'mines', r.bet, payout, { picks, multiplier, cleared: true }); + return { ok: true, bomb: false, index, picks, multiplier, payout, cleared: true, balance: bal }; + } + return { ok: true, bomb: false, index, picks, multiplier, nextMultiplier: next }; +} + +export function minesCashout(userId, roundId) { + const r = rounds.get(roundId); + if (!r || r.type !== 'mines' || r.userId !== userId || !r.alive) return { ok: false, error: 'Runde ungueltig' }; + const picks = r.revealed.size; + if (picks === 0) return { ok: false, error: 'Erst mind. 1 Karte aufdecken' }; + const multiplier = minesMultiplier(r.bombs, picks); + const payout = round(r.bet * multiplier); + credit(userId, payout); + rounds.delete(roundId); + const bal = settle(userId, 'mines', r.bet, payout, { picks, multiplier }); + return { ok: true, payout, multiplier, picks, mines: [...r.mines], balance: bal }; +} + +// ============ COINFLIP ============ +export function coinflip(userId, bet, choice) { + bet = Number(bet); + const d = debit(userId, bet); + if (!d.ok) return d; + const flip = rand() < 0.5 ? 'heads' : 'tails'; + const win = flip === choice; + const mult = 2 * HOUSE_EDGE; + const payout = win ? round(bet * mult) : 0; + if (win) credit(userId, payout); + const bal = settle(userId, 'coinflip', bet, payout, { flip, choice }); + return { ok: true, win, flip, payout, multiplier: win ? mult : 0, balance: bal }; +} + +// ============ DICE (roll under) ============ +export function dice(userId, bet, target, direction = 'under') { + bet = Number(bet); + target = Math.max(2, Math.min(98, Number(target))); + const d = debit(userId, bet); + if (!d.ok) return d; + const roll = round(rand() * 100, 2); + const win = direction === 'under' ? roll < target : roll > target; + const chance = direction === 'under' ? target : 100 - target; + const mult = round((100 / chance) * HOUSE_EDGE, 4); + const payout = win ? round(bet * mult) : 0; + if (win) credit(userId, payout); + const bal = settle(userId, 'dice', bet, payout, { roll, target, direction }); + return { ok: true, win, roll, target, direction, multiplier: mult, payout, balance: bal }; +} + +// ============ CRASH ============ +// Server-autoritativ: Multiplikator = e^(k*t). Crashpunkt geheim. +const CRASH_K = 0.00006; // Wachstum pro ms +function genCrashPoint() { + const r = rand(); + if (r < 0.03) return 1.0; // Instant-Crash 3% + // Schwerer Tail, Median ~2x + return round(Math.max(1, (1 - 0.01) / (1 - r)), 2); +} +function crashMultAt(ms) { + return round(Math.exp(CRASH_K * ms), 2); +} + +export function crashStart(userId, bet) { + bet = Number(bet); + const d = debit(userId, bet); + if (!d.ok) return d; + const id = rid(); + const crashPoint = genCrashPoint(); + rounds.set(id, { type: 'crash', userId, bet, crashPoint, start: Date.now(), done: false }); + return { ok: true, roundId: id, balance: d.balance, k: CRASH_K }; +} + +export function crashCashout(userId, roundId) { + const r = rounds.get(roundId); + if (!r || r.type !== 'crash' || r.userId !== userId || r.done) return { ok: false, error: 'Runde ungueltig' }; + const elapsed = Date.now() - r.start; + const current = crashMultAt(elapsed); + r.done = true; + rounds.delete(roundId); + if (current >= r.crashPoint) { + const bal = settle(userId, 'crash', r.bet, 0, { crashPoint: r.crashPoint, cashoutAt: current }); + return { ok: true, crashed: true, crashPoint: r.crashPoint, balance: bal }; + } + const payout = round(r.bet * current); + credit(userId, payout); + const bal = settle(userId, 'crash', r.bet, payout, { multiplier: current, crashPoint: r.crashPoint }); + return { ok: true, crashed: false, multiplier: current, payout, balance: bal }; +} + +// Status-Abfrage fuer die Crash-Animation (autoritativ). +export function crashStatus(userId, roundId) { + const r = rounds.get(roundId); + if (!r || r.type !== 'crash' || r.userId !== userId) return { ok: false, error: 'Runde ungueltig' }; + const elapsed = Date.now() - r.start; + const current = crashMultAt(elapsed); + if (current >= r.crashPoint && !r.done) { + r.done = true; + rounds.delete(roundId); + settle(userId, 'crash', r.bet, 0, { crashPoint: r.crashPoint, busted: true }); + return { ok: true, crashed: true, crashPoint: r.crashPoint, multiplier: r.crashPoint }; + } + return { ok: true, crashed: false, multiplier: current }; +} diff --git a/server/index.js b/server/index.js new file mode 100644 index 0000000..3efc3ac --- /dev/null +++ b/server/index.js @@ -0,0 +1,399 @@ +import express from 'express'; +import http from 'node:http'; +import path from 'node:path'; +import fs from 'node:fs'; +import cookieParser from 'cookie-parser'; +import multer from 'multer'; +import sharp from 'sharp'; +import { Server as SocketServer } from 'socket.io'; + +import { config } from './config.js'; +import { Users, Trades, Games, Feed, Uploads } from './db.js'; +import { + registerUser, loginUser, signToken, setAuthCookie, clearAuthCookie, + optionalAuth, requireAuth, +} from './auth.js'; +import { initMarket, listAssets, getHistory, manipulate, getAsset } from './market.js'; +import { executeTrade, getPortfolio } from './trading.js'; +import * as G from './games.js'; +import { setIO, pushFeed } from './realtime.js'; + +const app = express(); +const server = http.createServer(app); +const io = new SocketServer(server, { cors: { origin: true } }); +setIO(io); + +app.use(express.json({ limit: '30mb' })); +app.use(cookieParser()); +app.use(optionalAuth); + +// ---------- Trilogy Hub: Foto-Slot Persistenz (Bilder als Dateien) ---------- +const SITE_UPLOAD_DIR = path.join(config.PUBLIC_DIR, 'uploads'); +const SITE_MANIFEST = path.join(SITE_UPLOAD_DIR, 'manifest.json'); +const SITE_EXT_BY_MIME = { 'image/png': '.png', 'image/jpeg': '.jpg', 'image/jpg': '.jpg', 'image/gif': '.gif', 'image/webp': '.webp' }; +fs.mkdirSync(SITE_UPLOAD_DIR, { recursive: true }); +if (!fs.existsSync(SITE_MANIFEST)) fs.writeFileSync(SITE_MANIFEST, '{}'); +function readSiteManifest() { try { return JSON.parse(fs.readFileSync(SITE_MANIFEST, 'utf8') || '{}'); } catch { return {}; } } +function writeSiteManifest(o) { fs.writeFileSync(SITE_MANIFEST, JSON.stringify(o, null, 2)); } +function sanitizeSlot(id) { return String(id).replace(/[^a-z0-9_-]+/gi, '_').slice(0, 120) || 'slot'; } + +app.get('/api/images', (req, res) => res.json(readSiteManifest())); +app.post('/api/upload', (req, res) => { + try { + const { id, dataUrl, focusX, focusY, zoom } = req.body || {}; + if (!id || !dataUrl) return res.status(400).json({ error: 'Missing id or dataUrl' }); + const m = /^data:([^;]+);base64,(.+)$/s.exec(dataUrl); + if (!m) return res.status(400).json({ error: 'Invalid dataUrl' }); + const ext = SITE_EXT_BY_MIME[m[1].toLowerCase()] || '.png'; + const buf = Buffer.from(m[2], 'base64'); + const filename = sanitizeSlot(id) + ext; + const manifest = readSiteManifest(); + if (manifest[id]) { + const oldUrl = typeof manifest[id] === 'string' ? manifest[id] : manifest[id].url; + if (oldUrl) { + const old = path.join(config.PUBLIC_DIR, oldUrl.replace(/^\//, '')); + if (old.startsWith(SITE_UPLOAD_DIR) && fs.existsSync(old)) { try { fs.unlinkSync(old); } catch {} } + } + } + fs.writeFileSync(path.join(SITE_UPLOAD_DIR, filename), buf); + const publicUrl = '/uploads/' + filename; + const fx = Number(focusX); + const fy = Number(focusY); + const z = Number(zoom); + manifest[id] = { + url: publicUrl, + focus: { + x: Number.isFinite(fx) ? Math.min(1, Math.max(0, fx)) : 0.5, + y: Number.isFinite(fy) ? Math.min(1, Math.max(0, fy)) : 0.5, + }, + zoom: Number.isFinite(z) ? Math.min(4, Math.max(1, z)) : 1, + }; + writeSiteManifest(manifest); + res.json({ ok: true, url: publicUrl, focus: manifest[id].focus, zoom: manifest[id].zoom }); + } catch (e) { res.status(500).json({ error: String(e?.message || e) }); } +}); + +// ---------- Helper ---------- +function formatAvatar(u) { + if (u.avatar_image) { + return { + type: 'image', + url: u.avatar_image, + focus: { x: u.avatar_focus_x ?? 0.5, y: u.avatar_focus_y ?? 0.5 }, + zoom: u.avatar_zoom ?? 1, + emoji: u.avatar || '🐂', + }; + } + return { type: 'emoji', value: u.avatar || '🐂' }; +} +function publicUser(u) { + if (!u) return null; + return { id: u.id, username: u.username, balance: round(u.balance), avatar: formatAvatar(u) }; +} +function parseFocus(val, fallback = 0.5) { + const n = Number(val); + return Number.isFinite(n) ? Math.min(1, Math.max(0, n)) : fallback; +} +function parseZoom(val) { + const n = Number(val); + return Number.isFinite(n) ? Math.min(4, Math.max(1, n)) : 1; +} +function avatarFilePath(userId) { + return path.join(config.UPLOADS_DIR, `${userId}.webp`); +} +function avatarPublicPath(userId) { + return `/uploads/avatars/${userId}.webp`; +} +async function saveAvatarImage(userId, buffer) { + const out = avatarFilePath(userId); + await sharp(buffer) + .rotate() + .resize(512, 512, { fit: 'inside', withoutEnlargement: true }) + .webp({ quality: 85 }) + .toFile(out); + return avatarPublicPath(userId); +} +function deleteAvatarFile(userId) { + const p = avatarFilePath(userId); + if (fs.existsSync(p)) fs.unlinkSync(p); +} + +const VALID_FRAMES = new Set(['gallery', 'banner', 'card', 'avatar']); + +function formatUpload(row) { + if (!row) return null; + return { + id: row.id, + url: row.url, + frame: row.frame, + focus: { x: row.focus_x ?? 0.5, y: row.focus_y ?? 0.5 }, + zoom: row.zoom ?? 1, + createdAt: row.created_at, + }; +} +function uploadFilePath(id) { + return path.join(config.FILES_DIR, `${id}.webp`); +} +function uploadPublicPath(id) { + return `/uploads/files/${id}.webp`; +} +async function saveUploadImage(id, buffer, frame) { + const maxW = frame === 'banner' ? 1200 : frame === 'card' ? 600 : 800; + const maxH = frame === 'banner' ? 400 : frame === 'card' ? 900 : 800; + await sharp(buffer) + .rotate() + .resize(maxW, maxH, { fit: 'inside', withoutEnlargement: true }) + .webp({ quality: 85 }) + .toFile(uploadFilePath(id)); + return uploadPublicPath(id); +} +function deleteUploadFile(id) { + const p = uploadFilePath(id); + if (fs.existsSync(p)) fs.unlinkSync(p); +} +function parseFrame(val) { + const f = String(val || 'gallery'); + return VALID_FRAMES.has(f) ? f : 'gallery'; +} + +const upload = multer({ + storage: multer.memoryStorage(), + limits: { fileSize: 5 * 1024 * 1024 }, + fileFilter: (_req, file, cb) => { + const ok = /^image\/(jpeg|png|webp|gif)$/.test(file.mimetype); + cb(ok ? null : new Error('Nur JPEG, PNG, WebP oder GIF'), ok); + }, +}); +function round(n, d = 2) { const f = Math.pow(10, d); return Math.round(n * f) / f; } +const ok = (res, data) => res.json({ ok: true, ...data }); +const fail = (res, msg, code = 400) => res.status(code).json({ ok: false, error: msg }); + +// ========== AUTH ========== +app.post('/api/register', async (req, res) => { + try { + const u = await registerUser(req.body.username, req.body.password); + const token = signToken(u); + setAuthCookie(res, token); + pushFeed('join', `🎉 ${u.username} ist PlayBull beigetreten!`); + ok(res, { user: publicUser(u) }); + } catch (e) { fail(res, e.message); } +}); + +app.post('/api/login', async (req, res) => { + try { + const u = await loginUser(req.body.username, req.body.password); + const token = signToken(u); + setAuthCookie(res, token); + ok(res, { user: publicUser(u) }); + } catch (e) { fail(res, e.message, 401); } +}); + +app.post('/api/logout', (req, res) => { clearAuthCookie(res); ok(res, {}); }); + +app.get('/api/me', (req, res) => { + ok(res, { user: publicUser(req.user) }); +}); + +// ========== MARKT (oeffentlich) ========== +app.get('/api/market', (req, res) => { + ok(res, { assets: listAssets() }); +}); + +app.get('/api/market/:symbol/history', (req, res) => { + const sym = req.params.symbol.toUpperCase(); + if (!getAsset(sym)) return fail(res, 'Unbekanntes Symbol', 404); + ok(res, { symbol: sym, history: getHistory(sym) }); +}); + +// ========== TRADING (Login noetig) ========== +app.get('/api/portfolio', requireAuth, (req, res) => { + ok(res, { portfolio: getPortfolio(req.user.id) }); +}); + +app.post('/api/trade', requireAuth, (req, res) => { + const { symbol, side, qty } = req.body; + if (!['buy', 'sell'].includes(side)) return fail(res, 'side muss buy/sell sein'); + const r = executeTrade(req.user.id, String(symbol).toUpperCase(), side, qty); + if (!r.ok) return fail(res, r.error); + const a = getAsset(String(symbol).toUpperCase()); + pushFeed('trade', `${req.user.username} ${side === 'buy' ? 'kauft' : 'verkauft'} ${round(qty,4)} ${a?.emoji||''}${symbol.toUpperCase()} @ ${r.price}`); + io.emit('portfolio_dirty', { userId: req.user.id }); + ok(res, r); +}); + +app.get('/api/trades', requireAuth, (req, res) => { + ok(res, { trades: Trades.forUser(req.user.id) }); +}); + +// ========== MANIPULATION (jeder eingeloggte User - Spassmodus) ========== +app.post('/api/manipulate', requireAuth, (req, res) => { + const { symbol, action, value } = req.body; + const r = manipulate(String(symbol).toUpperCase(), action, Number(value), req.user.username); + if (!r.ok) return fail(res, r.error); + const verb = { pump: '🚀 pumpt', dump: '📉 dumpt', set: '✏️ setzt', halt: '⏸️ pausiert', resume: '▶️ aktiviert', reset: '♻️ resettet' }[action] || action; + pushFeed('manip', `${req.user.username} ${verb} ${symbol.toUpperCase()}`); + ok(res, r); +}); + +// ========== SETTINGS / ADMIN (Spassmodus: jeder darf alles) ========== +app.get('/api/users', requireAuth, (req, res) => { + ok(res, { users: Users.all().map(u => ({ ...u, avatar: formatAvatar(u) })) }); +}); + +// Geld bearbeiten - bei sich selbst oder anderen +app.post('/api/admin/balance', requireAuth, (req, res) => { + const { userId, mode, amount } = req.body; // mode: 'set' | 'add' + const target = Users.byId(Number(userId)); + if (!target) return fail(res, 'User nicht gefunden', 404); + const amt = Number(amount); + if (!Number.isFinite(amt)) return fail(res, 'Betrag ungueltig'); + let nb; + if (mode === 'set') { Users.setBalance(target.id, amt); nb = amt; } + else { nb = Users.addBalance(target.id, amt); } + pushFeed('admin', `${req.user.username} ${mode === 'set' ? 'setzt' : 'aendert'} Guthaben von ${target.username} → ${round(nb)} 🪙`); + io.emit('balance_changed', { userId: target.id, balance: round(nb) }); + ok(res, { userId: target.id, balance: round(nb) }); +}); + +app.post('/api/settings/avatar', requireAuth, (req, res) => { + const avatar = String(req.body.avatar || '🐂').slice(0, 4); + Users.setAvatar(req.user.id, avatar); + ok(res, { avatar: formatAvatar(Users.byId(req.user.id)) }); +}); + +app.post('/api/settings/avatar/image', requireAuth, (req, res, next) => { + upload.single('file')(req, res, (err) => { + if (err) return fail(res, err.message || 'Upload fehlgeschlagen'); + next(); + }); +}, async (req, res) => { + try { + if (!req.file) return fail(res, 'Keine Bilddatei'); + const focusX = parseFocus(req.body.focusX); + const focusY = parseFocus(req.body.focusY); + const zoom = parseZoom(req.body.zoom); + deleteAvatarFile(req.user.id); + const url = await saveAvatarImage(req.user.id, req.file.buffer); + Users.setAvatarImage(req.user.id, url, focusX, focusY, zoom); + ok(res, { avatar: formatAvatar(Users.byId(req.user.id)) }); + } catch (e) { + fail(res, e.message || 'Upload fehlgeschlagen'); + } +}); + +app.patch('/api/settings/avatar/image/position', requireAuth, (req, res) => { + const u = Users.byId(req.user.id); + if (!u?.avatar_image) return fail(res, 'Kein Profilbild vorhanden', 404); + const focusX = parseFocus(req.body.focusX); + const focusY = parseFocus(req.body.focusY); + const zoom = parseZoom(req.body.zoom); + Users.setAvatarPosition(req.user.id, focusX, focusY, zoom); + ok(res, { avatar: formatAvatar(Users.byId(req.user.id)) }); +}); + +app.delete('/api/settings/avatar/image', requireAuth, (req, res) => { + deleteAvatarFile(req.user.id); + Users.clearAvatarImage(req.user.id); + ok(res, { avatar: formatAvatar(Users.byId(req.user.id)) }); +}); + +// ========== UPLOADS (Galerie) ========== +app.get('/api/uploads', requireAuth, (req, res) => { + ok(res, { uploads: Uploads.forUser(req.user.id).map(formatUpload) }); +}); + +app.post('/api/uploads', requireAuth, (req, res, next) => { + upload.single('file')(req, res, (err) => { + if (err) return fail(res, err.message || 'Upload fehlgeschlagen'); + next(); + }); +}, async (req, res) => { + let row = null; + try { + if (!req.file) return fail(res, 'Keine Bilddatei'); + const frame = parseFrame(req.body.frame); + const focusX = parseFocus(req.body.focusX); + const focusY = parseFocus(req.body.focusY); + const zoom = parseZoom(req.body.zoom); + row = Uploads.create(req.user.id, frame, focusX, focusY, zoom); + const url = await saveUploadImage(row.id, req.file.buffer, frame); + Uploads.setUrl(row.id, url); + ok(res, { upload: formatUpload(Uploads.byId(row.id)) }); + } catch (e) { + if (row) { deleteUploadFile(row.id); Uploads.remove(row.id); } + fail(res, e.message || 'Upload fehlgeschlagen'); + } +}); + +app.patch('/api/uploads/:id/position', requireAuth, (req, res) => { + const row = Uploads.byId(+req.params.id); + if (!row || row.user_id !== req.user.id) return fail(res, 'Upload nicht gefunden', 404); + const focusX = parseFocus(req.body.focusX); + const focusY = parseFocus(req.body.focusY); + const zoom = parseZoom(req.body.zoom); + Uploads.setPosition(row.id, focusX, focusY, zoom); + ok(res, { upload: formatUpload(Uploads.byId(row.id)) }); +}); + +app.delete('/api/uploads/:id', requireAuth, (req, res) => { + const row = Uploads.byId(+req.params.id); + if (!row || row.user_id !== req.user.id) return fail(res, 'Upload nicht gefunden', 404); + deleteUploadFile(row.id); + Uploads.remove(row.id); + ok(res, {}); +}); + +// ========== FEED / LEADERBOARD ========== +app.get('/api/feed', (req, res) => { ok(res, { feed: Feed.recent(30) }); }); +app.get('/api/leaderboard', (req, res) => { + const users = Users.all().slice(0, 20).map(u => { + const p = getPortfolio(u.id); + return { username: u.username, avatar: formatAvatar(u), netWorth: p ? p.netWorth : u.balance }; + }).sort((a, b) => b.netWorth - a.netWorth); + ok(res, { leaderboard: users }); +}); + +// ========== GAMES (Login noetig) ========== +const gameRoute = (fn) => (req, res) => { + const r = fn(req.user.id, req.body); + if (!r || !r.ok) return fail(res, r?.error || 'Fehler'); + ok(res, r); +}; + +app.post('/api/games/chicken/start', requireAuth, gameRoute((id, b) => G.chickenStart(id, b.bet, b.difficulty))); +app.post('/api/games/chicken/step', requireAuth, gameRoute((id, b) => G.chickenStep(id, b.roundId))); +app.post('/api/games/chicken/cashout', requireAuth, gameRoute((id, b) => G.chickenCashout(id, b.roundId))); + +app.post('/api/games/mines/start', requireAuth, gameRoute((id, b) => G.minesStart(id, b.bet, b.bombs))); +app.post('/api/games/mines/reveal', requireAuth, gameRoute((id, b) => G.minesReveal(id, b.roundId, b.index))); +app.post('/api/games/mines/cashout', requireAuth, gameRoute((id, b) => G.minesCashout(id, b.roundId))); + +app.post('/api/games/coinflip', requireAuth, gameRoute((id, b) => G.coinflip(id, b.bet, b.choice))); +app.post('/api/games/dice', requireAuth, gameRoute((id, b) => G.dice(id, b.bet, b.target, b.direction))); + +app.post('/api/games/crash/start', requireAuth, gameRoute((id, b) => G.crashStart(id, b.bet))); +app.post('/api/games/crash/status', requireAuth, gameRoute((id, b) => G.crashStatus(id, b.roundId))); +app.post('/api/games/crash/cashout', requireAuth, gameRoute((id, b) => G.crashCashout(id, b.roundId))); + +app.get('/api/games/history', requireAuth, (req, res) => { + ok(res, { history: Games.forUser(req.user.id) }); +}); + +// ---------- Static Frontend ---------- +app.use('/uploads/avatars', express.static(config.UPLOADS_DIR)); +app.use('/uploads/files', express.static(config.FILES_DIR)); +app.use(express.static(config.PUBLIC_DIR)); +app.get('*', (req, res) => res.sendFile(path.join(config.PUBLIC_DIR, 'index.html'))); + +// ---------- Socket.IO ---------- +io.on('connection', (socket) => { + socket.emit('hello', { assets: listAssets(), feed: Feed.recent(20) }); +}); + +// ---------- Start ---------- +initMarket(io).then(() => { + server.listen(config.PORT, () => { + console.log(`\n 🐂 PlayBull laeuft auf http://localhost:${config.PORT}\n`); + console.log(` Finnhub-Key: ${config.FINNHUB_API_KEY ? 'aktiv (echte Aktienkurse)' : 'fehlt (nur Simulation)'}`); + }); +}); diff --git a/server/market.js b/server/market.js new file mode 100644 index 0000000..03f28f3 --- /dev/null +++ b/server/market.js @@ -0,0 +1,184 @@ +import { config } from './config.js'; + +// Definierte handelbare Assets. emoji + sector nur fuer die UI. +const ASSETS = [ + { symbol: 'AAPL', name: 'Apple', emoji: '🍎', sector: 'Tech', type: 'stock', fallback: 195 }, + { symbol: 'TSLA', name: 'Tesla', emoji: '🚗', sector: 'Auto', type: 'stock', fallback: 250 }, + { symbol: 'NVDA', name: 'Nvidia', emoji: '🎮', sector: 'Chips', type: 'stock', fallback: 120 }, + { symbol: 'AMZN', name: 'Amazon', emoji: '📦', sector: 'Retail', type: 'stock', fallback: 185 }, + { symbol: 'MSFT', name: 'Microsoft', emoji: '🪟', sector: 'Tech', type: 'stock', fallback: 420 }, + { symbol: 'GOOGL', name: 'Alphabet', emoji: '🔍', sector: 'Tech', type: 'stock', fallback: 175 }, + { symbol: 'META', name: 'Meta', emoji: '👓', sector: 'Social', type: 'stock', fallback: 500 }, + { symbol: 'AMD', name: 'AMD', emoji: '⚡', sector: 'Chips', type: 'stock', fallback: 160 }, + { symbol: 'NFLX', name: 'Netflix', emoji: '🎬', sector: 'Media', type: 'stock', fallback: 650 }, + { symbol: 'GME', name: 'GameStop', emoji: '🕹️', sector: 'Meme', type: 'stock', fallback: 25 }, + // Krypto + Meme (simuliert, hohe Volatilitaet) + { symbol: 'BTC', name: 'Bitcoin', emoji: '₿', sector: 'Krypto', type: 'crypto', fallback: 67000, vol: 2.2 }, + { symbol: 'ETH', name: 'Ethereum', emoji: '💎', sector: 'Krypto', type: 'crypto', fallback: 3500, vol: 2.4 }, + { symbol: 'DOGE', name: 'Dogecoin', emoji: '🐕', sector: 'Meme', type: 'crypto', fallback: 0.16, vol: 4 }, + { symbol: 'BULL', name: 'PlayBull Coin',emoji: '🐂', sector: 'Haus', type: 'crypto', fallback: 1.00, vol: 5 }, +]; + +const HISTORY_LEN = 120; + +/** @type {Map} */ +const market = new Map(); +let io = null; + +function rnd(min, max) { return min + Math.random() * (max - min); } + +function initAsset(a) { + const price = a.fallback; + return { + symbol: a.symbol, + name: a.name, + emoji: a.emoji, + sector: a.sector, + type: a.type, + price, + prevClose: price, + open: price, + high: price, + low: price, + change: 0, + changePct: 0, + momentum: 0, // treibt die naechsten Ticks (Manipulation haengt sich hier rein) + baseVol: a.vol || (a.type === 'crypto' ? 2 : 1), // Grund-Volatilitaet in % + halted: false, + history: Array.from({ length: HISTORY_LEN }, () => ({ t: Date.now(), p: price })), + }; +} + +async function fetchRealPrice(symbol) { + if (!config.FINNHUB_API_KEY) return null; + try { + const url = `https://finnhub.io/api/v1/quote?symbol=${encodeURIComponent(symbol)}&token=${config.FINNHUB_API_KEY}`; + const res = await fetch(url, { signal: AbortSignal.timeout(6000) }); + if (!res.ok) return null; + const j = await res.json(); + // c = current, pc = previous close + if (j && typeof j.c === 'number' && j.c > 0) { + return { price: j.c, prevClose: j.pc > 0 ? j.pc : j.c, high: j.h || j.c, low: j.l || j.c, open: j.o || j.c }; + } + } catch { /* ignore -> fallback */ } + return null; +} + +export async function initMarket(socketServer) { + io = socketServer; + for (const a of ASSETS) market.set(a.symbol, initAsset(a)); + + // Echte Startkurse fuer Aktien von Finnhub laden (Krypto bleibt simuliert) + const stockSymbols = ASSETS.filter(a => a.type === 'stock').map(a => a.symbol); + await Promise.all(stockSymbols.map(async (sym) => { + const real = await fetchRealPrice(sym); + if (real) { + const m = market.get(sym); + m.price = real.price; + m.prevClose = real.prevClose; + m.open = real.open; + m.high = real.high; + m.low = real.low; + m.history = Array.from({ length: HISTORY_LEN }, () => ({ t: Date.now(), p: real.price })); + recalc(m); + } + })); + + // Live-Tick alle 1s + setInterval(tick, 1000); + return market; +} + +function recalc(m) { + m.change = m.price - m.prevClose; + m.changePct = m.prevClose ? (m.change / m.prevClose) * 100 : 0; + if (m.price > m.high) m.high = m.price; + if (m.price < m.low) m.low = m.price; +} + +function tick() { + const payload = []; + for (const m of market.values()) { + if (!m.halted) { + // Random walk + Momentum (Manipulation) + leichte Rueckkehr zur Mitte + const noise = rnd(-1, 1) * m.baseVol * 0.4; // % pro Tick + const drift = m.momentum; // % pro Tick aus Manipulation + const pctMove = (noise + drift) / 100; + m.price = Math.max(0.0001, m.price * (1 + pctMove)); + m.momentum *= 0.85; // Momentum klingt ab + if (Math.abs(m.momentum) < 0.0005) m.momentum = 0; + recalc(m); + m.history.push({ t: Date.now(), p: m.price }); + if (m.history.length > HISTORY_LEN) m.history.shift(); + } + payload.push({ + s: m.symbol, + p: round(m.price), + c: round(m.change), + cp: round(m.changePct, 2), + h: round(m.halted ? 1 : 0), + }); + } + if (io) io.emit('prices', { t: Date.now(), data: payload }); +} + +function round(n, d = 4) { + const f = Math.pow(10, d); + return Math.round(n * f) / f; +} + +// ---- Oeffentliche API ---- +export function getAsset(symbol) { return market.get(symbol); } +export function getPrice(symbol) { const m = market.get(symbol); return m ? m.price : null; } + +export function listAssets() { + return [...market.values()].map(m => ({ + symbol: m.symbol, name: m.name, emoji: m.emoji, sector: m.sector, type: m.type, + price: round(m.price), change: round(m.change), changePct: round(m.changePct, 2), + high: round(m.high), low: round(m.low), prevClose: round(m.prevClose), halted: m.halted, + })); +} + +export function getHistory(symbol) { + const m = market.get(symbol); + if (!m) return []; + return m.history.map(h => ({ t: h.t, p: round(h.p) })); +} + +/** + * Globale Markt-Manipulation. Wirkt fuer ALLE Nutzer (geteilter Live-Status). + * action: 'pump' | 'dump' | 'set' | 'halt' | 'resume' | 'reset' + */ +export function manipulate(symbol, action, value, byUser = 'Jemand') { + const m = market.get(symbol); + if (!m) return { ok: false, error: 'Unbekanntes Symbol' }; + switch (action) { + case 'pump': + m.momentum += (value && value > 0 ? value : 2); // % Boost pro Tick + break; + case 'dump': + m.momentum -= (value && value > 0 ? value : 2); + break; + case 'set': { + const v = Number(value); + if (!(v > 0)) return { ok: false, error: 'Ungueltiger Preis' }; + m.price = v; + recalc(m); + m.history.push({ t: Date.now(), p: m.price }); + break; + } + case 'halt': m.halted = true; break; + case 'resume': m.halted = false; break; + case 'reset': + m.momentum = 0; m.halted = false; + m.price = m.prevClose; + recalc(m); + break; + default: + return { ok: false, error: 'Unbekannte Aktion' }; + } + if (io) io.emit('manip', { symbol, action, by: byUser, price: round(m.price) }); + return { ok: true, symbol, price: round(m.price), momentum: m.momentum, halted: m.halted }; +} + +export { ASSETS }; diff --git a/server/realtime.js b/server/realtime.js new file mode 100644 index 0000000..33a4a39 --- /dev/null +++ b/server/realtime.js @@ -0,0 +1,15 @@ +import { Feed } from './db.js'; + +let io = null; +export function setIO(server) { io = server; } +export function getIO() { return io; } + +export function broadcast(event, payload) { + if (io) io.emit(event, payload); +} + +// Globaler Aktivitaets-Feed (Wins, Trades, Manipulationen) fuer alle sichtbar. +export function pushFeed(kind, text) { + Feed.add(kind, text); + broadcast('feed', { kind, text, ts: Date.now() }); +} diff --git a/server/trading.js b/server/trading.js new file mode 100644 index 0000000..397c907 --- /dev/null +++ b/server/trading.js @@ -0,0 +1,98 @@ +import { Users, Holdings, Trades } from './db.js'; +import { getAsset } from './market.js'; + +// Position-Netting: kombiniert bestehende Position mit neuem Trade. +function applyPosition(q0, a0, delta, price) { + if (q0 === 0 || Math.sign(q0) === Math.sign(delta)) { + const newQ = q0 + delta; + const newA = (Math.abs(q0) * a0 + Math.abs(delta) * price) / (Math.abs(q0) + Math.abs(delta)); + return { q: newQ, a: newA }; + } + // Gegenrichtung + if (Math.abs(delta) < Math.abs(q0)) return { q: q0 + delta, a: a0 }; + if (Math.abs(delta) === Math.abs(q0)) return { q: 0, a: 0 }; + return { q: q0 + delta, a: price }; // Flip +} + +/** + * side: 'buy' | 'sell'. qty > 0. 'sell' kann Short eroeffnen. + */ +export function executeTrade(userId, symbol, side, qty) { + const asset = getAsset(symbol); + if (!asset) return { ok: false, error: 'Unbekanntes Symbol' }; + if (asset.halted) return { ok: false, error: `${symbol} ist pausiert (halted)` }; + qty = Number(qty); + if (!(qty > 0)) return { ok: false, error: 'Menge muss > 0 sein' }; + + const user = Users.byId(userId); + if (!user) return { ok: false, error: 'User nicht gefunden' }; + + const price = asset.price; + const notional = qty * price; + const delta = side === 'buy' ? qty : -qty; + + const h = Holdings.get(userId, symbol) || { quantity: 0, avg_price: 0 }; + + let newBalance; + if (side === 'buy') { + if (user.balance < notional) return { ok: false, error: 'Nicht genug Guthaben' }; + newBalance = user.balance - notional; + } else { + // Verkauf bringt Cash. Short-Eroeffnung erlaubt, aber Sicherheit pruefen. + const result = applyPosition(h.quantity, h.avg_price, delta, price); + if (result.q < 0 && user.balance < Math.abs(result.q) * price * 0.5) { + return { ok: false, error: 'Nicht genug Sicherheit fuer Short (50% Margin)' }; + } + newBalance = user.balance + notional; + } + + const pos = applyPosition(h.quantity, h.avg_price, delta, price); + Users.setBalance(userId, newBalance); + if (Math.abs(pos.q) < 1e-9) Holdings.remove(userId, symbol); + else Holdings.upsert(userId, symbol, pos.q, pos.a); + Trades.add(userId, symbol, side, qty, price); + + return { + ok: true, + symbol, side, qty, price: round(price), + balance: round(newBalance), + position: { quantity: round(pos.q, 6), avgPrice: round(pos.a) }, + }; +} + +export function getPortfolio(userId) { + const user = Users.byId(userId); + if (!user) return null; + const holdings = Holdings.forUser(userId).map(h => { + const a = getAsset(h.symbol); + const price = a ? a.price : h.avg_price; + const value = h.quantity * price; + const cost = h.quantity * h.avg_price; + const pnl = value - cost; // funktioniert fuer Long & Short + const pnlPct = cost !== 0 ? (pnl / Math.abs(cost)) * 100 : 0; + return { + symbol: h.symbol, + name: a?.name || h.symbol, + emoji: a?.emoji || '', + quantity: round(h.quantity, 6), + avgPrice: round(h.avg_price), + price: round(price), + value: round(value), + pnl: round(pnl), + pnlPct: round(pnlPct, 2), + side: h.quantity >= 0 ? 'long' : 'short', + }; + }); + const holdingsValue = holdings.reduce((s, h) => s + h.value, 0); + return { + balance: round(user.balance), + holdingsValue: round(holdingsValue), + netWorth: round(user.balance + holdingsValue), + holdings, + }; +} + +function round(n, d = 2) { + const f = Math.pow(10, d); + return Math.round(n * f) / f; +}