Skip to content

MelihIlker/web-portfolio

Repository files navigation

πŸš€ Portfolio Website

A modern, responsive portfolio website showcasing professional work and skills with elegant animations and interactive features.

✨ Features

  • 🎨 Animated Grid Backgrounds: Dynamic canvas-based grid animations that respond to user interaction
  • πŸ“± Responsive Design: Optimized for all device sizes with mobile-first approach
  • 🌍 Internationalization: Complete Turkish and English language support
  • 🎯 Interactive Project Showcase: Detailed project modals with technology stacks and live demos
  • πŸ“Š Animated Skill Visualization: Dynamic progress bars with smooth count-up animations
  • ⚑ Performance Optimized: Lazy loading, error boundaries, and efficient rendering
  • 🎭 Smooth Animations: Powered by Framer Motion for seamless user experience
  • β™Ώ Accessibility: Full keyboard navigation and screen reader support
  • πŸ”§ PWA Ready: Service Worker, manifest.json, and offline capabilities
  • πŸ“ˆ Performance Monitoring: Lighthouse score 92+ with optimized Core Web Vitals

πŸ›  Tech Stack

Frontend Framework

  • React 19 - Latest React with concurrent features
  • TypeScript - Type-safe development
  • Vite - Fast build tool and development server

Styling & UI

  • Tailwind CSS - Utility-first CSS framework
  • Framer Motion - Animation and gesture library
  • Lucide React - Beautiful icon library

Development Tools

  • ESLint - Code linting and quality assurance
  • TypeScript ESLint - TypeScript-specific linting rules

Performance & Optimization

  • React Lazy Load Image - Optimized image loading
  • Custom Hooks - Reusable logic abstraction
  • Error Boundaries - Graceful error handling
  • Code Splitting - Bundle optimization with Vite

πŸš€ Quick Start

# Clone the repository
git clone https://github.com/MelihIlker/personal-website.git
cd personal-website

# Install dependencies
npm install

# Start development server
npm run dev

# Build for production
npm run build

πŸ“ Project Structure

src/
β”œβ”€β”€ components/          # React components
β”‚   β”œβ”€β”€ ui/             # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ SquaresBackground.tsx  # Canvas-based animated grid
β”‚   β”‚   β”œβ”€β”€ GradientText.tsx       # Gradient text effects
β”‚   β”‚   └── TextType.tsx           # Typewriter effect
β”‚   β”œβ”€β”€ Hero.tsx        # Landing section
β”‚   β”œβ”€β”€ Projects.tsx    # Project showcase
β”‚   β”œβ”€β”€ Skills.tsx      # Skills visualization
β”‚   β”œβ”€β”€ Experience.tsx  # Work experience
β”‚   β”œβ”€β”€ Education.tsx   # Education background
β”‚   β”œβ”€β”€ Contact.tsx     # Contact information
β”‚   β”œβ”€β”€ Footer.tsx      # Footer component
β”‚   β”œβ”€β”€ Navbar.tsx      # Navigation sidebar
β”‚   β”œβ”€β”€ Accessibility.tsx # Accessibility features
β”‚   β”œβ”€β”€ MicroInteractions.tsx # UI micro-interactions
β”‚   β”œβ”€β”€ ErrorBoundary.tsx # Error handling
β”‚   └── SkeletonLoader.tsx # Loading states
β”œβ”€β”€ hooks/              # Custom React hooks
β”‚   β”œβ”€β”€ useScrollAnimation.ts  # Scroll-triggered animations
β”‚   β”œβ”€β”€ useLanguage.ts         # Internationalization
β”‚   β”œβ”€β”€ useCountUp.ts          # Number counting animations
β”‚   └── useAccessibility.ts    # Accessibility features
β”œβ”€β”€ contexts/           # React contexts
β”‚   └── LanguageContext.tsx    # Language state management
└── types/              # TypeScript type definitions
    └── react-lazy-load-image-component.d.ts

🎯 Key Components

Interactive Elements

  • SquaresBackground: Custom canvas-based animated grid system with smooth 60fps animations
  • TextType: Typewriter effect component for dynamic text animation
  • ProjectModal: Detailed project information with technology stacks and live demos
  • SkillProgress: Animated progress bars with count-up effects
  • Footer: Terminal-style footer with social links and contact information

Custom Hooks

  • useScrollAnimation: Handles scroll-triggered animations with Intersection Observer
  • useLanguage: Manages internationalization state with localStorage persistence
  • useCountUp: Creates smooth number counting animations
  • useAccessibility: Keyboard navigation and accessibility features

🌍 Internationalization

The portfolio supports both Turkish and English with:

  • Complete UI translation
  • Language persistence in localStorage
  • Dynamic language switching
  • Context-based translation system

πŸ“± Responsive Design

Optimized for all screen sizes:

  • Mobile-first approach
  • Flexible grid layouts
  • Touch-friendly interactions
  • Optimized typography scaling
  • Mobile sidebar with overlay

⚑ Performance Features

  • Lazy Loading: Images and components load on demand
  • Code Splitting: Manual chunks for vendor, animations, and UI components
  • Error Boundaries: Graceful error handling and recovery
  • Skeleton Loaders: Improved perceived performance
  • Optimized Animations: 60fps smooth canvas animations
  • Critical CSS: Inline critical CSS for faster initial render
  • Font Preloading: Google Fonts preloaded for better performance
  • Async CSS Loading: Non-blocking CSS loading

🎨 Canvas API Implementation

The SquaresBackground component uses HTML5 Canvas for:

  • Dynamic Grid Generation: Responsive grid that adapts to screen size
  • Smooth Animations: 60fps animations with requestAnimationFrame
  • Performance Optimization:
    • devicePixelRatio support for retina displays
    • Optimized drawing with lineWidth: 0.5 and lineCap: 'round'
    • Sub-pixel precision rendering
  • Animation Control: Direction-based movement (up/down) with smooth transitions

πŸ”§ PWA Features

  • Service Worker: sw.js for offline capabilities and caching
  • Web App Manifest: manifest.json with app metadata
  • Theme Color: Dark theme support (#1f2937)
  • App Shortcuts: Quick access to Projects and Contact sections
  • Installable: Can be installed as a PWA on mobile devices

πŸ“ˆ Performance Metrics

  • Lighthouse Score: 92+ (Performance, Accessibility, Best Practices, SEO)
  • Core Web Vitals: Optimized LCP, FID, and CLS
  • Bundle Size: Optimized with code splitting
  • First Contentful Paint: < 1.5s
  • Largest Contentful Paint: < 2.5s

πŸš€ Deployment

Vercel Deployment

The project is configured for Vercel with:

  • vercel.json: Cache headers and build configuration
  • Static Assets: 1-year cache for optimal performance
  • Build Command: npm run build
  • Output Directory: dist/
# Deploy to Vercel
vercel --prod

Other Platforms

  • Netlify: Drag and drop dist/ folder
  • GitHub Pages: Use GitHub Actions
  • Any Static Host: Upload built files

πŸ›  Development

Available Scripts

npm run dev          # Start development server
npm run build        # Build for production
npm run preview      # Preview production build
npm run lint         # Run ESLint

Environment Variables

No environment variables required for basic functionality.

πŸ“„ License

This project is licensed under the MIT License.

🌐 Live Demo

Visit the live website: Click!


Built with ❀️ using React, TypeScript, and Tailwind CSS

About

Terminal-themed portfolio built with React 19, TypeScript & Tailwind CSS. Features animated canvas backgrounds, smooth animations, interactive project showcase, bilingual support (TR/EN), and PWA capabilities. Optimized for 92+ Lighthouse score with responsive design.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors