
E-commerce / Beauty & Cosmetics
Full Stack Developer
Finnegan Monroe Photography is a high-performance portfolio website built for a professional freelance photographer based in New York. The site showcases curated photo albums, documentary and editorial photography services, a CMS-driven blog, client reviews, and a booking contact form. It features smooth-scroll animations, scroll-driven parallax effects, and animated stat counters, all powered by a custom headless CMS (Canopy) for real-time content management. Built with Next.js App Router and Incremental Static Regeneration, it delivers fast, SEO-optimised pages without sacrificing visual richness.
Creative / Photography
Full Stack Developer
Next.js 16 (App Router, ISR), React 19, TypeScript 5, Tailwind CSS 4, Motion (animation library), Lenis (smooth scroll), Phosphor Icons, Canopy CMS (headless, custom-built)
2026
https://finnegan.alinsafawi.com/
https://github.com/AlinSafawi19/finnegan
Highlights
Challenge
The client needed a photography portfolio that would stand out visually while remaining easy to update without developer involvement. Standard template solutions lacked the motion design fidelity required, and static sites made content updates slow. The project also needed to handle large, high-resolution images efficiently without sacrificing load performance.
Approach
I built the site on Next.js 16's App Router with Incremental Static Regeneration so pages are statically served but refresh automatically when CMS content changes — no rebuild required. Canopy CMS provides a structured API for albums and blog posts, meaning the client can publish new work and articles in minutes. Animations were implemented with the Motion library and Lenis smooth scroll, with scroll-position-driven effects (parallax scrim, service image cycling, stat counters) handled via Intersection Observer and custom hooks. Next.js Image with AVIF/WebP and CDN-level scale-down transforms keep image payloads minimal across all viewport sizes.
Outcome
The result is a production-ready, visually cinematic portfolio that the client can manage entirely through the CMS. Page load is fast despite heavy imagery thanks to ISR and aggressive image optimisation. The codebase is clean and modular, making future service additions or layout changes straightforward.