Portfolio Website
Webpages
31 Aug 2025
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZfyWnKId0uNAkPUfZdWdxeZPD6ttdp3vCinaNcEKG2h_Frsszp-dg8XF0QLV1z9ALRFQKQHbGv-4wYoggqkOAqPnpVoAONrzAi_-2N45F6hbnWPnn4F7jmMzXWTefK8meZIL9Jd4GlYd9FqRhzkS1SZsQTDpB04P6GBm_JUQ7Aqq8_nCtNORJqX6VfweR/s1600/Portfolio%20Website.webp
Creative and professional portfolio website showcasing designs, projects, skills, achievements, and personal brand identity.
Unlocked
Portfolio Website - Complete Source Code & Tutorial

Portfolio Website

Project Overview & Introduction

Welcome to our comprehensive tutorial and source code guide for Portfolio Website. In modern frontend web development, creating interactive, visually appealing, and responsive user interfaces is one of the best ways to sharpen your coding skills and build projects that stand out in a professional portfolio. Whether you are a student learning the fundamentals of web design or an experienced developer looking for a clean, ready-to-use implementation, this complete guide walks you through everything you need to know.

In this post, we have combined the entire architecture of Portfolio Website—including semantic HTML5 markup, modern CSS3 styling with custom variables and animations, and dynamic JavaScript logic—into a single, easy-to-use code snippet. You do not need to juggle multiple files or complex build configurations to test this project. Simply review the video walkthrough below, explore how each layer of the interface works, and copy the complete source code to run it directly in your browser.

Before jumping straight into the code, we highly recommend watching the full video tutorial embedded below. It demonstrates the live behavior, responsive breakpoints, and subtle UI interactions that make Portfolio Website smooth, accessible, and user-friendly across both desktop and mobile devices.

Video Tutorial & Live Demo Walkthrough

Watch the step-by-step video demonstration below to see Portfolio Website in action. If you are new to setting up local HTML projects in your code editor, click the "How to set up this?" button right above the video player for quick instructions.

As shown in the video walkthrough, every visual element is carefully structured to maintain clean spacing, smooth transitions, and fast rendering performance. You can pause the video at any point to compare the visual output with the source code provided below.

Key Features & Technical Highlights

Building Portfolio Website involves combining several core frontend techniques that work together seamlessly. Here is a closer look at the primary features and engineering decisions included in this project:

Responsive Layout

Built using fluid CSS Flexbox and Grid layouts so the interface automatically adapts to mobile phones, tablets, laptops, and widescreen monitors.

Single-File Simplicity

All HTML structure, CSS styles, and JavaScript interactivity are merged into one complete snippet for instant testing and zero setup friction.

Modern UI & Styling

Features clean typography, balanced color contrast, smooth hover transitions, and well-organized CSS rules that are easy to customize.

Cross-Browser Ready

Uses standard, dependency-free web APIs that run reliably across Google Chrome, Mozilla Firefox, Microsoft Edge, and Apple Safari.

By studying how these components interact, you gain practical experience with DOM manipulation, event handling, and responsive styling. You can also reuse individual parts of this layout—such as cards, buttons, or interactive scripts—inside your own larger web applications.

Complete Source Code (All-in-One Snippet)

Below is the complete, ready-to-run source code for Portfolio Website. Unlike split tutorials where you have to copy HTML, CSS, and JavaScript separately and link them manually, everything here is combined into a single complete code block. Click the copy icon in the top-right corner of the code box to copy the entire file in one click.

Complete HTML, CSS & JavaScript Code

Click below to unlock the complete source code
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Tabrej Azam - Portfolio</title>
    <script src="https://unpkg.com/typed.js@2.1.0/dist/typed.umd.js"></script>
    <script src="https://unpkg.com/lucide@latest"></script>
    <style></style>
    <style>
