🚧 Under construction — VoTechWorks is being built. A free tech program — complimentary, as our commitment to get America working.
voTechWorksGrade 13 · a vocational technology learning center, by urbanicity
newSchoolWorks.com › VoTechWorks › Technology & Design › Web & Software Development › HTML, CSS, and JavaScript for Web Development › Lesson 12
TEC-WEB46-02 · Lesson 12 · 14 clock hours · practice

Integrated Project: Multi-Page Responsive Website

Objective. Students independently build, validate, and present a complete multi-page responsive website that integrates semantic HTML5, CSS3 layout, and JavaScript interactivity, meeting a provided specification document.

⚠ Pending professional review

This lesson, its worked examples and its practice questions has not yet been verified by an industry-certified professional or by a certification or approval body. It is a study draft and may contain errors. Do not use it as instructions for work on a job site or on live equipment. Always follow your instructor, your supervising professional, and current official references and regulations.

VoTechWorks program approval and accreditation are still in progress. Credentials are issued only by the certifying bodies named in each program, after their own exams.

Integrated Project: Multi-Page Responsive Website

This lesson is your capstone for the HTML, CSS, and JavaScript course. You will independently build a complete, working website from a client brief, validate it against professional standards, and explain your technical decisions out loud. Every skill you have practiced — semantic markup, responsive layout, JavaScript interactivity, accessibility, and code quality — comes together here.

Understanding the Client Brief

A client brief is a short document that describes what a business needs: the purpose of the site, the audience, the pages required, and any content or feature requests. Read the brief carefully before writing a single line of code. Identify the required pages (home, about, contact), any specific interactive features, and any visual or brand constraints. Treat the brief as a contract: deliverables that are missing cost points on the rubric.

Planning Before Coding

Professional developers plan before they build. Sketch a rough wireframe for each page showing where the header, navigation, main content, and footer will sit. Decide early whether Flexbox or CSS Grid — or a combination — best fits each section. Grid works well for two-dimensional page layouts; Flexbox is often better for one-dimensional rows or columns such as navigation bars or card rows. Write your choice down so you can explain it during the defense.

Create a simple file structure before touching VS Code:

```

project/

index.html

about.html

contact.html

css/

styles.css

js/

main.js

images/

```

Consistent file naming and folder organization are part of code quality and will be evaluated.

Semantic HTML5

Use elements for their meaning, not just their appearance. Every page needs a `<header>`, `<nav>`, `<main>`, and `<footer>`. Use `<article>` or `<section>` to group related content, and `<aside>` for supplementary material. Every image must have a descriptive `alt` attribute. Heading levels (`<h1>` through `<h3>`) must follow a logical hierarchy — do not skip from `<h1>` to `<h4>`. Proper semantics improve both accessibility and Search Engine Optimization (SEO).

Responsive CSS Layout

Your site must look correct on mobile, tablet, and desktop widths. Use a mobile-first approach: write base styles for small screens, then add `@media` queries for larger breakpoints (common widths are 600 px and 960 px). Avoid fixed pixel widths for containers; use percentages, `max-width`, or CSS Grid's `fr` units. Test by dragging the browser window narrower in Chrome DevTools and by using the device toolbar.

JavaScript Interactivity

You must include at least one JavaScript interactive feature. The contact page is a natural place for form validation — check that required fields are filled in and that the email field contains an `@` symbol before allowing submission. Use `addEventListener` to attach event handlers rather than inline `onclick` attributes; this keeps your HTML and JavaScript separated.

You must also display data using the Fetch API. A common approach is to fetch a public JSON endpoint (such as a placeholder posts API) and render the results into the DOM using `document.createElement` and `appendChild`. Always handle the fetch Promise with `.then()` and `.catch()` so the page degrades gracefully if the network request fails.

Accessibility and Lighthouse

Run Lighthouse in Chrome DevTools on each page. Aim for scores of 90 or above in Accessibility and Best Practices. Common fixes include: adding `<label>` elements linked to every form input with matching `for` and `id` attributes; ensuring color contrast meets WCAG AA ratios; providing a `lang` attribute on the `<html>` element; and making sure interactive elements are keyboard-reachable with visible focus styles. A score of 90+ in Lighthouse accessibility is not a guarantee of full compliance, but it is a strong baseline.

W3C Validation

Paste each page's HTML into the W3C Markup Validation Service (validator.w3.org) and resolve all errors and warnings before submission. Common errors include unclosed tags, duplicate `id` attributes, and block elements nested inside inline elements. Validation errors can also cause unexpected rendering bugs across browsers.

Code Quality and Commenting

Comment your code at the section level, not on every line. A comment above a CSS Grid block explaining the column structure, or above a JavaScript function explaining what it does, is appropriate. Use consistent indentation (two or four spaces — pick one and stick with it). Remove commented-out dead code before submission. Variable and function names should be descriptive: `submitButton` is clearer than `btn2`.

