// === Flipbook landing components === const { useState, useEffect, useRef } = React; /* ---------- Animated flipbook hero ---------- */ const PAGES = [ { tone: 'photo-fam', caption: "Sunday mornings", date: "MAY · 2025", img: "https://images.unsplash.com/photo-1511895426328-dc8714191300?auto=format&fit=crop&w=600&q=80" }, { tone: 'photo-travel', caption: "Lisbon, day three", date: "JUN · 2025", img: "https://images.unsplash.com/photo-1488646953014-85cb44e25828?auto=format&fit=crop&w=600&q=80" }, { tone: 'photo-pet', caption: "Mochi turns two", date: "APR · 2025", img: "https://images.unsplash.com/photo-1583511655857-d19b40a7a54e?auto=format&fit=crop&w=600&q=80" }, { tone: 'photo-couple', caption: "Our first place", date: "MAR · 2025", img: "https://images.unsplash.com/photo-1469371670807-013ccf25f16a?auto=format&fit=crop&w=600&q=80" }, { tone: 'photo-birthday', caption: "She blew them all out", date: "FEB · 2025", img: "https://images.unsplash.com/photo-1530103862676-de8c9debad1d?auto=format&fit=crop&w=600&q=80" }, { tone: 'photo-beach', caption: "Just keep going", date: "JUL · 2025", img: "https://images.unsplash.com/photo-1507525428034-b723cf961d3e?auto=format&fit=crop&w=600&q=80" }, ]; function HeroFlipbook() { const [flipping, setFlipping] = useState(-1); const [shown, setShown] = useState(0); useEffect(() => { let i = 0; const tick = () => { setFlipping(i); setTimeout(() => { i = (i + 1) % PAGES.length; setShown(i); setFlipping(-1); }, 1100); }; const interval = setInterval(tick, 2600); return () => clearInterval(interval); }, []); return (
{/* Floating polaroids */}
e.target.style.display='none'} style={{width:'100%',height:'100%',objectFit:'cover',borderRadius:'3px'}} />
e.target.style.display='none'} style={{width:'100%',height:'100%',objectFit:'cover',borderRadius:'3px'}} />
e.target.style.display='none'} style={{width:'100%',height:'100%',objectFit:'cover',borderRadius:'3px'}} />
e.target.style.display='none'} style={{width:'100%',height:'100%',objectFit:'cover',borderRadius:'3px'}} />
{/* Hearts & particles */}
{/* Static page behind (next page to be revealed) */} {/* Current page on top — flips when active */}
= 0 ? 'rotateY(-178deg)' : 'rotateY(0deg)', transition: flipping >= 0 ? 'transform 1.1s cubic-bezier(0.55, 0.05, 0.3, 1)' : 'transform 0.05s', }} >
); } function PageFace({ page, num }) { return (
); } function PageInner({ page, num }) { return (
{ e.target.style.display = 'none'; }} />
{page.caption}
{page.date}
{String(num).padStart(2,'0')} / {PAGES.length}
); } /* ---------- Hero ---------- */ function Hero() { return (
Featured this week on r/apps & #1 on Product Hunt

Turn your memories
into something real.

Create beautiful animated flipbooks from your videos and photos in seconds. Share them, print them, hold them in your hand.

Download on the App Store Get it on Google Play Watch Preview
4.9
App Store Rating
280K+
Flipbooks Made
#1
In Photo · This Week
); } function AppleGlyph() { return ( ); } /* ---------- How It Works ---------- */ const STEPS = [ { num: '01', title: 'Pick your moments', desc: 'Drop in a video or a handful of photos. The app finds your best frames automatically.', illo: 'illo-1', kind: 'stack' }, { num: '02', title: 'Choose a style', desc: 'Twelve hand-tuned themes — from soft watercolor to vintage Polaroid to clean minimal.', illo: 'illo-2', kind: 'palette' }, { num: '03', title: 'Preview it move', desc: 'Watch your flipbook come to life. Tweak the timing, captions, and cover.', illo: 'illo-3', kind: 'phone' }, { num: '04', title: 'Share or print', desc: 'Export a GIF, an MP4, a PDF — or order a real printed flipbook to your door.', illo: 'illo-4', kind: 'share' }, ]; function HowItWorks() { return (
How it works

Four steps. About a minute.

From a folder of photos to something you'll actually keep — without learning any software.

{STEPS.map((s, i) => (
STEP {s.num} {s.kind === 'stack' &&
} {s.kind === 'palette' &&
} {s.kind === 'phone' &&
} {s.kind === 'share' &&
}
{s.title}
{s.desc}
))}
); } /* ---------- Features ---------- */ function Features() { return (
Built into every flipbook

Small details, big feelings.

Themes · 12 styles

Twelve themes that all feel hand-made.

Watercolor, polaroid, paper-cutout, vintage book, dreamy gradient. Each one designed with a real illustrator — not an AI.

Warm
Noir
Linen
Coast
Peach
Paper feel

Real paper texture.

Subtle grain, soft page bend, ink-on-paper edges. Looks like a thing you'd find in a drawer.

~ paper ~
Export

GIF, MP4, PDF.

One tap, three formats. Send to Instagram, Messages, or save to camera roll.

.GIF .MP4 .PDF
Print-on-demand

Hold it in your hand.

Order a real flipbook printed on 300gsm paper, shipped in a few days. From $14.

Dark mode

Always elegant.

A genuine dark theme tuned for late-night memory-scrolling.

Share

Share anywhere.

iMessage, WhatsApp, Instagram, AirDrop. Or get a private link.

iMessage Instagram AirDrop Link
); } Object.assign(window, { Hero, HowItWorks, Features, HeroFlipbook, AppleGlyph });