:root {
     --primary-color: #000;
     --text-color: #1d1b1b;
     --text-gray: #323232;
     --bg-gray: #f9fafb;
     --white: #fff;
     --transition: 0.3s ease;
 }

 * {
     margin: 0;
     padding: 0;
     box-sizing: border-box;
 }

 html {
     scroll-behavior: smooth;
 }

 .blog-posts.hfeed.container {
     padding: 0;
 }

 body {
     font-family: system-ui, -apple-system, sans-serif;
     line-height: 1.5;
     color: var(--text-color);
 }

 .container {
     width: 100%;
     margin: 0 auto;
     padding: 0 1rem;
     background-color: var(--bg-main);
 }

 h2 {
     font-size: 3rem;
     font-weight: bold;
     line-height: normal;
     text-align: center;
     margin-bottom: 2rem;
 }

 /* Header */
 .header {
     position: fixed;
     width: 100%;
     background: rgba(255, 255, 255, 0.9);
     backdrop-filter: blur(8px);
     z-index: 50;
     box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
 }

 .header-content {
     display: flex;
     justify-content: space-between;
     align-items: center;
     padding: 1rem 0;
 }

 .logo {
     display: flex;
     align-items: center;
     gap: 0.5rem;
     font-weight: bold;
     font-size: 1.25rem;
 }

 .desktop-nav {
     display: none;
 }

 .mobile-menu-btn {
     background: none;
     border: none;
     cursor: pointer;
     padding: 0.5rem;
 }

 .mobile-nav {
     display: none;
     background: var(--white);
     border-top: 1px solid #eee;
 }

 .mobile-nav.active {
     display: block;
 }

 .mobile-nav a {
     display: block;
     padding: 0.75rem 4rem;
     color: var(--text-color);
     text-decoration: none;
 }

 .mobile-nav a:hover {
     background: var(--bg-gray);
 }

 @media (min-width: 768px) {
     .mobile-menu-btn {
         display: none;
     }

     .desktop-nav {
         display: flex;
         gap: 2rem;
     }

     .desktop-nav a {
         color: var(--text-color);
         text-decoration: none;
         transition: var(--transition);
     }

     .desktop-nav a:hover {
         color: var(--primary-color);
     }
 }

 @media (max-width: 768px) {
     .header-content {
         padding: 0.5rem;
     }
 }

 /* Hero Section */
 .hero {
     min-height: 100vh;
     padding-top: 5rem;
     display: flex;
     align-items: center;
 }

 .hero-content {
     display: grid;
     gap: 3rem;
     align-items: center;
 }

 .hero h1 {
     font-size: 2.3rem;
     line-height: 1.2;
     margin-bottom: 1.5rem;
 }

 .hero p {
     font-size: 1.25rem;
     color: var(--text-gray);
     margin-bottom: 2rem;
 }

 .cta-button {
     display: inline-flex;
     align-items: center;
     gap: 0.5rem;
     padding: 0.75rem 1.5rem;
     background: var(--primary-color);
     color: var(--white);
     text-decoration: none;
     border-radius: 9999px;
     border: 1px solid black;
     transition: var(--transition);
 }

 .cta-button:hover {
     color: var(--primary-color);
     background: var(--white);
     border: 1px solid black;
 }

 .hero-image {
     position: relative;
     border-radius: 0 1rem 10rem 2rem;
     overflow: hidden;
     transition: var(--transition);
 }

 .hero-image:hover {
     transform: scale(1.02);
 }

 .hero-image img {
     width: 100%;
     height: auto;
     display: block;
 }

 @media (min-width: 768px) {
     .hero-content {
         grid-template-columns: repeat(2, 1fr);
     }

     .hero h1 {
         font-size: 4rem;
     }
 }

 /* About Section */
 .about {
     padding: 5rem 0;
     background: var(--bg-gray);
 }

 .about-content {
     display: grid;
     gap: 3rem;
 }

 .achievements-grid {
     display: grid;
     grid-template-columns: repeat(2, 1fr);
     gap: 1.5rem;
     margin-top: 1.5rem;
 }

 .achievement {
     display: flex;
     align-items: center;
     gap: 0.75rem;
 }

 .key-achievements ul {
     list-style: none;
 }

 .key-achievements li {
     display: flex;
     align-items: start;
     margin-bottom: 1rem;
 }

 .key-achievements span {
     width: 1.5rem;
     height: 1.5rem;
     background: var(--primary-color);
     color: var(--white);
     border-radius: 50%;
     display: flex;
     align-items: center;
     justify-content: center;
     font-size: 0.875rem;
     margin-right: 0.75rem;
 }

 .key-achievements h3 {
     padding-bottom: 1rem;
 }

 svg.lucide.lucide-award,
 svg.lucide.lucide-briefcase {
     width: 40px;
     height: 24px;
 }

 svg.lucide.lucide-graduation-cap {
     width: 24px;
     height: 24px;
 }

 @media (min-width: 768px) {
     .about-content {
         grid-template-columns: repeat(2, 1fr);
     }
 }

 /* Expertise Section */
 .expertise {
     padding: 5rem 0;
 }

 .skills-grid {
     display: grid;
     gap: 2rem;
 }

 .skill-card {
     background: var(--white);
     padding: 1.5rem;
     border-radius: 0.75rem;
     box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
     transition: var(--transition);
 }

 .skill-card:hover {
     box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1);
 }

 .skill-header {
     display: flex;
     align-items: center;
     gap: 0.75rem;
     margin-bottom: 1rem;
 }

 .skill-header h3 {
     font-size: 1.25rem;
 }

 .skill-bar {
     width: 100%;
     height: 0.625rem;
     background: #eee;
     border-radius: 9999px;
     overflow: hidden;
     margin-bottom: 0.5rem;
 }

 .skill-progress {
     height: 100%;
     background: var(--primary-color);
     border-radius: 9999px;
     transition: width 1s ease-out;
 }

 @media (min-width: 768px) {
     .skills-grid {
         grid-template-columns: repeat(3, 1fr);
     }
 }

 /* Projects Section */
 .projects {
     padding: 5rem 0;
     background: var(--bg-gray);
 }

 .projects-carousel {
     position: relative;
 }

 .projects-container {
     display: flex;
     gap: 1.5rem;
     overflow-x: auto;
     scroll-behavior: smooth;
     scrollbar-width: none;
     padding: 1rem 0;
 }

 .projects-container::-webkit-scrollbar {
     display: none;
 }

 .project-card {
     min-width: 300px;
     background: var(--white);
     border-radius: 0.75rem;
     overflow: hidden;
     box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
 }

 .project-image {
     position: relative;
     overflow: hidden;
 }

 .project-image img {
     width: 100%;
     height: 12rem;
     object-fit: cover;
     transition: var(--transition);
 }

 .project-card:hover .project-image img {
     transform: scale(1.1);
 }

 .project-overlay {
     position: absolute;
     inset: 0;
     background: rgba(0, 0, 0, 0.5);
     display: flex;
     align-items: center;
     justify-content: center;
     opacity: 0;
     transition: var(--transition);
 }

 .project-card:hover .project-overlay {
     opacity: 1;
 }

 .view-project {
     display: flex;
     align-items: center;
     gap: 0.5rem;
     padding: 0.5rem 1rem;
     background: var(--white);
     color: var(--primary-color);
     border: none;
     border-radius: 9999px;
     cursor: pointer;
 }

 .project-info {
     padding: 1.5rem;
 }

 .carousel-btn {
     position: absolute;
     top: 50%;
     transform: translateY(-50%);
     background: var(--white);
     border: none;
     border-radius: 50%;
     width: 2.5rem;
     height: 2.5rem;
     display: flex;
     align-items: center;
     justify-content: center;
     cursor: pointer;
     box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
     z-index: 10;
 }

 .carousel-btn.prev {
     left: 0;
 }

 .carousel-btn.next {
     right: 0;
 }

 @media (min-width: 768px) {
     .project-card {
         min-width: 400px;
     }
 }

 /* Modal Styles */
 .modal-overlay {
     position: fixed;
     top: 0;
     left: 0;
     width: 100%;
     height: 100%;
     background: rgba(0, 0, 0, 0.8);
     display: flex;
     align-items: center;
     justify-content: center;
     z-index: 1000;
     opacity: 0;
     visibility: hidden;
     transition: all var(--transition);
 }

 .modal-overlay.active {
     opacity: 1;
     visibility: visible;
 }

 .modal-container {
     background: var(--white);
     border-radius: 1rem;
     max-width: 90vw;
     max-height: 90vh;
     width: 600px;
     position: relative;
     transform: scale(0.8);
     transition: transform var(--transition);
 }

 .modal-overlay.active .modal-container {
     transform: scale(1);
 }

 .modal-header {
     display: flex;
     justify-content: space-between;
     align-items: center;
     padding: 1.5rem;
     border-bottom: 1px solid #eee;
 }

 .modal-title {
     font-size: 1.5rem;
     font-weight: bold;
     margin: 0;
 }

 .modal-close {
     background: none;
     border: none;
     cursor: pointer;
     padding: 0.5rem;
     border-radius: 50%;
     display: flex;
     align-items: center;
     justify-content: center;
     transition: var(--transition);
 }

 .modal-close:hover {
     background: var(--bg-gray);
 }

 .modal-body {
     padding: 1.5rem;
     max-height: 70vh;
     overflow-y: auto;
 }

 .modal-images {
     display: flex;
     flex-direction: column;
     gap: 1rem;
 }

 .modal-image {
     width: 100%;
     border-radius: 0.5rem;
     overflow: hidden;
     box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
     transition: var(--transition);
 }

 .modal-image:hover {
     transform: scale(1.02);
 }

 .modal-image img {
     width: 100%;
     height: auto;
     display: block;
 }

 .modal-image-title {
     padding: 1rem;
     background: var(--bg-gray);
     font-weight: 500;
     text-align: center;
 }

 /* Scrollbar Styles for Modal */
 .modal-body::-webkit-scrollbar {
     width: 8px;
 }

 .modal-body::-webkit-scrollbar-track {
     background: #f1f1f1;
     border-radius: 10px;
 }

 .modal-body::-webkit-scrollbar-thumb {
     background: #ccc;
     border-radius: 10px;
 }

 .modal-body::-webkit-scrollbar-thumb:hover {
     background: #999;
 }

 @media (max-width: 768px) {
     .modal-container {
         width: 95vw;
         max-height: 85vh;
     }

     .modal-header {
         padding: 1rem;
     }

     .modal-body {
         padding: 1rem;
         max-height: 65vh;
     }

     .modal-title {
         font-size: 1.25rem;
     }
 }

 /* Contact Section */
 .contact {
     padding-top: 5rem;
     padding-bottom: 1rem;
 }

 .contact-content {
     display: grid;
     gap: 3rem;
 }

 .contact-image {
     position: relative;
     border-radius: 10rem 0 10rem 0;
     overflow: hidden;
 }

 .contact-image img {
     width: 100%;
     height: auto;
     display: block;
     transition: var(--transition);
 }

 .contact-image:hover img {
     transform: scale(1.02);
 }

 .contact-info {
     display: flex;
     flex-direction: column;
     gap: 2rem;
 }

 .contact-item {
     display: flex;
     align-items: center;
     gap: 1rem;
 }

 .icon-wrapper {
     padding: 0.75rem;
     background: var(--bg-gray);
     border-radius: 9999px;
     width: 3rem;
     height: 3rem;
     transition: var(--transition);
     display: flex;
     justify-content: center;
     align-items: center;
 }

 .contact-item:hover .icon-wrapper {
     background: var(--primary-color);
     color: var(--white);
 }

 .label {
     font-size: 0.875rem;
     color: var(--text-gray);
 }

 @media (min-width: 768px) {
     .contact-content {
         grid-template-columns: repeat(2, 1fr);
     }
 }

 /* Footer */
 .footer {
     background: var(--primary-color);
     color: var(--white);
     padding: 1rem 0;
     position: relative;
 }

 .footer-content {
     display: flex;
     justify-content: center;
     align-items: center;
 }

 .footer-info .copyright {
     color: #999;
 }

 #scroll-top {
     position: fixed;
     bottom: 2rem;
     right: 2rem;
     background: var(--primary-color);
     color: var(--white);
     width: 3rem;
     height: 3rem;
     border: none;
     border-radius: 50%;
     display: flex;
     align-items: center;
     justify-content: center;
     cursor: pointer;
     box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
     transition: var(--transition);
     opacity: 0;
     visibility: hidden;
 }

 #scroll-top.visible {
     opacity: 1;
     visibility: visible;
 }

 #scroll-top:hover {
     background: #333;
 }
  </style>
