feat(marketing): Windows-PC-Schutz Download-Seite + Installer

- /download/windows: eigene, korrekt geframte Windows-Seite (PC-DNS-Schutz,
  nicht iPhone-Supervision)
- Installer in public/downloads/RebreakMagic-Setup.exe (3,7 MB, aus CI-Artefakt)
- deploy-marketing.sh: --info=progress2 -> --progress (macOS-rsync-kompatibel)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
chahinebrini 2026-06-07 22:40:25 +02:00
parent 2c1eecd1f7
commit 7ad8625d8e
3 changed files with 142 additions and 2 deletions

View File

@ -0,0 +1,135 @@
<template>
<div class="min-h-screen bg-gray-950 text-white flex flex-col items-center justify-center px-4 py-16">
<div class="w-full max-w-md">
<!-- Logo / Brand -->
<div class="flex items-center gap-3 mb-10">
<div class="w-12 h-12 rounded-2xl bg-indigo-500 flex items-center justify-center">
<span class="text-2xl font-bold">R</span>
</div>
<div>
<h1 class="text-2xl font-bold tracking-tight">ReBreak für Windows</h1>
<p class="text-sm text-gray-400">Glücksspiel-Schutz für deinen PC</p>
</div>
</div>
<!-- Header -->
<h2 class="text-3xl font-extrabold mb-2">Schutz für deinen Windows-PC</h2>
<p class="text-gray-400 mb-1 text-sm">
Version {{ version }} &nbsp;·&nbsp; {{ buildDate }}
</p>
<span
class="inline-block bg-amber-500/15 text-amber-400 text-xs font-semibold px-2.5 py-1 rounded-full mb-6"
>
Beta für Pro &amp; Legend
</span>
<!-- Was es macht -->
<div class="bg-indigo-950/30 border border-indigo-800/30 rounded-2xl p-5 mb-6">
<p class="text-sm text-indigo-200 leading-relaxed">
<strong>Systemweiter Schutz.</strong> ReBreak für Windows blockt Glücksspielseiten
auf <strong>DNS-Ebene</strong> in jedem Browser, jeder App. Auch Chrome, Edge und
Brave, die normalerweise das System-DNS umgehen, werden zuverlässig gefiltert.
Ein Hintergrunddienst schützt die Einstellung vor dem Abschalten.
</p>
</div>
<!-- Download Button -->
<a
:href="exeUrl"
class="block w-full bg-indigo-600 hover:bg-indigo-500 active:bg-indigo-700 transition-colors text-white text-center font-bold text-lg py-4 rounded-2xl mb-4 shadow-lg shadow-indigo-900/40"
download
>
Installer herunterladen ({{ exeSize }})
</a>
<!-- SHA256 -->
<p class="text-xs text-gray-500 text-center break-all mb-10">
SHA256: <span class="font-mono">{{ sha256 }}</span>
</p>
<!-- Install Instructions -->
<div class="bg-gray-900 rounded-2xl p-6 mb-8">
<h3 class="font-bold text-base mb-4 text-white">Setup in 3 Schritten</h3>
<ol class="space-y-4">
<li class="flex gap-3">
<span class="w-7 h-7 shrink-0 rounded-full bg-indigo-600 flex items-center justify-center text-sm font-bold">1</span>
<div>
<p class="font-medium text-sm text-white">Installer laden &amp; ausführen</p>
<p class="text-xs text-gray-400 mt-0.5">Doppelklick auf die .exe. Windows-SmartScreen ggf. Weitere Informationen Trotzdem ausführen" (App ist noch nicht signiert).</p>
</div>
</li>
<li class="flex gap-3">
<span class="w-7 h-7 shrink-0 rounded-full bg-indigo-600 flex items-center justify-center text-sm font-bold">2</span>
<div>
<p class="font-medium text-sm text-white">Mit ReBreak verbinden</p>
<p class="text-xs text-gray-400 mt-0.5">In der ReBreak-App auf dem Handy einen 6-stelligen Code erzeugen (Geräte Gerät hinzufügen Windows) und in der PC-App eingeben.</p>
</div>
</li>
<li class="flex gap-3">
<span class="w-7 h-7 shrink-0 rounded-full bg-indigo-600 flex items-center justify-center text-sm font-bold">3</span>
<div>
<p class="font-medium text-sm text-white">Fertig</p>
<p class="text-xs text-gray-400 mt-0.5">Der Schutz läuft ab sofort im Hintergrund auch nach einem Neustart.</p>
</div>
</li>
</ol>
</div>
<!-- Voraussetzungen -->
<div class="bg-gray-900 rounded-2xl p-6 mb-8">
<h3 class="font-bold text-base mb-3 text-white">Voraussetzungen</h3>
<ul class="space-y-2 text-xs text-gray-400">
<li> Windows 10 ({{ minWindows }}) oder Windows 11, 64-Bit</li>
<li> Administrator-Rechte für die Installation</li>
<li> Ein ReBreak-Account mit Pro oder Legend</li>
<li> Die ReBreak-App auf deinem Handy (für die Kopplung)</li>
</ul>
</div>
<!-- Deaktivieren -->
<div class="bg-gray-900 rounded-2xl p-6 mb-8">
<h3 class="font-bold text-base mb-3 text-white">Wie wird der Schutz wieder gelöst?</h3>
<p class="text-xs text-gray-400 leading-relaxed">
Bewusst nicht per Klick: Der Schutz lässt sich nur mit Wartezeit (Cooldown) wieder
pausieren das schützt dich genau vor dem Impuls, der ihn im Drang-Moment loswerden will.
Bei Abo-Ende oder Account-Löschung wird der Schutz ordnungsgemäß freigegeben.
</p>
</div>
<!-- Beta Notice -->
<div class="bg-amber-950/40 border border-amber-800/30 rounded-xl p-4 mb-8">
<p class="text-amber-300 text-xs leading-relaxed">
<strong>Beta-Hinweis:</strong> ReBreak für Windows ist in geschlossener Beta. Bei Problemen oder
Feedback bitte E-Mail an
<a href="mailto:support@rebreak.org" class="underline">support@rebreak.org</a>.
</p>
</div>
<!-- Footer -->
<p class="text-center text-xs text-gray-600">
&copy; {{ new Date().getFullYear() }} Rebreak &nbsp;·&nbsp;
<NuxtLink to="/datenschutz" class="hover:text-gray-400">Datenschutz</NuxtLink>
</p>
</div>
</div>
</template>
<script setup lang="ts">
// Werte bei jedem Windows-Release aktualisieren (oder per Script aus dem Build).
const version = "0.1.0";
const buildDate = "Juni 2026";
const exeSize = "3,7 MB";
const minWindows = "21H2";
const sha256 = "f1d073b28cc3cf31f3b9da826eff71cd73e1169a1c6ae1ff64a056ee4cf0dd87";
const exeUrl = "/downloads/RebreakMagic-Setup.exe";
useSeoMeta({
title: "ReBreak für Windows Glücksspiel-Schutz für deinen PC",
description:
"Blockt Glücksspielseiten systemweit auf deinem Windows-PC — in jedem Browser, auch Chrome und Edge. Per DNS-over-HTTPS, mit Tamper-Schutz im Hintergrund.",
});
definePageMeta({
layout: false,
});
</script>

