Dateien
Website/CLAUDE.md
2026-04-26 21:15:34 +02:00

240 Zeilen
8.8 KiB
Markdown

# CLAUDE.md - AegisSight Website
RELATED_DOCS:
COOKIE_CONSENT_IMPLEMENTATION.md: "Cookie-Banner Implementierung, GDPR, Testing"
DATENSCHUTZ_ANALYTICS.md: "Textbausteine fuer Datenschutzerklaerung"
PROFESSIONAL_TOOLBOX_CONTENT.md: "Backup-HTML fuer entfernte Produktkarte"
VIDEO_UPLOAD_INSTRUCTIONS.md: "Anleitung fuer manuelle Video-Uploads (Git-Limit)"
PROJECT: Website
STATUS: PRODUCTION
URL: https://aegis-sight.de
CONTAINER: aegis-website-nginx
COMPANY:
name: AegisSight UG (haftungsbeschraenkt)
domain: aegis-sight.de
email: info@aegis-sight.de
TECHNOLOGY:
type: Static Website
build_process: NONE
deployment: Docker/nginx
frontend:
- HTML5
- CSS3 (modular)
- JavaScript ES6+
- SVG
features:
- multi_language: [DE, EN]
- responsive: mobile-first
- video_backgrounds: true
- cookie_consent: GDPR-compliant
- security_headers: enabled
STRUCTURE:
root_files:
- index.html: Hauptseite
- impressum.html: Impressum DE
- impressum-en.html: Impressum EN
- datenschutz.html: Datenschutz DE
- datenschutz-en.html: Datenschutz EN
- accountforger-video.html: Produkt-Demo
- robots.txt: SEO-Konfiguration
- cookie-consent.js: GDPR Cookie-System
- cookie-consent.css: Cookie-Banner Styles
directories:
assets:
fonts: [Inter, Bebas Neue]
images:
icons: UI-Icons (SVG)
flags: Laenderflaggen
logos: "Logo+Schrift_Rechts.svg"
videos: "~300MB - Hero-Videos, AFv6.mp4"
css:
- main.css: Kern-Styles
- animations-enhanced.css: Animationen
- mobile.css: Mobile Responsive
- fonts.css: Typografie
js:
- main.js: Einstiegspunkt
- translations.js: Mehrsprachigkeit
- components.js: UI-Komponenten
- animations.js: Animationssystem
docs: Rechtliche PDFs
lagen:
iran-konflikt:
- index.html: Lagebild-Seite (Leaflet, Tabs, Timeline)
- lagebild.js: Datenladung, Rendering, Interaktionen
- lagebild.css: Dark-Theme Styling
- data/: current.json + Snapshots (sync alle 5min)
vorschau:
- index.html: Produktseite AegisSight Monitor (Passwort-Gate)
css:
- style.css: Light-Mode Design (Navy/Gold Akzente)
js:
- app.js: Hero-Videos, 3D-Karussell, Leaflet-Karte, Live-Daten, Kontaktformular
PAGES:
homepage:
sections: [Hero mit Video, Ueber uns, Loesungen, Kontakt]
legal:
- Impressum (DE/EN)
- Datenschutz (DE/EN)
product:
- AccountForger Video-Demo
lagen:
url_struktur: /lagen/{thema}/
redirect: /lagebild/ -> 301 -> /lagen/iran-konflikt/
aktiv:
- iran-konflikt: Live-Lagebild Irankonflikt (ehemals /lagebild/)
geplant:
- (2 weitere Lagen in Vorbereitung)
vorschau:
url: /vorschau/
zweck: Produktseite AegisSight Monitor (ersetzt spaeter die Hauptseite)
auth: JavaScript SHA-256 Passwort-Gate (kein Benutzername)
design: Light-Mode, Navy/Gold Akzente, SVG-Wellen/Diagonale Divider
sections: [Hero mit Video (clip-path Chevron), Problem (dark), Workflow 3-Schritte, Live-Stats, 3D-Karussell mit Lagebild-Text, Leaflet-Karte (gekoppelt an Karussell), Faktenprüfung-Statement, Features (5 Cards zentriert), CTA, Unser Versprechen]
daten: Fetcht /lagen/iran-konflikt/data/summary.json (~116 KB)
karussell: 3D-Perspektive, 3 Cards (Iran live + 2 Platzhalter), Karte wechselt mit
karte: Leaflet mit Pulse-Markern, Dark Popups/Legende, gekoppelt an aktive Lage
kontaktformular: Popup-Modal (Name, Organisation, E-Mail, Nachricht) -> /api/contact -> SMTP
icons: monitor.svg + languages.svg (Lucide) hinzugefuegt
DEVELOPMENT:
translations: js/translations.js
large_files: "assets/videos/ (~300MB)"
design: mobile-first responsive
SERVICES:
contact-form:
script: /opt/v2-Docker/aegis-website/contact-form.py
service: aegis-contact.service
port: 127.0.0.1:8074
nginx: /api/contact -> 127.0.0.1:8074
zweck: Kontaktformular-Handler (SMTP an info@aegis-sight.de)
rate_limit: 3 Anfragen pro IP / 10 Min
DEPLOYMENT:
container: aegis-website-nginx
server: nginx (static files)
ssl: enabled
security_headers: enabled
rate_limiting: configured
CHANGE_LOG:
2026-01-08:
- "Rebrand: IntelSight -> AegisSight"
- "Neues Logo: Logo+Schrift_Rechts.svg"
- "Email: info@aegis-sight.de"
- "Footer: Dynamisches Jahr, AGB entfernt"
Last-Updated: 2026-04-06
RULES:
neue_html_seiten:
- "Jede neue HTML-Datei MUSS im <head> folgende Favicon-Tags enthalten:"
- "<link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon.svg\">"
- "<link rel=\"apple-touch-icon\" href=\"/assets/images/logos/AegisSightLogo_NavyGold.svg\">"
- "Fuer Unterverzeichnisse relative Pfade anpassen, z.B. ../favicon.svg"
# ───────────────────────────────────────────────────────────────────
# STAGING-UMGEBUNG
# ───────────────────────────────────────────────────────────────────
STAGING:
url: https://staging.aegis-sight.de
server: 46.225.225.49 (gleicher Host wie Live)
container: aegis-website-staging-nginx (eigener Docker-Container)
pfad: /opt/v2-Docker/aegis-website-staging/html
branch: develop
netzwerk_ip: 172.18.0.7 (im v2_internal_net)
zugriff: Magic-Link-Login an info@aegis-sight.de (Cookie 30 Tage)
besonderheit_lagen_daten:
erklaerung: |
Die Live-Lagen-Daten (/lagen/*/data/*.json) werden vom sync-lagebild.py
erzeugt und nicht ins Repo committed. Im Staging-Container ist das
Live-/lagen/-Verzeichnis read-only gemountet, damit die Karten-Vorschau
auch im Staging mit echten Daten funktioniert.
mount_im_compose: /opt/v2-Docker/aegis-website/html/lagen:/usr/share/nginx/html/lagen:ro
auth_service:
pfad: /opt/v2-Docker/aegis-staging-auth
service: aegis-staging-auth.service
port: 127.0.0.1:8095
cookie_domain: staging.aegis-sight.de
cookie_name: aegis_staging_auth
WORKFLOW_STAGING_TO_LIVE:
1_aenderung_in_develop: |
cd /opt/v2-Docker/aegis-website-staging/html
git checkout develop
# Aenderung machen
git add . && git commit -m ...
git push origin develop
2_staging_aktualisieren_manuell: |
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website-staging/html && git pull'
# Kein Container-Reload noetig (statische Files)
3_in_browser_pruefen: https://staging.aegis-sight.de
4_promote_zu_live: |
# Auf Gitea: Pull Request develop -> main, dann mergen
# Danach auf Live-Server pullen:
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && git pull'
# ───────────────────────────────────────────────────────────────────
# AUTO-DEPLOY + PROMOTE-UI
# ───────────────────────────────────────────────────────────────────
AUTO_DEPLOY:
prinzip: |
Gitea-Webhook bei Push auf develop -> Listener-Service auf dem Server pullt
automatisch + restartet ggf. den Service. Kein manueller git pull mehr noetig.
listener_service:
pfad: /opt/v2-Docker/aegis-staging-deploy
service: aegis-staging-deploy.service
port: 127.0.0.1:8096
deployments:
staging: "develop -> /opt/v2-Docker/aegis-website-staging/html"
live: "main -> /opt/v2-Docker/aegis-website/html"
endpoints:
"POST /__deploy": "staging (HMAC ueber Gitea-Webhook)"
"POST /__deploy/live": "live (HMAC ueber Promote-UI)"
secrets: in /opt/v2-Docker/aegis-staging-deploy/.env (nicht im Repo)
gitea_webhook:
repo: AegisSight/Website
url: https://staging.aegis-sight.de/__deploy
branch_filter: develop
PROMOTE_UI:
url: https://deploy.aegis-sight.de
pfad: /opt/v2-Docker/aegis-promote
service: aegis-promote.service
port: 127.0.0.1:8097
zugriff: Magic-Link-Login an info@aegis-sight.de (eigener Cookie deploy.aegis-sight.de)
funktion: |
Zeigt pro Service (Webseite + Monitor) Live-Stand vs. Staging-Stand.
Promote-Button erstellt Gitea-PR develop->main, mergt ihn auto, und triggert
den Live-Deploy via HMAC-signed Webhook am Listener-Service.
WORKFLOW_KOMPLETT:
1_entwickeln: |
git checkout develop
# Aenderung
git add . && git commit && git push origin develop
# -> Auto-Deploy pullt in /opt/v2-Docker/aegis-website-staging/html
2_pruefen_staging: https://staging.aegis-sight.de/
3_promoten: https://deploy.aegis-sight.de/ (Promote-Knopf)
4_pruefen_live: https://aegis-sight.de/