</head>
  <body>
    <!-- Header -->
    <header class="header">
      <div class="container">
        <div class="header-content">
          <div class="logo">
            <i data-lucide="target"></i>
            <span>Tabrej Azam</span>
          </div>
          <nav class="desktop-nav">
            <a href="#home">Home</a>
            <a href="#about">About</a>
            <a href="#expertise">Expertise</a>
            <a href="#projects">Projects</a>
            <a href="#contact">Contact</a>
          </nav>
          <button class="mobile-menu-btn" aria-label="Toggle menu">
            <i data-lucide="menu"></i>
          </button>
        </div>
      </div>
      <nav class="mobile-nav">
        <a href="#home">Home</a>
        <a href="#about">About</a>
        <a href="#expertise">Expertise</a>
        <a href="#projects">Projects</a>
        <a href="#contact">Contact</a>
      </nav>
    </header>

    <!-- Hero Section -->
    <section id="home" class="hero">
      <div class="container">
        <div class="hero-content">
          <div class="hero-text">
            <h1>
              Hi, I'm Tabrej Azam
              <br />
              <span class="text-gray">
                I'm a <span id="typed-text"></span>
              </span>
            </h1>
            <p>
              "I am an excellent digital designer. I have the ability to
              understand clients' needs in the best possible way. The designs
              that clients request, I create even better ones that make them
              happy. You can give me a chance to prove myself."
            </p>
            <a href="#contact" class="cta-button">
              Give Me a Chance
              <i data-lucide="arrow-right"></i>
            </a>
          </div>
          <div class="hero-image">
            <img
              src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj8vNoNctO5ES9mUvNxwtVOcfFOl_BCC6LTgAU4bLcQmuFlTuoHd180QJGN1UxFiBO_u2ubOIoLnSTQhkSUV9b2SEWtbqcb7tmyZskYYgBSF12s_LDtzD1pNqQo5THIf16tJ3lHE6tEqFktnTZjbGC7KiXwWnmxmhPsN15FpuJt3ttV_1_UbdhDE4-b8U/s1600/1737831626750.webp"
              alt="Tabrej Azam"
            />
          </div>
        </div>
      </div>
    </section>

    <!-- About Section -->
    <section id="about" class="about">
      <div class="container">
        <h2>About Me</h2>
        <div class="about-content">
          <div class="about-text">
            <p>
              With extensive experience in digital design, I have created over
              800+ designs and helped 27+ clients grow their social media
              accounts. I specialize in understanding client needs and
              translating them into creative, innovative solutions that exceed
              expectations. My focus is on crafting user-centered designs that
              seamlessly combine aesthetics and functionality, delivering
              impactful visuals and engaging experiences that drive results.
            </p>
            <div class="achievements-grid">
              <div class="achievement">
                <i data-lucide="award"></i>
                <span>Certified by Canva "Design Guru"</span>
              </div>
              <div class="achievement">
                <i data-lucide="briefcase"></i>
                <span>3+ years experience</span>
              </div>
              <div class="achievement">
                <i data-lucide="graduation-cap"></i>
                <span>Diploma in Design</span>
              </div>
            </div>
          </div>
          <div class="key-achievements">
            <h3>Key Achievements</h3>
            <ul>
              <li><span>1</span>I have created nearly 800+ digital designs</li>
              <li><span>2</span>Managed and Grown 17+ clients' social media</li>
              <li><span>3</span>Received Canva's 'Design Guru' certificate</li>
            </ul>
          </div>
        </div>
      </div>
    </section>

    <!-- Expertise Section -->
    <section id="expertise" class="expertise">
      <div class="container">
        <h2>Expertise</h2>
        <div class="skills-grid">
          <div class="skill-card">
            <div class="skill-header">
              <i data-lucide="paintbrush"></i>
              <h3>Canva</h3>
            </div>
            <div class="skill-bar">
              <div class="skill-progress" style="width: 95%"></div>
            </div>
            <span>95% proficiency</span>
          </div>
          <div class="skill-card">
            <div class="skill-header">
              <i data-lucide="image"></i>
              <h3>Photoshop</h3>
            </div>
            <div class="skill-bar">
              <div class="skill-progress" style="width: 70%"></div>
            </div>
            <span>70% proficiency</span>
          </div>
          <div class="skill-card">
            <div class="skill-header">
              <i data-lucide="palette"></i>
              <h3>Figma</h3>
            </div>
            <div class="skill-bar">
              <div class="skill-progress" style="width: 65%"></div>
            </div>
            <span>65% proficiency</span>
          </div>
        </div>
      </div>
    </section>

    <!-- Projects Section -->
    <section id="projects" class="projects">
      <div class="container">
        <h2>New Projects</h2>
        <div class="projects-carousel">
          <button class="carousel-btn prev">
            <i data-lucide="arrow-left"></i>
          </button>
          <div class="projects-container">
            <div class="project-card">
              <div class="project-image">
                <img
                  src="https://images.unsplash.com/photo-1522542550221-31fd19575a2d?auto=format&fit=crop&q=80&w=800"
                  alt="Brand Identity Design"
                />
                <div class="project-overlay">
                  <button class="view-project" data-project="brand">
                    View Project
                    <i data-lucide="chart-no-axes-gantt"></i>
                  </button>
                </div>
              </div>
              <div class="project-info">
                <h3>Brand Identity Design</h3>
                <p>Complete brand redesign for a tech startup</p>
              </div>
            </div>
            <div class="project-card">
              <div class="project-image">
                <img
                  src="https://images.unsplash.com/photo-1507238691740-187a5b1d37b8?auto=format&fit=crop&q=80&w=800"
                  alt="Mobile App UI"
                />
                <div class="project-overlay">
                  <button class="view-project" data-project="mobile">
                    View Project
                    <i data-lucide="chart-no-axes-gantt"></i>
                  </button>
                </div>
              </div>
              <div class="project-info">
                <h3>Mobile App UI</h3>
                <p>User interface design for a fitness tracking app</p>
              </div>
            </div>
            <div class="project-card">
              <div class="project-image">
                <img
                  src="https://images.unsplash.com/photo-1531403009284-440f080d1e12?auto=format&fit=crop&q=80&w=800"
                  alt="Website Redesign"
                />
                <div class="project-overlay">
                  <button class="view-project" data-project="website">
                    View Project
                    <i data-lucide="chart-no-axes-gantt"></i>
                  </button>
                </div>
              </div>
              <div class="project-info">
                <h3>Website Redesign</h3>
                <p>E-commerce website redesign project</p>
              </div>
            </div>
            <div class="project-card">
              <div class="project-image">
                <img
                  src="https://images.unsplash.com/photo-1531403009284-440f080d1e12?auto=format&fit=crop&q=80&w=800"
                  alt="Website Redesign"
                />
                <div class="project-overlay">
                  <button class="view-project" data-project="digital">
                    View Project
                    <i data-lucide="chart-no-axes-gantt"></i>
                  </button>
                </div>
              </div>
              <div class="project-info">
                <h3>Digital Marketing</h3>
                <p>Social media campaign design</p>
              </div>
            </div>
            <div class="project-card">
              <div class="project-image">
                <img
                  src="https://images.unsplash.com/photo-1531403009284-440f080d1e12?auto=format&fit=crop&q=80&w=800"
                  alt="Website Redesign"
                />
                <div class="project-overlay">
                  <button class="view-project" data-project="logo">
                    View Project
                    <i data-lucide="chart-no-axes-gantt"></i>
                  </button>
                </div>
              </div>
              <div class="project-info">
                <h3>Logo Design</h3>
                <p>Creative logo design portfolio</p>
              </div>
            </div>
            <div class="project-card">
              <div class="project-image">
                <img
                  src="https://images.unsplash.com/photo-1531403009284-440f080d1e12?auto=format&fit=crop&q=80&w=800"
                  alt="Website Redesign"
                />
                <div class="project-overlay">
                  <button class="view-project" data-project="print">
                    View Project
                    <i data-lucide="chart-no-axes-gantt"></i>
                  </button>
                </div>
              </div>
              <div class="project-info">
                <h3>Print Design</h3>
                <p>Business cards and brochure design</p>
              </div>
            </div>
          </div>
          <button class="carousel-btn next">
            <i data-lucide="arrow-right"></i>
          </button>
        </div>
      </div>
    </section>

    <!-- Projects Modal -->
    <div class="modal-overlay" id="projectModal">
      <div class="modal-container">
        <div class="modal-header">
          <h3 class="modal-title" id="modalTitle">Project Gallery</h3>
          <button class="modal-close" id="closeModal">
            <i data-lucide="x"></i>
          </button>
        </div>
        <div class="modal-body">
          <div class="modal-images" id="modalImages">
            <!-- Images will be dynamically loaded here -->
          </div>
        </div>
      </div>
    </div>

    <!-- Contact Section -->
    <section id="contact" class="contact">
      <div class="container">
        <h2>Give a Shot</h2>
        <div class="contact-content">
          <div class="contact-image">
            <img
              src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh99fxqHXaOdchDQ06Z_6OVRxbYkwCt4bS8koCHz8kKXZDqXt8cmW9mgrmP7EmrFjIwQ66QQzrcR8yRcEEhZshTpyYC-2YDOlqls1M6bx22rx9DbFfoI5Y7GAG0TFDjQ5Ijn_OlfrQgxuDHJXdCEVHVlqLk687xmmFisa18FS3m-NFYGt3O0s8upD8p0UY/s1600/1737809473088.webp"
              alt="Tabrej Azam"
            />
          </div>
          <div class="contact-info">
            <div class="contact-item">
              <div class="icon-wrapper">
                <i data-lucide="mail"></i>
              </div>
              <div>
                <p class="label">Email</p>
                <p class="value">youremail@gmail.com</p>
              </div>
            </div>
            <div class="contact-item">
              <div class="icon-wrapper">
                <i data-lucide="phone"></i>
              </div>
              <div>
                <p class="label">Phone</p>
                <p class="value">+00 9875432160</p>
              </div>
            </div>
            <div class="contact-item">
              <div class="icon-wrapper">
                <i data-lucide="globe"></i>
              </div>
              <div>
                <p class="label">Website</p>
                <p class="value">www.yourwebsite.com</p>
              </div>
            </div>
            <div class="contact-item">
              <div class="icon-wrapper">
                <i data-lucide="map-pin"></i>
              </div>
              <div>
                <p class="label">Location</p>
                <p class="value">yourcity, yourstate, Country - pincode</p>
              </div>
            </div>
          </div>
        </div>
      </div>
    </section>

    <!-- Footer -->
    <footer class="footer">
      <div class="container">
        <div class="footer-content">
          <div class="footer-info">
            <p class="copyright">
              © <span id="year"></span> All rights reserved.
            </p>
          </div>
        </div>
      </div>
      <button id="scroll-top" aria-label="Scroll to top">
        <i data-lucide="arrow-up"></i>
      </button>
    </footer>

    <Script></Script>
    <script>
