haumdaucher_de/GEMINI.md

3.6 KiB

GEMINI.md - Haumdaucher Project Handbook

🚨 Rules

1. Infrastructure as Code is rule #1. Manual creation of resources (e.g., via gcloud or Console) is forbidden. The use of Terraform/Tofu is mandatory.

2. Agental Protocol (Git & Deployment):

  • Never perform git add or ./deploy.sh before the user has formally accepted the Walkthrough artifact.
  • Once accepted, the agent is responsible for committing changes and triggering the deployment script.

This document serves as the "Source of Truth" for the Haumdaucher website. It outlines the design principles, technical architecture, and specialized features to ensure consistent future development.

🦢 Project Essence

Haumdaucher is a community project from Regensburg, Germany. The website represents the "HAUMDAUCHER Wurst und Spezialitäten n.e.V." (nicht eingetragener Verein). It is designed to be humorous, culturally rich, and technically "surprising."

🎨 Design Principles

  • Vibrant Aesthetics: Each theme must feel like a completely different app.
  • Glassmorphism: Use backdrop-filter and semi-transparent backgrounds for a premium feel.
  • Micro-interactions: Subtle entrance animations and consistent hover states.
  • Accessibility: Mobile-first design with safe-area support for PWA usage on iOS/Android.

Maintaining the legal section is critical for German compliance (§ 5 DDG).

  • Entity Type: The club is a nicht eingetragener Verein (n.e.V.). Do NOT add Registry data (Registergericht/Nummer).
  • Mandatory Impressum Fields:
    • Full Name: HAUMDAUCHER Wurst und Spezialitäten n.e.V.
    • Vertretungsberechtigter: Moritz Graf (1. Vorstand)
    • Ladungsfähige Anschrift: Grabengasse 7, 93059 Regensburg
    • Kontakt: Telefon: 094183065717, E-Mail: info@haumdaucher.de
  • Privacy (DSGVO): The website uses Google Firebase Authentication. The privacy policy must disclose the data processing by Google Ireland Limited and the US data transfer details.

🛠 Technical Specifications

  • Framework: Vue 3 (Composition API) + Vite + TypeScript.
  • State Management: Centralized in App.vue using standard ref hooks.
  • Theming System:
    • Driven by data-theme attribute on :root.
    • Defined in src/assets/styles/global.css.
    • Themes: Classic (Light), Dark (Premium Charcoal/Gold), NAT (Boar Easter Egg).
  • Localization:
    • Centralized in src/locales/i18n.ts.
    • Language: de (Standard German) only.

🚢 Deployment & DevOps

Deployment is automated via the ./deploy.sh script.

Workflow Details:

  1. Cloud Sync: Script ensures the haumdaucher namespace exists in Kubernetes.
  2. Config Extraction: Fetches Firebase credentials directly from Terraform outputs (terraform output -json firebase_config).
  3. Build Pipeline: Docker build passes Firebase credentials as --build-arg (VITE_FIREBASE_*).
  4. Distribution: Pushes the image to registry.haumdaucher.de/haumdaucher-website:latest.
  5. K8s Update: Applies k8s-manifests.yaml and triggers a kubectl rollout restart to fetch the new image.

🕹 The Haumdaucher Game

  • Engine: HTML5 Canvas rendering. Game style changes dynamically based on the site's active theme.
  • Unlocking NAT Mode:
    • Natural: Reach Level 10.
    • Backdoor: Single 1x1 pixel in the bottom-left corner. Type nat mode into the prompt.

📝 Ongoing Maintenance

  • Assets: Static images should be placed in public/images/.
  • Style Overrides: Mobile-first approach is mandatory. Always test with max-width: 375px.