Skip to content

NotHarshhaa/cv-portfolio

Repository files navigation

Harshhaa Vardhan Reddy - DevOps Engineer CV Portfolio

A modern, performant, and accessible CV/portfolio website built with Next.js 14, TypeScript, and Tailwind CSS.

Next.js TypeScript Tailwind CSS License

πŸ“Έ Preview

Visit the live site: cv.notharshhaa.site


🎯 Site Usage & Features

Navigation

Feature Desktop Mobile Keyboard
Section Navigation Floating pill menu at top center Slide-out drawer menu Click navigation items
Active Section Highlight Auto-highlights current section while scrolling Same behavior -
Smooth Scrolling Click any nav item to smooth scroll Tap menu items -

Interactive Features

🎨 Theme Toggle

  • Location: Top-left corner (mobile) / Top-right corner (desktop)
  • Function: Switch between light and dark mode
  • Animation: Smooth icon rotation transition
  • Persistence: Theme preference saved to local storage

⌘ Command Menu (Power User Feature)

  • Open: Press ⌘K (Mac) or Ctrl+K (Windows/Linux)
  • Mobile: Tap the command icon button (bottom-right corner)
  • Features:
    • πŸ” Search all links and contacts
    • πŸŒ“ Toggle theme quickly
    • ⬆️ Scroll to top
    • πŸ–¨οΈ Print page
    • πŸ“‹ Copy any link with one click
    • πŸ“š Recently visited links history

πŸ“₯ Download Resume

  • Location: Header section, next to contact buttons
  • Function: Downloads a formatted text resume instantly
  • Format: Plain text (.txt) with all resume details

πŸ“‹ Copy Email Button

  • Location: About section header
  • Function: One-click copy email address to clipboard
  • Feedback: Visual confirmation with checkmark icon

⬆️ Scroll to Top

  • Location: Bottom-left (mobile) / Bottom-right (desktop)
  • Visibility: Appears after scrolling down 300px
  • Animation: Smooth scroll with hover scale effect

Content Sections

πŸ‘€ About Section

  • Profile summary with avatar
  • Online status indicator on avatar
  • Quick stats cards showing:
    • Years of experience
    • Number of projects
    • Companies worked with
    • Skills count

πŸ’Ό Work Experience

  • Timeline-based layout
  • Company logos and details
  • Multiple roles per company support
  • Date ranges with descriptions
  • Technology badges per role

πŸŽ“ Education

  • Card-based layout
  • Degree and institution details
  • Date ranges
  • Description bullet points

πŸ› οΈ Skills

  • Categorized Display: Skills grouped by category (Cloud, DevOps, CI/CD, etc.)
  • Expandable Cards: Click to expand/collapse categories
  • Hover Effects: Interactive badges with scale animations
  • Auto-categorization: Skills automatically sorted into relevant categories

πŸ“ Projects

  • Grid Layout: Responsive card grid
  • Search & Filter:
    • Search by project name, description, or tech
    • Filter by technology tags
    • Real-time result count
  • Project Cards:
    • Title and description
    • Technology stack badges
    • "New" badge for recent projects
    • Hover effects with shadow
    • Links to live demos and source code

Accessibility Features

Feature Description
Keyboard Navigation Full keyboard support for all interactive elements
ARIA Labels Screen reader friendly with proper ARIA attributes
Focus Indicators Visible focus rings on all interactive elements
Reduced Motion Respects prefers-reduced-motion setting
High Contrast Works with high contrast mode
Semantic HTML Proper heading hierarchy and landmarks

Print Support

  • Print-optimized layout: Clean, professional resume format
  • Hidden elements: Navigation, buttons, and interactive elements hidden when printing
  • Page breaks: Smart page break handling for sections
  • Access: Press ⌘P / Ctrl+P or use Command Menu

Responsive Design

Breakpoint Layout
Mobile (< 768px) Single column, drawer navigation, optimized touch targets
Tablet (768px - 1024px) Adaptive layout with floating navigation
Desktop (> 1024px) Full layout with command menu hint in footer

