This is the second version of my Personal Portfolio Website, completely rebuilt using modern web technologies. The website showcases my projects, skills, and achievements with stunning animations, interactive features, and a beautiful dark/light mode theme.
π Live Demo: zingzing001.github.io/PersonalWebsite-V2
- Modern React Architecture β Built with React 19 and Vite for lightning-fast performance
- Stunning Dark/Light Mode β Seamless theme switching with persistent preferences
- Animated Meteor Background β Dynamic meteor shower effect with twinkling stars in dark mode
- Smooth Scroll Animations β Snap scrolling from Hero to About section with smooth transitions
- Interactive UI Components β Glass-morphism effects, hover animations, and smooth transitions
- Responsive Design β Fully optimized for desktop, tablet, and mobile devices
- Project Showcase β Display your projects with live demo and GitHub repository links
- Skills Section β Organized skill categories with proficiency indicators and visual progress bars
- Contact Form β Interactive contact form with success animations and social media links
- Typewriter Effect β Eye-catching animated text in the hero section
- Clean Code Architecture β Well-structured components with reusable hooks
- React 19.1.1 - Modern UI library
- Vite 7.1.7 - Next-generation build tool
- React Router DOM 7.9.4 - Client-side routing
- TailwindCSS 4.1.16 - Utility-first CSS framework
- Lucide React - Beautiful icon library
- Typewriter Effect 2.22.0 - Animated typing effect
- React Hot Toast - Elegant notifications
- Custom Animations - Meteor effects, fade-ins, and smooth transitions
- GitHub Pages - Static site hosting
- gh-pages - Automated deployment
/PersonalWebsite-V2
βββ /public
β βββ /projects # Project thumbnails and images
β βββ Runjia_Zhang_Resume.pdf
βββ /src
β βββ /assets # Images and static assets
β βββ /components # React components
β β βββ AboutSection.jsx
β β βββ ContactSection.jsx
β β βββ HeroSection.jsx
β β βββ Meteors.jsx
β β βββ Navbar.jsx
β β βββ ProjectSection.jsx
β β βββ SkillSection.jsx
β β βββ StarBackground.jsx
β β βββ ThemeToggle.jsx
β βββ /hooks # Custom React hooks
β β βββ useSnapScroll.js
β βββ /lib # Utility functions
β β βββ utils.js
β βββ /pages # Page components
β β βββ Home.jsx
β β βββ NotFound.jsx
β βββ App.jsx
β βββ main.jsx
β βββ index.css # Global styles and animations
βββ index.html
βββ package.json
βββ vite.config.js
βββ README.md
- Node.js (v18 or higher)
- npm or yarn
-
Clone the repository
git clone https://github.com/ZingZing001/PersonalWebsite-V2.git cd PersonalWebsite-V2 -
Install dependencies
npm install
-
Run the development server
npm run dev
-
Open in browser Navigate to
http://localhost:5173
npm run buildnpm run deploy- Persistent theme preference using localStorage
- Smooth color transitions
- Synchronized across all components
- Custom event system for theme updates
- Realistic meteor animation with glowing heads and blurred tails
- Random positioning and timing for natural appearance
- Fade-in/fade-out transitions
- Only visible in dark mode
- Fixed navbar with blur effect on scroll
- Mobile-friendly hamburger menu
- Smooth page transitions
- Integrated theme toggle
- Smooth snap from Hero to About section
- Natural scrolling for remaining sections
- Touch-friendly for mobile devices
- Debounced scroll events to prevent noise
- Dynamic project cards with hover effects
- Live demo and GitHub repository links
- Technology tags
- Glass-morphism effects in dark mode
- Categorized skills display
- Visual proficiency indicators
- Gradient progress bars
- Staggered animations
- Interactive form with validation
- Success animations
- Social media links (LinkedIn, GitHub, Instagram)
- Downloadable resume
Edit src/components/ProjectSection.jsx:
const projects = [
{
id: 1,
title: "Your Project",
description: "Project description",
image: `${import.meta.env.BASE_URL}projects/project-image.png`,
tags: ["React", "TailwindCSS"],
demoUrl: "https://your-demo-url.com",
repoUrl: "https://github.com/your-repo"
},
// Add more projects...
];Edit src/components/SkillSection.jsx:
const skills = [
{
name: "Your Skill",
category: "Category",
level: 90, // Proficiency percentage
icon: YourIcon // Import from lucide-react
},
// Add more skills...
];Edit theme colors in src/index.css:
:root {
--primary: 250 47% 60%;
--background: 210 40% 98%;
/* Customize other colors */
}
.dark {
--primary: 250 65% 65%;
--background: 222 47% 4%;
/* Customize dark mode colors */
}- Hero Section - Welcome message with typewriter effect
- About Section - Personal introduction and downloadable CV
- Skills Section - Organized technical skills with proficiency levels
- Projects Section - Showcase of featured projects
- Contact Section - Get in touch form and social links
This project is copyrighted and all rights are reserved. You may not copy, modify, or distribute any part of this project without explicit permission from the owner.
πΌ Portfolio: zingzing001.github.io/PersonalWebsite-V2
π§ Email: runjiazhang.nz@gmail.com
π¨βπ» GitHub: ZingZing001
π LinkedIn: Runjia Zhang
- Inspired by modern portfolio designs
- ABSOLUTE LEGEND tutorial from PedroTech Video Made by the legend
- Meteor effect tutorial from freeCodeCamp
- Icons from Lucide React
- Helps from Co-pilot on the visual effects and documentations
β If you like this project, please consider giving it a star!
Built with β€οΈ by Johnson Zhang