
Nishant Gaurav PART 1: The Full Journey Preview: Light Mode 1. When I Started...
When I decided to build my portfolio, I knew I didn’t want it to look like a “template-based” website. I wanted my site to show who I was as a developer: organized, clean, and systematic.
So long before I wrote even one line of code, I planned:
The final structure is as follows:
Goal:
“If someone spends 30 seconds on my site, they should be able to identify who I am technically.”
I built everything using semantic HTML + Bootstrap grid.
Each section was wrapped inside a <section> tag:
<section id="about"></section>
<section id="projects"></section>
<section id="skills"></section>
This allowed me to achieve:
Layout scaffolding:
<div class="container">
<div class="row">
<div class="col-md-6"></div>
</div>
</div>
Bootstrap handled responsiveness, while custom CSS handled visual identity.
Since the navbar is the first thing people see when they enter the application, it was important for me to keep it in the following ways:
Key decisions:
<nav class="navbar navbar-expand-lg fixed-top custom-header">
Hover animation:
.navbar-nav .nav-link::after {
width: 0;
transition: width 0.3s ease;
}
This section had to communicate:
Two-column layout:
<div class="row align-items-center">
<div class="col-md-5">Image</div>
<div class="col-md-7">Content</div>
</div>
UI decisions:
.about_img--wrapper {
box-shadow: 0 6px 18px rgba(0,0,0,0.1);
}
I designed projects as product tiles.
<div class="col-md-6 col-lg-4">
<div class="project-card"></div>
</div>
Design decisions:
.project-card:hover {
transform: translateY(5px);
}
Custom progress bars:
<div class="skill-bar">
<div class="skill-fill" style="width:85%"></div>
</div>
.skill-bar { background: #7c8d8f; }
.skill-fill { background: #1f2022; }
Split into two columns for balance.
Image-driven proof cards.
.achievement-img-wrapper {
height: 260px;
overflow: hidden;
}
Hover zoom:
.achievement-card:hover .achievement-img {
transform: scale(1.05);
}
Two layers:
Quick Links
Contact Form
<form>
<input type="text">
<textarea></textarea>
</form>
Hover elevation:
.contact-card:hover {
transform: translateY(5px);
}
.footer-icon:hover {
transform: scale(1.1);
}
Theme toggle via JS & Persistence:
toggleBtn.addEventListener("change", () => {
body.classList.toggle("dark-mode");
});
localStorage.setItem("theme","dark");
body.dark-mode {
background-color: #0f1115;
color: #e6e6e6;
}
Adjustments:
Goal: Reduce eye strain.
display: flex;
align-items: center;
Palette:
#7eaeb4 Accent#393E46 Dark#f4f5f7 Light
.card-title {
font-family: 'Courier New';
}
@media (max-width: 767px) {
.skill-bar { height: 12px; }
}
<section id="projects"></section>
position: fixed;
display: flex;
<div class="row"></div>
img { max-width: 100%; }
@media (max-width:768px) {}
localStorage.setItem("theme","dark");
This portfolio became more than a website.
It taught me:
And it represents me better than any resume.