Hey DEV Community!
I'm Mahendra Nagpure, a full-stack developer from Malegoan, Nashik, and I recently launched my portfolio at mahendranagpure.com. After writing tutorials here about JavaScript and CSS, I realized it was time to build a central hub for my work. Today, I want to share how I built it and what I learned.
The Why Behind the Build
You know that feeling when you've been coding for years but don't have one place to show it all off? That was me. I've been sharing tutorials here on DEV (my JavaScript and CSS roadmaps got some great feedback!), but I needed something more - a space that represents my skills and helps me connect with clients and collaborators.
The mission was clear: build a portfolio that proves I can build portfolios (meta, right?). It had to be fast, beautiful, and actually useful.
The Tech Stack
I'm a firm believer in using modern tools that make development enjoyable. Here's what powers the site:
Frontend Layer
- Next.js 14 with App Router - Server components are a game-changer
- TypeScript - Because I enjoy sleeping at night without runtime errors
- Vanilla CSS - Complete control, zero bloat, maximum flexibility
- Google Fonts (Inter) - Clean, professional typography
Backend & Data
- Supabase - PostgreSQL database + authentication in one package
- Supabase Storage - Dead simple image and media hosting
- Vercel - Deploy in seconds, edge network everywhere
Extras That Matter
- MDX - Writing rich content with React components embedded
- Google Analytics - Understanding visitor behavior
- Syntax Highlighting - Making code snippets look professional
Design Philosophy
Let's be real - nobody remembers a boring portfolio. I wanted something that stands out:
Dark Mode First
Modern developers live in dark mode. The entire design started there, with a light mode as an option for later.
Smooth Animations
Hover effects, page transitions, and micro-interactions that feel natural. Nothing jarring, everything purposeful.
Color Psychology
No basic blues or reds. I went with harmonious HSL color combinations that create depth and interest. Gradients add that premium feel.
Typography Hierarchy
Clear heading structure with varied font weights. Reading should feel effortless.
Mobile-First
Built for phones first, then scaled up. Most visitors are on mobile anyway.
Key Features
Portfolio Grid
Projects displayed with tech stack badges, descriptions, and live demo links. Hover animations reveal more details without cluttering the initial view.
About Section
Who I am, where I'm from, what drives me. Located in Malegoan, available 10 AM - 7 PM IST for collaborations.
Direct Contact
Email integration at work@mahendranagpure.com with a clean, accessible form.
Blog Platform (In Progress)
Planning to bring my DEV Community content to my own platform with full MDX support.
The Build Journey
Step 1: Design System First
Before writing a single line of code, I defined:
- Color variables (using CSS custom properties)
- Spacing scale (0.25rem increments)
- Typography system (font sizes, weights, line heights)
- Component patterns (buttons, cards, forms)
This planning saved hours of back-and-forth later.
Step 2: Component Architecture
Created reusable building blocks:
// Example: Button component with variants
interface ButtonProps {
variant: 'primary' | 'secondary' | 'ghost';
size: 'sm' | 'md' | 'lg';
children: React.ReactNode;
}
TypeScript interfaces kept everything organized and bug-free.
Step 3: Performance Optimization
- Next.js Image component for automatic optimization
- Code splitting to reduce initial bundle size
- Font optimization with
next/font - Minimal JavaScript - let CSS handle animations
Step 4: SEO Foundation
- Semantic HTML throughout
- Meta tags for every page
- Open Graph for social sharing
- JSON-LD structured data
- Sitemap generation
Challenges I Faced
Beautiful vs Fast
Animations can kill performance if done wrong. Solution? Use CSS transform and opacity changes (GPU-accelerated) instead of animating width, height, or layout properties.
/* Fast */
.card:hover {
transform: translateY(-4px);
transition: transform 0.2s ease;
}
/* Slow */
.card:hover {
margin-top: -4px; /* Forces layout recalculation */
}
Content Organization
How do you showcase projects without overwhelming visitors? After several iterations:
- Grid layout with clear visual hierarchy
- Categories for filtering
- "Featured" section for best work
- Detailed case studies on separate pages
Color Contrast in Dark Mode
Making sure text is readable while keeping the design modern required testing with accessibility tools. Aim for at least 4.5:1 contrast ratio.
Key Takeaways
1. Design Tokens Save Time
Setting up CSS variables for colors, spacing, and typography at the start made the entire build more consistent and easier to maintain.
2. TypeScript Is Worth The Setup
Yes, it takes longer initially. But catching errors at compile-time instead of runtime? Priceless.
3. Accessibility Isn't Extra Work
Use semantic HTML, add ARIA labels where needed, test with keyboard navigation. It's not hard, just intentional.
4. Performance Is a Feature
Fast sites convert better. Optimize from day one:
- Compress images
- Lazy load below-the-fold content
- Minimize JavaScript
- Use CDN (Vercel Edge Network)
5. Ship, Then Iterate
I could've spent months perfecting every detail. Instead, I launched with 80% done and improved based on real feedback.
What's Next
The portfolio is live, but I'm just getting started:
- Full Blog Integration - Moving my content from DEV to my own platform
- Case Studies - Deep dives into project development
- Interactive Demos - Live code examples visitors can play with
- Newsletter - Weekly tips and insights
- Theme Toggle - User choice between dark and light modes
My Dev Community Journey
I've been sharing what I learn here on DEV:
The concept of "learning in public" has been transformative. Every tutorial solidifies my understanding while helping others. Win-win.
Final Thoughts
Building this portfolio taught me more than any tutorial could. If you're considering building your own:
Just Start - Don't wait for the perfect idea or tech stack
Be Authentic - Let your personality shine through
Prioritize Performance - Speed matters more than fancy features
Keep It Simple - Better to have 3 polished features than 10 half-baked ones
Iterate Forever - Version 1.0 is just the beginning
Let's Connect!
I'm always happy to chat with fellow developers about projects, collaboration, or just web dev in general.
- Portfolio: mahendranagpure.com
- LinkedIn: mahendra-nagpure
- GitHub: Mahendra111111
- Email: work@mahendranagpure.com
What about you? What's the most challenging part of building your portfolio? Drop a comment below - I'd love to hear your experiences!
If you found this helpful, consider following me here on DEV for more web development content. I share practical tutorials on JavaScript, CSS, React, and full-stack development.
Happy coding!
Top comments (0)