Initial commit: fuesse.sexy — Where's the Feet

Wimmel-Suchspiel: finde 3 versteckte Fuesse in einer randvollen Szene.
- Node/Express-Server generiert Szenen prozedural aus einer gemeinsamen Library
  (library/props = Deko, library/feet = Fuesse); Spezial-Level (emoji) unter scenes/
- Serverseitige Trefferpruefung (nicht per DOM austrickbar)
- Frontend rendert die Szene als ein Bild -> fluessiges Zoom/Pan (panzoom)
- Dark Mode, kein Start-Screen, Installationsskript + Deploy-Doku (Proxmox LXC)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Guido
2026-08-04 17:29:25 +02:00
commit 1a9710ec88
42 changed files with 2555 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<ellipse cx="50" cy="54" rx="21" ry="19" fill="#3a7bd5"/>
<ellipse cx="50" cy="80" rx="13.5" ry="11" fill="#3a7bd5"/>
<circle cx="33" cy="33" r="7.5" fill="#3a7bd5"/>
<circle cx="45" cy="26" r="5.6" fill="#3a7bd5"/>
<circle cx="56" cy="26" r="4.9" fill="#3a7bd5"/>
<circle cx="65" cy="30" r="4.2" fill="#3a7bd5"/>
<circle cx="72" cy="37" r="3.6" fill="#3a7bd5"/>
</svg>

After

Width:  |  Height:  |  Size: 465 B

View File

@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<ellipse cx="50" cy="54" rx="21" ry="19" fill="#b97a4a"/>
<ellipse cx="50" cy="80" rx="13.5" ry="11" fill="#b97a4a"/>
<circle cx="33" cy="33" r="7.5" fill="#b97a4a"/>
<circle cx="45" cy="26" r="5.6" fill="#b97a4a"/>
<circle cx="56" cy="26" r="4.9" fill="#b97a4a"/>
<circle cx="65" cy="30" r="4.2" fill="#b97a4a"/>
<circle cx="72" cy="37" r="3.6" fill="#b97a4a"/>
</svg>

After

Width:  |  Height:  |  Size: 465 B

View File

@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<ellipse cx="50" cy="54" rx="21" ry="19" fill="#6d4327"/>
<ellipse cx="50" cy="80" rx="13.5" ry="11" fill="#6d4327"/>
<circle cx="33" cy="33" r="7.5" fill="#6d4327"/>
<circle cx="45" cy="26" r="5.6" fill="#6d4327"/>
<circle cx="56" cy="26" r="4.9" fill="#6d4327"/>
<circle cx="65" cy="30" r="4.2" fill="#6d4327"/>
<circle cx="72" cy="37" r="3.6" fill="#6d4327"/>
</svg>

After

Width:  |  Height:  |  Size: 465 B

View File

@@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<ellipse cx="50" cy="54" rx="21" ry="19" fill="#f0b98a"/>
<ellipse cx="50" cy="80" rx="13.5" ry="11" fill="#f0b98a"/>
<circle cx="33" cy="33" r="7.5" fill="#f0b98a"/>
<circle cx="45" cy="26" r="5.6" fill="#f0b98a"/>
<circle cx="56" cy="26" r="4.9" fill="#f0b98a"/>
<circle cx="65" cy="30" r="4.2" fill="#f0b98a"/>
<circle cx="72" cy="37" r="3.6" fill="#f0b98a"/>
<path d="M39 33 L28 54 M39 33 L60 50" stroke="#e5484d" stroke-width="6" stroke-linecap="round" fill="none"/>
<circle cx="39" cy="33" r="5" fill="#e5484d"/></svg>

After

Width:  |  Height:  |  Size: 625 B

View File

@@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<ellipse cx="50" cy="54" rx="21" ry="19" fill="#f0b98a"/>
<ellipse cx="50" cy="80" rx="13.5" ry="11" fill="#f0b98a"/>
<circle cx="33" cy="33" r="7.5" fill="#f0b98a"/>
<circle cx="45" cy="26" r="5.6" fill="#f0b98a"/>
<circle cx="56" cy="26" r="4.9" fill="#f0b98a"/>
<circle cx="65" cy="30" r="4.2" fill="#f0b98a"/>
<circle cx="72" cy="37" r="3.6" fill="#f0b98a"/>
<path d="M28 34 Q50 24 72 34 L84 2 Q50 -6 16 2 Z" fill="#1f8bd6" stroke="#0f6fb0" stroke-width="2"/>
<path d="M34 20 L34 6 M50 17 L50 2 M66 20 L66 6" stroke="#0f6fb0" stroke-width="2.5"/></svg>

After

Width:  |  Height:  |  Size: 657 B

View File

@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<ellipse cx="50" cy="54" rx="21" ry="19" fill="#4caf50"/>
<ellipse cx="50" cy="80" rx="13.5" ry="11" fill="#4caf50"/>
<circle cx="33" cy="33" r="7.5" fill="#4caf50"/>
<circle cx="45" cy="26" r="5.6" fill="#4caf50"/>
<circle cx="56" cy="26" r="4.9" fill="#4caf50"/>
<circle cx="65" cy="30" r="4.2" fill="#4caf50"/>
<circle cx="72" cy="37" r="3.6" fill="#4caf50"/>
</svg>

After

Width:  |  Height:  |  Size: 465 B

View File

@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<ellipse cx="50" cy="54" rx="21" ry="19" fill="#f0b98a"/>
<ellipse cx="50" cy="80" rx="13.5" ry="11" fill="#f0b98a"/>
<circle cx="33" cy="33" r="7.5" fill="#f0b98a"/>
<circle cx="45" cy="26" r="5.6" fill="#f0b98a"/>
<circle cx="56" cy="26" r="4.9" fill="#f0b98a"/>
<circle cx="65" cy="30" r="4.2" fill="#f0b98a"/>
<circle cx="72" cy="37" r="3.6" fill="#f0b98a"/>
</svg>

After

Width:  |  Height:  |  Size: 465 B

View File

@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<ellipse cx="50" cy="54" rx="21" ry="19" fill="#8e5bd0"/>
<ellipse cx="50" cy="80" rx="13.5" ry="11" fill="#8e5bd0"/>
<circle cx="33" cy="33" r="7.5" fill="#8e5bd0"/>
<circle cx="45" cy="26" r="5.6" fill="#8e5bd0"/>
<circle cx="56" cy="26" r="4.9" fill="#8e5bd0"/>
<circle cx="65" cy="30" r="4.2" fill="#8e5bd0"/>
<circle cx="72" cy="37" r="3.6" fill="#8e5bd0"/>
</svg>

After

Width:  |  Height:  |  Size: 465 B

View File

@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<ellipse cx="50" cy="54" rx="21" ry="19" fill="#e5484d"/>
<ellipse cx="50" cy="80" rx="13.5" ry="11" fill="#e5484d"/>
<circle cx="33" cy="33" r="7.5" fill="#e5484d"/>
<circle cx="45" cy="26" r="5.6" fill="#e5484d"/>
<circle cx="56" cy="26" r="4.9" fill="#e5484d"/>
<circle cx="65" cy="30" r="4.2" fill="#e5484d"/>
<circle cx="72" cy="37" r="3.6" fill="#e5484d"/>
</svg>

After

Width:  |  Height:  |  Size: 465 B