Build a portfolio website or resume page
Creating a portfolio or resume website is an excellent project to showcase your skills, highlight your experience, and impress potential employers or clients. Here’s a complete breakdown of what to include and how to build it step by step.
1. Basic Structure
Start with a clean HTML5 skeleton:
<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″ />
<meta name=”viewport” content=”width=device-width, initial-scale=1.0″ />
<title>John Doe | Portfolio</title>
<link rel=”stylesheet” href=”styles.css” />
</head>
<body>
<!– Content goes here –>
</body>
</html>
2. Header Section
Include your name, title, and navigation links.
<header>
<h1>John Doe</h1>
<p>Web Developer & Designer</p>
<nav>
<a href=”#about”>About</a>
<a href=”#projects”>Projects</a>
<a href=”#skills”>Skills</a>
<a href=”#contact”>Contact</a>
</nav>
</header>
3. About Section
Write a brief bio, photo, and career summary.
<section id=”about”>
<img src=”profile.jpg” alt=”John Doe portrait” />
<h2>About Me</h2>
<p>I’m a front-end developer passionate about clean code and beautiful design.</p>
</section>
4. Projects Section
Showcase 3–6 projects with links and descriptions.
<section id=”projects”>
<h2>Projects</h2>
<div class=”project”>
<h3>Personal Blog</h3>
<p>Built with HTML, CSS, and JavaScript. Responsive and SEO-friendly.</p>
<a href=”https://github.com/johndoe/blog”>View Code</a>
</div>
</section>
5. Skills Section
List your technical and soft skills.
<section id=”skills”>
<h2>Skills</h2>
<ul>
<li>HTML & CSS</li>
<li>JavaScript</li>
<li>React</li>
<li>Git & GitHub</li>
</ul>
</section>
6. Contact Section
Include a contact form or links to email/social profiles.
<section id=”contact”>
<h2>Contact Me</h2>
<p>Email: <a href=”mailto:johndoe@example.com”>johndoe@example.com</a></p>
<p>LinkedIn: <a href=”https://linkedin.com/in/johndoe”>linkedin.com/in/johndoe</a></p>
</section>
7. Styling with CSS
Create a clean, responsive design using Flexbox or Grid.
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
header, section {
padding: 20px;
max-width: 800px;
margin: auto;
}
nav a {
margin: 0 10px;
}
8. Optional Enhancements
- Dark mode toggle
- Animated skills bars
- Downloadable resume button
- Project filter by tech
- Testimonials section
Summary:
A portfolio website should be clean, organized, and reflect your personality and skills. Use semantic HTML5, responsive CSS, and accessible markup to make it professional and user-friendly.
Apply semantic structure and forms
Combining semantic HTML with well-structured forms not only improves accessibility and SEO but also results in cleaner, easier-to-maintain code. Here’s how to apply semantic structure and forms in your HTML project effectively.
1. Semantic HTML Structure
Semantic tags add meaning to your layout. They help screen readers, search engines, and developers understand the purpose of each section.
Core Semantic Tags:
Tag | Purpose |
---|---|
<header> | Intro content or navigation |
<nav> | Group of navigation links |
<main> | Main content (only one per page) |
<section> | Thematic grouping of content |
<article> | Standalone content (e.g., blog post) |
<aside> | Sidebars, pull quotes, etc. |
<footer> | Footer content |
Example Layout:
<body>
<header>
<h1>My Portfolio</h1>
<nav>
<a href=”#about”>About</a>
<a href=”#contact”>Contact</a>
</nav>
</header>
<main>
<section id=”about”>
<h2>About Me</h2>
<p>I’m a web developer passionate about user-focused design.</p>
</section>
<section id=”projects”>
<h2>Projects</h2>
<!– Project cards here –>
</section>
</main>
<footer>
<p>© 2025 My Name</p>
</footer>
</body>
2. Building Accessible Forms
Forms are essential for user interaction. Structure them semantically with proper labeling and attributes for better usability and accessibility.
Key Elements:
Tag | Description |
---|---|
<form> | Wraps all input elements |
<label> | Describes the input field |
<input> | Text, email, password, etc. |
<textarea> | Multi-line input |
<select> | Dropdown menu |
<button> | Form submission or interaction |
Example Form:
<section id=”contact”>
<h2>Contact Me</h2>
<form action=”/submit” method=”POST”>
<label for=”name”>Full Name:</label>
<input type=”text” id=”name” name=”name” required />
<label for=”email”>Email Address:</label>
<input type=”email” id=”email” name=”email” required />
<label for=”message”>Your Message:</label>
<textarea id=”message” name=”message” rows=”5″ required></textarea>
<button type=”submit”>Send Message</button>
</form>
</section>
3. Best Practices
- Always use <label> with for linked to the input id
- Use required, placeholder, type, and aria-* attributes for usability
- Group related fields with <fieldset> and <legend>
- Avoid placing inputs directly inside non-semantic containers like <div> alone
Summary:
Using semantic structure makes your pages logically organized and screen-reader friendly, while semantic forms ensure accessible and interactive user input. This combination enhances usability, maintainability, and professionalism in your web projects.
Validate HTML with W3C Validator
Validating your HTML ensures that your code follows the official web standards, which helps in achieving cross-browser compatibility, better SEO, and accessibility. The W3C Validator is the official tool used by developers worldwide to check HTML code for errors and warnings.
What is the W3C Validator?
The W3C Markup Validation Service is a free tool provided by the World Wide Web Consortium (W3C) that checks HTML, XHTML, and other markup languages for syntax correctness based on W3C standards.
- Official site: https://validator.w3.org/
Why Validate HTML?
- Ensure correct syntax (e.g., closing tags, proper nesting)
- Improve browser compatibility and prevent layout bugs
- Catch accessibility issues
- Help SEO by ensuring well-structured documents
- Learn best practices and improve code quality
How to Use It
Option 1: Validate by URL
- Publish your site or project online.
- Visit https://validator.w3.org/.
- Click the “Validate by URI” tab.
- Enter your live website URL.
- Click “Check” to see the results.
Option 2: Validate by File Upload
- Save your .html file.
- Go to https://validator.w3.org/.
- Click the “Validate by File Upload” tab.
- Browse and upload your file.
- Click “Check”.
Option 3: Validate by Direct Input
- Open the “Validate by Direct Input” tab.
- Copy and paste your HTML code into the input box.
- Click “Check”.
Understanding the Results
- Green checkmark = No errors found.
- Red error = Critical mistake (e.g., unclosed tag, missing attribute).
- Yellow warning = Recommended improvement (e.g., alt text missing).
Each issue includes:
- Line number
- Description of the error
- Helpful suggestions to fix it
Tips for Clean Validation
- Always include <!DOCTYPE html> at the top.
- Use lowercase tag names.
- Close all tags properly.
- Avoid deprecated or obsolete tags.
- Use double quotes for attribute values.
Summary:
W3C HTML validation is a key part of professional web development. It helps you write clean, standard-compliant code that performs reliably across browsers and devices. By validating regularly, you ensure your websites are more robust, user-friendly, and future-proof.
Intro to CSS and what’s next
CSS (Cascading Style Sheets) is the language used to style HTML documents. It controls the visual presentation—layout, colors, fonts, spacing, responsiveness, and more—transforming plain HTML into beautiful, usable web pages.
What is CSS?
CSS stands for Cascading Style Sheets, and it works alongside HTML to separate content from design. While HTML structures a web page, CSS styles it.
Core Purposes of CSS:
- Apply colors, backgrounds, borders
- Define fonts and text styles
- Control spacing and alignment (margin, padding)
- Create responsive designs (media queries)
- Build layouts using Flexbox, Grid
- Animate elements with transitions and keyframes
How CSS Works
CSS targets HTML elements and applies styles based on selectors.
Example:
<!– HTML –>
<p class=”highlight”>Hello World</p>
/* CSS */
.highlight {
color: white;
background-color: blue;
padding: 10px;
}
This will style the paragraph with a white font, blue background, and padding.
Types of CSS
Inline CSS (inside elements)
<h1 style=”color:red;”>Title</h1>
Internal CSS (in <style> tag inside <head>)
<style>
h1 { color: red; }
</style>
External CSS (linked .css file)
<link rel=”stylesheet” href=”styles.css”>
Why Learn CSS?
- It gives you full control over the look of your site.
- It enables responsive, mobile-first design.
- CSS knowledge is essential for web development jobs.
- Powers modern UI/UX across the internet.
What’s Next After This Intro?
Once you understand how CSS connects to HTML, you’re ready to:
Learn About:
- Selectors: tag, class, ID, attribute, pseudo-selectors
- The Box Model: margin, border, padding, content
- Positioning: static, relative, absolute, fixed
- Flexbox and Grid: modern layout systems
- Responsive Design: using media queries
- Animations and Transitions: bring sites to life
- CSS Variables and Custom Properties
Summary:
CSS is what brings visual beauty and usability to your HTML pages. It’s a crucial step in becoming a front-end developer. Once you master the basics, you’ll unlock the ability to craft elegant, responsive, and interactive web experiences.