export type InfraStatus = 'self-hosted' | 'replaceable' | 'unavoidable'; export interface InfraComponent { name: string; technology: string; status: InfraStatus; icon: string; } export const infrastructure: InfraComponent[] = [ // Self-hosted (green) { name: 'Datenbank', technology: 'PostgreSQL 16 + Drizzle ORM', status: 'self-hosted', icon: 'πŸ—„οΈ', }, { name: 'Cache', technology: 'Redis 7', status: 'self-hosted', icon: '⚑' }, { name: 'Object Storage', technology: 'MinIO (S3-kompatibel)', status: 'self-hosted', icon: 'πŸ“¦', }, { name: 'Authentifizierung', technology: 'Better Auth (EdDSA JWT)', status: 'self-hosted', icon: 'πŸ”', }, { name: 'Suche', technology: 'SearXNG + mana-search', status: 'self-hosted', icon: 'πŸ”' }, { name: 'Messaging', technology: 'Matrix/Synapse + 13 Bots', status: 'self-hosted', icon: 'πŸ’¬' }, { name: 'Monitoring', technology: 'VictoriaMetrics + Grafana', status: 'self-hosted', icon: 'πŸ“Š', }, { name: 'Analytics', technology: 'Umami', status: 'self-hosted', icon: 'πŸ“ˆ' }, { name: 'Error Tracking', technology: 'GlitchTip (Sentry-kompatibel)', status: 'self-hosted', icon: 'πŸ›', }, { name: 'Automation', technology: 'n8n', status: 'self-hosted', icon: 'βš™οΈ' }, { name: 'LLM / KI-Chat', technology: 'Ollama + Gemma 3', status: 'self-hosted', icon: 'πŸ€–' }, { name: 'Spracherkennung', technology: 'Whisper Large V3 (mana-stt)', status: 'self-hosted', icon: '🎀', }, { name: 'Sprachsynthese', technology: 'Piper + Kokoro (mana-tts)', status: 'self-hosted', icon: 'πŸ”Š', }, { name: 'Bildgenerierung', technology: 'FLUX.2 klein (mana-image-gen)', status: 'self-hosted', icon: '🎨', }, // Cloud but replaceable (amber) { name: 'E-Mail', technology: 'Brevo SMTP β†’ Postal geplant', status: 'replaceable', icon: 'πŸ“§' }, { name: 'Landing Pages', technology: 'Cloudflare Pages β†’ Self-hosted geplant', status: 'replaceable', icon: '🌐', }, { name: 'Tunnel/DNS', technology: 'Cloudflare Tunnel β†’ WireGuard geplant', status: 'replaceable', icon: 'πŸ”—', }, { name: 'Bild-API', technology: 'Replicate β†’ mana-image-gen Migration', status: 'replaceable', icon: 'πŸ–ΌοΈ', }, { name: 'Vision-KI', technology: 'Google Gemini β†’ lokale Modelle testen', status: 'replaceable', icon: 'πŸ‘οΈ', }, // Unavoidable cloud (red) { name: 'Zahlungen', technology: 'Stripe (kein EU-Alternative)', status: 'unavoidable', icon: 'πŸ’³', }, { name: 'Google OAuth', technology: 'FΓΌr Kontakte-Import nΓΆtig', status: 'unavoidable', icon: 'πŸ”‘', }, ]; export const stats = { selfHosted: 14, replaceable: 5, unavoidable: 2, total: 21, percentSelfHosted: 75, targetPercent: 90, };