Kleine Grussseite fuer Sandra – statisches HTML/CSS/JS, nginx, Coolify
  • JavaScript 51.5%
  • CSS 26.7%
  • HTML 17.8%
  • Dockerfile 2.1%
  • Shell 1.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-11-01 16:17:51 +00:00
.gitignore Kleine Grußseite für Sandra: statisches nginx-Image mit Wiese, Tagesgruß und Abendlicht 2026-11-01 15:02:17 +00:00
app.js Snorlax statt Blumenwiese, Shell, Petrol-Palette 2026-11-01 15:37:25 +00:00
compose.hot.yaml Hot-Reload: nginx-Service mit Host-Bind-Mounts, deploy.sh, Revalidierungs-Cache 2026-11-01 16:17:51 +00:00
deploy.sh Hot-Reload: nginx-Service mit Host-Bind-Mounts, deploy.sh, Revalidierungs-Cache 2026-11-01 16:17:51 +00:00
Dockerfile Snorlax statt Blumenwiese, Shell, Petrol-Palette 2026-11-01 15:37:25 +00:00
icon.png Snorlax statt Blumenwiese, Shell, Petrol-Palette 2026-11-01 15:37:25 +00:00
index.html Snorlax statt Blumenwiese, Shell, Petrol-Palette 2026-11-01 15:37:25 +00:00
manifest.webmanifest Snorlax statt Blumenwiese, Shell, Petrol-Palette 2026-11-01 15:37:25 +00:00
nginx.conf Hot-Reload: nginx-Service mit Host-Bind-Mounts, deploy.sh, Revalidierungs-Cache 2026-11-01 16:17:51 +00:00
README.md Hot-Reload: nginx-Service mit Host-Bind-Mounts, deploy.sh, Revalidierungs-Cache 2026-11-01 16:17:51 +00:00
snorlax.png Snorlax statt Blumenwiese, Shell, Petrol-Palette 2026-11-01 15:37:25 +00:00
styles.css Snorlax statt Blumenwiese, Shell, Petrol-Palette 2026-11-01 15:37:25 +00:00

sandra.tctcl.de

Eine kleine Grußseite für Sandra: Petrol, ein Snorlax-Wachdienst und eine Shell, die nur antwortet. Statisches HTML/CSS/JS, ausgeliefert von nginx in einem Container, gebaut und betrieben über Coolify.

Inhalt

Datei Zweck
index.html Aufbau und Text
styles.css Alle Tokens (Farben, Typografie) in :root; darunter keine Rohwerte
app.js Snorlax-Bühne (Canvas), Shell, Tagesgruß, Hell/Dunkel, Ton
snorlax.png Snorlax-Grafik (432 px breit, für 2x-Displays; lokal ausgeliefert, kein Hotlink)
icon.png Favicon / Homescreen-Icon
nginx.conf Auslieferung, Sicherheits-Header, /healthz
Dockerfile nginx:alpine + Dateien

Wie die Seite läuft (Hot-Reload)

Die Instanz ist ein Coolify-Service (sandra-static), der nginx:1.27-alpine startet und zwei Host-Verzeichnisse einbindet:

Host Container
/srv/www/sandra.tctcl.de /usr/share/nginx/html (read-only)
/srv/conf /etc/nginx/conf.d (read-only)

Dadurch gibt es keinen Build pro Änderung: Datei ändern, ./deploy.sh, fertig (~1,5 s). Ein Redeploy des Service ist nur nötig, wenn compose.hot.yaml selbst geändert wird.

./deploy.sh                 # rsync -> /srv/www, nginx.conf -> /srv/conf

Die Konfiguration liegt als Verzeichnis-Mount im Container, nicht als einzelne Datei: ein Datei-Bind-Mount hängt am Inode, und scp/rsync ersetzen die Datei — der Container würde für immer die alte Fassung sehen.

Alternativ: eigenständiges Image

Dockerfile baut die Seite weiterhin in ein eigenes Image (für den Fall, dass sie mal woanders laufen soll, ohne Host-Verzeichnisse):

docker build -t sandra-gruss . && docker run --rm -p 8080:80 sandra-gruss

Verhalten

  • Tagesgruß richtet sich nach der Uhrzeit des Besuchers (Gerät, nicht Server).
  • Licht schaltet zwischen tag und abend; Startwert nach Uhrzeit, eigene Wahl wird in localStorage gemerkt.
  • Wachdienst: Tippen erzeugt einen schlafenden Snorlax an dieser Stelle (Wachstums-Animation, Atmen, aufsteigende „z“). Tippen auf einen Snorlax weckt ihn für gut zwei Sekunden: er wackelt, sagt „hmpf.“ und schläft weiter. Höchstens 10 gleichzeitig, danach verschwindet der älteste.
  • Konsole: reine Browser-Shell. help, ls, cat brief.txt, whoami, uptime, ps, snorlax, ping luke, sudo …, coffee, date, clear, exit. Pfeil hoch/runter blättert durch die Historie, Tabulator vervollständigt. Es gibt kein Backend: alle Antworten stehen in app.js.
  • Ton ist standardmäßig aus; eingeschaltet gibt es pro Snorlax einen kurzen Ton (Web Audio, keine Audiodatei).
  • prefers-reduced-motion schaltet Animationen ab (Snorlax stehen dann still).

Kein Tracking

Keine Cookies, keine externen Requests, keine Fremdschriften, keine Analyse. Die Grafik liegt im Image, nicht auf einem fremden Server.

Hinweis zur Grafik

snorlax.png ist offizielles Pokémon-Artwork (Nintendo/The Pokémon Company) und liegt hier für eine private Seite. Für eine öffentliche oder kommerzielle Nutzung müsste die Grafik ersetzt werden.