Back to Carousel
Portfolio Website Homepage

Portfolio Website Home Page

Create a modern, clean, professional and fully responsive Portfolio Website Home Page using HTML5, CSS3, Bootstrap 5 and JavaScript.

#portfolio#personal portfolio#homepage#hero#bootstrap#responsive#carousel#landing page

Live preview

Source code

html
<div class="container">
  <!-- Hero Banner Section -->
  <section class="py-5 overflow-hidden">
    <div id="heroPortfolioCarousel" class="carousel slide carousel-fade" data-bs-ride="carousel">
      <!-- Carousel Indicators -->
      <div class="carousel-indicators mb-0">
        <button type="button" data-bs-target="#heroPortfolioCarousel" data-bs-slide-to="0" class="active bg-primary"></button>
        <button type="button" data-bs-target="#heroPortfolioCarousel" data-bs-slide-to="1" class="bg-primary"></button>
        <button type="button" data-bs-target="#heroPortfolioCarousel" data-bs-slide-to="2" class="bg-primary"></button>
      </div>

      <div class="carousel-inner rounded-5 shadow-lg bg-white" style="min-height: 500px;">
        <!-- Slide 1: Welcome -->
        <div class="carousel-item active p-4 p-md-5" data-bs-interval="5000">
          <div class="row align-items-center g-5 animation-container">
            <div class="col-lg-6 order-2 order-lg-1 text-center text-lg-start">
              <span class="badge bg-primary-subtle text-primary px-3 py-2 rounded-pill mb-3 fw-bold">Available for Hire</span>
              <h1 class="display-3 fw-black mb-2">I'm <span class="text-primary">Alex Rivera</span></h1>
              <h2 class="h3 fw-light text-secondary mb-4">Senior Full-Stack Developer</h2>
              <p class="lead text-muted mb-5">Crafting high-performance web applications and intuitive user experiences with over 8 years of industry expertise.</p>
              <div class="d-flex flex-column flex-md-row gap-3 justify-content-center justify-content-lg-start">
                <a href="#contact" class="btn btn-primary btn-lg px-4 py-3 rounded-pill shadow">
                  <i class="bi bi-send-fill me-2"></i> Hire Me Now
                </a>
                <a href="#" class="btn btn-outline-dark btn-lg px-4 py-3 rounded-pill">
                  <i class="bi bi-download me-2"></i> Download CV
                </a>
              </div>
            </div>
            <div class="col-lg-6 order-1 order-lg-2 text-center position-relative">
              <div class="profile-blob-bg mx-auto">
                <img src="https://i.pravatar.cc/500?u=a042581f4e29026704d" alt="Alex Rivera" class="img-fluid rounded-circle border border-5 border-white shadow-lg profile-img animate-float">
              </div>
            </div>
          </div>
        </div>

        <!-- Slide 2: Tech Stack -->
        <div class="carousel-item p-4 p-md-5" data-bs-interval="5000">
          <div class="row align-items-center g-5">
            <div class="col-lg-6 order-2 order-lg-1 text-center text-lg-start">
              <h2 class="display-4 fw-bold mb-4">Modern Stack <br><span class="text-success">Clean Code</span></h2>
              <p class="lead text-muted mb-4">Specializing in React, Node.js, and Cloud Architecture to build scalable solutions for modern businesses.</p>
              <div class="row g-3 mb-5">
                <div class="col-4 text-center">
                  <i class="bi bi-patch-check-fill text-success fs-1"></i>
                  <p class="small fw-bold mt-2">Scale</p>
                </div>
                <div class="col-4 text-center">
                  <i class="bi bi-speedometer2 text-info fs-1"></i>
                  <p class="small fw-bold mt-2">Speed</p>
                </div>
                <div class="col-4 text-center">
                  <i class="bi bi-shield-lock-fill text-warning fs-1"></i>
                  <p class="small fw-bold mt-2">Security</p>
                </div>
              </div>
              <button class="btn btn-dark btn-lg px-5 rounded-pill shadow-sm">View Portfolio</button>
            </div>
            <div class="col-lg-6 order-1 order-lg-2 text-center">
              <div class="p-5 bg-light rounded-circle d-inline-block shadow-inner">
                <i class="bi bi-laptop text-primary display-1 animate-pulse"></i>
              </div>
            </div>
          </div>
        </div>

        <!-- Slide 3: Collaborative -->
        <div class="carousel-item p-4 p-md-5" data-bs-interval="5000">
          <div class="row align-items-center g-5">
            <div class="col-lg-6 order-2 order-lg-1 text-center text-lg-start">
              <h2 class="display-4 fw-bold mb-4">Focus on <br><span class="text-info">UI/UX Design</span></h2>
              <p class="lead text-muted mb-4">I believe that every line of code should contribute to a seamless and beautiful user journey.</p>
              <div class="d-flex gap-3 justify-content-center justify-content-lg-start flex-wrap">
                <span class="badge rounded-pill bg-light text-dark border p-3 fs-6">#MobileFirst</span>
                <span class="badge rounded-pill bg-light text-dark border p-3 fs-6">#Accessibility</span>
                <span class="badge rounded-pill bg-light text-dark border p-3 fs-6">#UserTesting</span>
              </div>
              <div class="mt-5">
                <a href="#" class="btn btn-info text-white btn-lg px-5 rounded-pill shadow-sm fw-bold">My Process</a>
              </div>
            </div>
            <div class="col-lg-6 order-1 order-lg-2 text-center">
              <img src="https://images.unsplash.com/photo-1551434678-e076c223a692?auto=format&fit=crop&q=80&w=600" alt="Work Process" class="img-fluid rounded-4 shadow rotate-img">
            </div>
          </div>
        </div>
      </div>

      <!-- Custom Controls -->
      <button class="carousel-control-prev w-auto ps-3" type="button" data-bs-target="#heroPortfolioCarousel" data-bs-slide="prev">
        <span class="carousel-control-prev-icon bg-dark rounded-circle p-3" aria-hidden="true"></span>
      </button>
      <button class="carousel-control-next w-auto pe-3" type="button" data-bs-target="#heroPortfolioCarousel" data-bs-slide="next">
        <span class="carousel-control-next-icon bg-dark rounded-circle p-3" aria-hidden="true"></span>
      </button>
    </div>
  </section>

  <!-- Style for animations & decorative elements -->
  <style>
    .profile-img {
      max-width: 380px;
      z-index: 2;
    }

    .profile-blob-bg {
      background: linear-gradient(45deg, #0d6efd22, #0dcaf022);
      border-radius: 62% 38% 52% 48% / 51% 43% 57% 49%;
      padding: 20px;
      animation: blobAnimate 8s ease-in-out infinite;
    }

    .animate-float {
      animation: float 6s ease-in-out infinite;
    }

    .animate-pulse {
      animation: pulse 3s infinite;
    }

    .rotate-img {
      transform: rotate(3deg);
      transition: transform 0.5s ease;
    }

    .rotate-img:hover {
      transform: rotate(0deg);
    }

    @keyframes blobAnimate {
      0% {
        border-radius: 62% 38% 52% 48% / 51% 43% 57% 49%;
      }

      50% {
        border-radius: 40% 60% 35% 65% / 45% 55% 45% 55%;
      }

      100% {
        border-radius: 62% 38% 52% 48% / 51% 43% 57% 49%;
      }
    }

    @keyframes float {

      0%,
      100% {
        transform: translateY(0);
      }

      50% {
        transform: translateY(-20px);
      }
    }

    @keyframes pulse {
      0% {
        transform: scale(1);
        opacity: 1;
      }

      50% {
        transform: scale(1.1);
        opacity: 0.8;
      }

      100% {
        transform: scale(1);
        opacity: 1;
      }
    }

    .fw-black {
      font-weight: 900;
    }

    .carousel-item {
      transition: transform 0.8s ease-in-out, opacity 0.8s ease-in-out;
    }

    @media (max-width: 768px) {
      .profile-img {
        max-width: 250px;
      }

      .display-3 {
        font-size: 2.5rem;
      }
    }

  </style>
</div>
How to use this portfolio website homepage

Add it to your project in three steps

  1. Copy the HTML from the Source code tab above and paste it inside your <div class="container"> wrapper.
  2. Make sure the Bootstrap 5 CDN CSS and JS are linked in your <head> and before </body>. Any CodeShikhi component assumes Bootstrap 5.3+ is already loaded.
  3. Swap the placeholder text, links, and images for your own content — the layout, spacing, and responsive behaviour stay intact.

The Portfolio Website Home Page block is fully responsive and works on every screen from 320 px phones to 1440 px+ desktops without additional CSS.

Accessibility checklist

Ship it accessible by default

  • Use semantic HTML landmarks — <header>, <nav>, <main>, <footer> — so screen readers can navigate your page.
  • Give every image an alt attribute (empty alt="" if it's decorative).
  • Label icon-only buttons with aria-label and keep focus outlines visible.
  • Maintain a contrast ratio of at least 4.5:1 for body text against its background.
  • Test the portfolio website homepage with Tab / Shift+Tab and Enter — every interactive element should be reachable.
Step-by-step customisation

Make it match your brand

  1. Change the colour palette by overriding Bootstrap CSS variables: --bs-primary, --bs-body-bg.
  2. Adjust spacing with utility classes such as py-5, gap-4, and mt-lg-5 — no custom CSS required.
  3. Swap the typography by loading a Google Font in your <head> and setting --bs-body-font-family.
  4. Replace stock images with brand assets. Keep dimensions similar to avoid layout shift.
  5. Preview at multiple breakpoints (mobile, tablet, desktop) and tweak column spans if content wraps awkwardly.

Need the full theory? Read our Bootstrap 5 Technical Introduction Guide for grid, breakpoints, and Sass customisation in depth.

About the Portfolio Website Home Page portfolio website homepage

This portfolio website homepage is part of the free CodeShikhi (কোড শিখি) Bootstrap 5 library — a growing collection of copy-paste website building blocks curated for learners and freelance developers. Every block is written in clean, semantic HTML with Bootstrap utility classes, keeps custom CSS to the minimum needed, and works without any build step. Use it as a starting point and adapt the markup, colours, and content to fit your project's brand and audience.

If you spot a bug, want a new variation, or would like to contribute an improvement, reach us via the contact page — we ship updates weekly based on community feedback.

Detailed Technical Breakdown

Detailed Technical Breakdown: Portfolio Website Home Page

Browser compatibility & standards

The Portfolio Website Home Page portfolio website homepage is authored against Bootstrap 5.3, which drops legacy Internet Explorer support and targets modern evergreen engines — Chrome, Edge, Firefox, Safari, and all Chromium-based mobile browsers. Because the markup relies exclusively on the standard CSS features that ship with Bootstrap (Flexbox, CSS Grid, CSS custom properties, and the responsive breakpoint system), you can safely deploy this portfolio website homepage to any browser released in the last five years without polyfills. If you need to support very old WebKit or Samsung Internet builds, load the standard Bootstrap 5 CSS from the official jsDelivr CDN — the bundled autoprefixer output already covers those vendor prefixes.

Performance impact

Performance-wise this block is intentionally light. The HTML payload for a typical Bootstrap portfolio website homepage is under 4 KB gzipped, and it shares the same Bootstrap CSS/JS bundle you are already loading — meaning the marginal cost of adding it to a page is effectively zero KB on repeat visits. There is no JavaScript framework runtime, no hydration cost, and no client-side data fetching. The only images referenced are placeholders you will replace with your own assets; when you do, serve them as WebP or AVIF, add explicit width and height attributes to prevent layout shift (CLS), and lazy-load anything below the fold with loading="lazy". These small changes typically move Lighthouse Performance scores from the mid-80s into the 95+ range on both mobile and desktop.

Utility classes used

The portfolio website homepage leans on Bootstrap's utility-first classes to stay declarative: spacing utilities (p-*, m-*, gap-*), the flex helpers (d-flex, align-items-*, justify-content-*), the grid system (container, row, col-lg-*), typography helpers (display-*, lead, text-*), and colour utilities that resolve to Bootstrap CSS variables such as --bs-primary, --bs-body-bg, and --bs-border-color. Because everything is expressed as utilities you can re-theme the entire portfolio website homepage by overriding a handful of CSS variables at the :root level — no Sass recompile required.

Exact customisation steps

  1. Copy the source HTML from the tab above and paste it inside your <body>. The outer <div class="container"> wrapper is already included so the portfolio website homepage sits on the Bootstrap grid.
  2. Replace the placeholder headings and paragraphs with your own copy. Keep heading levels in order (h1h2h3) so screen readers and search engines can parse the document outline.
  3. Swap any <img> tags for your brand assets. Match the original aspect ratio to avoid layout shift, and always fill in a meaningful alt attribute.
  4. Retune the palette by overriding CSS variables::root { --bs-primary: #4f46e5; --bs-body-bg: #ffffff; }. All utility colour classes update automatically.
  5. Test at each Bootstrap breakpoint — sm (576 px), md (768 px),lg (992 px), xl (1200 px), xxl (1400 px) — using your browser's device toolbar, and tweak column spans if long content wraps.
  6. Ship it with the standard Bootstrap 5 CDN in the <head> and the JS bundle before the closing </body>. No build step required.
Technical & Performance Integration Guide

Technical & Performance Integration Guide — Portfolio Website Home Page (gallery)

When and why to use this gallery

An image gallery is the heaviest block you can put on a page, and also the one visitors judge fastest. The goal is a grid that stays perfectly aligned while loading progressively, so the layout never jumps as photographs arrive.

Accessibility & ARIA attributes

Give each image a descriptive alt attribute that says what the photo shows, not "image1.jpg". Purely decorative tiles take alt="". If clicking a thumbnail opens a lightbox, that dialog needs role="dialog", aria-modal="true", a focus trap and Escape-to-close — Bootstrap's modal component provides all of this when you keep its data attributes intact. Announce the gallery itself with a <section aria-label="Photo gallery"> wrapper.

Performance notes for this pattern

Always pair loading="lazy" with a fixed aspect ratio (.ratio.ratio-4x3) so lazy images reserve their space and CLS stays at zero. Serve responsive sources with srcset and sizes so phones download roughly 400 px-wide files rather than desktop originals — typically a 70–80% byte saving. Decode off the main thread with decoding="async", and keep the first row eager so the gallery paints something immediately.

Three customisation tricks

  • Use .object-fit-cover with a ratio wrapper for a masonry-like look without a JavaScript layout library.
  • Add .g-2 instead of .g-4 for a tighter, more editorial mosaic.
  • Preload only the first visible image with <link rel="preload" as="image">.

Mistakes to avoid

  • Shipping 3000 px originals to mobile.
  • Empty or duplicated alt text across every tile, which search engines treat as a quality signal.

More designs in this section