62 lines
3.2 KiB
Markdown
62 lines
3.2 KiB
Markdown
# 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.
|
|
|
|
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 is designed to be humorous, culturally rich (Bavarian), 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 (logo spin, hero text slide) and consistent hover states.
|
|
- **Accessibility**: Mobile-first design with safe-area support for PWA usage on iOS/Android.
|
|
|
|
## 🛠 Technical Specifications
|
|
- **Framework**: Vue 3 (Composition API) + Vite + TypeScript.
|
|
- **State Management**: Centralized in `App.vue` using standard `ref` hooks. Persisted in `localStorage`.
|
|
- **Theming System**:
|
|
- Driven by `data-theme` attribute on `:root`.
|
|
- Defined in `src/assets/styles/global.css`.
|
|
- Themes: `Classic`, `Unicorn`, `Luxury`, `Win95`, `NAT`.
|
|
- **Localization**:
|
|
- Centralized in `src/locales/i18n.ts`.
|
|
- Supports `de` (Standard German) and `bar` (Bavarian Dialect).
|
|
- **PWA**:
|
|
- Managed via `vite-plugin-pwa`.
|
|
- Custom icons and standalone manifest for "Add to Home Screen" support.
|
|
|
|
|
|
## 🧪 Testing
|
|
- **Framework**: Vitest + HappyDOM.
|
|
- **Scope**: Lightweight sanity checks (e.g., verifying App mount).
|
|
- **Commands**:
|
|
- `npm test`: Run tests in watch mode.
|
|
- `npm test -- --run`: Run tests once (CI mode).
|
|
|
|
## 🕹 The Haumdaucher Game
|
|
- **Engine**: HTML5 Canvas rendering.
|
|
- **Controls**: Touch-responsive (horizontal drag) and Keyboard (Arrow Keys).
|
|
- **Thematization**: The game visual style (backgrounds, player, obstacles) changes dynamically based on the site's active theme.
|
|
- **Difficulty**: Balanced (10 levels). Level 10 triggers a "Boar Rain" supermode.
|
|
|
|
## 🔐 Progression & Gating
|
|
- **NAT Mode**: This theme is locked by default to maintain the "collectible" feel.
|
|
- **Unlocking**:
|
|
- **Natural**: Reach Level 10 in the game.
|
|
- **Backdoor**: Single 1x1 pixel in the bottom-left corner of the site. Clicking it triggers a prompt. Type `nat mode` to unlock.
|
|
|
|
## 🚢 Deployment & DevOps
|
|
- **Docker**: Dual-stage build (Node build -> Nginx serving).
|
|
- **Registry**: `registry.haumdaucher.de`.
|
|
- **Kubernetes**:
|
|
- Managed via `k8s-manifests.yaml`.
|
|
- Features `cert-manager` for SSL and `registry-haumdaucher-de` pull secret.
|
|
- **CI/CD Logic**: The `deploy.sh` script handles builds, pushes, and triggers a `kubectl rollout restart` to force deployment updates when utilizing the `latest` image tag.
|
|
|
|
## 📝 Ongoing Maintenance
|
|
- **Assets**: Static images should be placed in `public/images/` to avoid bundling issues in production containers.
|
|
- **Style Overrides**: Mobile-first approach is mandatory. Always test with `max-width: 375px`.
|