// Sample project data
const projectData = {
    brand: {
        title: "Brand Identity Design",
        images: [
            {
                url: "#",
                title: "Logo Design Concept",
            },
            {
                url: "#",
                title: "Brand Color Palette",
            },
            {
                url: "#",
                title: "Business Card Design",
            },
            {
                url: "#",
                title: "Brand Guidelines",
            },
            {
                url: "#",
                title: "Brand Application",
            },
        ],
    },
    mobile: {
        title: "Mobile App UI Design",
        images: [
            {
                url: "#",
                title: "App Onboarding Screen",
            },
            {
                url: "#",
                title: "Dashboard Interface",
            },
            {
                url: "#",
                title: "User Profile Screen",
            },
            {
                url: "#",
                title: "Settings Interface",
            },
        ],
    },
    website: {
        title: "Website Design Portfolio",
        images: [
            {
                url: "#",
                title: "Homepage Design",
            },
            {
                url: "#",
                title: "Product Page Layout",
            },
            {
                url: "#",
                title: "Contact Form Design",
            },
            {
                url: "#",
                title: "About Page Layout",
            },
            {
                url: "#",
                title: "Blog Section Design",
            },
        ],
    },
    digital: {
        title: "Digital Marketing Designs",
        images: [
            {
                url: "#",
                title: "Social Media Post Design",
            },
            {
                url: "#",
                title: "Instagram Story Template",
            },
            {
                url: "#",
                title: "Facebook Ad Design",
            },
            {
                url: "#",
                title: "Email Campaign Design",
            },
        ],
    },
    logo: {
        title: "Logo Design Collection",
        images: [
            {
                url: "#",
                title: "Tech Startup Logo",
            },
            {
                url: "#",
                title: "Restaurant Logo Design",
            },
            {
                url: "#",
                title: "Fashion Brand Logo",
            },
            {
                url: "#",
                title: "Corporate Identity",
            },
            {
                url: "#",
                title: "Minimalist Logo Design",
            },
        ],
    },
    print: {
        title: "Print Design Projects",
        images: [
            {
                url: "#",
                title: "Business Card Collection",
            },
            {
                url: "#",
                title: "Brochure Design",
            },
            {
                url: "#",
                title: "Flyer Design",
            },
            {
                url: "#",
                title: "Poster Design",
            },
        ],
    },
};