The Project Defense

You will present your site live for five to ten minutes. Prepare to explain at least three technical decisions — for example, why you chose Grid over Flexbox for the home page layout, how your event listener is structured, or why you placed a particular landmark element where you did. Practice answering "why" questions, not just "what" questions. The instructor will ask two follow-up questions; respond calmly and refer to your code if you need to.

Workspace and Data Safety

Though web development involves no physical hazards requiring PPE or lockout/tagout procedures, you do have professional responsibilities. Never commit real personal data (passwords, API keys, private user information) to your project files or a public repository. Use placeholder data in forms. Save your work frequently and maintain a backup copy; losing work to an unsaved file is avoidable. Keep your browser and VS Code extensions updated to avoid known security vulnerabilities.

Key terms10

Client briefA document provided by a client or instructor that specifies the purpose, audience, required pages, and features of a website project.
Semantic HTMLThe practice of using HTML elements according to their intended meaning (e.g., <nav>, <main>, <article>) rather than purely for visual effect.
Mobile-first designA CSS strategy in which base styles target small screens and media queries progressively add styles for larger viewport widths.
Fetch APIA built-in browser JavaScript interface that allows code to make HTTP requests and handle responses using Promises, replacing older XMLHttpRequest patterns.
W3C Markup ValidationA free service provided by the World Wide Web Consortium that checks HTML documents for syntax errors and standards conformance.
LighthouseAn automated auditing tool built into Chrome DevTools that scores web pages on Performance, Accessibility, Best Practices, and SEO.
WCAGWeb Content Accessibility Guidelines — a set of internationally recognized recommendations for making web content accessible to people with disabilities.
Event listenerA JavaScript function registered with addEventListener() that runs in response to a specific user or browser event such as a click or form submission.
CSS GridA two-dimensional CSS layout system that allows developers to define rows and columns and place elements precisely within a grid container.
Form validationThe process of checking user-entered data against defined rules (e.g., required fields, correct email format) before the data is submitted or processed.
In class: Project build: working independently over multiple sessions, students build a minimum three-page website (home, about, contact) for a provided client brief — must include semantic HTML, a responsive layout using Flexbox or Grid, at least one JavaScript interactive feature (e.g., form validation, dynamic content), and a Fetch API data display. · Code review and self-audit: students run W3C validation and Lighthouse on all three pages, fix identified errors, and complete a self-assessment checklist covering semantic structure, accessibility, responsiveness, JavaScript functionality, and code commenting. · Project defense: each student does a five-to-ten-minute live walkthrough of their site for the instructor and two peers, explaining at least three technical decisions (e.g., why Grid was chosen for a specific layout, how an event listener is structured), then answers two instructor questions.
Materials: VS Code, Live Server, Chrome DevTools, W3C Validator, Lighthouse, client brief specification document, project rubric, self-assessment checklist
Check: Rubric scored by instructor across five domains: HTML validity and semantics (20%), CSS responsiveness (20%), JavaScript functionality (20%), accessibility/Lighthouse score (20%), and code quality and defense explanation (20%); pass mark 75% overall with no domain below 60%.

Practice check8

Answer each question, then check it. Nothing is recorded; this is your own practice.

CompTIA ITF+ — Software and Web Development Concepts
1. Which HTML element is the most semantically appropriate container for the primary navigation links of a webpage?
CompTIA ITF+ — Software and Web Development Concepts
2. A student's Lighthouse accessibility audit flags that a form input has no associated label. Which code change correctly fixes this issue?
CompTIA ITF+ — Software and Web Development Concepts
3. A developer wants the home page to have a two-dimensional layout with defined rows and columns. Which CSS layout system is best suited for this requirement?
CompTIA ITF+ — Software and Web Development Concepts
4. Which of the following correctly describes a mobile-first CSS approach?
CompTIA ITF+ — Software and Web Development Concepts
5. A student uses the Fetch API to load JSON data from a public endpoint. Which additional code block is essential for professional-quality error handling?
CompTIA ITF+ — Software and Web Development Concepts
6. After running the W3C Markup Validator, a student sees the error: 'Duplicate attribute id.' What is the most likely cause?
CompTIA ITF+ — Software and Web Development Concepts
7. During a project defense, the instructor asks why the student used addEventListener('submit', handler) on the contact form instead of an onclick attribute in the HTML. Which answer best demonstrates good practice?
CompTIA ITF+ — Software and Web Development Concepts
8. A student's project receives a rubric score of 78% overall but scores only 55% in the CSS responsiveness domain. According to the pass criteria, what is the outcome?
Record this lesson on my transcript. Sign in with your key and enrollment email to record lessons (enroll free if you have no key). This page stays open to read and practise.