πŸš€ Features

Performance Optimizations

  • React.memo for component memoization
  • Font preloading for faster text rendering
  • Image optimization with Next.js Image component
  • Bundle analysis with @next/bundle-analyzer
  • CSS optimization with Tailwind CSS
  • Code splitting and lazy loading
  • Console removal in production builds

Accessibility Improvements

  • ARIA labels for screen readers
  • Keyboard navigation support
  • Focus management with visible focus indicators
  • Semantic HTML structure
  • Reduced motion support for users with vestibular disorders
  • High contrast support

SEO Enhancements

  • Comprehensive metadata with Open Graph and Twitter cards
  • Sitemap generation for better indexing
  • Robots.txt optimization
  • Structured data (JSON-LD) for search engines
  • Performance monitoring with Vercel Analytics and Speed Insights

Security Features

  • Content Security Policy (CSP) headers
  • XSS Protection headers
  • HSTS for secure connections
  • Frame options to prevent clickjacking
  • Referrer policy for privacy

Developer Experience

  • TypeScript for type safety
  • ESLint with Next.js rules
  • Prettier for code formatting
  • Husky for git hooks (optional)
  • Comprehensive scripts for development workflow

πŸ› οΈ Tech Stack

Category Technology
Framework Next.js 14 (App Router)
Language TypeScript
Styling Tailwind CSS
UI Components Radix UI + shadcn/ui
Icons Lucide React
Fonts Geist Sans & Geist Mono
Animations Framer Motion
Deployment Vercel
Analytics Vercel Analytics & Speed Insights

πŸ“¦ Installation

# Clone the repository
git clone https://github.com/NotHarshhaa/cv-portfolio.git
cd cv-portfolio

# Install dependencies
npm install

# Run development server
npm run dev

Open http://localhost:3000 in your browser.


πŸš€ Available Scripts

# Development
npm run dev          # Start development server
npm run build        # Build for production
npm run start        # Start production server

# Code Quality
npm run lint         # Run ESLint
npm run lint:fix     # Fix ESLint issues
npm run type-check   # Run TypeScript type checking
npm run format       # Format code with Prettier
npm run format:check # Check code formatting

# Performance
npm run analyze      # Analyze bundle size
npm run clean        # Clean build cache

πŸ“ Project Structure

cv-portfolio/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/                    # Next.js App Router
β”‚   β”‚   β”œβ”€β”€ layout.tsx          # Root layout with metadata
β”‚   β”‚   β”œβ”€β”€ page.tsx            # Main portfolio page
β”‚   β”‚   β”œβ”€β”€ loading.tsx         # Loading component
β”‚   β”‚   β”œβ”€β”€ error.tsx           # Error boundary
β”‚   β”‚   β”œβ”€β”€ sitemap.ts          # Sitemap generator
β”‚   β”‚   └── globals.css         # Global styles
β”‚   β”œβ”€β”€ components/             # Reusable components
β”‚   β”‚   β”œβ”€β”€ ui/                 # shadcn/ui components
β”‚   β”‚   β”œβ”€β”€ icons/              # Custom icon components
β”‚   β”‚   β”œβ”€β”€ navigation-menu.tsx # Desktop & mobile navigation
β”‚   β”‚   β”œβ”€β”€ command-menu.tsx    # Command palette (⌘K)
β”‚   β”‚   β”œβ”€β”€ theme-toggle.tsx    # Dark/light mode toggle
β”‚   β”‚   β”œβ”€β”€ project-card.tsx    # Project display card
β”‚   β”‚   β”œβ”€β”€ project-filter.tsx  # Project search & filter
β”‚   β”‚   β”œβ”€β”€ projects-section.tsx# Projects grid with filtering
β”‚   β”‚   β”œβ”€β”€ skills-categorized.tsx # Categorized skills display
β”‚   β”‚   β”œβ”€β”€ stats-section.tsx   # Statistics cards
β”‚   β”‚   β”œβ”€β”€ work-timeline.tsx   # Work experience timeline
β”‚   β”‚   β”œβ”€β”€ copy-button.tsx     # Copy to clipboard button
β”‚   β”‚   β”œβ”€β”€ scroll-to-top.tsx   # Scroll to top button
β”‚   β”‚   └── download-resume-button.tsx
β”‚   β”œβ”€β”€ data/                   # Data files
β”‚   β”‚   └── resume-data.tsx     # Resume content
β”‚   β”œβ”€β”€ constants/              # App constants
β”‚   └── lib/                    # Utility functions
β”œβ”€β”€ public/                     # Static assets
β”œβ”€β”€ next.config.js              # Next.js configuration
β”œβ”€β”€ tailwind.config.js          # Tailwind CSS configuration
└── package.json                # Dependencies and scripts