// Initialize Typed.js
const typed = new Typed("#typed-text", {
    strings: ["UI/UX Designer", "Digital Artist", " Web Designer"],
    typeSpeed: 50,
    backSpeed: 50,
    loop: true,
});

// Mobile Menu Toggle
const menuBtn = document.querySelector(".mobile-menu-btn");
const mobileNav = document.querySelector(".mobile-nav");
const menuIcon = menuBtn.querySelector('[data-lucide="menu"]');

menuBtn.addEventListener("click", () => {
    mobileNav.classList.toggle("active");
    const isOpen = mobileNav.classList.contains("active");
    menuIcon.setAttribute("data-lucide", isOpen ? "x" : "menu");
    lucide.createIcons();
});

// Projects Carousel
const projectsContainer = document.querySelector(".projects-container");
const prevBtn = document.querySelector(".carousel-btn.prev");
const nextBtn = document.querySelector(".carousel-btn.next");

prevBtn.addEventListener("click", () => {
    projectsContainer.scrollBy({ left: -400, behavior: "smooth" });
});

nextBtn.addEventListener("click", () => {
    projectsContainer.scrollBy({ left: 400, behavior: "smooth" });
});

// Modal Functionality
const modal = document.getElementById("projectModal");
const modalTitle = document.getElementById("modalTitle");
const modalImages = document.getElementById("modalImages");
const closeModal = document.getElementById("closeModal");

