Files
eldov-win/deploy-vps.sh
T
Jan Wagner 6cdd8438ae feat(design): comprehensive redesign — top-tier portfolio UX
Größeres Redesign, das die Seite spürbar besser macht. Behält das
Magenta/Grün-Dark-Thing, poliert aber alles drumherum.

Neue Komponenten:
- hero-banner: full-bleed Hero mit AI-generiertem Hintergrund (grok-imagine-image,
  1280×720, Magenta/Grün-Akzente), Terminal-Boot-Animation mit Tipp-Effekt,
  Rotating-Role-Animation, animiertes Grid-Overlay.
- command-palette: �K / Ctrl+K öffnet ein durchsuchbares Modal mit Navigation,
  Projekt-Suche, Aktionen (Gitea/w-make.com/Admin) und Easter Eggs. Tastatur
  ↑↓/Enter/Esc, gruppiert nach Typ, mit Vorschau-Hints.
- custom-cursor: Canvas-basierter Cursor mit Trail für Desktop, 14 Punkte,
  Farbwechsel Magenta↔Grün, Hover-State für interaktive Elemente. Touch-
  Devices behalten den Default-Cursor.
- scroll-progress: Top-Bar mit Magenta→Grün-Gradient.
- tilt-card: 3D-Hover mit Mouse-Tracking (CSS-Variablen --rx/--ry/--mx/--my).
- stack-icon: 13 handgezeichnete inline SVGs (TypeScript, Node, Python, Rust,
  SQLite, Tailwind, React, Docker, Gitea, Next, Nix, Hermes, Shell, Self-Host).
  Kein CDN, kein Hydration, currentColor-aware.
- project-filter: tag-basierter Filter für Projekt-Liste, Status-Tone-Tags
  (live/warm/muted) plus Kategorie-Tags, useTransition für sanfte Updates.

Pages-Update:
- Home (/): neuer Hero-Banner, Featured-Grid mit Tilt-Cards und KI-generierten
  Thumbnails (hermes.jpg, casino-bot.jpg, polymarket-trader.jpg), darunter
  filterbare Projekt-Liste, Bio + Links Sidebar.
- Projects: filterbar nach Kategorie und Status.
- Project-Detail: Hero-Image (für 3 Projekte), Stack-Pills mit SVG-Icons,
  bessere Sektionierung (~/stack, ~/notes).
- About: Stack-Visualisierung mit 13 Einträgen in einem Grid.
- OpenGraph-Image pro Projekt (Next.js native, 1200×630): eldov-Logo,
  Projekt-Slug in Magenta, Status-Badge, Kategorie-Badge.

Build-Hash-Support:
- NEXT_PUBLIC_BUILD_HASH + NEXT_PUBLIC_BUILD_DATE werden via Docker ARG in
  die Footer geschrieben ("build abc1234 · 2026-08-31"), deploy-vps.sh
  ermittelt Commit-Hash automatisch aus git und gibt ihn weiter.

Theme v2:
- Tiefere Palette (--bg #0a0a10, --bg-deep #050508), --fg-dim für Hierarchie.
- Neue Komponenten-Klassen: tilt-card, stack-pill, tag, hero-bg, hero-banner,
  scroll-progress, cursor-blink, type-in, glow-text.
- ASCII-Box-Hover-Effekt mit Akzent-Border.

Public-Bilder unter public/img/{hero,projects}/ — KI-generiert via xAI
grok-imagine-image (Token aus .hermes-state/credentials/xai.json), alle
im Marken-Stil (Magenta/Grün/dunkel). 4 Bilder, ~960 KB total.

Sonstiges:
- Header mit ⌘K-Hint, sticky+blur.
- Footer mit Build-Hash, externen Links, Datenschutz-Badge.
- About-Page mit Stack-Grid.
2026-08-31 20:58:48 +02:00

73 lines
2.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# deploy-vps.sh — Synchronisiert den eldov-win Workspace auf den VPS-Container.
# Host: free-warez.win · Container-Pfad: /opt/containers/eldov-portfolio
#
# eldov.win läuft auf demselben VPS wie w-make.com und minecraft-portal.
# Traefik routet dort die Subdomains per Docker-Labels.
#
# Voraussetzungen:
# - ssh-Zugang zu free-warez.win ist konfiguriert
# - .env.local ist lokal vorhanden (wird NICHT übertragen)
# - auf dem VPS liegt bereits ein Container namens 'eldov-portfolio'
set -euo pipefail
VPS_HOST="${VPS_HOST:-free-warez.win}"
VPS_DIR="${VPS_DIR:-/opt/containers/eldov-portfolio}"
# 1. Check SSH connection
echo "→ Prüfe SSH-Verbindung zu $VPS_HOST..."
if ! ssh -q -o BatchMode=yes -o ConnectTimeout=10 "$VPS_HOST" exit; then
echo "❌ Keine SSH-Verbindung zu $VPS_HOST möglich."
exit 1
fi
# 2. Push git commits if in git repo
LOCAL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ -d "$LOCAL_DIR/.git" ]; then
echo "→ Prüfe Git-Status..."
if ! git -C "$LOCAL_DIR" diff-index --quiet HEAD -- 2>/dev/null; then
echo "⚠️ Lokale uncommitted Änderungen vorhanden."
fi
echo "→ Pushe Commits nach Gitea..."
git -C "$LOCAL_DIR" push origin main 2>/dev/null || echo "️ Git push übersprungen oder bereits aktuell."
fi
echo "→ Synchronisiere Quelldateien nach $VPS_HOST:$VPS_DIR"
rsync -avz --delete \
--exclude ".git" \
--exclude "node_modules" \
--exclude ".next" \
--exclude "data" \
--exclude ".env.local" \
--exclude "*.log" \
./ "$VPS_HOST:$VPS_DIR/"
echo "→ Build-Hash ermitteln"
COMMIT_HASH=$(git rev-parse --short HEAD 2>/dev/null || echo unknown)
BUILD_DATE=$(date -u +%Y-%m-%d)
echo " Commit: $COMMIT_HASH · Date: $BUILD_DATE"
echo "→ Baue und starte Container auf $VPS_HOST neu"
ssh "$VPS_HOST" "cd '$VPS_DIR' && \
[ -f .env.local ] || { echo 'FEHLT: .env.local auf dem VPS — bitte anlegen'; exit 1; } && \
NEXT_PUBLIC_BUILD_HASH=$COMMIT_HASH NEXT_PUBLIC_BUILD_DATE=$BUILD_DATE \
docker compose build app && \
docker compose up -d app && \
docker image prune -f"
echo "✓ Deploy abgeschlossen. Healthcheck in 5 s…"
sleep 5
echo -n " Docker Health: "
ssh "$VPS_HOST" "docker inspect --format='{{if .State.Health}}{{.State.Health.Status}}{{else}}no healthcheck{{end}}' eldov-portfolio"
echo -n " Public URL (https://eldov.win): "
if curl -fs -o /dev/null --resolve eldov.win:443:217.160.217.196 -m 5 "https://eldov.win/"; then
echo "✅ 200 OK"
else
echo "⚠️ Nicht erreichbar"
fi
echo "✨ Deployment erfolgreich beendet!"