Web Apps - Stevano’s Design Portfolio

A CMS-Driven, Performance-Optimized Portfolio Engine Built to Scale Personal Branding

Stevano’s Design Portfolio is a fully dynamic, CMS-powered web application built to showcase design and development projects in a scalable, future-proof way. Rather than being a static portfolio site, it functions as a content-driven product system where projects, categories, themes, and metadata are structured in Sanity CMS and rendered dynamically via Next.js App Router using modern performance and SEO strategies.

Hero Image
Product Strategy
UX Architecture
Design Systems
Next.js App Router
Headless CMS
Performance Engineering
Motion Design
SEO Optimization
Frontend Scalability
End-to-End Product Development
Product TypePortfolio Web App
ScopePersonal Project
RoleProduct Design & Frontend Development
Client TypeSelf-Directed
IndustryDesign & Technology
TimelineNov 2025 – Jan 2026
Tools
Next JSNext JS
TypescriptTypescript
Sassy CSSSassy CSS
Sanity CMSSanity CMS
Motion.devMotion.dev
CursorCursor
FigmaFigma
Figma MakeFigma Make
Google StitchGoogle Stitch
Magic PatternsMagic Patterns

Product Context

This portfolio consolidates my design and development work in one modern, maintainable platform. Previous solutions lacked the maturity needed for professional branding, static layouts made updates cumbersome and didn't reflect my current capabilities. The site targets recruiters, prospective clients, and fellow designers who need to quickly assess both craft quality and technical depth.

Project Rationale Image

User Problems

  • Recruiters need quick access to relevant work samples and technical capabilities
  • Clients struggle to assess design quality and project scope from static resumes
  • Designers visiting portfolios expect modern visual patterns and smooth interactions

Business Problems

  • Outdated portfolio websites fail to communicate current skill level and project range
  • Manual HTML updates for new projects create friction and delay showcasing recent work
  • Poor SEO visibility limits discoverability by recruiters searching for designers
  • Static presentations lack the flexibility to highlight different work for different audiences

Design Goals

  • Establish professional brand identity through contemporary layout systems and visual polish
  • Showcase project depth and technical range without requiring deep navigation
  • Create distinct visual experiences per project while maintaining cohesive system
  • Balance immersive presentation with practical information density

Engineering Goals

  • Enable non-technical project updates through structured CMS without touching code
  • Optimize asset delivery and page performance for competitive load times
  • Build dynamic routing that scales with growing project catalog
  • Implement SEO foundations for organic recruiter discovery

Discovery & Product Strategy

The portfolio needed to solve three core problems: outdated personal branding, inefficient project management, and lack of content scalability. Existing portfolio sites felt static and required code changes for every update, creating friction between design iteration and deployment. The target audience can be split into two distinct groups: recruiters scanning for credibility and technical depth, and clients evaluating craft and communication style. Both need immediate visual impact paired with detailed project narratives, but consume content differently based on intent.

Core UX Hypotheses

  • Bento grid layouts signal modern design fluency without sacrificing content density
  • Dynamic color schemes per project increase memorability and brand association
  • Editorial-style project pages build narrative depth that portfolios typically lack
  • Headless CMS separation lets design iteration happen independent of content updates
  • Glassmorphism and subtle motion establish professional maturity over flashy interaction
UX Hypothesis Image
Initial Design Image

Product Scope Definition

The portfolio needed to balance visual impact with practical content management, building a system that could evolve without constant code edits while maintaining design integrity across dynamic project data.

Core Experience

Bento grid layouts for top-level pages, editorial-style project detail pages, dynamic color schemes pulled from project metadata, seamless navigation between categories and individual works.

Content Architecture

Four primary routes (Home, Projects, About, Contact) with dynamic sub-routing for project categories and detail pages, all content managed through Sanity CMS to enable updates without touching the codebase.

Technical Foundation

Next.js App Router for server-side rendering and SEO, TypeScript for type safety, SCSS for maintainable styling, Motion.dev for subtle animations, Sanity CMS as headless backend with GROQ queries for data fetching.

Performance Strategy

Sanity CDN for asset delivery, automatic WebP conversion for images, Next.js Image component for optimization, caching layer for faster project loads, responsive grid system using CSS Grid with adjusted spans.

Design Strategy & User Flow

The portfolio needed to serve the aforementioned target audience, while maintaining my creative voice. I structured the experience around progressive disclosure: bento grids on landing surfaces for quick scanning & editorial layouts on project pages for depth.
Users enter through the home page's bento grid showcasing featured work categories. Navigation remains persistent across top-level pages (Projects, About, Contact, Resume). From any category card, users drill into filtered project views, then into individual case studies. Each project page uses dynamic routing (/projects/[category]/[project]) and pulls its own color scheme from Sanity CMS, creating visual variety without manual theming.

