🎨 Complete Portfolio Redesign: Modern Dark Theme + Admin Dashboard + Enhanced Markdown Editor

 New Features:
- Complete dark theme redesign with glassmorphism effects
- Responsive admin dashboard with collapsible projects list
- Enhanced markdown editor with live preview
- Project image upload functionality
- Improved project management (create, edit, delete, publish/unpublish)
- Slug-based project URLs
- Legal pages (Impressum, Privacy Policy)
- Modern animations with Framer Motion

🔧 Improvements:
- Fixed hydration errors with mounted state
- Enhanced UI/UX with better spacing and proportions
- Improved markdown rendering with custom components
- Better project image placeholders with initials
- Conditional rendering for GitHub/Live Demo links
- Enhanced toolbar with categorized quick actions
- Responsive grid layout for admin dashboard

📱 Technical:
- Next.js 15 + TypeScript + Tailwind CSS
- Local storage for project persistence
- Optimized performance and responsive design
This commit is contained in:
Dennis Konkol
2025-09-01 23:29:58 +00:00
parent eab0b88f59
commit ded873e6b4
16 changed files with 4050 additions and 1248 deletions

View File

@@ -1,54 +1,63 @@
"use client";
import React, { useEffect, useState } from "react";
import React from "react";
import { motion } from 'framer-motion';
import { ArrowLeft } from 'lucide-react';
import Header from "../components/Header";
import Footer_Back from "../components/Footer_Back";
import Footer from "../components/Footer";
import Link from "next/link";
export default function PrivacyPolicy() {
const [isVisible, setIsVisible] = useState(false);
useEffect(() => {
setTimeout(() => {
setIsVisible(true);
}, 350);
}, []);
return (
<div
className={`min-h-screen flex flex-col bg-radiant-animated ${isVisible ? "animate-fly-in" : "opacity-0"}`}
>
<div className="min-h-screen animated-bg">
<Header />
<div className="h-10"></div>
<main className="flex-grow p-10">
<h1 className="text-3xl font-bold">Datenschutzerklärung</h1>
<p className="mt-4">
Der Schutz Ihrer persönlichen Daten ist mir wichtig. In dieser
Datenschutzerklärung informiere ich Sie über die Verarbeitung
personenbezogener Daten im Rahmen meines Internet-Angebots.
</p>
<h2 className="text-2xl font-semibold mt-6">
Verantwortlicher für die Datenverarbeitung
</h2>
<p className="mt-2">
<strong>Name:</strong> Dennis Konkol <br />
<strong>Adresse:</strong> Auf dem Ziegenbrink 2B, 49082 Osnabrück,
Deutschland <br />
<strong>E-Mail:</strong>{" "}
<Link className="transition-underline" href={"mailto:info@dki.one"}>
info@dki.one
</Link>{" "}
<br />
<strong>Website:</strong>{" "}
<Link className="transition-underline" href={"https://www.dki.one"}>
{" "}
dki.one{" "}
</Link>{" "}
<br />
<br />
Diese Datenschutzerklärung gilt für die Verarbeitung personenbezogener
Daten durch den oben genannten Verantwortlichen.
</p>
<main className="max-w-4xl mx-auto px-4 py-20">
<motion.div
initial={{ opacity: 0, y: 30 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8 }}
className="mb-8"
>
<motion.a
href="/"
className="inline-flex items-center space-x-2 text-blue-400 hover:text-blue-300 transition-colors mb-6"
>
<ArrowLeft size={20} />
<span>Back to Home</span>
</motion.a>
<h1 className="text-4xl md:text-5xl font-bold mb-6 gradient-text">
Datenschutzerklärung
</h1>
</motion.div>
<motion.div
initial={{ opacity: 0, y: 30 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8, delay: 0.2 }}
className="glass-card p-8 rounded-2xl space-y-6 text-white"
>
<div>
<p className="text-gray-300 leading-relaxed">
Der Schutz Ihrer persönlichen Daten ist mir wichtig. In dieser Datenschutzerklärung informiere ich Sie
über die Verarbeitung personenbezogener Daten im Rahmen meines Internet-Angebots.
</p>
</div>
<div>
<h2 className="text-2xl font-semibold text-white mb-4">
Verantwortlicher für die Datenverarbeitung
</h2>
<div className="space-y-2 text-gray-300">
<p><strong>Name:</strong> Dennis Konkol</p>
<p><strong>Adresse:</strong> Auf dem Ziegenbrink 2B, 49082 Osnabrück, Deutschland</p>
<p><strong>E-Mail:</strong> <Link className="text-blue-400 hover:text-blue-300 transition-colors" href="mailto:info@dki.one">info@dki.one</Link></p>
<p><strong>Website:</strong> <Link className="text-blue-400 hover:text-blue-300 transition-colors" href="https://www.dki.one">dki.one</Link></p>
</div>
<p className="text-gray-300 leading-relaxed mt-4">
Diese Datenschutzerklärung gilt für die Verarbeitung personenbezogener Daten durch den oben genannten Verantwortlichen.
</p>
</div>
<h2 className="text-2xl font-semibold mt-6">
Erfassung allgemeiner Informationen beim Besuch meiner Website
</h2>
@@ -221,9 +230,12 @@ export default function PrivacyPolicy() {
berücksichtigen. Die jeweils aktuelle Datenschutzerklärung finden Sie
auf meiner Website.
</p>
<p className="mt-6 font-bold">Letzte Aktualisierung: 12.02.2025</p>
<div className="pt-4 border-t border-gray-700">
<p className="text-gray-400 text-sm">Letzte Aktualisierung: 12.02.2025</p>
</div>
</motion.div>
</main>
<Footer_Back />
<Footer />
</div>
);
}