ServicesPricingWorkAboutBlogContact

An architecture firm wanted a portfolio website that felt as intentional and crafted as the buildings they designed. They had been through three redesigns with agencies that delivered polished but generic template-based sites — the kind where you swap logos and copy and get the same result for a law firm or a bakery. They wanted something that made visitors stop scrolling, something that architects and design-conscious clients would remember and share. The brief was deliberately open-ended: "Make it feel like stepping into one of our buildings."

The technical constraints made the creative ambitions harder to realize. The site needed to be fast (sub-2-second load on 4G connections), accessible (WCAG AA compliant), and SEO-friendly (architecture firms live and die by local search rankings). Interactive experiences often sacrifice all three — heavy WebGL scenes tank performance, custom navigation patterns break screen readers, and client-rendered content is invisible to crawlers. We needed to find the intersection of impressive and responsible.

The content volume was also significant: 48 projects spanning residential, commercial, and public buildings, each with 10-30 high-resolution photographs, floor plans, and descriptive text. The site needed a project browsing experience that could handle this volume without feeling overwhelming, and individual project pages that gave each building the visual space it deserved.

We designed the site around a spatial metaphor — navigating the portfolio felt like walking through a gallery. The homepage featured a full-viewport project carousel with parallax depth layers, where foreground elements moved at a different rate than background textures, creating a subtle 3D effect without WebGL. Each project card used CSS transforms and intersection observers to animate in as the user scrolled, with staggered timing that gave the page a choreographed, intentional feel.

For the project browser, we built a custom masonry grid with client-side filtering by category, year, and scale. The filtering used FLIP animations (First, Last, Invert, Play) so that projects didn't just appear and disappear but smoothly rearranged themselves — items sliding into new positions while filtered-out items faded and collapsed. Individual project pages used a full-bleed image gallery with gesture support: swipe on mobile, keyboard navigation on desktop, and a lightbox mode with high-resolution zoom.

Performance was achieved through aggressive optimization. Images were served through a custom pipeline that generated multiple resolutions and formats (WebP, AVIF, fallback JPEG) at build time, with blur-hash placeholders shown during loading. The entire site was statically generated with Next.js, with only the interactive components hydrated on the client. We achieved a Lighthouse performance score of 96 on the homepage and 98 on project pages, while keeping the fully interactive experience intact. Accessibility was built in from the start: semantic HTML, ARIA labels on custom controls, focus management for the lightbox, and reduced-motion alternatives for every animation.

Next.jsFramework
TypeScriptLanguage
GSAPAnimation
Framer MotionTransitions
CSS Transforms3D Effects
SharpImage Processing
ContentfulCMS
VercelHosting
PlaywrightTesting
FigmaDesign
CloudflareCDN
SanityAlt CMS
96Lighthouse performance score (homepage)
3.2xIncrease in average session duration
68%More portfolio inquiries within 2 months
< 1.4sFirst Contentful Paint on 4G
3 monthsTotal Duration

Week 1-2 was discovery and design direction with mood boards and interactive prototypes. Weeks 3-5 covered the core framework, image pipeline, and CMS integration. Weeks 6-8 focused on animations, the project browser, and gallery components. Weeks 9-10 were accessibility audits, performance optimization, and cross-browser testing. Weeks 11-12 were content migration (all 48 projects), client review, and launch preparation.

Want something similar?

We build systems like this for teams worldwide. Tell us your idea and we will make it real.

Start a conversationView all work