commit c988d5143849141944c263e78933d2704b0b42fd Author: Timo Knuth Date: Sun Aug 17 13:21:01 2025 +0200 MVp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4f45b32 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# Node +node_modules +.next +out +package-lock.json +yarn.lock +pnpm-lock.yaml + +# Testing +test-results/ +playwright-report/ +playwright/.cache/ +coverage/ + +# Env +.env.local +.env +.DS_Store + +# Logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..db1ed83 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "codium.codeCompletion.enable": false +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..71113b6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,42 @@ +# 1) Base +FROM node:18-alpine AS base +WORKDIR /app +ENV NEXT_TELEMETRY_DISABLED=1 + +# 2) Deps +FROM base AS deps +RUN apk add --no-cache libc6-compat +COPY package.json package-lock.json ./ +RUN npm ci + +# 3) Builder +FROM base AS builder +COPY --from=deps /app/node_modules ./node_modules +COPY . . +ENV NODE_ENV=production + +# falls public nicht existiert -> anlegen, damit COPY später nicht crasht +RUN mkdir -p public + +RUN npm run build +RUN npm prune --omit=dev + +# 4) Runner +FROM node:18-alpine AS runner +WORKDIR /app +ENV NODE_ENV=production \ + NEXT_TELEMETRY_DISABLED=1 \ + PORT=3000 \ + HOSTNAME=0.0.0.0 + +RUN addgroup -S nodejs && adduser -S nextjs -G nodejs + +# Assets & Build-Output kopieren +COPY --from=builder /app/public ./public +COPY --from=builder /app/.next ./.next +COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/package.json ./package.json + +USER nextjs +EXPOSE 3000 +CMD ["node_modules/.bin/next", "start", "-p", "3000"] diff --git a/SCROLL_SETUP.md b/SCROLL_SETUP.md new file mode 100644 index 0000000..d90a60a --- /dev/null +++ b/SCROLL_SETUP.md @@ -0,0 +1,113 @@ +# Immersive Scroll Experience Setup + +## Installation + +First, install the required dependencies for the scroll experience: + +```bash +npm install @studio-freight/lenis gsap @types/gsap +``` + +## Features Implemented + +### 🎭 Dogstudio-Inspired Scroll Experience +- **Smooth Scroll**: Lenis integration with custom easing +- **Pinned Storytelling**: Problem → Promise → Solution narrative +- **Split Text Animations**: Character-by-character reveals +- **Parallax Layers**: Multi-depth background elements +- **Magnetic Buttons**: Cursor-following interactive elements +- **Video Showcase**: Scroll-triggered media with play overlay +- **Count-up Stats**: Animated numbers on scroll +- **Feature Cards**: 3D perspective reveals with clip-mask animations + +### 🎨 Visual Effects +- **Noise Texture**: Subtle grain overlay for premium feel +- **Gradient Backgrounds**: Dynamic color transitions +- **Glass Morphism**: Backdrop blur effects on cards +- **Hover Animations**: Tilt and scale effects +- **Scroll Hints**: Animated scroll indicators + +### ♿ Accessibility +- **Reduced Motion**: Respects `prefers-reduced-motion` +- **Keyboard Navigation**: Full keyboard support +- **Focus Management**: Visible focus states +- **Screen Reader**: Proper ARIA labels and live regions + +### 📱 Performance +- **Optimized Animations**: RequestAnimationFrame-based +- **Lazy Loading**: Images load on demand +- **Code Splitting**: Dynamic imports for heavy components +- **Smooth 60fps**: Optimized for mobile devices + +## Usage + +1. **Install dependencies** (see above) +2. **Visit the experience**: Navigate to `/scroll` in your browser +3. **Enjoy the journey**: Scroll through the immersive experience + +## Routes + +- `/` - Original premium homepage +- `/scroll` - New immersive scroll experience + +## Components + +### Core Animation Components +- `ScrollProvider` - Lenis smooth scroll integration +- `ParallaxLayer` - Multi-depth parallax effects +- `PinnedStory` - Scroll-triggered narrative sections +- `MagneticButton` - Cursor-following interactive buttons + +### Content Components +- `ScrollHero` - Animated hero with split text +- `FeatureCards` - 3D perspective card reveals +- `VideoShowcase` - Scroll-triggered video player +- `SocialProof` - Animated stats and logos + +### Animation Utilities +- `animateSplit()` - Character-by-character text reveals +- `animateWords()` - Word-by-word text animations + +## Customization + +### Colors +The experience uses a dark theme with accent colors: +- Background: `#0f1220` (slate-900) +- Text: `#ffffff` (white) +- Accent: `#7c5cff` (purple) to `#7cf4e2` (cyan) + +### Animation Timing +- Split text stagger: `0.015s` +- Card reveals: `0.8s` duration +- Parallax speed: `0.5x` to `1.5x` +- Magnetic strength: `0.3` to `0.4` + +### Performance Settings +- Mobile pixel ratio: Capped at `1.25` +- Animation budget: `<8ms` per frame +- Bundle size: `<220KB` gzipped + +## Browser Support + +- Chrome 90+ +- Safari 14+ +- Firefox 88+ +- Edge 90+ + +## Development + +```bash +npm run dev +``` + +Then visit: +- http://localhost:3000 - Original homepage +- http://localhost:3000/scroll - Immersive experience + +## Production Checklist + +- [ ] Lighthouse score >90 on mobile +- [ ] Core Web Vitals passing +- [ ] Reduced motion tested +- [ ] Cross-browser compatibility +- [ ] Touch device optimization \ No newline at end of file diff --git a/app/(routes)/about/page.tsx b/app/(routes)/about/page.tsx new file mode 100644 index 0000000..0b2d550 --- /dev/null +++ b/app/(routes)/about/page.tsx @@ -0,0 +1,31 @@ +import { cookies, headers } from 'next/headers' +import { getDictionary, getInitialLocale } from '@/lib/i18n' +export default async function AboutPage() { + const cookieStore = cookies() + const hdrs = headers() + const locale = getInitialLocale(cookieStore, hdrs) + const dict = await getDictionary(locale) + return ( +
+
+

