Course Recap - Essential Web Development Review
Comprehensive recap covering the most important concepts from Phases 1-3 and 5-6 for your web project assignment.
Course Recap - Essential Web Development Review
After three intense weeks of learning, this recap session consolidates the most critical concepts for your web project assignment. We'll review essential knowledge from Phases 1-3 (Fundamentals, HTML, CSS) and Phases 5-6 (Project Development, Deployment).
Project Focus: All concepts are directly relevant to your 4-page web project assignment. Apply these principles to create a professional, complete, and well-structured website.
Session 1: Web Fundamentals & HTML
Web Fundamentals
Client-Server Architecture
The web operates on a client-server model:
┌─────────┐ ┌─────────┐
│ │ 1. HTTP Request │ │
│ Client │ ───────────────────────> │ Server │
│(Browser)│ │ │
│ │ 2. HTTP Response │ │
│ │ <─────────────────────── │ │
└─────────┘ └─────────┘
The Journey of Your Project's Web Page:
- User types your project URL in browser
- DNS translates domain name → IP address
- Browser sends HTTP request to server
- Server sends back HTML, CSS, JavaScript files
- Browser renders your webpage
For your project: When deployed on Netlify/Vercel, your HTML files live on their servers and are delivered to users worldwide via this client-server model.
📚 Learn more: Lesson 1.1: Introduction to the World Wide Web
Browser Rendering Pipeline
When a user visits your project, the browser follows this process:
1. Parse HTML → Build DOM Tree
2. Parse CSS → Build CSSOM Tree
3. Combine → Render Tree
4. Layout → Calculate positions
5. Paint → Display pixels on screen
For your project: This means:
- Clean HTML structure = faster DOM building
- Efficient CSS = faster CSSOM building
- Optimized images = faster painting
- Result: Professional, fast-loading website
📚 Learn more: Lesson 1.1: Introduction to the World Wide Web
URL Structure
Understanding URLs is essential for your project's navigation:
https://www.example.com:443/path/to/page?name=value#section
│ │ │ │ │ │ │
│ │ │ │ │ │ └─ Fragment
│ │ │ │ │ └─ Query string
│ │ │ │ └─ Path
│ │ │ │ └─ Port (optional)
│ │ │ └─ Domain name
│ │ └─ Subdomain
└─ Protocol
For your project:
- Use
https://when deployed (Netlify/Vercel provide this automatically) - Keep paths simple and descriptive:
/about.html,/contact.html - Use fragments for smooth scrolling:
<a href="#section">links to<section id="section">
📚 Learn more: Lesson 1.1: Introduction to the World Wide Web
HTTP Methods
| Method | Purpose | In Your Project |
|---|---|---|
| GET | Retrieve data | Loading pages, images, CSS files |
| POST | Create/submit data | Contact form submissions |
For your project: Your contact form should use <form method="post"> to properly submit user data.
📚 Learn more: Lesson 1.3: HTTP and Web Communication
HTTP Status Codes
When debugging your project, you'll encounter these status codes:
Success:
- 200 OK: Page loaded successfully ✅
- 301 Moved Permanently: Redirect (SEO-friendly)
Client Errors:
- 400 Bad Request: Invalid request syntax
- 401 Unauthorized: Authentication required
- 402 Payment Required: Reserved for future use
- 403 Forbidden: Access denied (even if logged in)
- 404 Not Found: Page doesn't exist
- 405 Method Not Allowed: Wrong HTTP method used
Server Errors:
- 500 Internal Server Error: Server crashed
- 502 Bad Gateway: Server connection failed
- 503 Service Unavailable: Server temporarily down
For your project:
- Check the Network tab in DevTools to see status codes
- If you see 404, check your file paths and names
- Create a custom
404.htmlpage for missing pages
📚 Learn more: Lesson 1.3: HTTP and Web Communication
Browser DevTools
Your most important debugging tool:
Essential Panels:
- Elements/Inspector: Inspect and modify HTML/CSS in real-time
- Console: See JavaScript errors
- Network: Monitor HTTP requests, check file sizes
- Application: View cookies, localStorage
DevTools Shortcuts:
- F12 or Ctrl+Shift+I (Cmd+Option+I on Mac): Open DevTools
- Ctrl+Shift+C (Cmd+Option+C): Inspect element
- Ctrl+Shift+M (Cmd+Option+M): Toggle responsive design mode
For your project:
- Use Elements panel to test CSS changes before editing files
- Check Network panel: images should be < 200KB
- Test responsive design mode at different screen sizes
- Fix console errors (red messages) before submission
📚 Learn more: Lesson 1.2: Browser Developer Tools
Web Standards & Validation
W3C Standards: Ensure your project works across all browsers
For your project - Validation is mandatory:
- HTML Validation: validator.w3.org
- Upload your HTML files
- Fix all errors (warnings are optional)
- CSS Validation: jigsaw.w3.org/css-validator
- Upload your CSS file
- Fix errors for consistent rendering
Browser Testing: Test your project on multiple browsers:
- ✅ Chrome (most users)
- ✅ Safari (Mac/iOS users)
- ✅ Firefox (good standards compliance)
- ✅ Edge (Windows users)
📚 Learn more: Lesson 1.4: Web Standards and W3C
HTML Essentials for Your Project
HTML Document Structure
Every page in your project must have this structure:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Brief page description for SEO">
<title>Page Title - Your Project Name</title>
<link rel="stylesheet" href="css/styles.css">
<link rel="icon" href="images/favicon.ico">
</head>
<body>
<!-- Your content here -->
<script src="js/script.js"></script>
</body>
</html>
Critical for exam grading:
- ✅
<!DOCTYPE html>- Must be first line - ✅
<meta charset="UTF-8">- Character encoding - ✅
<meta name="viewport">- Required for responsive design - ✅
<meta name="description">- SEO description (different for each page) - ✅
<title>- Unique title for each page - ✅
<link rel="icon">- Favicon (shows in browser tab)
📚 Learn more: Lesson 2.1: HTML Document Structure
Semantic HTML5 - Project Requirement
Why semantic HTML matters for your project:
- Exam Criteria: Clean, professional code structure
- Accessibility: Screen reader navigation
- SEO: Better search engine understanding
- Maintainability: Self-documenting code
Required semantic structure for your project:
<header>
<!-- Logo, site title, main navigation -->
<nav>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="about.html">About</a></li>
<li><a href="portfolio.html">Portfolio</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
</header>
<main>
<!-- Main content of each page -->
<article>
<header>
<h1>Page Heading</h1>
</header>
<section>
<h2>Section Heading</h2>
<p>Content...</p>
</section>
</article>
<aside>
<!-- Sidebar, related content -->
</aside>
</main>
<footer>
<!-- Copyright, contact info -->
<p>© 2024 Your Name. All rights reserved.</p>
</footer>
Element Guidelines for Your Project:
| Element | Usage | Example in Your Project |
|---|---|---|
<header> | Top section of page | Logo + navigation menu |
<nav> | Navigation links | Main menu (on all pages) |
<main> | Main content | Only ONE per page |
<article> | Self-contained content | Blog post, portfolio item |
<section> | Thematic grouping | "About Me", "Skills", "Projects" |
<aside> | Sidebar content | Related links, additional info |
<footer> | Bottom section | Copyright, social links |
Exam Deduction: Using <div id="header"> instead of <header> shows lack of understanding. Always use semantic elements!
📚 Learn more: Lesson 2.7: Semantic HTML5
Forms - Contact Page Requirement
Your project contact form must have proper labels and validation:
<form action="/submit" method="post">
<!-- ✅ GOOD: Explicit label with 'for' attribute -->
<label for="name">Your Name:</label>
<input type="text" id="name" name="name" required>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<label for="message">Message:</label>
<textarea id="message" name="message" rows="5" required></textarea>
<button type="submit">Send Message</button>
</form>
Form Requirements for Exam:
- ✅ Use
method="post"(not GET!) - ✅ Every input must have a
<label>with matchingforattribute - ✅ Use appropriate input types:
email,tel,date,url - ✅ Add
requiredattribute for mandatory fields - ✅ Use
minlengthandmaxlengthfor text validation
GET vs POST in Your Project:
| GET | POST |
|---|---|
| ❌ Data visible in URL | ✅ Data hidden in request body |
| ❌ Use for search forms only | ✅ Use for contact forms |
| ❌ Not secure for sensitive data | ✅ Better for user information |
📚 Learn more: Lesson 2.6: Forms & Input Elements
Images - Critical Requirements
What Are Hotlinks? (PROHIBITED!)
Hotlinking = Using images from external URLs instead of storing them locally.
<!-- ❌ HOTLINK - WILL FAIL EXAM -->
<img src="https://example.com/images/photo.jpg" alt="Photo">
<!-- ✅ CORRECT - LOCAL IMAGE -->
<img src="images/photo.jpg" alt="Photo">
Why hotlinks are not allowed in your project:
- Exam Deduction: Automatic grade reduction
- Broken images: External site can delete the image
- Copyright: Using others' bandwidth is theft
- Performance: External images load slower
- No control: Can't optimize or modify
Project Rule: ALL images must be in your images/ folder!
Proper Image Usage
<img src="images/portrait.jpg"
alt="Descriptive text for screen readers"
width="800"
height="600"
loading="lazy">
Image Requirements for Exam:
- ✅ Store all images in
images/folder (in your project directory) - ✅ Use relative paths:
images/photo.jpg(not absolute paths!) - ✅ Always include
altattribute (accessibility requirement) - ✅ Optimize file size: < 200KB per image
- ✅ Use appropriate format:
- Photos → JPG
- Graphics/logos → PNG
- Icons → SVG
Alt Text Guidelines:
<!-- ✅ Informative image -->
<img src="images/team-2024.jpg" alt="Web development team at 2024 conference">
<!-- ✅ Decorative image -->
<img src="images/decoration.jpg" alt="">
<!-- ✅ Functional image (button) -->
<img src="images/search-icon.svg" alt="Search">
<!-- ❌ BAD alt text -->
<img src="images/photo.jpg" alt="image">
<img src="images/photo.jpg" alt="photo.jpg">
📚 Learn more: Lesson 2.4: Images & Media
Navigation & Links
Your project needs consistent navigation on all 4 pages:
<nav>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="about.html">About</a></li>
<li><a href="portfolio.html">Portfolio</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
Link Requirements for Exam:
- ✅ No dead links: Every link must work
- ✅ Use relative paths for internal pages:
about.html(nothttps://...) - ✅ Same navigation on all pages (consistency)
- ✅ Clear, descriptive link text (not "click here")
Special Link Types:
<!-- Email link -->
<a href="mailto:your.email@example.com">Contact me</a>
<!-- Phone link -->
<a href="tel:+1234567890">Call us</a>
<!-- Smooth scroll to section -->
<a href="#about">Jump to About section</a>
<!-- Then somewhere on page: -->
<section id="about">...</section>
📚 Learn more: Lesson 2.3: Links & Navigation
Session 2: CSS Styling & Responsive Design
CSS Fundamentals
Linking CSS to Your Project
Only one correct way for your project:
<!-- ✅ External stylesheet (REQUIRED) -->
<head>
<link rel="stylesheet" href="css/styles.css">
</head>
<!-- ❌ Inline styles (AVOID - shows bad practice) -->
<p style="color: red;">Text</p>
<!-- ❌ Internal styles (DON'T USE in project) -->
<style>
p { color: red; }
</style>
For your project: Create css/styles.css and link it from all HTML pages.
📚 Learn more: Lesson 3.1: CSS Introduction & Syntax
Selectors & Specificity
/* Element selector (specificity: 0,0,1) */
p { color: black; }
/* Class selector (specificity: 0,1,0) - PREFER THIS */
.highlight { background: yellow; }
/* ID selector (specificity: 1,0,0) - AVOID for styling */
#header { color: blue; }
/* Multiple selectors */
h1, h2, h3 { font-family: Arial, sans-serif; }
/* Descendant selector */
nav a { text-decoration: none; }
/* Pseudo-classes */
a:hover { color: red; }
li:first-child { font-weight: bold; }
Specificity Hierarchy (low to high):
- Element selectors (
p,div) - Class selectors (
.button,.card) - ID selectors (
#header) - Inline styles (avoid!)
!important(never use!)
For your project: Use classes for styling. IDs should only be used for JavaScript and anchor links.
📚 Learn more: Lesson 3.2: Selectors & Specificity
Box Model - Essential Concept
Every element in your project is a box with four areas:
Box Model CSS:
.box {
/* Content size */
width: 300px;
height: 200px;
/* Padding (inside) */
padding: 20px;
/* Border */
border: 2px solid #333;
border-radius: 8px; /* rounded corners */
/* Margin (outside) */
margin: 20px;
margin: 0 auto; /* center horizontally */
}
IMPORTANT - Box Sizing:
/* Add this to your CSS file (RECOMMENDED) */
* {
box-sizing: border-box;
}
/* Now width includes padding and border */
.box {
width: 300px; /* Total width = 300px (includes padding & border) */
padding: 20px;
border: 2px solid black;
}
For your project: Add box-sizing: border-box to prevent layout surprises!
📚 Learn more: Lesson 3.3: Box Model & Layout Fundamentals
CSS Layout - Flexbox & Grid
Flexbox - One-Dimensional Layout
Flexbox is perfect for:
- Navigation menus (horizontal or vertical)
- Card layouts in a row
- Centering content
- Distributing space between items
Basic Flexbox Pattern:
/* Container */
.nav-menu {
display: flex;
gap: 20px; /* space between items */
justify-content: space-between; /* distribute horizontally */
align-items: center; /* align vertically */
}
Flexbox Direction:
flex-direction: row;- Horizontal (default) →flex-direction: column;- Vertical ↓
Main Axis Alignment (justify-content):
flex-start- Align to startcenter- Center itemsspace-between- Space between itemsspace-around- Space around items
Cross Axis Alignment (align-items):
flex-start- Align to topcenter- Center verticallyflex-end- Align to bottom
For your project - Common patterns:
/* 1. Navigation menu */
nav ul {
display: flex;
gap: 20px;
list-style: none;
}
/* 2. Center content */
.hero {
display: flex;
justify-content: center;
align-items: center;
min-height: 400px;
}
/* 3. Card layout */
.cards {
display: flex;
gap: 20px;
flex-wrap: wrap; /* wrap to multiple lines */
}
.card {
flex: 1 1 300px; /* grow, shrink, min-width */
}
📚 Learn more: Lesson 3.4: Flexbox Layout
Grid Layout - Two-Dimensional Layout
Grid is perfect for:
- Page layouts (header, main, sidebar, footer)
- Image galleries
- Card grids with consistent sizing
Basic Grid Pattern:
.container {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 3 equal columns */
gap: 20px;
}
Responsive Grid (no media queries needed!):
.gallery {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
}
/* Automatically adjusts:
- Desktop: 4-5 columns
- Tablet: 2-3 columns
- Mobile: 1 column
*/
For your project - Page layout:
body {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: auto 1fr auto;
min-height: 100vh;
}
header { grid-row: 1; }
main { grid-row: 2; }
footer { grid-row: 3; }
📚 Learn more: Lesson 3.5: Grid Layout
Responsive Design for Your Project
What is Responsive Design?
Responsive design means your website adapts to different screen sizes:
- Desktop: Wide screens (1200px+)
- Tablet: Medium screens (600-1199px)
- Mobile: Small screens (<600px)
Why it matters for your project:
- Exam Requirement: Your site must work on mobile and desktop
- User Experience: 50%+ of web traffic is mobile
- Professional Standard: All modern websites are responsive
Key Principle: Design mobile-first, then enhance for larger screens.
Responsive Meta Tag (REQUIRED)
This ONE line makes your site responsive:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
For your project: This tag MUST be in the <head> of all pages. Without it, your site won't scale properly on mobile devices!
Understanding device-width
device-width is a special keyword - you don't need to replace it with anything else. It tells the browser to set the viewport width to match the actual width of the device's screen.
What each part does:
width=device-width- Sets the viewport width to be the same as the device's screen width- On a phone with a 375px wide screen → viewport will be 375px wide
- On a tablet with a 768px wide screen → viewport will be 768px wide
initial-scale=1.0- Sets the initial zoom level to 100% (no zoom)
Why this matters:
Without this meta tag, mobile browsers often try to display desktop-sized web pages by zooming out, making everything tiny and hard to read. This viewport tag tells the browser: "Hey, this page is designed to work well on mobile devices, so display it at the actual device width."
What you might see WITHOUT this meta tag:
- Text appears very small
- User has to pinch and zoom to read content
- Page appears as if it's designed for a much wider screen
Bottom line: Don't change device-width - it's exactly what you want to use for responsive web design!
📚 Learn more: Lesson 3.6: Responsive Design & Media Queries
Media Queries
Media queries adjust styling based on screen size:
/* Mobile-first approach (recommended) */
/* Base styles for mobile (< 600px) */
.container {
padding: 10px;
font-size: 14px;
}
nav ul {
flex-direction: column; /* vertical menu */
}
/* Tablet (≥ 600px) */
@media (min-width: 600px) {
.container {
padding: 20px;
font-size: 16px;
}
}
/* Desktop (≥ 1200px) */
@media (min-width: 1200px) {
.container {
max-width: 1200px;
margin: 0 auto;
padding: 40px;
}
nav ul {
flex-direction: row; /* horizontal menu */
}
}
For your project: Test at these breakpoints:
- 📱 Mobile: 320px, 375px, 414px
- 📱 Tablet: 768px, 1024px
- 💻 Desktop: 1200px, 1920px
Responsive Images
img {
max-width: 100%;
height: auto;
}
This ensures images never overflow their container!
📚 Learn more: Lesson 3.6: Responsive Design & Media Queries
Sticky Header Concept
What is a sticky header?
A sticky header "sticks" to the top of the viewport when you scroll down, keeping navigation always accessible.
Before scrolling:
┌──────────────────┐
│ HEADER (normal) │
└──────────────────┘
│ Content... │
│ │
│ Content... │
After scrolling:
┌──────────────────┐ ← Header stays at top
│ HEADER (sticky) │
└──────────────────┘
│ Content... │ ← Content scrolls underneath
│ │
CSS for sticky header:
header {
position: sticky;
top: 0;
background: white;
z-index: 100; /* ensures header stays on top */
}
For your project:
- Improves navigation accessibility
- Professional UX pattern
- Works on mobile and desktop
- Bonus points: Shows attention to detail
Important: Parent element must NOT have overflow: hidden.
📚 Learn more: Lesson 3.3: Box Model & Layout Fundamentals
Session 3: Project Development & Deployment
Project File Structure
Required folder structure for your project:
my-project/
├── index.html # Homepage (REQUIRED)
├── about.html # About page
├── portfolio.html # Portfolio/work page
├── contact.html # Contact page
├── css/
│ └── styles.css # Main stylesheet
├── js/
│ └── script.js # JavaScript (optional)
├── images/
│ ├── logo.png
│ ├── hero-image.jpg
│ ├── photo1.jpg
│ └── ...
└── README.md # Project description
File Naming Rules:
- ✅ Use lowercase:
about.html(notAbout.html) - ✅ Use hyphens:
my-portfolio.html(notmy_portfolio.htmlormyPortfolio.html) - ✅ Be descriptive:
team-photo-2024.jpg(notimg001.jpg) - ✅ No spaces: Use hyphens instead
📚 Learn more: Lesson 5.2: Personal Homepage Structure
Content Guidelines
Writing for the Web
Key principles for your project content:
- Scannability: Users scan, don't read
- Short paragraphs (3-4 lines max)
- Use bullet points
- Bold important information
- Clear headings
- Front-load important information:
<!-- ✅ GOOD --> <p>We offer web design services starting at $500. Contact us for a quote.</p> <!-- ❌ BAD --> <p>After years of experience and working with many clients, we have developed a comprehensive pricing structure that takes into account various factors, and our web design services start at $500.</p> - Active voice:
- ✅ "I built this website"
- ❌ "This website was built by me"
- Clear call-to-action:
<a href="contact.html" class="button">Get in Touch</a>
For your project:
- No "Lorem ipsum" placeholder text (exam deduction!)
- All content should be final and meaningful
- Avoid AI-generated filler content
📚 Learn more: Lesson 5.3: Content & Navigation
Image Optimization
Image requirements for exam grading:
- ✅ File size: < 200KB per image
- ✅ Appropriate format: JPG for photos, PNG for graphics, SVG for icons
- ✅ Descriptive filenames:
team-meeting-2024.jpg(notDSC_1234.jpg) - ✅ Proper dimensions: Resize before uploading (don't use CSS to shrink large images)
Recommended sizes for your project:
- Hero/banner images: 1920 x 1080 px
- Content images: 800 x 600 px
- Thumbnails: 400 x 300 px
- Profile photos: 400 x 400 px
Optimization tools:
- TinyPNG - Compress PNG and JPEG (free)
- Squoosh - Advanced compression (Google)
- ImageOptim - Mac app for batch optimization
For your project: Optimize ALL images before adding to your images/ folder!
📚 Learn more: Lesson 5.4: Adding Media & Interactive Elements
Testing Your Project
Testing Checklist (Before Submission)
Functionality (Mandatory):
- All 4+ pages load without errors
- All navigation links work (no 404 errors)
- All images display correctly
- Contact form has proper labels
- No broken links or missing files
Quality (Grading Criteria):
- HTML validates at validator.w3.org
- CSS validates at jigsaw.w3.org/css-validator
- No console errors (check DevTools Console tab)
- Works on mobile (test with DevTools responsive mode)
- Works on desktop
- Images < 200KB each
- Page loads in < 3 seconds
Code Quality (Grading Criteria):
- Semantic HTML used (
<header>,<nav>,<main>,<footer>) - External CSS (not inline styles)
- Consistent indentation
- Descriptive class names
- Comments explaining complex code
Content (Exam Requirements):
- No placeholder images (no hotlinks!)
- No "Lorem ipsum" text
- No AI-generated filler content
- Professional, complete content
Cross-Browser Testing
Test your project in multiple browsers:
- Chrome (primary browser - most users)
- Safari (Mac/iOS users)
- Firefox (standards compliance)
- Edge (Windows users)
How to test: Open your index.html in each browser and check:
- Layout looks correct
- Fonts load properly
- Images display
- Navigation works
- No console errors
Responsive Testing
Test at these sizes using DevTools:
- Mobile:
- iPhone SE: 375 x 667 px
- iPhone 12: 390 x 844 px
- Samsung Galaxy: 360 x 740 px
- Tablet:
- iPad: 768 x 1024 px
- iPad Pro: 1024 x 1366 px
- Desktop:
- Laptop: 1366 x 768 px
- Desktop: 1920 x 1080 px
How to test in DevTools:
- Press F12 (or Cmd+Option+I)
- Click device toolbar icon (Ctrl+Shift+M)
- Select device from dropdown
- Test navigation, scrolling, forms
📚 Learn more: Lesson 5.5: Testing & Debugging
Git & Version Control
Git Basics for Your Project
Git is a version control system. The purpose and function of Git in web development is:
- Version control - Track all changes to code over time
- Collaboration - Multiple developers can work on same project
- Backup - Code is stored safely and can be recovered
- Branching - Experiment with features without affecting main code
- History - See who changed what and when
- Deployment - Required for modern hosting platforms
Why use Git for your project:
- Track all changes to your code
- Revert mistakes easily
- Required for deployment to Github
- Professional development practice
Git Setup (Do Once):
# Set your identity (REQUIRED before first commit)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# Set default branch name
git config --global init.defaultBranch main
Basic Git Workflow for Your Project:
# 1. Initialize repository (do once at project start)
cd my-project
git init
# 2. Check what changed
git status
# 3. Add files to staging
git add . # Add all files
git add index.html # Add specific file
# 4. Commit with descriptive message
git commit -m "Add homepage structure and navigation"
# 5. View history
git log --oneline
Commit Message Guidelines:
# ✅ GOOD commit messages (descriptive)
git commit -m "Add contact form with email validation"
git commit -m "Fix mobile navigation menu overflow"
git commit -m "Optimize hero image file size"
# ❌ BAD commit messages (too vague)
git commit -m "update"
git commit -m "fix bug"
git commit -m "changes"
For your project: Make commits after completing each feature (e.g., "Add about page", "Style navigation menu", "Add contact form").
📚 Learn more: Git & GitHub Guide and Lesson 6.1: Git & Version Control
Deploying Your Project
Deployment to Netlify (Recommended)
Why Netlify for your project:
- Free hosting
- Automatic HTTPS
- Custom domain support
- Deploys from GitHub automatically
- Perfect for static HTML/CSS/JS sites
Deployment Steps:
Step 1: Push to GitHub
# Create repository on github.com, then:
git remote add origin https://github.com/yourusername/your-project.git
git branch -M main
git push -u origin main
Pre-Submission Checklist
Use this checklist before your exam presentation:
Technical Requirements
- Minimum 4 pages (homepage + 3 sub-pages)
- All pages have proper HTML5 structure
- Semantic HTML used throughout
- External CSS stylesheet (no inline styles)
- Responsive meta tag in
<head> - All images stored locally in
images/folder (no hotlinks!) - All images < 200KB
- All navigation links work (no 404 errors)
- Contact form has proper labels and method="post"
Validation & Testing
- HTML validates (validator.w3.org)
- CSS validates (jigsaw.w3.org/css-validator)
- No console errors in DevTools
- Works in Chrome, Safari, Firefox, Edge
- Responsive on mobile (tested in DevTools)
- Page loads in < 3 seconds
Content Quality
- No placeholder images
- No "Lorem ipsum" text
- No AI-generated filler
- Professional, complete content
- Unique
<title>and<meta description>on each page
Code Quality
- Clean, organized HTML structure
- Consistent indentation (2 or 4 spaces)
- Descriptive class names
- Comments for complex sections
- Proper folder structure (css/, images/, js/)
Deployment
- Project uploaded to webproject.lrock.net
- Representative screenshots uploaded
- Local files backed up
Presentation Prep
- Can explain all code in project
- Prepared 3-minute presentation
- Tested project on laptop
- Ready to answer technical questions
Exam Tips for Success
Presentation Structure (3 minutes)
- Introduction (30 seconds)
- Project name and purpose
- Target audience
- Demonstration (2 minutes)
- Show from github pages
- or show from local using Live Server
- Show homepage
- Navigate through all pages
- Highlight key features
- Show mobile responsive design
- Technical Highlights (30 seconds)
- Semantic HTML structure
- CSS techniques used (Flexbox/Grid)
- Responsive design approach
During Q&A (2 minutes)
Be prepared to answer:
- "Why did you choose this project topic?"
- "Explain how your navigation works"
- "Show me the HTML for your contact form"
- "How did you make your site responsive?"
- "What challenges did you face?"
Common Mistakes to Avoid
Automatic Deductions:
- ❌ Hotlinked images (external URLs)
- ❌ Dead links (404 errors)
- ❌ Placeholder content ("Lorem ipsum")
- ❌ Non-functional features
- ❌ Missing labels on form inputs
- ❌ Inline CSS instead of external stylesheet
- ❌ Invalid HTML/CSS (validation errors)
Time Management:
- ❌ Talking too long (over 3 minutes)
- ❌ Showing code instead of the website
- ❌ Getting stuck on technical issues
- ✅ Practice your presentation beforehand!
Remember
Quality Over Complexity: A simple, complete, professional 4-page website scores better than a complex, unfinished project!
Focus on:
- ✅ All features work properly
- ✅ Professional appearance
- ✅ Clean, valid code
- ✅ Clear presentation
Additional Resources
Course Materials:
Development Guides:
Reference Documentation:
- MDN Web Docs - Comprehensive web development reference
- Can I Use - Browser compatibility tables
- W3C HTML Validator
- W3C CSS Validator
Deployment Platforms:
- Netlify - Free static hosting
- Vercel - Alternative hosting
- GitHub Pages - Simple hosting from GitHub
Q&A Session
Use this time to:
- Ask questions about concepts covered
- Get help with specific project challenges
- Clarify exam requirements
- Review code examples
- Discuss implementation strategies
Good luck with your web project presentation! 🚀