Migrate from Vite to Next.js 15 with SSR

- Replace Vite + React Router with Next.js 15 App Router
- Implement i18n with next-intl (URL-based: /de, /en, /sr)
- Add SSR/SSG for all pages (48 static pages generated)
- Setup Supabase SSR client for auth
- Migrate all pages: Home, About, Portfolio, Blog, Contact, Login, Dashboard, Imprint, Privacy, Terms
- Add Docker support with standalone output
- Replace i18next with next-intl JSON translations
- Use next/image for optimized images

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-17 01:00:33 +01:00
co-authored by Claude Opus 4.5
parent a66f51b9a2
commit b1ec7b4d61
281 changed files with 8024 additions and 8901 deletions
@@ -0,0 +1,63 @@
// components/ProjectContentTemplate.tsx
import React from 'react';
// Kopiere den Typ TranslatedContent, falls er nicht bereits exportiert wird.
// Alternativ importiere ihn aus dem entsprechenden Modul.
export interface TranslatedContent {
meta: {
title: string;
description: string;
date: string;
client: string;
duration: string;
technologies: string[];
};
content: {
intro: string;
challenge: {
title: string;
description: string;
points?: string[];
};
solution: {
title: string;
description: string;
content?: string;
points?: string[];
};
technical: {
title: string;
description: string;
points?: string[];
code?: string;
};
implementation: {
title: string;
description: string;
points?: string[];
};
results: {
title: string;
description: string;
points?: string[];
};
conclusion?: string;
};
}
interface ProjectContentTemplateProps {
content: TranslatedContent;
}
const ProjectContentTemplate: React.FC<ProjectContentTemplateProps> = ({ content }) => {
return (
<div>
{/* Hier renderst du den Inhalt des Projekts, z.B.: */}
<h1>{content.meta.title}</h1>
<p>{content.meta.description}</p>
{/* Und den restlichen Content ... */}
</div>
);
};
export default ProjectContentTemplate;