'use client' import { Language } from '@/lib/types' import { t } from '@/lib/i18n' import GradientText from '../ui/GradientText' import FadeInView from '../ui/FadeInView' import GlassCard from '../ui/GlassCard' import { Code2, Container, GitBranch, Layers, ShieldCheck, Terminal, Cpu, Database, Braces, FileCode2, Server, Workflow, } from 'lucide-react' interface EngineeringSlideProps { lang: Language } export default function EngineeringSlide({ lang }: EngineeringSlideProps) { const i = t(lang) const de = lang === 'de' const heroStats = [ { value: '481K', label: de ? 'Zeilen Code' : 'Lines of Code', sub: 'Go · Python · TypeScript', color: 'text-indigo-400', borderColor: 'border-indigo-500/30', }, { value: '10', label: de ? 'Docker Container' : 'Docker Containers', sub: de ? 'Coolify → Hetzner (amd64)' : 'Coolify → Hetzner (amd64)', color: 'text-emerald-400', borderColor: 'border-emerald-500/30', }, { value: '48+', label: de ? 'SDK-Module' : 'SDK Modules', sub: de ? 'DSGVO · AI Act · NIS2 · CRA' : 'GDPR · AI Act · NIS2 · CRA', color: 'text-purple-400', borderColor: 'border-purple-500/30', }, { value: '14', label: 'Dockerfiles', sub: de ? 'Vollstaendig containerisiert' : 'Fully containerized', color: 'text-amber-400', borderColor: 'border-amber-500/30', }, ] const languageBreakdown = [ { lang: 'TypeScript / TSX', pct: 49, loc: '235K', color: 'bg-blue-500', icon: Braces }, { lang: 'Python', pct: 28, loc: '133K', color: 'bg-yellow-500', icon: Terminal }, { lang: 'Go', pct: 23, loc: '113K', color: 'bg-cyan-500', icon: Code2 }, ] const devopsStack = [ { icon: GitBranch, label: 'Gitea + Actions', desc: de ? 'Self-hosted Git + CI/CD · Lint → Tests → Validierung' : 'Self-hosted Git + CI/CD · Lint → Tests → Validation', }, { icon: Workflow, label: 'Coolify', desc: de ? 'Auto-Deploy bei Push · Docker Compose auf Hetzner · Health Checks' : 'Auto-deploy on push · Docker Compose on Hetzner · Health checks', }, { icon: Container, label: 'Docker Compose', desc: de ? 'arm64 → amd64 Build-Pipeline · Multi-Stage Builds' : 'arm64 → amd64 build pipeline · Multi-stage builds', }, { icon: ShieldCheck, label: 'DevSecOps', desc: 'Semgrep · Trivy · Gitleaks · CycloneDX SBOM', }, { icon: Database, label: 'HashiCorp Vault', desc: de ? 'Secrets Management · Auto-Rotation · PKI' : 'Secrets Management · Auto-Rotation · PKI', }, { icon: Server, label: de ? 'EU-Cloud Infrastruktur' : 'EU Cloud Infrastructure', desc: de ? 'Hetzner · SysEleven (BSI) · OVH · PostgreSQL · Qdrant' : 'Hetzner · SysEleven (BSI) · OVH · PostgreSQL · Qdrant', }, ] const serviceArchitecture = [ { project: de ? 'Frontend & Portale' : 'Frontend & Portals', color: 'text-indigo-400', dotColor: 'bg-indigo-400', services: de ? ['Admin Dashboard (Next.js 15)', 'Developer Portal (Next.js 15)', 'MkDocs Dokumentation'] : ['Admin Dashboard (Next.js 15)', 'Developer Portal (Next.js 15)', 'MkDocs Documentation'], }, { project: de ? 'Backend & KI' : 'Backend & AI', color: 'text-purple-400', dotColor: 'bg-purple-400', services: de ? ['Backend API (FastAPI)', 'AI Compliance SDK (Go/Gin)', 'Document Crawler', 'TTS Service (Piper)'] : ['Backend API (FastAPI)', 'AI Compliance SDK (Go/Gin)', 'Document Crawler', 'TTS Service (Piper)'], }, { project: de ? 'Infrastruktur & Daten' : 'Infrastructure & Data', color: 'text-emerald-400', dotColor: 'bg-emerald-400', services: de ? ['PostgreSQL 17 (Hetzner)', 'Qdrant Vector DB', 'DSMS/IPFS Node + Gateway', 'MinIO Object Storage'] : ['PostgreSQL 17 (Hetzner)', 'Qdrant Vector DB', 'DSMS/IPFS Node + Gateway', 'MinIO Object Storage'], }, ] return (
{de ? 'Anhang' : 'Appendix'}
{i.annex.engineering.subtitle}
{stat.value}
{stat.label}
{stat.sub}
{de ? 'Sprachen-Mix' : 'Language Mix'}
{de ? 'Service-Architektur' : 'Service Architecture'}
{proj.project}
{de ? 'DevOps & Toolchain' : 'DevOps & Toolchain'}
{tool.label}
{tool.desc}
{de ? '100% EU-Cloud · Hetzner + SysEleven (BSI) + OVH · Keine US-Anbieter · Volle Datenkontrolle' : '100% EU Cloud · Hetzner + SysEleven (BSI) + OVH · No US Providers · Full Data Control'}