Breaking changes
Some checks failed
Build and Deploy Container / build_and_deploy (push) Failing after 33s
Some checks failed
Build and Deploy Container / build_and_deploy (push) Failing after 33s
This commit is contained in:
@@ -4,13 +4,15 @@ const { title = "Valtrix – Struktur schafft Wert", description = "Cloud, Secur
|
||||
// Language & routing helpers
|
||||
const pathname = Astro.url.pathname;
|
||||
const isEn = pathname.startsWith('/en');
|
||||
const isDe = pathname.startsWith('/de');
|
||||
const lang = isEn ? 'en' : 'de';
|
||||
const prefix = isEn ? '/en' : '';
|
||||
const stripEn = (p) => p.replace(/^\/en(?=\/|$)/, '');
|
||||
const altHref = isEn ? (stripEn(pathname) || '/') : ('/en' + (pathname === '/' ? '' : pathname));
|
||||
// Default to /de for links so navigation always points to language-prefixed routes
|
||||
const prefix = isEn ? '/en' : '/de';
|
||||
const stripLang = (p) => p.replace(/^\/(?:en|de)(?=\/|$)/, '');
|
||||
const altHref = isEn ? ('/de' + (stripLang(pathname) || '/')) : ('/en' + (stripLang(pathname) || '/'));
|
||||
// Canonical/alternate URLs (use provided path when present for og/link tags)
|
||||
const canonicalPath = path || pathname;
|
||||
const deHref = stripEn(canonicalPath) || '/';
|
||||
const deHref = canonicalPath.startsWith('/de') ? canonicalPath : ('/de' + (canonicalPath === '/' ? '' : canonicalPath));
|
||||
const enHref = canonicalPath.startsWith('/en') ? canonicalPath : ('/en' + (canonicalPath === '/' ? '' : canonicalPath));
|
||||
// Nav labels per language
|
||||
const labels = isEn ? {
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
---
|
||||
import Base from "../layouts/Base.astro";
|
||||
import Base from "../../layouts/Base.astro";
|
||||
const items = [
|
||||
{ slug: "cloud-migration", title: "Sichere Cloud-Migration (AWS/Azure)", summary: "Landing Zone, Zero-Trust, Pipeline & Observability in 6 Wochen." },
|
||||
{ slug: "k8s-hardening", title: "Kubernetes Hardening & GitOps", summary: "CIS Benchmarks, OPA Policies-as-Code, ArgoCD Rollouts." }
|
||||
];
|
||||
---
|
||||
<Base path="/cases" title="Referenzen – Valtrix">
|
||||
<Base path="/de/cases" title="Referenzen – Valtrix">
|
||||
<h1 class="text-3xl font-bold mt-8">Referenzen</h1>
|
||||
<div class="grid md:grid-cols-2 gap-6 mt-6">
|
||||
{items.map(i => (
|
||||
<a href={`/cases/${i.slug}`} class="p-6 border rounded-brand card hover:shadow-sm transition-shadow block">
|
||||
<a href={`/de/cases/${i.slug}`} class="p-6 border rounded-brand card hover:shadow-sm transition-shadow block">
|
||||
<h2 class="font-semibold text-lg">{i.title}</h2>
|
||||
<p class="mt-2 text-textMuted">{i.summary}</p>
|
||||
<span class="mt-3 inline-block text-primary underline">Case ansehen</span>
|
||||
36
src/pages/de/cases/cloud-migration.astro
Normal file
36
src/pages/de/cases/cloud-migration.astro
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
import Base from "../../../layouts/Base.astro";
|
||||
---
|
||||
<Base path="/de/cases/cloud-migration" title="Case Study – Sichere Cloud-Migration">
|
||||
<h1 class="text-3xl font-bold mt-8">Case Study: Sichere Cloud-Migration</h1>
|
||||
<p class="mt-4 text-textMuted">Enterprise-Migration von On-Prem nach Cloud mit Fokus auf Sicherheit & Compliance.</p>
|
||||
|
||||
<section class="mt-8 grid md:grid-cols-3 gap-6">
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<h3 class="font-semibold">Ziel</h3>
|
||||
<p class="mt-2 text-textMuted">Sichere AWS/Azure Landing Zone, segmentiertes Netzwerk, zentralisiertes IAM.</p>
|
||||
</div>
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<h3 class="font-semibold">Vorgehen</h3>
|
||||
<p class="mt-2 text-textMuted">Guardrails, IaC (Terraform/OpenTofu), GitOps, Observability, Cost Controls.</p>
|
||||
</div>
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<h3 class="font-semibold">Ergebnis</h3>
|
||||
<p class="mt-2 text-textMuted">Schnelleres Deployment, Auditfähigkeit, reduzierte Risiken & Kosten.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="mt-10">
|
||||
<h2 class="text-2xl font-bold mb-3">Kennzahlen</h2>
|
||||
<ul class="list-disc pl-6 text-textMuted">
|
||||
<li>6 Wochen bis produktionsreifer Basis</li>
|
||||
<li>~40% weniger manuelle Deployments durch CI/CD</li>
|
||||
<li>100% Infrastruktur als Code & Policies-as-Code</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<div class="mt-12 rounded-brand p-6 bg-gradient-to-r from-accent to-primary text-white flex items-center justify-between">
|
||||
<div class="text-lg font-semibold tracking-wide">Ähnliches Projekt geplant?</div>
|
||||
<a href="/de/kontakt" class="px-5 py-3 rounded-brand bg-white text-primary font-medium">Jetzt anfragen</a>
|
||||
</div>
|
||||
</Base>
|
||||
48
src/pages/de/cases/k8s-hardening.astro
Normal file
48
src/pages/de/cases/k8s-hardening.astro
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
import Base from "../../../layouts/Base.astro";
|
||||
---
|
||||
<Base path="/de/cases/k8s-hardening" title="Case Study – Kubernetes Hardening & GitOps">
|
||||
<h1 class="text-3xl font-bold mt-8">Case Study: Kubernetes Hardening & GitOps</h1>
|
||||
<p class="mt-4 text-textMuted">Produktionsreifes K8s‑Setup mit Härtung nach CIS, durchgängigen Policies‑as‑Code und GitOps‑Deployments.</p>
|
||||
|
||||
<section class="mt-8 grid md:grid-cols-3 gap-6">
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<h3 class="font-semibold">Ziel</h3>
|
||||
<p class="mt-2 text-textMuted">Sicheres Cluster‑Baseline: identitätszentrierte Zugriffe, Netzwerk‑Segmentierung, saubere Supply Chain.</p>
|
||||
</div>
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<h3 class="font-semibold">Vorgehen</h3>
|
||||
<p class="mt-2 text-textMuted">CIS Benchmarks, OPA/Gatekeeper oder Kyverno Policies, Pod Security Standards, signierte Artefakte & GitOps (Argo CD).</p>
|
||||
</div>
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<h3 class="font-semibold">Ergebnis</h3>
|
||||
<p class="mt-2 text-textMuted">Reproduzierbare Deployments, Policy‑konforme Releases, Auditfähigkeit und reduzierte Angriffsfläche.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="mt-10">
|
||||
<h2 class="text-2xl font-bold mb-3">Kennzahlen</h2>
|
||||
<ul class="list-disc pl-6 text-textMuted">
|
||||
<li>100% deklarative Deployments (GitOps, Pull‑basiert)</li>
|
||||
<li>~80% der CIS‑Kontrollen automatisiert überprüfbar</li>
|
||||
<li>Policy‑Breaks verhindern riskante Manifeste vor dem Rollout</li>
|
||||
<li>Signierte Container‑Images & SBOM für Kernservices</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section class="mt-10 grid md:grid-cols-2 gap-6">
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<h3 class="font-semibold">GitOps Setup</h3>
|
||||
<p class="mt-2 text-textMuted">Mehrstufige Environments (dev/stage/prod) mit Branch/Tag‑Strategie, Kustomize‑Overlays und PR‑basierten Changes.</p>
|
||||
</div>
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<h3 class="font-semibold">Cluster Hardening</h3>
|
||||
<p class="mt-2 text-textMuted">RBAC Least‑Privilege, NetworkPolicies default‑deny, Pod Security, Image‑Scanning, Secrets‑Management.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="mt-12 rounded-brand p-6 bg-gradient-to-r from-accent to-primary text-white flex items-center justify-between">
|
||||
<div class="text-lg font-semibold tracking-wide">Ähnliches Projekt geplant?</div>
|
||||
<a href="/de/kontakt" class="px-5 py-3 rounded-brand bg-white text-primary font-medium">Jetzt anfragen</a>
|
||||
</div>
|
||||
</Base>
|
||||
@@ -1,15 +1,15 @@
|
||||
---
|
||||
import Base from "../layouts/Base.astro";
|
||||
import Base from "../../layouts/Base.astro";
|
||||
const updated = new Date().toLocaleDateString('de-DE', { year: 'numeric', month: 'long', day: '2-digit' });
|
||||
---
|
||||
<Base path="/datenschutz" title="Datenschutz – Valtrix">
|
||||
<Base path="/de/datenschutz" title="Datenschutz – Valtrix">
|
||||
<h1 class="text-2xl font-bold mt-8">Datenschutzhinweise</h1>
|
||||
|
||||
<p class="mt-4 text-textMuted">Diese Hinweise informieren darüber, wie wir personenbezogene Daten beim Besuch dieser Website verarbeiten. Die Website ist als statische Seite umgesetzt; es werden keine Tracking‑ oder Marketing‑Cookies eingesetzt und keine externen Ressourcen (z. B. Google Fonts, Analytics, Formdienste) geladen.</p>
|
||||
|
||||
<section class="mt-8 grid gap-2">
|
||||
<h2 class="text-xl font-semibold">1. Verantwortlicher</h2>
|
||||
<p>Verantwortlicher im Sinne der DSGVO ist: <strong>Valtrix</strong>. Anschrift siehe <a class="underline text-primary" href="/impressum">Impressum</a>. E‑Mail: <a class="underline text-primary" href="mailto:kontakt@valtrix.systems">kontakt@valtrix.systems</a></p>
|
||||
<p>Verantwortlicher im Sinne der DSGVO ist: <strong>Valtrix</strong>. Anschrift siehe <a class="underline text-primary" href="/de/impressum">Impressum</a>. E‑Mail: <a class="underline text-primary" href="mailto:kontakt@valtrix.systems">kontakt@valtrix.systems</a></p>
|
||||
</section>
|
||||
|
||||
<section class="mt-6 grid gap-2">
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
import Base from "../layouts/Base.astro";
|
||||
import Base from "../../layouts/Base.astro";
|
||||
---
|
||||
<Base path="/impressum" title="Impressum – Valtrix">
|
||||
<Base path="/de/impressum" title="Impressum – Valtrix">
|
||||
<h1 class="text-2xl font-bold mt-8">Impressum</h1>
|
||||
<p><strong>VALTRIX</strong> GmbH i.G.</p>
|
||||
<p>Am Wassergraben 4, 10179 Berlin</p>
|
||||
82
src/pages/de/index.astro
Normal file
82
src/pages/de/index.astro
Normal file
@@ -0,0 +1,82 @@
|
||||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
const benefits = [
|
||||
{ title: "Zero-Trust & Härtung", text: "Security-by-Design, CIS/BSI-Richtlinien, automatisierte Policies." },
|
||||
{ title: "Cloud Foundations", text: "Landing Zones, Identity, Observability – sauber & skalierbar." },
|
||||
{ title: "Automatisierung", text: "IaC/CI/CD, GitOps, wiederholbar & auditfähig." }
|
||||
];
|
||||
const approach = [
|
||||
{ title: 'Assess', text: 'Risiko- und Reifegradanalyse: schneller Quick-Scan, klare Prioritäten.' },
|
||||
{ title: 'Design', text: 'Zielarchitektur & Guardrails: sichere, skalierbare Blueprint-Entwürfe.' },
|
||||
{ title: 'Build', text: 'IaC, Pipelines & Policies-as-Code: reproduzierbar und überprüfbar.' },
|
||||
{ title: 'Run', text: 'Monitoring, Audits & Kostentransparenz: nachhaltig betreibbar.' }
|
||||
];
|
||||
---
|
||||
<Base path="/de">
|
||||
<section class="py-16 grid lg:grid-cols-2 gap-12 items-center">
|
||||
<div class="fade-in">
|
||||
<h1 class="text-4xl md:text-5xl font-bold leading-tight">
|
||||
Security-first Cloud Consulting.
|
||||
</h1>
|
||||
<p class="mt-4 text-lg text-textMuted">
|
||||
Wir verbinden <strong>Struktur</strong> und <strong>Wert</strong>: sichere Cloud-Architekturen, Automatisierung und Compliance – pragmatisch und messbar.
|
||||
</p>
|
||||
<div class="mt-8 flex gap-4">
|
||||
<a href="/de/leistungen" class="px-5 py-3 rounded-brand bg-primary text-white hover:opacity-90">Leistungen</a>
|
||||
<a href="/de/kontakt" class="px-5 py-3 rounded-brand border border-primary text-primary hover:bg-graybg">Kontakt</a>
|
||||
</div>
|
||||
<div class="mt-8 grid grid-cols-3 gap-4 text-sm text-textMuted">
|
||||
<div class="p-3 border rounded-brand card">DSGVO / EU-Hosting</div>
|
||||
<div class="p-3 border rounded-brand card">BSI/ISO-orientiert</div>
|
||||
<div class="p-3 border rounded-brand card">Auditfähig</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="py-10 grid md:grid-cols-3 gap-6">
|
||||
{benefits.map(b => (
|
||||
<div class="p-6 border rounded-brand hover:shadow-sm transition-shadow card">
|
||||
<h3 class="font-semibold text-lg">{b.title}</h3>
|
||||
<p class="mt-2 text-textMuted">{b.text}</p>
|
||||
</div>
|
||||
))}
|
||||
</section>
|
||||
|
||||
<section class="py-12">
|
||||
<h2 class="text-2xl font-bold mb-6">Leistungen</h2>
|
||||
<div class="grid md:grid-cols-3 gap-6">
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<h3 class="font-semibold text-lg">Cloud & DevOps</h3>
|
||||
<p class="mt-2 text-textMuted">Plan, Build & Run – effizient, sicher, skalierbar.</p>
|
||||
<a href="/de/leistungen" class="mt-3 inline-block text-primary underline">Mehr erfahren</a>
|
||||
</div>
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<h3 class="font-semibold text-lg">Security & Compliance</h3>
|
||||
<p class="mt-2 text-textMuted">Zero-Trust, IAM, Hardening, Audits, BSI/ISO‑orientierte Prozesse.</p>
|
||||
</div>
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<h3 class="font-semibold text-lg">AI & Automation</h3>
|
||||
<p class="mt-2 text-textMuted">RAG/Agenten, Automatisierung von Betriebsprozessen, sichere Integration.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="py-14">
|
||||
<h2 class="text-2xl font-bold mb-6">Unser Ansatz</h2>
|
||||
<div class="grid md:grid-cols-4 gap-6">
|
||||
{approach.map((a, i) => (
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<div class="text-xl font-semibold">{i+1}. {a.title}</div>
|
||||
<p class="mt-2 text-textMuted">{a.text}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="py-12">
|
||||
<div class="rounded-brand p-8 bg-gradient-to-r from-accent to-primary text-white flex flex-col md:flex-row items-center justify-between gap-6">
|
||||
<div class="text-xl font-semibold tracking-wide">Sichere Cloud – pragmatisch umgesetzt.</div>
|
||||
<a href="/de/kontakt" class="px-6 py-3 rounded-brand bg-white text-primary font-medium">Projekt anfragen</a>
|
||||
</div>
|
||||
</section>
|
||||
</Base>
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
import Base from "../layouts/Base.astro";
|
||||
import Base from "../../layouts/Base.astro";
|
||||
---
|
||||
<Base path="/kontakt" title="Kontakt – Valtrix">
|
||||
<Base path="/de/kontakt" title="Kontakt – Valtrix">
|
||||
<h1 class="text-3xl font-bold mt-8">Kontakt</h1>
|
||||
<form id="contactForm" class="mt-6 grid gap-4 max-w-xl">
|
||||
<input class="border rounded-brand p-3" name="name" placeholder="Ihr Name" required>
|
||||
@@ -20,7 +20,7 @@ import Base from "../layouts/Base.astro";
|
||||
const message = (data.get('message')||'').toString();
|
||||
const subject = `Kontaktanfrage – ${name}`;
|
||||
const body = `Name: ${name}\nE-Mail: ${email}\n\n${message}`;
|
||||
const mail = `mailto:kontakt@valtrix.systems?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
|
||||
const mail = `mailto:kontakt@valtrix.systems?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
|
||||
window.location.href = mail;
|
||||
});
|
||||
</script>
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
import Base from "../layouts/Base.astro";
|
||||
import Base from "../../layouts/Base.astro";
|
||||
---
|
||||
<Base path="/leistungen" title="Leistungen – Valtrix">
|
||||
<Base path="/de/leistungen" title="Leistungen – Valtrix">
|
||||
<h1 class="text-3xl font-bold font-bold mt-8">Leistungen</h1>
|
||||
<div class="grid md:grid-cols-3 gap-6 mt-6">
|
||||
<div class="p-6 border rounded-brand card">
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
import Base from "../layouts/Base.astro";
|
||||
import Base from "../../layouts/Base.astro";
|
||||
---
|
||||
<Base path="/sicherheit" title="Sicherheit & Compliance – Valtrix">
|
||||
<Base path="/de/sicherheit" title="Sicherheit & Compliance – Valtrix">
|
||||
<h1 class="text-3xl font-bold mt-8">Sicherheit & Compliance</h1>
|
||||
<ul class="list-disc pl-6 mt-4 text-textMuted">
|
||||
<li>Datensouverän: EU-Hosting, DSGVO-konform</li>
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
import Base from "../layouts/Base.astro";
|
||||
import Base from "../../layouts/Base.astro";
|
||||
---
|
||||
<Base path="/ueber-uns" title="Über uns – Valtrix">
|
||||
<Base path="/de/ueber-uns" title="Über uns – Valtrix">
|
||||
<h1 class="text-3xl font-bold mt-8">Über uns</h1>
|
||||
<p class="mt-4 text-textMuted max-w-2xl">Wir sind ein Team aus Cloud-, Security- und AI-Engineers. Wir bauen robuste Systeme – pragmatisch und messbar.</p>
|
||||
</Base>
|
||||
@@ -56,12 +56,24 @@ const features = [
|
||||
|
||||
<section class="py-14">
|
||||
<h2 class="text-2xl font-bold mb-6">Our approach</h2>
|
||||
<ol class="grid md:grid-cols-4 gap-6 list-decimal pl-5">
|
||||
<li class="p-5 border rounded-brand card"><strong>Assess:</strong> Risk & maturity → quick scan.</li>
|
||||
<li class="p-5 border rounded-brand card"><strong>Design:</strong> Target architecture & guardrails.</li>
|
||||
<li class="p-5 border rounded-brand card"><strong>Build:</strong> IaC, pipelines, policies-as-code.</li>
|
||||
<li class="p-5 border rounded-brand card"><strong>Run:</strong> Monitoring, audits, cost transparency.</li>
|
||||
</ol>
|
||||
<div class="grid md:grid-cols-4 gap-6">
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<div class="text-xl font-semibold">1. Assess</div>
|
||||
<p class="mt-2 text-textMuted">Risk & maturity analysis: quick-scan, clear priorities.</p>
|
||||
</div>
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<div class="text-xl font-semibold">2. Design</div>
|
||||
<p class="mt-2 text-textMuted">Target architecture & guardrails: secure, scalable blueprints.</p>
|
||||
</div>
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<div class="text-xl font-semibold">3. Build</div>
|
||||
<p class="mt-2 text-textMuted">IaC, pipelines & policies-as-code: reproducible & testable.</p>
|
||||
</div>
|
||||
<div class="p-6 border rounded-brand card">
|
||||
<div class="text-xl font-semibold">4. Run</div>
|
||||
<p class="mt-2 text-textMuted">Monitoring, audits & cost transparency for sustainable operations.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="py-12">
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
---
|
||||
import Base from "../layouts/Base.astro";
|
||||
const benefits = [
|
||||
{ title: "Zero-Trust & Hardening", text: "Security-by-Design, CIS/BSI-Guidelines, automatisierte Policies." },
|
||||
{ title: "Cloud Foundations", text: "Landing Zones, Identity, Observability – sauber & skalierbar." },
|
||||
{ title: "Automatisierung", text: "IaC/CI/CD, GitOps, wiederholbar & auditfähig." }
|
||||
];
|
||||
const features = [
|
||||
{ title: "Cloud & DevOps", text: "Plan, Build & Run – effizient, sicher, skalierbar." },
|
||||
{ title: "Security & Compliance", text: "BSI/ISO-aligned, Zero-Trust, Audits, Policies-as-Code." },
|
||||
{ title: "AI & Automation", text: "RAG, Agenten & Process Automation mit messbarem Outcome." }
|
||||
];
|
||||
---
|
||||
<Base path="/">
|
||||
<section class="py-16 grid lg:grid-cols-2 gap-12 items-center">
|
||||
<div class="fade-in">
|
||||
<h1 class="text-4xl md:text-5xl font-bold leading-tight">
|
||||
Security-first Cloud Consulting.
|
||||
</h1>
|
||||
<p class="mt-4 text-lg text-textMuted">
|
||||
Wir verbinden <strong>Struktur</strong> und <strong>Wert</strong>: sichere Cloud-Architekturen, Automatisierung und Compliance – pragmatisch und messbar.
|
||||
</p>
|
||||
<div class="mt-8 flex gap-4">
|
||||
<a href="/leistungen" class="px-5 py-3 rounded-brand bg-primary text-white hover:opacity-90">Leistungen</a>
|
||||
<a href="/kontakt" class="px-5 py-3 rounded-brand border border-primary text-primary hover:bg-graybg">Kontakt</a>
|
||||
</div>
|
||||
<div class="mt-8 grid grid-cols-3 gap-4 text-sm text-textMuted">
|
||||
<div class="p-3 border rounded-brand card">DSGVO / EU-Hosting</div>
|
||||
<div class="p-3 border rounded-brand card">BSI/ISO-orientiert</div>
|
||||
<div class="p-3 border rounded-brand card">Auditfähig</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="py-10 grid md:grid-cols-3 gap-6">
|
||||
{benefits.map(b => (
|
||||
<div class="p-6 border rounded-brand hover:shadow-sm transition-shadow card">
|
||||
<h3 class="font-semibold text-lg">{b.title}</h3>
|
||||
<p class="mt-2 text-textMuted">{b.text}</p>
|
||||
</div>
|
||||
))}
|
||||
</section>
|
||||
|
||||
<section class="py-12">
|
||||
<h2 class="text-2xl font-bold mb-6">Leistungen</h2>
|
||||
<div class="grid md:grid-cols-3 gap-6">
|
||||
{features.map(f => (
|
||||
<div class="p-6 border rounded-brand hover:-translate-y-0.5 transition card">
|
||||
<h3 class="font-semibold text-lg">{f.title}</h3>
|
||||
<p class="mt-2 text-textMuted">{f.text}</p>
|
||||
<a href="/leistungen" class="mt-3 inline-block text-primary underline">Mehr erfahren</a>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="py-14">
|
||||
<h2 class="text-2xl font-bold mb-6">Unser Ansatz</h2>
|
||||
<ol class="grid md:grid-cols-4 gap-6 list-decimal pl-5">
|
||||
<li class="p-5 border rounded-brand card"><strong>Assess:</strong> Risiko & Reifegrad → Quick-Scan.</li>
|
||||
<li class="p-5 border rounded-brand card"><strong>Design:</strong> Zielarchitektur & Guardrails.</li>
|
||||
<li class="p-5 border rounded-brand card"><strong>Build:</strong> IaC, Pipelines, Policies-as-Code.</li>
|
||||
<li class="p-5 border rounded-brand card"><strong>Run:</strong> Monitoring, Audits, Kostentransparenz.</li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section class="py-12">
|
||||
<div class="rounded-brand p-8 bg-gradient-to-r from-accent to-primary text-white flex flex-col md:flex-row items-center justify-between gap-6">
|
||||
<div class="text-xl font-semibold tracking-wide">Sichere Cloud – pragmatisch umgesetzt.</div>
|
||||
<a href="/kontakt" class="px-6 py-3 rounded-brand bg-white text-primary font-medium">Projekt anfragen</a>
|
||||
</div>
|
||||
</section>
|
||||
</Base>
|
||||
Reference in New Issue
Block a user