Über Michael Peskov

+
+
+

Michael Peskov – Deutschlands jüngster Profi‑Zauberkünstler & Taschendieb

+

+ Aus Solingen stammend, ist Michael bereits eines der bekanntesten magischen Talente Deutschlands – gezeigt in Formaten von SAT.1, WDR, ZDF und Amazon Prime Video. Schon mit sechs Jahren von der Magie gepackt, verzaubert er heute mit tänzerischer Leichtigkeit und jugendlicher Dynamik Kunden verschiedenster Events. +

+

+ Interaktiv, witzig, verändernd – sein Ziel: Langweile eliminieren, Gespräche entfachen und unvergessliche Momente schaffen. Ob hautnah bei kleinen Gruppen oder groß inszeniert auf der Bühne – Michael passt sich jeder Veranstaltung flexibel an und bringt nicht nur Magie, sondern echte Emotion. Profi‑Organisation, offene Kommunikation und maximale Zuverlässigkeit inklusive. +

+
+ +
+
+
+ ) +} diff --git a/app/(routes)/contact/page.tsx b/app/(routes)/contact/page.tsx new file mode 100644 index 0000000..9480af7 --- /dev/null +++ b/app/(routes)/contact/page.tsx @@ -0,0 +1,141 @@ +import type { Metadata } from 'next' +import Image from 'next/image' +import Link from 'next/link' + +export const metadata: Metadata = { + title: 'Kontakt – Michael Peskov | Zauberer Solingen & NRW – Magier buchen für Hochzeit & Firmenfeier', + description: + 'Planen Sie Ihr Event mit Michael Peskov: Close-up Magie, Taschendieb‑Show, Walking Act & Bühnenzauber. 5/5 Sterne (12), 100% Empfehlung. Solingen, Düsseldorf, Köln, NRW – europaweit (>1000 km). Antwort innerhalb von 24h.' +} + +export default function ContactPage() { + return ( +
+
+ {/* 1. Headline with main keyword */} +
+

Zauberer Solingen – Kontakt & Angebot

+ {/* 2. Intro paragraph (USP + 24h response, natural keywords) */} +

+ Magier buchen leicht gemacht: Innerhalb von 24 Stunden erhalten Sie ein maßgeschneidertes Konzept – + unverbindlich und passgenau für Ihren Anlass. Ob Close‑up Magie als Walking Act, + interaktiver Bühnenzauber oder eine verblüffende Taschendieb‑Show – + Michael Peskov ist Ihr Zauberer in Solingen und Zauberkünstler NRW für + Firmenfeier, Hochzeit und private Feiern. Profitieren Sie von moderner Präsentation, + klarer Kommunikation und einer reibungslosen Organisation – damit Ihre Gäste noch lange über Ihr Event sprechen. +

+
+ +
+ {/* 3. Booking form section (conversational labels) */} +
+

Anfrage – in 60 Sekunden

+
+
+ + + + +
+
+
+
+ + +
+
+

Ready to elevate your event?

+

+ Book a Show or explore Shows to find your + perfect format. +

+
+ Book a Show +
+
+
+ + + + + + + + + + +