MODULE 04 · LAYOUT, RESPONSIVENESS & CAPSTONE

Capstone: Responsive Portfolio Website

Thirty days ago you learned what a <div> was. Today you're going to build a complete, responsive, multi-section portfolio site using everything from HTML structure to flexbox, grid, and media queries.

Day 30 of 30 · Final Lesson Capstone Project ~45 min

Bringing Thirty Days Together

This capstone doesn't teach anything new — it asks you to combine everything you've already learned into one real, polished project: a personal portfolio website. It's the same kind of project professional developers build to showcase their own work.

Five Sections, One Page

A single-page portfolio is the most common format for this kind of site. Before writing any code, sketch out the sections — a wireframe forces you to decide on structure before you're distracted by colors and fonts.

PORTFOLIO WIREFRAME
HEADER — logo + nav links
HERO — name, title, short intro, CTA button
ABOUT — short bio + photo
PROJECT CARD
PROJECT CARD
PROJECT CARD
CONTACT — form or links
FOOTER — copyright, social links

Marking Up Each Section

Use the semantic elements from Day 09 to give each section real meaning — this is what separates a page that "looks right" from markup that's actually well-built.

index.html
<body>
  <header>...</header>

  <main>
    <section id="hero">...</section>
    <section id="about">...</section>
    <section id="projects">...</section>
    <section id="contact">...</section>
  </main>

  <footer>...</footer>
</body>

Grid for Cards, Flexbox for Navigation

Use CSS Grid from Day 25 for the projects section, and flexbox from Day 24 for the nav bar and any row of items that needs to wrap gracefully.

style.css
/* Nav: flexbox for a simple horizontal row */
.nav-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* Projects: grid, auto-fits as many columns as space allows */
.project-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 24px;
}

Testing Every Breakpoint

Use the media queries from Day 26 to adjust the hero's font size, stack the nav on mobile, and confirm the project grid degrades gracefully to a single column on small screens.

style.css
@media (max-width: 640px) {
  .nav-row {
    flex-direction: column;
    gap: 12px;
  }

  .hero h1 {
    font-size: 2rem;
  }
}
SKIP THIS STEP A site that only looks good at your current window size, untested on smaller screens.
DO THIS INSTEAD Open DevTools responsive mode from Day 29 and check every section at mobile, tablet, and desktop widths.

The Details That Make It Feel Finished

FROM WHICH DAY WHAT TO ADD
Day 19

A real type scale — consistent heading sizes and a comfortable line-height on body text.

Day 27

Subtle hover transitions on nav links, buttons, and project cards.

Day 13

Alt text on every image and a logical heading order for accessibility.

Day 14

A final pass through the W3C validator to catch any stray markup errors.

Breaking Down What You Just Learned

1

Wireframe firstSketching sections before coding keeps structure decisions separate from styling ones.

2

Semantic sectionsheader, main, section, and footer give the page real, meaningful structure.

3

Flexbox for rows, grid for cardsEach layout tool fits a different kind of arrangement.

4

Test every breakpointResponsive mode confirms the site works at mobile, tablet, and desktop widths.

5

Polish mattersType scale, hover transitions, alt text, and validation turn "working" into "finished."

Build Your Full Portfolio Site

FINAL PROJECT

A complete, responsive personal portfolio

Create index.html and style.css and build the full site described in this lesson, section by section.

  1. Build the semantic HTML skeleton: header, hero, about, projects, contact, footer.
  2. Style typography with a Google Font and a consistent type scale across all headings and body text.
  3. Build the nav bar with flexbox, including a mobile layout that stacks below 640px.
  4. Build the projects section with CSS Grid, showing at least three project cards with a title, description, and link.
  5. Add a simple contact section with a form or a list of contact links.
  6. Add hover transitions to buttons, links, and project cards.
  7. Test at mobile, tablet, and desktop widths using DevTools responsive mode.
  8. Run the whole page through validator.w3.org and fix any reported errors.

Recap

STRUCTURE

Semantic HTML sections give the page real, meaningful organization.

LAYOUT

Flexbox for rows and navigation, CSS Grid for card-based sections.

RESPONSIVENESS

Media queries adapt the layout across mobile, tablet, and desktop.

POLISH

Typography, transitions, accessibility, and validation finish the build.

You've completed HTML & CSS, One Class at a Time

Thirty lessons ago you started with your first <!DOCTYPE html>. Today you shipped a full, responsive, semantic website built entirely with the fundamentals you learned along the way. That's a real skill — keep building with it.

Course Overview