Overview
SlimQook is a premium, Apple-inspired landing page for an exclusive private chef service. Built with React 19, TypeScript 6, and Tailwind CSS v4, it showcases sophisticated web design and animation techniques that rival Apple's own product pages.
The project demonstrates mastery of production-grade animation systems, featuring cinematic parallax effects, custom Framer Motion variants, Lenis smooth scroll with momentum physics, and meticulously crafted micro-interactions.
Design Philosophy
SlimQook implements an Apple-inspired premium aesthetic with tight typography, dark editorial photography with dramatic lighting, rounded glass-morphism cards, warm amber accents, and cinematic animations with custom exponential easing curves.
Animation Architecture
The heart of SlimQook is its production-grade animation system — a custom motion library built on Framer Motion that powers every interaction throughout the page.
Custom Motion Library
All animations are orchestrated through a centralized motion library that provides reusable animation variants with consistent timing and easing.
// Apple-style easing curves
export const EASE_APPLE = [0.16, 1, 0.3, 1];
// Fade animations
export const fadeIn = {
initial: { opacity: 0 },
animate: { opacity: 1 },
transition: { duration: 0.6, ease: EASE_APPLE }
};
// Staggered children
export const staggerContainer = {
animate: {
transition: { staggerChildren: 0.1, delayChildren: 0.2 }
}
};Performance
All animations use CSS transforms for GPU acceleration, ensuring 60fps performance.
Multi-Layer Parallax System
The hero section features an advanced multi-layer parallax effect where different elements move at independent speeds as you scroll, creating cinematic depth.
Custom Parallax Hook
export function useParallax(speed: number = 0.5) {
const ref = useRef<HTMLElement>(null);
const { scrollYProgress } = useScroll({
target: ref,
offset: ["start start", "end start"]
});
const y = useTransform(scrollYProgress, [0, 1], ["0%", `${speed * 100}%`]);
const smoothY = useSpring(y, { stiffness: 100, damping: 30, mass: 0.5 });
return { ref, y: smoothY };
}Hero Implementation
The hero uses three independent parallax layers:
- Background Image (+20% speed) — Creates depth behind content
- Glow Effect (-44% speed) — Dramatic revealing effect
- Content (-34% speed) — Text stays visible longer
Additional scroll-reactive effects include vignette intensification, exit blur, and floating particle systems.
Lenis Smooth Scroll
SlimQook uses Lenis for hardware-accelerated momentum scrolling with natural damping physics.
const lenis = new Lenis({
duration: 1.2,
easing: (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),
smooth: true,
smoothTouch: false // Disabled on mobile
});Spring Physics:
- Stiffness: 100 (balanced feel)
- Damping: 30 (smooth deceleration)
- Mass: 0.5 (light, responsive feel)
Premium Components
SlimQook features 13 modular components designed for reusability:
Core UI:
- Reveal — Scroll-triggered animation wrapper
- AnimatedHeading — Text reveal with line-up animation
- PillButton — Rounded CTA with hover effects
- ArrowUpRight — Animated SVG icon component
Page Sections:
- Navbar (glass-morphism with scroll detection)
- Hero (full-screen parallax)
- Services (glass cards with hover zoom)
- Gallery (horizontal scroll-snap carousel)
- Quote (word-by-word animation)
- FAQ (animated accordion)
- Contact (form section)
- Footer
Gallery Component
The gallery section features a horizontal scroll-snap carousel with custom navigation arrows.
<div
ref={scrollRef}
className="flex gap-6 overflow-x-auto snap-x snap-mandatory scroll-smooth"
>
{images.map((img, idx) => (
<motion.div
key={idx}
initial={{ opacity: 0, x: 40 }}
whileInView={{ opacity: 1, x: 0 }}
className="snap-center shrink-0 w-[85vw] md:w-[500px]"
>
<img src={img} className="w-full h-[400px] object-cover rounded-2xl" />
</motion.div>
))}
</div>Quote Section
Features word-by-word animated quote with a parallax image band.
Each word animates in sequence with an 80ms delay while a parallax image strip moves behind the text using mix-blend-mode: overlay.
Accessibility
SlimQook is accessibility-first with comprehensive WCAG compliance:
Reduced Motion Support:
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}Additional Features:
- Semantic HTML5 structure (
<header>,<nav>,<main>,<section>,<footer>) - ARIA labels on decorative elements (
aria-hidden="true") - Full keyboard navigation with visible focus states
- Descriptive alt text on all meaningful images
- Scroll margin for anchor links to clear fixed navbar
Performance Optimizations
GPU Acceleration
.hero-image {
will-change: transform;
transform: translateZ(0);
}Best Practice
will-change is only applied during active animations and removed afterward to prevent creating too many compositor layers.
Image Optimization
- Format: WebP with JPEG fallback (90% smaller)
- Sizing: Multiple sizes via
srcsetbased on viewport - Lazy Loading: Native
loading="lazy"for below-fold images - Compression: 80% quality (imperceptible loss, 50-70% size reduction)
React 19 Features
- Automatic batching for multiple state updates
- Transitions for non-urgent updates (gallery navigation)
- Optimized re-renders with concurrent features
Technology Stack
Core:
- React 19.2 (concurrent features, automatic batching)
- TypeScript 6.0 (strict mode, full type safety)
- Vite 8.0 (instant HMR, optimized builds)
- Tailwind CSS v4 (custom design tokens)
Animation & UX:
- Framer Motion 12.40 (spring physics, scroll animations)
- Lenis 1.3 (smooth scroll with momentum)
Development:
- ESLint 10 (React hooks, TypeScript plugins)
- Type-safe configuration across build tools
Project Structure
slimcook/
├── src/
│ ├── components/
│ │ ├── ui.tsx
│ │ ├── Navbar.tsx
│ │ ├── Hero.tsx
│ │ ├── Services.tsx
│ │ ├── Gallery.tsx
│ │ ├── Quote.tsx
│ │ ├── Faq.tsx
│ │ ├── Contact.tsx
│ │ └── Footer.tsx
│ ├── lib/
│ │ ├── motion.ts
│ │ ├── smoothScroll.ts
│ │ └── useParallax.ts
│ ├── App.tsx
│ └── main.tsx
├── public/images/
├── vite.config.ts
├── tsconfig.json
└── package.jsonDevelopment Workflow
# Install dependencies
npm install
# Start dev server
npm run dev
# Type checking
tsc --noEmit
# Linting
npm run lint
# Production build
npm run build
# Preview build
npm run previewFrequently Asked Questions
Key Achievements
1. Advanced Animation Systems — Production-grade motion library with reusable variants, custom easing curves, and stagger animations demonstrating mastery of complex animation orchestration.
2. Performance Optimization — Consistent 60fps through strategic GPU acceleration, optimized re-renders with React 19, and efficient scroll event handling.
3. Accessibility Excellence — Comprehensive WCAG compliance with reduced-motion support, semantic HTML, ARIA labels, and full keyboard navigation.
4. Modern Tooling Mastery — Bleeding-edge tools (Vite 8, React 19, TypeScript 6, Tailwind v4) showcasing ecosystem expertise.
5. Design-to-Code Translation — Pixel-perfect Apple-inspired premium aesthetic from concept to production.
Live Experience
Visit the Live Application to experience the cinematic parallax effects, smooth scroll physics, and premium animations. Best viewed on desktop for the full parallax experience.
Project Metrics:
- 13 Custom Components
- 8+ Animation Variants
- 100% TypeScript Coverage
- 60fps Performance
- WCAG Compliant
- ~180KB Bundle Size
