🌐 Internship Program – Month 2, Week 1

Build Your First Personal Portfolio Website (HTML + CSS + JS)


🎯 Goal of the Week


📂 File Structure

We will keep everything organized in a single folder called week1-portfolio/.

week1-portfolio/
├─ index.html   # Structure of the website
├─ styles.css   # Styling and colors
└─ script.js    # Interactive behavior

1️⃣ index.html — The Website’s Skeleton

Think of HTML as the blueprint of a house. Rooms = Sections. Walls = <div> or <section>. Doors = <a> links.

Let’s explore every line.

<!DOCTYPE html>

👉 Tells the browser this is an HTML5 document. Without this, older browsers may behave weirdly.

<html lang="en">

👉 Starts the webpage, language is set to English.


<head> Section – Metadata & Imports

This is like the “invisible brain” of your site.

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>My Portfolio</title>
  <link rel="stylesheet" href="styles.css" />
</head>

<body> Section – Visible Content

This is what people see on screen.

🟢 Header

<header class="container">
  <nav class="nav">
    <a href="#about">About</a>
    <a href="#skills">Skills</a>
    <a href="#projects">Projects</a>
    <a href="#contact">Contact</a>
  </nav>
  <h1>Hello, I'm <span class="accent">Your Name</span></h1>
  <p>Aspiring developer | Tech Enthusiast | Lifelong Learner</p>
  <button id="themeBtn">Toggle Theme</button>
</header>

🟡 Main Content

<main class="container">

The main “body” where all sections go.

About Section
<section id="about">
  <h2>About Me</h2>
  <p>I am a fresher learning web and Python. This is my first portfolio.</p>
</section>

Skills Section
<section id="skills">
  <h2>Skills</h2>
  <ul class="tags">
    <li>HTML</li><li>CSS</li><li>JavaScript</li><li>Python</li>
  </ul>
</section>

Projects Section
<section id="projects">
  <h2>Projects</h2>
  <article class="card">
    <h3>Portfolio Website</h3>
    <p>A responsive personal website built with HTML/CSS/JS.</p>
    <a href="#" target="_blank">View</a>
  </article>
</section>

Contact Section
<section id="contact">
  <h2>Contact</h2>
  <form id="contactForm">
    <label>
      Name
      <input name="name" required />
    </label>
    <button type="submit">Send</button>
    <p id="formMsg" class="muted"></p>
  </form>
</section>

🔵 Footer

<footer class="container muted">© 2025 Your Name</footer>
<script src="script.js"></script>
</body>
</html>

2️⃣ styles.css — Dressing Up the Website

Think of CSS as painting, decorating, and arranging furniture.

:root { --bg:#0f172a; --fg:#e2e8f0; --accent:#38bdf8; --card:#111827; }
* { box-sizing: border-box; }
body { margin:0; font-family: system-ui; background:var(--bg); color:var(--fg); }
.container { width:min(1000px, 92%); margin-inline:auto; padding:1.5rem 0; }
.nav { display:flex; gap:1rem; flex-wrap:wrap; }
.tags li { background:#1f2937; padding:.4rem .7rem; border-radius:999px; }
.card { background:var(--card); padding:1rem; border-radius:14px; box-shadow:0 4px 20px rgba(0,0,0,.2); }
.light { --bg:#f8fafc; --fg:#0b1220; --card:#ffffff; }

3️⃣ script.js — Adding Interactivity

Think of JavaScript as the electricity in the house. It makes lights turn on (buttons work, forms respond).

Toggle Theme

const themeBtn = document.getElementById("themeBtn");
themeBtn.addEventListener("click", () =>
  document.body.classList.toggle("light")
);

Contact Form

const form = document.getElementById("contactForm");
const msg = document.getElementById("formMsg");
form.addEventListener("submit", (e) => {
  e.preventDefault(); // Stop page refresh
  const data = Object.fromEntries(new FormData(form).entries());
  if (!data.name || !data.email || !data.message) {
    msg.textContent = "Please fill all fields.";
    return;
  }
  msg.textContent = "Thanks! Your message was not really sent (demo).";
  form.reset();
});

4️⃣ How to Run


✅ Summary for Week 1

You just:

👉 This is your first step toward becoming a web developer 🚀.


Perfect 👍 Let’s make a Weekly Assignment Sheet + Grading Rubric for Month 2 – Week 2: Static Website (Portfolio).


📅 Week 1 – Assignment Sheet

Topic: Build a Personal Portfolio Website (HTML + CSS + JS)


📝 Tasks to Complete

Task 1 – File Setup (10 pts)


Task 2 – HTML Structure (25 pts)


Task 3 – CSS Styling (25 pts)


Task 4 – JavaScript Interactivity (25 pts)


Task 5 – Presentation (15 pts)


📂 Deliverables


🎯 Grading Rubric (100 pts total)

Criteria Excellent (Full Marks) Good (Partial Marks) Needs Improvement
File Setup (10) All files created & linked correctly Minor linking mistake Missing/incorrect setup
HTML Structure (25) All 4 sections present, proper semantic tags used Some sections incomplete/mis-tagged Missing major sections
CSS Styling (25) Consistent design, responsive, light/dark themes work Basic styling but not responsive OR missing theme toggle Very poor or no styling
JavaScript Interactivity (25) Theme toggle + form validation + success message work smoothly One feature missing/buggy JS not working at all
Presentation (15) Clean layout, correct details, personalized content Minor issues in readability or details Unclear, unpolished, or copy-paste content

⭐ Bonus Points (+10)


✅ Total Possible: 110 pts (100 base + 10 bonus) 💡 Passing score: 60 pts 🎖️ Certificate distinction: 90+ pts