// Open modal function
function openModal(projectType) {
    const project = projectData[projectType];
    if (!project) return;

    modalTitle.textContent = project.title;

    // Clear previous images
    modalImages.innerHTML = "";

    // Add new images
    project.images.forEach((image) => {
        const imageDiv = document.createElement("div");
        imageDiv.className = "modal-image";
        imageDiv.innerHTML = `
            <img src="${image.url}" alt="${image.title}" />
            <div class="modal-image-title">${image.title}</div>
          `;
        modalImages.appendChild(imageDiv);
    });

    modal.classList.add("active");
    document.body.style.overflow = "hidden";
}

// Close modal function
function closeModalFunction() {
    modal.classList.remove("active");
    document.body.style.overflow = "auto";
}

// Event listeners for modal
closeModal.addEventListener("click", closeModalFunction);

modal.addEventListener("click", (e) => {
    if (e.target === modal) {
        closeModalFunction();
    }
});

// Event listeners for view project buttons
document.querySelectorAll(".view-project").forEach((button) => {
    button.addEventListener("click", (e) => {
        e.preventDefault();
        const projectType = button.getAttribute("data-project");
        openModal(projectType);
    });
});

// Escape key to close modal
document.addEventListener("keydown", (e) => {
    if (e.key === "Escape" && modal.classList.contains("active")) {
        closeModalFunction();
    }
});