Binary file not shown.

View File

@ -20,7 +20,8 @@ REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
MARKETING_DIR="$REPO_ROOT/apps/marketing" MARKETING_DIR="$REPO_ROOT/apps/marketing"
# Server-Settings (anpassen wenn anderer Host/User) # Server-Settings (anpassen wenn anderer Host/User)
SSH_HOST="${MARKETING_SSH_HOST:-root@49.13.55.22}" # 2026-06-06: Default auf Clone (91.99.225.223) umgestellt -- ALT-Box 49.13.55.22 ist migriert/abgeschaltet
SSH_HOST="${MARKETING_SSH_HOST:-root@91.99.225.223}"
REMOTE_DIR="${MARKETING_REMOTE_DIR:-/var/www/marketing-staging}" REMOTE_DIR="${MARKETING_REMOTE_DIR:-/var/www/marketing-staging}"
log() { echo "[deploy-marketing] $(date '+%H:%M:%S') $*"; } log() { echo "[deploy-marketing] $(date '+%H:%M:%S') $*"; }
@ -49,14 +50,18 @@ PUBLIC_DIR="$MARKETING_DIR/.output/public"
log "Build ok ($(du -sh "$PUBLIC_DIR" | cut -f1))" log "Build ok ($(du -sh "$PUBLIC_DIR" | cut -f1))"
# 2. rsync nach Server # 2. rsync nach Server
RSYNC_FLAGS=(-az --delete --info=progress2) # --progress statt --info=progress2: macOS' System-rsync (2.6.9 / openrsync)
# kennt --info nicht. --progress läuft auf alt + neu.
RSYNC_FLAGS=(-az --delete --progress)
if [[ "${DRY_RUN:-0}" == "1" ]]; then if [[ "${DRY_RUN:-0}" == "1" ]]; then
RSYNC_FLAGS+=(--dry-run) RSYNC_FLAGS+=(--dry-run)
log "DRY_RUN aktiv -- nur Simulation" log "DRY_RUN aktiv -- nur Simulation"
fi fi
log "Step 2: rsync nach $SSH_HOST:$REMOTE_DIR ..." log "Step 2: rsync nach $SSH_HOST:$REMOTE_DIR ..."
SSH_KEY="${MARKETING_SSH_KEY:-$HOME/.ssh/id_ed25519}"
rsync "${RSYNC_FLAGS[@]}" \ rsync "${RSYNC_FLAGS[@]}" \
-e "ssh -i $SSH_KEY" \
"$PUBLIC_DIR/" \ "$PUBLIC_DIR/" \
"$SSH_HOST:$REMOTE_DIR/" "$SSH_HOST:$REMOTE_DIR/"