mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-16 08:59:39 +02:00
New Astro landing page at services/it-landing/ targeting European organizations that need independent, GDPR-compliant IT infrastructure. 10 sections: - Hero: "Technologische Souveränität für Europa" with 75% self-hosted stat - Problem: US Cloud Act, vendor lock-in, GDPR conflicts, Schrems II - Solution: IndependenceBar (animated 75% progress) + 3 principles - Infrastructure Grid: 21 components color-coded (green/amber/red) - GDPR: 6 compliance cards (all rights, breach notification, AI safety) - Open Source Stack: 8 comparisons (PostgreSQL vs DynamoDB, etc.) - Target Audiences: Government, healthcare, education, SMBs - Roadmap: Timeline from current state to 90%+ independence (2027) - FAQ: 8 questions about sovereignty, Cloud Act, local AI, costs - CTA: Contact for consultation Features: - Light EU Sovereign theme (#003399 EU blue, professional B2B design) - German (default) + English (/en/) with Astro i18n - Custom components: InfrastructureGrid, IndependenceBar (scroll animation) - Data from docs/TECH_STACK_INDEPENDENCE.md (real infrastructure stats) - Legal pages: Impressum, Datenschutz - Deploy: pnpm deploy:landing:it → Cloudflare Pages Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
116 lines
2.7 KiB
TypeScript
116 lines
2.7 KiB
TypeScript
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,
|
|
};
|