// Scroll to Top Button
const scrollTopBtn = document.getElementById("scroll-top");

window.addEventListener("scroll", () => {
    if (window.pageYOffset > 500) {
        scrollTopBtn.classList.add("visible");
    } else {
        scrollTopBtn.classList.remove("visible");
    }
});

scrollTopBtn.addEventListener("click", () => {
    window.scrollTo({ top: 0, behavior: "smooth" });
});

// Update Copyright Year
document.getElementById("year").textContent = new Date().getFullYear();

// Initialize Lucide Icons
lucide.createIcons();

// Intersection Observer for Skill Bars Animation
const skillBars = document.querySelectorAll(".skill-progress");
const observer = new IntersectionObserver(
    (entries) => {
        entries.forEach((entry) => {
            if (entry.isIntersecting) {
                entry.target.style.width =
                    entry.target.parentElement.dataset.progress;
            }
        });
    },
    { threshold: 0.5 }
);

skillBars.forEach((bar) => observer.observe(bar));

// Smooth Scroll for Navigation Links
document.querySelectorAll('a[href^="#"]').forEach((anchor) => {
    anchor.addEventListener("click", (e) => {
        e.preventDefault();
        const target = document.querySelector(anchor.getAttribute("href"));
        if (target) {
            target.scrollIntoView({ behavior: "smooth" });
            // Close mobile menu if open
            mobileNav.classList.remove("active");
            menuIcon.setAttribute("data-lucide", "menu");
            lucide.createIcons();
        }
    });
});
  </script>
