A modern, responsive portfolio website built with React, TypeScript, and Vite. Features smooth animations, lazy loading, and optimized performance.
- Modern Design: Clean, professional interface with smooth animations
- Responsive: Mobile-first design that works on all devices
- Performance Optimized: Lazy loading, code splitting, and image optimization
- Accessible: WCAG compliant with proper ARIA labels and keyboard navigation
- SEO Friendly: Optimized meta tags and semantic HTML
- Dark Mode: Toggle between light and dark themes
- Smooth Animations: Scroll-triggered animations and hover effects
- Frontend: React 19, TypeScript
- Build Tool: Vite
- Styling: CSS3 with CSS Custom Properties
- Animations: CSS animations with Intersection Observer
- Testing: Vitest, React Testing Library
- Deployment: GitHub Pages with GitHub Actions
- Clone the repository:
git clone https://github.com/yourusername/modern-react-portfolio.git
cd modern-react-portfolio- Install dependencies:
npm install- Create environment file:
cp .env.example .env.local- Update the environment variables in
.env.localwith your information.
Start the development server:
npm run devThe application will be available at http://localhost:5173
Run tests:
npm run testRun tests with coverage:
npm run test:coverageBuild for production:
npm run buildPreview production build:
npm run preview- Push your code to the
mainbranch - GitHub Actions will automatically build and deploy to GitHub Pages
- Your site will be available at
https://yourusername.github.io/modern-react-portfolio
Build and deploy manually:
npm run deploymodern-react-portfolio/
├── public/ # Static assets
├── src/
│ ├── components/ # React components
│ │ ├── layout/ # Layout components (Header, Footer)
│ │ ├── sections/ # Page sections (Hero, About, etc.)
│ │ └── ui/ # Reusable UI components
│ ├── data/ # Static data
│ ├── hooks/ # Custom React hooks
│ ├── styles/ # Global styles and animations
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Utility functions
├── .github/workflows/ # GitHub Actions workflows
└── dist/ # Production build output
Update your personal information in:
src/data/experience.ts- Work experiencesrc/data/projects.ts- Portfolio projects.env.production- Contact information and social links
- Global styles:
src/styles/ - Component styles: Individual
.cssfiles next to components - Animations:
src/styles/animations.css
- Hero section:
src/components/sections/Hero.tsx - About section:
src/components/sections/About.tsx - Experience:
src/components/sections/Experience.tsx - Projects:
src/components/sections/Projects.tsx - Contact:
src/components/sections/Contact.tsx
Create a .env.local file with your configuration:
VITE_APP_TITLE=Your Portfolio Title
VITE_CONTACT_EMAIL=your.email@example.com
VITE_LINKEDIN_URL=https://linkedin.com/in/yourprofile
VITE_GITHUB_URL=https://github.com/yourusername
VITE_TWITTER_URL=https://twitter.com/yourusername- Go to your repository settings
- Navigate to "Pages" section
- Set source to "GitHub Actions"
- The workflow will automatically deploy on push to main
The portfolio is optimized for performance with:
- Code splitting and lazy loading
- Image optimization with WebP support
- Efficient bundle sizes with tree shaking
- Intersection Observer for scroll animations
- Service worker for caching (optional)
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-feature - Commit your changes:
git commit -am 'Add new feature' - Push to the branch:
git push origin feature/new-feature - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Design inspiration from modern portfolio websites
- Icons from Heroicons and Lucide
- Fonts from Google Fonts (Inter)
- Performance optimization techniques from web.dev
- Email: your.email@example.com
- LinkedIn: Your Profile
- GitHub: Your Profile
Built with ❤️ using React and TypeScript