From the Streets to Power. For the People. By the People.
A stunning, modern portfolio website for Balen Shah - Nepal's first independent mayor since 1989, rapper, structural engineer, and 2026 Prime Minister candidate with Rastriya Swatantra Party (RSP).
- Features
- File Structure
- Installation
- Sections
- Advanced Animations
- Responsive Design
- Customization
- Browser Support
- Technologies Used
- Performance
- Credits
- License
- Professional Color Scheme: Red (#C41E3A), Gold (#FFD700), Dark theme
- Modern Typography: Bebas Neue for headers, Montserrat for body, Playfair Display for accents
- Glassmorphism Effects: Frosted glass cards with backdrop blur
- Gradient Backgrounds: Dynamic animated gradients
- Custom Scrollbar: Themed to match the design
- Parallax Scrolling: Multi-layer depth effect on scroll
- Staggered Entrance Animations: Elements appear sequentially with delays
- 3D Card Tilts: Cards tilt based on scroll position
- Magnetic Buttons: Buttons follow cursor movement on hover
- Ripple Click Effects: Material design ripple on interactions
- Cursor Trails: Gold/red particle trails (desktop only)
- Animated Counters: Numbers count up when entering viewport
- Auto-hide Navbar: Hides on scroll down, shows on scroll up
- Interactive Glows: Mouse position creates gradient highlights on cards
- Mobile-First Design: Optimized for all screen sizes
- Hamburger Menu: Touch-friendly mobile navigation
- Flexible Grids: Auto-adjusting layouts
- Touch Optimized: Smooth touch interactions
- Breakpoints:
- Desktop: > 968px
- Tablet: 640px - 968px
- Mobile: < 640px
- Semantic HTML5 structure
- Meta descriptions and tags
- Proper heading hierarchy
- Alt text for images
- Fast loading times
- ARIA labels for screen readers
- Keyboard navigation support
- Focus indicators
- Reduced motion support for accessibility
- High contrast ratios
balen-shah-portfolio/
β
βββ index.html # Main HTML structure (29KB)
βββ style.css # All CSS styling (27KB)
βββ script.js # JavaScript functionality (14KB)
βββ README.md # Documentation (this file)
Contains 8 main sections:
- Navigation with mobile menu
- Hero section with image
- Stats bar
- Timeline (2012-2026)
- About section
- Social Media section
- Vote section
- Music discography (9 songs)
- Achievements (12 cards)
- Contact form
- Footer with credits
- CSS custom properties (variables)
- Responsive grid systems
- Animation keyframes
- Media queries for responsiveness
- Card hover effects
- Typography styles
- Color themes
- All visual design elements
- Mobile menu toggle
- Smooth scroll navigation
- Intersection Observer for animations
- Parallax scrolling effects
- Animated statistics counters
- Magnetic button interactions
- Ripple click effects
- Cursor trail particles
- Mouse tracking for glows
- Auto-hide navbar
- Form validation and handling
-
Download the files
# Download all three files: - index.html - style.css - script.js -
Place in same folder
my-portfolio/ βββ index.html βββ style.css βββ script.js -
Open index.html
- Double-click
index.html - Or right-click β Open with β Browser
- Double-click
That's it! π The website will load with all features.
For development with live reload:
# Using Python
python -m http.server 8000
# Using Node.js
npx http-server
# Using PHP
php -S localhost:8000Then open: http://localhost:8000
- Upload all 3 files to your web host via FTP
- Ensure they're in the same directory
- Access via your domain
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin your-repo-url
git push -u origin mainEnable GitHub Pages in repository settings.
- Drag and drop the folder
- Or connect your Git repository
- Auto-deployment on push
- Sticky header with auto-hide on scroll
- Smooth scroll to sections
- Mobile hamburger menu
- Responsive design
- Large heading with gradient text
- Real photo of Balen Shah
- Call-to-action buttons
- Parallax image effect
- 4 key statistics:
- 2022: First Independent Mayor
- 11M+: Views on "Balidan"
- 61K+: Victory Margin
- 248K+: YouTube Subscribers
- Animated counters on scroll
Complete journey from 2012 to 2026:
- 2012: Debut single "Sadak Balak"
- 2013: Raw Barz Champion
- 2016: "Balidan" - 11M+ views
- 2019: "Hami Yestai Ta Ho Ni Bro"
- 2022: Historic Mayoral Victory
- 2025: "Nepal Haseko" OST
- 2026: Prime Minister Candidate
Three aspect cards:
- π€ The Rapper: Music career and impact
- ποΈ The Engineer: Technical background
- π The Revolutionary: Political achievements
4 platform cards with real stats:
- Facebook: 485K+ Followers
- Instagram: 68.5K+ Followers
- YouTube: 248K+ Subscribers
- Twitter/X: 18.3K+ Followers
Each card has:
- Platform-specific colors and icons
- Animated hover effects
- Clickable links (ready to connect)
- Large "VOTE FOR CHANGE" heading
- Campaign statistics
- Call-to-action button
- Inspirational quote
9 songs with full details:
- Sadak Balak (2012) - Debut
- Raw Barz (2013) - Championship
- Balidan (2016) - 11M+ views
- Gorkhali Toph (2017)
- Hami Yestai Ta Ho Ni Bro (2019) - Breakthrough
- Marpha Ko Madira (2020)
- Savage (2021)
- Hande (2022)
- Nepal Haseko (2025) - Latest, 1M+ first day
Each card includes:
- Release year
- View counts
- Description
- Tagged categories
12 major achievements:
- First Independent Mayor Since 1989
- Raw Barz Season 2 Champion
- Revolutionary Waste Management
- Tukucha River Conservation
- Traffic & Infrastructure Reform
- Textbook-free-Friday Program
- Kathmandu Skill Fair
- 248K+ YouTube Subscribers
- Master's in Structural Engineering
- Business Leader
- Prime Minister Candidate 2026
- Voice of Gen Z Movement
Two-column layout:
- Left: Contact information
- Office location
- Political affiliation
- Social media stats
- Music platforms
- Social media icons
- Right: Contact form
- Name, Email, Subject, Message fields
- Validation
- Submit button
- Copyright notice
- Tagline
- Birth information
- Credits: "Made and Collaborated with Asbin Thapa β¨"
// Slide up from bottom with scale
transform: translateY(50px) scale(0.9)
β translateY(0) scale(1)
Stagger: 0.1s delay between cards
Easing: cubic-bezier(0.34, 1.56, 0.64, 1) // Bounce effect// Slide from left with rotation
transform: translateX(-80px) rotate(-3deg) scale(0.95)
β translateX(0) rotate(0) scale(1)
Stagger: 0.15s delay// Bounce up
transform: translateY(60px) scale(0.8)
β translateY(0) scale(1)
Stagger: 0.08s delay
Easing: cubic-bezier(0.68, -0.55, 0.265, 1.55) // Bounce// Alternate from left/right
Odd items: translateX(-120px)
Even items: translateX(120px)
β translateX(0)
Stagger: 0.2s delay// 3D flip effect
transform: perspective(1000px) rotateY(90deg) scale(0.8)
β rotateY(0) scale(1)
Stagger: 0.1s delay// Zoom with rotation
transform: scale(0.5) rotate(-10deg)
β scale(1) rotate(0)
Stagger: 0.15s delay
Easing: cubic-bezier(0.68, -0.55, 0.265, 1.55)// Background - moves at 0.5x scroll speed
transform: translateY(scrolled * 0.5)
// Hero Image - moves at 0.3x with subtle scale
transform: translateY(scrolled * 0.3) scale(1 + scrolled * 0.0001)
// Section Titles - floating sine wave
transform: translateY(sin(distance * Ο) * 15px)
// Music Cards - 3D tilt based on viewport position
transform: perspective(1000px) rotateX(distance * 3deg)// Buttons follow cursor
const x = (mouseX - centerX) * 0.3
const y = (mouseY - centerY) * 0.3
transform: translate(x, y) scale(1.05)// Material design ripple on click
Creates expanding circle from click point
Animation: scale(0) β scale(4)
Opacity: 1 β 0
Duration: 600ms// Gold/red gradient particles
Follows mouse movement
Throttled to every 80ms
Fades and scales up after creation// Mouse position creates gradient highlight
--mouse-x: cursorX%
--mouse-y: cursorY%
Radial gradient follows cursor// Numbers count up from 0
Triggers when element enters viewport
Counts to target in 50 increments
Duration: ~1.5 seconds
Maintains formatting (K+, M+, commas)// Auto-hide on scroll
Scrolling down: translateY(-100%) // Hide
Scrolling up: translateY(0) // Show
Threshold: 80px
Transition: 0.3s ease/* Desktop - Full Layout */
@media (min-width: 969px) {
- Side-by-side grids
- Larger fonts
- Hover effects
- Cursor trails
- Full animations
}
/* Tablet - Adapted Layout */
@media (max-width: 968px) {
- Mobile menu (hamburger)
- Stacked timeline
- Adjusted padding
- Modified hover states
}
/* Mobile - Single Column */
@media (max-width: 640px) {
- Single column grids
- Larger touch targets
- Simplified animations
- Optimized fonts
- Stacked contact form
}-
Touch-Friendly
- Minimum 44x44px tap targets
- Hover states adapted for touch
- Swipe-friendly cards
-
Performance
- Disabled cursor trails on mobile
- Reduced animation complexity
- Optimized image loading
- Fewer particles
-
Navigation
- Full-screen mobile menu
- Large, easy-to-tap links
- Smooth transitions
-
Typography
- Fluid font sizes with
clamp() - Scales from mobile to desktop
- Maintains readability
- Fluid font sizes with
Edit CSS variables in style.css:
:root {
--primary: #C41E3A; /* Main red - buttons, accents */
--secondary: #1a1a1a; /* Dark background */
--accent: #FFD700; /* Gold - highlights, hover */
--text-light: #f5f5f5; /* Light text color */
--text-dark: #1a1a1a; /* Dark text for light backgrounds */
--gradient-1: linear-gradient(135deg, #C41E3A 0%, #8B0000 100%);
--gradient-2: linear-gradient(135deg, #1a1a1a 0%, #3a3a3a 100%);
}All content is in index.html:
<!-- Change hero text -->
<h1>YOUR NAME</h1>
<h2>Your Tagline</h2>
<p>Your description...</p>
<!-- Update social media links -->
<a href="https://facebook.com/yourprofile">
<!-- Modify statistics -->
<h3>YOUR STAT</h3>
<p>Your Label</p>In script.js, modify timing:
// Change stagger delays
el.style.transition = `... ${index * 0.2}s`; // Increase/decrease
// Adjust parallax speeds
bgAnimated.style.transform = `translateY(${scrolled * 0.7}px)`; // Faster/slower
// Modify entrance effects
el.style.transform = 'translateY(100px)'; // More/less movement- Add HTML structure in
index.html - Style in
style.css - Add animations in
script.jsif needed - Update navigation menu
| Browser | Version | Support |
|---|---|---|
| Chrome | Latest | β Full |
| Firefox | Latest | β Full |
| Safari | Latest | β Full |
| Edge | Latest | β Full |
| Opera | Latest | β Full |
| Chrome Mobile | Latest | β Full |
| Safari iOS | Latest | β Full |
| Samsung Internet | Latest | β Full |
- CSS Grid
- CSS Custom Properties
- Intersection Observer API
- Backdrop Filter
- CSS Transforms 3D
Note: IE11 is not supported (deprecated by Microsoft)
- HTML5: Semantic markup
- CSS3: Modern styling, animations
- Vanilla JavaScript: No frameworks/libraries
- CSS Grid & Flexbox
- CSS Custom Properties (Variables)
- CSS Animations & Transitions
- Backdrop Filter (Glassmorphism)
- CSS Transforms 3D
- Media Queries
- Intersection Observer API
- Request Animation Frame
- DOM Manipulation
- Event Listeners
- Local Storage (optional)
- Google Fonts:
- Bebas Neue
- Montserrat
- Playfair Display
- SVG Icons: Inline for social media
- GPU Acceleration: Transform-based animations
- Throttled Events: Scroll and mouse events
- Lazy Loading: Images load on demand
- RequestAnimationFrame: Smooth 60fps animations
-
CSS Animations
- Use
transformandopacity(GPU accelerated) - Avoid layout-triggering properties
- Hardware acceleration enabled
- Use
-
JavaScript
- Event throttling (scroll, mousemove)
- RequestAnimationFrame for smooth animations
- Intersection Observer instead of scroll listeners
-
Images
- Optimized image sizes
- Lazy loading
- Fallback SVG for failed loads
-
Code Splitting
- Separate HTML, CSS, JS files
- Browser caching enabled
- Minification ready
Lighthouse Scores (Target):
- Performance: 95+
- Accessibility: 100
- Best Practices: 100
- SEO: 95+
Load Times:
- First Contentful Paint: <1.5s
- Time to Interactive: <3s
- Total Blocking Time: <200ms
# Minify CSS
npx csso style.css -o style.min.css
# Minify JavaScript
npx terser script.js -o script.min.js -c -m
# Optimize images
# Use tools like TinyPNG, ImageOptim, or Squoosh- Subject: Balen Shah (Balendra Shah)
- Role: Rapper, Engineer, Politician
- Position: Former Mayor of Kathmandu, PM Candidate 2026
- Party: Rastriya Swatantra Party (RSP)
- Developer: Asbin Thapa
- Website: asbinthapa.info.np
- Design: Custom modern portfolio design
- Development Time: January 2026
- Fonts: Google Fonts
- Icons: Custom SVG
- Images: Official sources
- Information: Public domain, official sources
- Balen Shah for the inspiration
- Nepal's Gen Z movement
- All supporters of the RSP movement
MIT License
Copyright (c) 2026 Asbin Thapa
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- Open an issue on GitHub
- Contact developer: asbinthapa.info.np
- Submit pull requests
- Contact via the website form
- Official Facebook: @balenshah
- Official YouTube: @BalenShah
- Instagram: @balen
- Twitter/X: @balen
- Blog section for updates
- Video gallery
- Event calendar
- News feed integration
- Multilingual support (Nepali/English)
- Dark/Light mode toggle
- Backend integration for contact form
- Real-time social media feed
- Download press kit section
- Volunteer signup form
- Service Worker for offline support
- Progressive Web App (PWA)
- Image optimization pipeline
- CDN integration
- Analytics integration
- SEO enhancements
- Performance monitoring
- Automated testing
Total Lines of Code: ~1,800
HTML: 556 lines
CSS: 1,000+ lines
JavaScript: 250+ lines
File Sizes:
- index.html: 29KB
- style.css: 27KB
- script.js: 14KB
Total: ~70KB (uncompressed)
Sections: 11
Interactive Elements: 100+
Animations: 50+
Responsive Breakpoints: 2
β
Fully responsive (mobile, tablet, desktop)
β
Advanced scroll animations
β
Parallax effects
β
3D card transforms
β
Interactive hover states
β
Animated statistics
β
Social media integration
β
Contact form
β
Timeline visualization
β
Music discography
β
Achievement showcase
β
Auto-hide navigation
β
Cursor trail effects
β
Ripple interactions
β
Magnetic buttons
β
SEO optimized
β
Accessibility compliant
β
Fast loading
β
Cross-browser compatible
β
No dependencies
β
Easy to customize
This portfolio represents the journey of Balen Shah - from street rapper to revolutionary mayor to Prime Minister candidate. His story inspires millions of Nepalis, especially Gen Z, to demand transparency, accountability, and real change.
"This rally is a spontaneous movement of Gen Z, for whom even I may seem old. But it is necessary to hear them out." - Balen Shah
From the Streets to Power. For the People. By the People.
Made with β€οΈ by Asbin Thapa β¨
Last Updated: January 27, 2026
Version: 1.0.0
Status: Production Ready π