</body>
</html>

Once you have copied the code above, open your favorite text editor (such as Visual Studio Code, Sublime Text, or Notepad++), paste the code into a new file, and save it as index.html. Double click the saved file to launch it directly in your web browser.

Step-by-Step Setup & Customization Guide

Want to understand how Portfolio Website works under the hood or customize it for your own personal project? Follow this step-by-step breakdown to set up, edit, and personalize the code:

Step 1: Create Your Project File

Start by creating a dedicated folder on your computer for this project. Inside that folder, create a new file named index.html. Because the code snippet above already includes the internal <style> and <script> tags, saving everything inside a single .html file is all you need to get started immediately.

Step 2: Explore the HTML Structure

Inspect the body section of the code to see how the main containers, headings, buttons, and interactive elements are arranged. Clean class names and semantic tags make it easy to add new sections, change text labels, or embed this component inside an existing webpage.

Step 3: Customize Colors, Fonts & Spacing

Scroll to the <style> section at the top of the document to modify the visual theme. You can adjust background colors, border radius values, box shadows, font sizes, and keyframe animations to match your brand identity. Using browser DevTools (press F12) allows you to preview style changes in real time.

Step 4: Test & Extend JavaScript Logic

Finally, review the <script> block at the bottom of the file. It handles user interactions, DOM updates, and dynamic states. Try tweaking timing values, adding new event listeners, or connecting the UI to local storage or external APIs to take your project to the next level.

Frequently Asked Questions (FAQ)

Here are answers to the most common questions developers ask when working with Portfolio Website:

1. Do I need to create separate CSS and JS files to run this code?

No! The complete source code is provided in a single all-in-one snippet that already contains the HTML structure, CSS styles, and JavaScript code. You only need to paste it into one index.html file and open it in any browser.

2. Can I separate the CSS and JavaScript into external files later?

Yes, absolutely. For larger production websites, you can move the contents inside the <style> tag into a style.css file (linked with <link rel="stylesheet" href="style.css">) and move the <script> contents into a script.js file.

3. Why are icons or fonts not loading when I test offline?

If the project uses external CDN libraries like Google Fonts or FontAwesome icons, make sure you have an active internet connection when opening the file so your browser can fetch those stylesheets.

4. Is this project mobile-friendly and responsive?

Yes, the layout is designed with responsive CSS rules and viewport meta settings so it scales cleanly on smartphones, tablets, and desktop screens alike.

Conclusion & Final Thoughts

We hope this complete tutorial and single-snippet source code for Portfolio Website helps you build faster and learn new frontend development techniques. Hands-on practice is the most effective way to master HTML, CSS, and JavaScript, so do not hesitate to experiment with the code, change the layout, and add your own creative features.

If you found this guide helpful, be sure to bookmark this page for future reference and watch the complete video tutorial above. Stay tuned for more interactive web development projects, UI components, and coding tutorials!