🎨 Customization

Updating Personal Information

Edit src/data/resume-data.tsx to update your personal information, work experience, education, skills, and projects.

Styling

  • Modify src/app/globals.css for global styles
  • Update tailwind.config.js for theme customization
  • Edit component styles in individual component files

Adding New Sections

  1. Create a new component in src/components/
  2. Add the section to src/app/page.tsx
  3. Update navigation in src/components/navigation-menu.tsx

SEO

  • Update metadata in src/app/layout.tsx
  • Modify public/site.webmanifest for PWA settings
  • Update public/robots.txt for search engine directives

πŸ“Š Performance Metrics

The site is optimized for:

  • Lighthouse Score: 95+ (Performance, Accessibility, Best Practices, SEO)
  • Core Web Vitals: All metrics in the green
  • Bundle Size: Optimized with tree shaking and code splitting
  • Loading Speed: Sub-2 second initial load time

πŸ”§ Recent Optimizations

Performance

  • βœ… Added React.memo for component memoization
  • βœ… Implemented font preloading
  • βœ… Optimized images with Next.js Image component
  • βœ… Added bundle analyzer for performance monitoring
  • βœ… Implemented code splitting and lazy loading
  • βœ… Added console removal in production

Accessibility

  • βœ… Added comprehensive ARIA labels
  • βœ… Implemented keyboard navigation support
  • βœ… Added focus management with visible indicators
  • βœ… Improved semantic HTML structure
  • βœ… Added reduced motion support
  • βœ… Enhanced color contrast

SEO

  • βœ… Comprehensive metadata with Open Graph and Twitter cards
  • βœ… Automatic sitemap generation
  • βœ… Optimized robots.txt
  • βœ… Added structured data (JSON-LD)
  • βœ… Implemented performance monitoring

Security

  • βœ… Content Security Policy headers
  • βœ… XSS Protection headers
  • βœ… HSTS for secure connections
  • βœ… Frame options to prevent clickjacking
  • βœ… Referrer policy for privacy

Developer Experience

  • βœ… TypeScript for type safety
  • βœ… ESLint with Next.js rules
  • βœ… Prettier for code formatting
  • βœ… Comprehensive development scripts
  • βœ… Error boundaries and loading states

πŸš€ Deployment

The site is optimized for deployment on Vercel:

  1. Connect your GitHub repository to Vercel
  2. Vercel will automatically detect Next.js and deploy
  3. Environment variables are automatically handled
  4. Analytics and Speed Insights are automatically enabled

Deploy with Vercel


πŸ“ˆ Monitoring

  • Vercel Analytics: Track user behavior and performance
  • Speed Insights: Monitor Core Web Vitals
  • Bundle Analyzer: Analyze bundle size and composition
  • Error Tracking: Automatic error reporting

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests and linting (npm run lint && npm run type-check)
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ‘€ Contact

Platform Link
Name Harshhaa Vardhan Reddy
Email harshhaa03@gmail.com
LinkedIn harshhaa-vardhan-reddy
GitHub NotHarshhaa
Portfolio notharshhaa.site

Built with ❀️ using Next.js, TypeScript, and Tailwind CSS

About

🌐 A personal CV website built with Next.js, Tailwind CSS, and TypeScript β€” responsive, printable, and perfect for showcasing professional experience online.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors