Lens is a photography-first Next.js portfolio with the kind of gallery and lightbox interactions you'd build by hand if you had three weeks. Three layout modes (uniform, masonry, editorial) with a one-click toggle, and a pinch-zoomable lightbox supporting wheel zoom, double-tap, drag-to-pan, fullscreen, swipe and full keyboard control.Four hand-tuned themes — including a fullscreen-slider "monolith" variant — plus a custom animated cursor that respects pointer:fine. A journal/blog with JSON-LD BlogPosting and a services page with an accessible FAQ accordion. Multilingual (EN / ES / FR / PT) and ships with Resend and Formspree contact adapters as commented drop-ins.Built on Next.js 16 + React 19 + Tailwind v4 + Framer Motion. 101 unit tests, full SEO, WCAG 2.1 AA accessibility, and prefers-reduced-motion handled throughout. Optional Sanity CMS adapter for photographers managing a large catalog.What's included- 3 gallery layout modes (uniform, masonry, editorial) with client-side toggle- Full-featured lightbox: pinch zoom, wheel zoom, double-tap, drag-to-pan, fullscreen, swipe nav, keyboard- Custom mix-blend-mode cursor with 4 styles (auto-disabled on touch)- Ken Burns hero animation + optional film grain overlay- Journal / blog with JSON-LD BlogPosting + BreadcrumbList- FAQ accordion on services with full a11y- 4 themes including monolith fullscreen-slider variant- Multilingual EN / ES / FR / PT with per-item bilingual content- RTL-ready — logical CSS, icon flips, and direction-aware animations throughout- Resend / Formspree contact adapters- 101 passing unit tests (Vitest)Tech: Next.js 16 · React 19 · TypeScript (strict) · Tailwind v4Requirements: Node.js 20+ · npm / pnpm / bunLive demo (with theme/variant switcher): https://lens.violettadev.comMore templates: violettadev.comLicense: Single-use — one purchase = one deployed project. Multi-use available, contact me.Support: Email hello@violettadev.com