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>
56 lines
2.2 KiB
Bash
Executable File
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
|