Lab 15: Capstone Portfolio Page

Objective

Build a complete, professional, and fully responsive developer portfolio page from scratch — applying every concept from Labs 1-14: semantic HTML, CSS Grid, Flexbox, animations, custom properties, forms, accessibility, and BEM architecture.

Background

A portfolio is your professional face on the web. This capstone challenges you to combine everything learned: structured HTML, design tokens, responsive layouts, smooth animations, an accessible contact form, and production-quality CSS architecture. By the end, you'll have a deployable portfolio.

Time

60 minutes

Prerequisites

All Labs 01–14

Tools

docker run --rm -it -v /tmp:/workspace zchencow/innozverse-htmlcss:latest bash

Lab Instructions

Step 1: Project Structure & HTML Skeleton

Write this file:

💡 HTML skeleton first — structure before styling. Every section has a heading (aria-labelledby), the form has proper labels and aria-required, the header has role="banner", and the footer has role="contentinfo". The skip link comes first. Get the foundation accessible, then layer styles on top.

📸 Verified Output:


Step 2: CSS Reset & Custom Properties

Write this file:

💡 All 30+ tokens in one place. The entire portfolio's visual language is defined here: colors, gradients, fonts, spacing, radii, shadows. Change --color-primary from purple to coral and every button, highlight, and accent updates. This is what makes a design system maintainable.

📸 Verified Output:


Step 3: Header & Navigation (Flexbox)

See the complete portfolio file in Step 8 — header and navigation are fully built there with flexbox, sticky positioning, and responsive hamburger menu.

Write a preview:

💡 Sticky glassmorphism header: position: sticky; top: 0 keeps it visible while scrolling. backdrop-filter: blur(12px) creates the frosted glass effect on content behind it. rgba background with transparency lets content show through subtly. This is a common modern design pattern.

📸 Verified Output:


Steps 4-7: Hero, Skills, Projects, Contact

These sections are fully implemented in the complete portfolio (Step 8). Key techniques per section:

Step 4 — Hero (Grid + Animations):

  • CSS Grid: grid-template-columns: 1fr 1fr for text + visual

  • @keyframes slideUp for staggered entrance

  • Gradient animated background

Step 5 — Skills (Grid Cards):

  • repeat(auto-fit, minmax(200px, 1fr)) responsive grid

  • Hover lift effect with translateY + box-shadow

Step 6 — Projects (Responsive Grid):

  • Same auto-fit pattern with min 300px columns

  • BEM: .project-card, .project-card__body, .project-card__title

Step 7 — Contact Form:

  • CSS Grid form layout

  • :focus, :valid, :invalid states

  • aria-required, proper <label> connections

Write placeholder:

💡 Staggered animation with animation-delay and both fill-mode creates the elegant sequential appearance. Each element starts hidden (opacity: 0) via animation-fill-mode: both, then animates in with increasing delays (0.2s, 0.4s, 0.6s...). The gradient text uses -webkit-background-clip: text with transparent color.

📸 Verified Output:


Step 8: Complete Responsive Portfolio Page

💡 This is a complete, production-ready portfolio — semantic HTML with ARIA landmarks throughout, BEM-structured CSS, design tokens, responsive layout (mobile → desktop), CSS animations, accessible form, sticky glassmorphism header, print styles, and IntersectionObserver for active nav states. Every lab concept from 01-14 is present.

📸 Verified Output:


Verification

Summary — What You Built

Feature
Lab Applied
Implementation

Semantic structure

Lab 1, 13

<header>, <main>, <article>, <section>

Design tokens

Lab 12

30+ CSS custom properties

Sticky header

Lab 5

position: sticky + glassmorphism

Flexbox nav

Lab 7

display: flex; justify-content: space-between

Hero layout

Lab 8

CSS Grid 1fr 1fr

Entrance animations

Lab 10

@keyframes slideUp with stagger

Skills grid

Lab 8

repeat(auto-fit, minmax(180px, 1fr))

Projects grid

Lab 7, 8

BEM + responsive grid

Contact form

Lab 11

Grid layout + :valid/:invalid

Accessibility

Lab 13

ARIA, skip link, focus styles

BEM architecture

Lab 14

.project__title, .skill__icon

Print styles

Lab 14

@media print

Mobile-first

Lab 9

min-width media queries

Congratulations! 🎉

You've completed all 15 HTML/CSS Foundations labs. You can now:

  • Structure any webpage semantically with HTML5

  • Style layouts with Flexbox and Grid

  • Build responsive, mobile-first designs

  • Create smooth animations and transitions

  • Build accessible interfaces that work for everyone

  • Organize CSS professionally with BEM and design tokens

Next Steps: HTML/CSS Practitioner level — CSS preprocessors (Sass), CSS Modules, design systems, component-driven development.

Last updated