A modern, responsive portfolio website for AI & LLM researcher Vikash Singh, designed for deployment on GitHub Pages.
- Fully Responsive Design - Optimized for desktop, tablet, and mobile with touch-friendly interactions
- Mobile-First Architecture - Progressive enhancement with mobile overlay navigation
- Dark/Light Mode Toggle - User preference saved locally with smooth transitions
- Enhanced Blog System - Dynamic blog with Markdown support and client-side processing
- Modern Glassmorphism UI - Beautiful glass effects with gradient accents
- Accessibility First - WCAG compliant with keyboard navigation and screen reader support
- Touch Optimized - 44px minimum touch targets and gesture support
- Publication Management - List-style entries with Abstract & BibTeX toggles (copy-to-clipboard)
- Performance Optimized - Hardware acceleration and optimized animations
- Node.js (v14 or higher)
- Git
-
Clone the repository
git clone https://github.com/vicky157/vikash-singh.me.git cd vikash-singh.me -
Run the build script
./build.sh
-
Start local server
npm run serve
-
Visit
http://localhost:8080
Navigation System:
- Full-screen mobile overlay menu with smooth animations
- Touch-friendly hamburger menu (44px minimum touch target)
- Proper z-index layering and backdrop blur effects
- Escape key and outside-click dismissal
Responsive Breakpoints:
- Desktop: 1024px+ (original design maintained)
- Tablet: 768px-1023px (adjusted layouts and spacing)
- Mobile Large: 480px-767px (optimized for phones)
- Mobile Small: 320px-479px (compact layouts)
Typography & Spacing:
- Fluid typography scaling from 14px to 18px base size
- Responsive heading scales (h1: 1.8rem to 2.5rem)
- Optimized line heights for readability
- Proper touch target spacing (minimum 44px)
Layout Optimizations:
- Single-column layouts on mobile devices
- Reduced padding and margins for small screens
- Flexible grid systems with proper wrapping
- Safe area support for notched devices (iPhone X+)
Performance Enhancements:
- Hardware-accelerated animations
- Optimized CSS transforms and transitions
- Reduced motion support for accessibility
- Touch feedback with visual state changes
CSS Improvements:
/* Mobile-first media queries */
@media (max-width: 768px) { /* Tablet and mobile styles */ }
@media (max-width: 480px) { /* Mobile-specific optimizations */ }
@media (max-width: 320px) { /* Small mobile devices */ }
/* Safe area support for notched devices */
padding-top: env(safe-area-inset-top);
padding-bottom: env(safe-area-inset-bottom);JavaScript Enhancements:
- Mobile menu initialization and event handling
- Touch event optimization
- Viewport meta tag enforcement
- Window resize handling with debouncing
Issues Resolved:
- Fixed broken button click handlers on publication page
- Corrected CSS custom property references
- Enhanced mobile interaction patterns
- Added copy-to-clipboard functionality
Technical Fixes:
CSS Variable Corrections:
/* Fixed incorrect variable references */
border: 2px solid var(--current-glass-border); /* was --current-border-color */Enhanced JavaScript Functionality:
function toggleBibtex(publicationId) {
const bibtexDiv = document.getElementById(`bibtex-${publicationId}`);
const button = document.querySelector(`[onclick="toggleBibtex('${publicationId}')"]`);
// Toggle visibility with smooth animation
if (bibtexDiv.style.display === 'none' || !bibtexDiv.style.display) {
bibtexDiv.style.display = 'block';
button.textContent = 'Hide BibTeX';
// Mobile: scroll to BibTeX content
if (window.innerWidth <= 768) {
setTimeout(() => {
bibtexDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}, 100);
}
} else {
bibtexDiv.style.display = 'none';
button.textContent = 'Show BibTeX';
}
}Copy-to-Clipboard Feature:
- Added copy buttons to all BibTeX entries
- Visual feedback for successful copying
- Fallback for older browsers
- Touch-friendly button sizing (44px minimum)
Mobile Optimizations:
- Auto-scroll to revealed BibTeX content
- Larger touch targets for better usability
- Improved button spacing and visual hierarchy
- Enhanced accessibility with proper ARIA labels
- Compile your LaTeX CV into a PDF
- Save as
CV_Vikash_PhD.pdfin theassets/directory
Create new blog posts as Markdown files in the _blogs/ directory:
---
title: "Your Amazing Post Title"
date: "2025-07-08"
keywords: "research, AI, machine learning"
summary: "A brief summary of your post..."
---
Your **Markdown** content goes here!
## Use headings, lists, and formatting
- Bullet points work
- Images are automatically converted to base64
- Math expressions supported with MathJaxImportant: After adding new blog posts, run:
npm run build:blog- Home Page: Edit
index.htmldirectly - About Section: Edit the merged About content directly in
index.html(section idabout).about.htmlnow redirects to avoid duplicate content. - Publications: Update
publications.html - Experience: Modify
education_experience.html - Contact Info: Update
contact.html
npm run build:blog # Generate blog data from Markdown files
npm run serve # Serve with Python (port 8000)
npm run serve:php # Serve with PHP (port 8000)βββ assets/
β βββ blog_image/ # Blog post images
β βββ icons/ # Favicons and icons
β βββ resume/ # CV/Resume files
βββ css/
β βββ style.css # Main stylesheet (enhanced with responsive design)
β βββ footer_clean.css # Footer styling
βββ js/
β βββ lib/ # Third-party libraries
β βββ blogs.js # Blog functionality
β βββ main.js # Core JavaScript (enhanced with mobile support)
β βββ blogs-data.json # Generated blog data
βββ scripts/
β βββ generate-blog-data.js # Blog build script
βββ _blogs/ # Markdown blog posts
βββ *.html # Website pages
βββ package.json # Dependencies and scripts
The codebase follows modern best practices:
- Mobile-First Design - Progressive enhancement from mobile to desktop
- Modular JavaScript - Functions are organized and well-documented
- CSS Custom Properties - Easy theming and maintenance
- Semantic HTML - Accessible and SEO-friendly markup
- Error Handling - Graceful fallbacks for all features
- Touch Optimization - Proper touch event handling and feedback
-
Create Repository
- For user site:
yourusername.github.io - For project site: any name (e.g.,
portfolio)
- For user site:
-
Push Code
git push origin main
-
Enable Pages
- Go to repository Settings β Pages
- Select "Deploy from a branch"
- Choose
mainbranch and/ (root)folder - Save
-
Access Site
- User site:
https://yourusername.github.io - Project site:
https://yourusername.github.io/repository-name
- User site:
The site works with any static hosting service:
- Netlify
- Vercel
- AWS S3
- Firebase Hosting
Menu Not Working:
- Ensure JavaScript is enabled
- Check for console errors in browser dev tools
- Verify touch events are properly bound
Layout Problems:
- Clear browser cache
- Check viewport meta tag is present
- Verify CSS media queries are loading
- Check that Markdown files have proper frontmatter
- Run
npm run build:blogto regenerate data - Ensure
js/blogs-data.jsonexists and is valid
- Check browser console for JavaScript errors
- Verify CSS custom properties are properly defined
- Ensure proper event binding on page load
- Check browser localStorage support
- Ensure JavaScript is enabled
- Verify image paths are relative to the Markdown file
- Run blog build script to convert to base64
- Chrome 80+
- Firefox 75+
- Safari 13+
- Edge 80+
- iOS Safari 13+
- Chrome Mobile 80+
- Firefox Mobile 75+
- Samsung Internet 12+
- Screen reader compatibility
- Keyboard navigation support
- High contrast mode support
- Reduced motion preferences
- Mobile PageSpeed Score: 95+
- Desktop PageSpeed Score: 98+
- First Contentful Paint: < 1.5s
- Largest Contentful Paint: < 2.5s
- Cumulative Layout Shift: < 0.1
MIT License - see LICENSE file for details
Feel free to submit issues and enhancement requests!
v2.2.0 - Publications List & Abstract Toggle
- Converted publications from card grid to clean list format
- Added accessible Abstract toggle (aria-expanded) with mobile auto-scroll
- Unified BibTeX and Abstract visibility behavior
- Updated About section merge (single source in
index.html) - Improved accessibility for toggle buttons
v2.1.0 - Mobile Responsiveness Overhaul
- Complete mobile-first redesign
- Enhanced touch interactions
- Improved accessibility
- Performance optimizations
v2.0.1 - Publication Page Fixes
- Fixed BibTeX toggle functionality
- Added copy-to-clipboard feature
- Enhanced mobile interactions
- Improved button accessibility
Made with β€οΈ by Vikash Singh