Design Image
Design Image

Bento Grid as Content Hierarchy

  • Varying card sizes are used to arrange information across surface level pages. This replaces traditional carousel patterns that bury content behind interaction.

Dynamic Color Systems per Project

  • Each case study extracts its primary brand color from Sanity and applies it to headers, accents, and glassmorphic overlays. Projects feel distinct without requiring separate design files.

Editorial Layout for Case Studies

  • Project pages mimic longform editorial design: full-bleed images, asymmetric text blocks, generous whitespace. This shifts tone from portfolio to publication, encouraging deeper reads.

Glassmorphism for Depth Without Weight

  • Frosted overlays on cards create layering while maintaining readability over dynamic backgrounds. This pairs with subtle motion (for example; hover lifts) to signal interactivity without distraction.

Responsive Grid Reconfiguration

  • Rather than hiding elements at smaller breakpoints, cards reflow by adjusting grid row/column spans.

Category-Driven Navigation

  • Projects self-organize by type (branding, web, product) via Sanity taxonomy. Home page surfaces these groupings as navigable cards, letting users filter by interest before committing to a project.

Code Architecture & API Structure

The architecture centers on Next.js App Router conventions, separating server and client boundaries to optimize data fetching and interactivity. Sanity CMS functions as a headless backend, queried via GROQ at build time and on-demand for dynamic project routes.

Server & Client Component Split

Page-level routes render as server components to fetch Sanity data before paint. Interactive UI elements (modals, animations, filters) isolate as client components to minimize JavaScript shipped to the browser.

Server & Client Component Split Image

GROQ Query Layer

Sanity queries run asynchronously in server components, pulling structured project objects with nested categories and asset references. This removes the need for REST endpoints or GraphQL resolvers.

GROQ Query Layer Image

Dynamic Route Generation

The /projects/[category]/[slug] structure leverages Next.js generateStaticParams to pre-render every project page at build time. Incremental Static Regeneration handles new entries without full redeploys.

Dynamic Route Generation Image

Image Optimization Pipeline

Sanity's CDN auto-converts uploads to WebP and serves responsive srcsets. Next.js Image components consume these URLs with lazy loading and blur placeholders to defer offscreen assets.

Image Optimization Pipeline Image

Caching Strategy

Sanity responses cache via Next.js fetch with revalidation tags. On-demand revalidation triggered by Sanity webhooks purges stale project data when content updates in the CMS.

Caching Strategy Image

SCSS Module Architecture

Each component imports a scoped .module.scss file to avoid inline Tailwind bloat. Shared design tokens (colors, spacing, breakpoints) live in a global variables file consumed by all modules.

SCSS Module Architecture Image

The Finished Product

The portfolio launched as a full-stack web app that dynamically showcases design and development work through a bento grid interface with glassmorphism styling. Each project page generates from Sanity CMS, allowing updates without touching code while maintaining fast load times through NextJS optimization and CDN delivery.

Finished Product Image

Outcome & Impact

The portfolio achieved its core objective: a scalable, CMS-driven platform that eliminates code edits for future project updates. The shift from a full-screen immersive layout to a scrollable Bento grid resolved the impracticality of static layouts while maintaining visual impact through glassmorphism and dynamic color schemes.

Problem Resolution

1

CMS integration enables project updates without touching codebase

2

Bento grid layout replaced impractical full-screen design

3

Dynamic routing generates individual project pages automatically

4

Performance optimizations ensure fast load times via caching and CDN

5

Responsive strategy adapts grid spans across all screen sizes

6

Editorial project pages provide depth while top pages offer overview

Key Takeaway

Building a portfolio forced me to treat myself as a client, balancing aspirational design with practical constraints. The shift from a fullscreen immersive concept to a scrollable Bento grid taught me that great design isn't about rigidity; it's about knowing when to adapt for scalability and real-world content needs.

Key Learning Image

What Worked Well

  • The headless CMS delivered exactly what was needed, effortless project updates without touching code, plus automatic image optimization and CDN delivery.
  • Abandoning the initial immersive no-scroll concept mid-project proved essential. The scrollable bento grid handled dynamic content far better and improved real-world usability.
  • Server-side rendering improved SEO for recruiter discoverability, while TypeScript caught errors early. The App Router kept data fetching clean and component boundaries clear.
What Worked Image
Closing Image