TechDay-Bruchsal-2026-Seite ergänzt

- public/techday.html: Eventseite im Landingpage-Stil mit Hero,
  Event-Beschreibung, Vortrag (Speaker David Bertram), mITapp-Abschnitt
  mit Platzhaltern, GameJam-Verweis und Event-Infos
- styles.css: Styles für TechDay-Seite (Hero, Talk-Split, Speaker-Karte,
  Screenshot-Platzhalter)
- index.html: Navigations-Verweis "TechDay" in Header, Mobilmenü und
  Footer; GameJam zusätzlich im Footer

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
ToolCTRLandClaude Opus 4.7 committed 2026-05-22 17:43:15 +02:00
1 parent b629bbc90a
commit a0c306374f
4 files changed
+388 -5

No files matched your search

+23 -5
View File
@@ -13,6 +13,7 @@ const http = require("http");
const fs = require("fs");
const path = require("path");
const crypto = require("crypto");
const os = require("os");
const ROOT = __dirname;
const PUBLIC_DIR = path.join(ROOT, "public");
@@ -28,7 +29,20 @@ const MAX_UPLOAD = 5 * 1024 * 1024; /* 5 MB pro eingereichtem Spiel */
/* Bevorzugte Ports — der erste freie wird genutzt. */
const PORT_CANDIDATES = [4317, 4318, 4417, 5317, 8317, 0];
const HOST = "127.0.0.1";
/* 0.0.0.0 = auf allen Schnittstellen erreichbar, auch für andere
Geräte im selben WLAN (z. B. Handys, die den QR-Code scannen). */
const HOST = "0.0.0.0";
/* Erste IPv4-LAN-Adresse dieses Rechners ermitteln. */
function getLanIP() {
const ifaces = os.networkInterfaces();
for (const name of Object.keys(ifaces)) {
for (const net of ifaces[name] || []) {
if (net.family === "IPv4" && !net.internal) return net.address;
}
}
return null;
}
const MIME = {
".html": "text/html; charset=utf-8",
@@ -383,14 +397,18 @@ function listen(candidates) {
const actual = server.address().port;
ensureLeadStore();
ensureGamejamStore();
const lan = getLanIP();
console.log("");
console.log(" ToolCTRL — Landing Page läuft");
console.log(" ----------------------------------------");
console.log(" URL: http://" + HOST + ":" + actual);
console.log(" GameJam: http://" + HOST + ":" + actual + "/gamejam.html");
console.log(" Leads: " + LEADS_CSV);
console.log(" Lokal: http://127.0.0.1:" + actual);
if (lan) {
console.log(" Netzwerk: http://" + lan + ":" + actual +
" (andere Geräte im selben WLAN / QR-Code)");
}
console.log(" Leads: " + LEADS_CSV);
console.log(" GameJam-Einreichungen: " + SUBMISSIONS_JSON);
console.log(" Stop: Strg + C");
console.log(" Stop: Strg + C");
console.log("");
});
}