Initial commit: Portfolio Website

Vollständige Next.js 15 Portfolio-Website mit:
- Blog-System mit 100+ Artikeln
- Supabase-Integration
- Responsive Design mit Tailwind CSS
- TypeScript-Konfiguration
- Testing-Setup mit Vitest und Playwright

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-01 15:07:20 +01:00
co-authored by Claude Opus 4.5
commit e1bbe5455d
315 changed files with 94124 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
import { getTranslations } from 'next-intl/server';
interface WorkflowStep {
number: string;
title: string;
}
const Workflow = async () => {
const t = await getTranslations('pages.about.workflow');
let workflowSteps: WorkflowStep[] = [];
try {
const steps = t.raw('steps') as WorkflowStep[];
if (Array.isArray(steps)) {
workflowSteps = steps;
}
} catch {
workflowSteps = [];
}
if (workflowSteps.length === 0) {
return null;
}
const totalSteps = workflowSteps.length;
return (
<div className="max-w-7xl mx-auto" role="list">
{workflowSteps.map((step) => (
<div
key={step.number}
className="group relative"
role="listitem"
aria-label={`Step ${step.number} of ${totalSteps}: ${step.title}`}
>
<div className="flex items-center py-6 border-b border-zinc-800 group-hover:border-zinc-700 transition-colors duration-300">
<div className="w-12 sm:w-20 text-sm text-zinc-600 font-light">
{step.number}
</div>
<h3 className="text-sm sm:text-base text-zinc-400 group-hover:text-white transition-colors duration-300">
{step.title}
</h3>
</div>
{/* Line Indicator */}
<div
className="absolute left-0 bottom-0 w-0 h-px bg-white group-hover:w-full transition-all duration-500 ease-out"
aria-hidden="true"
/>
</div>
))}
</div>
);
};
export default Workflow;