Files
Andrej StevanovskiandClaude Opus 5 92a6faaf54 Emma's Schatzkiste — statische Website, fünf Seiten
Umsetzung des Design-Handoffs als statisches HTML ohne Build-Schritt,
nach dem Hausmuster der übrigen ASX-Websites.

Seiten
- index.html          Startseite (blaue Welt)
- hilfe-verein.html   Hilfe Verein (gelbe Welt)
- shop.html           Platzhalter, Online-Shop bewusst nicht gebaut
- impressum.html      § 5 DDG
- datenschutz.html    Art. 13 DSGVO

Design
- Farbe lebt in Flächen und Display-Typo, nie im Fließtext — dadurch
  laufen alle drei Markenfarben, ohne die Hierarchie zu brechen.
- Ein gesättigtes Vollflächen-Band pro Seite gegen die Blässe der
  reinen Pastellfassung.
- Alle fünf Seiten bestehen WCAG AA im Kontrast.

Mobil
- Header unter 640px zweizeilig, Navigation als Viererraster,
  alle Touch-Ziele >= 44px (WCAG 2.5.5), Footer-Links >= 24px (2.5.8).
- Geprüft bei 320/375/390/640/768/1024/1440/1920 px.

Datenschutz
- Keine Cookies, kein Storage, keine Skripte, null Fremdanfragen.
  Deshalb bewusst kein Einwilligungsbanner.
- Fredoka und Nunito selbst gehostet statt über Google Fonts
  (LG München I, 3 O 17493/20).

Bilder
- Drei Pexels-Fotos, Lizenz geprüft, heruntergeladen und selbst gehostet.
- Bewusst keine Kinderfotos: Pexels gibt kein Model Release.

Offen: drei Angaben in den Rechtstexten, Foto Opa Martin, zwei Audiodateien.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 20:05:34 +02:00

56 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Deploy Emma's Schatzkiste -> STRATO
#
# ./deploy.sh Trockenlauf: zeigt nur, was passieren wuerde
# ./deploy.sh --live uebertraegt tatsaechlich
#
# Authentifizierung ueber den Schluessel ~/.ssh/emmas_strato (Host-Alias: emmas-strato).
# Kein Passwort im Skript, keins in der Shell-History.
set -euo pipefail
cd "$(dirname "$0")"
HOST="emmas-strato"
REMOTE="${REMOTE_DIR:-./}" # relativ = Home des SSH-Users = /home/www (Webspace-Wurzel)
# NICHT "/" — das waere die Dateisystem-Wurzel des Servers
DRY="--dry-run"
[[ "${1:-}" == "--live" ]] && DRY=""
# CSS-Links mit Inhalts-Hash versionieren: aendert sich das Stylesheet, aendert sich
# die URL, und Besucher mit altem Browser-Cache bekommen zwingend die neue Datei.
python3 - <<'PYEOF'
import io, glob, re, hashlib
vs = hashlib.sha1(io.open('assets/site.css','rb').read()).hexdigest()[:8]
vf = hashlib.sha1(io.open('assets/fonts.css','rb').read()).hexdigest()[:8]
for f in sorted(glob.glob('*.html')):
s = io.open(f, encoding='utf-8').read()
n = re.sub(r'href="assets/site\.css(\?v=[0-9a-f]+)?"', f'href="assets/site.css?v={vs}"', s)
n = re.sub(r'href="assets/fonts\.css(\?v=[0-9a-f]+)?"', f'href="assets/fonts.css?v={vf}"', n)
if n != s: io.open(f,'w',encoding='utf-8').write(n)
print(f"CSS-Version: site={vs} fonts={vf}")
PYEOF
# Nur das, was zur Website gehoert. Alles andere bleibt lokal.
INCLUDE=(index.html hilfe-verein.html shop.html impressum.html datenschutz.html assets)
echo "Ziel: $HOST:$REMOTE"
echo "Modus: $([[ -z "$DRY" ]] && echo 'LIVE — Dateien werden uebertragen' || echo 'Trockenlauf')"
echo
rsync -rlptvz --checksum $DRY \
--exclude '.DS_Store' \
"${INCLUDE[@]}" \
"$HOST:$REMOTE"
echo
if [[ -n "$DRY" ]]; then
echo "Trockenlauf beendet. Zum echten Uebertragen: ./deploy.sh --live"
else
echo "Uebertragen. Danach pruefen:"
echo " - Domain im STRATO-Panel muss vom Baukasten auf den Webspace zeigen,"
echo " sonst bleibt die alte Baukasten-Seite sichtbar."
echo " - https://emmas-schatzkiste.de/impressum.html"
echo " - https://emmas-schatzkiste.de/datenschutz.html"
echo " - Browser-Konsole: keine 404er, keine Fremdanfragen"
fi