A modern, responsive portfolio website built with Vue.js 3, TypeScript, and Vite. Features a clean dark theme design with smooth animations and scroll effects.
- Modern Design: Clean, minimalist dark theme with professional aesthetics
- Responsive Layout: Fully responsive design that works on all devices
- Smooth Animations: Subtle animations and scroll-triggered effects
- TypeScript: Full TypeScript support for better development experience
- Vue 3 Composition API: Modern Vue.js with Composition API
- Intersection Observer: Scroll-based animations using Intersection Observer API
- Accessibility: Semantic HTML and proper ARIA attributes
- Hero Section: Profile picture, name, and title with animated entrance
- About Section: Personal description and professional summary
- Experience Section: Work history with detailed responsibilities
- Projects Section: Portfolio projects with hover effects and links
- Vue.js 3 - Progressive JavaScript framework
- TypeScript - Type-safe JavaScript
- Vite - Fast build tool and dev server
- Vue Router - Client-side routing
- Pinia - State management
- ESLint - Code linting
- Prettier - Code formatting
- Node.js (version 16 or higher)
- npm or yarn
- Clone the repository:
git clone <repository-url>
cd portfolio-website- Install dependencies:
npm install- Start the development server:
npm run dev- Open your browser and navigate to
http://localhost:5173
npm run buildnpm run previewsrc/
├── components/ # Vue components
│ ├── AppHeader.vue # Navigation header
│ ├── HeroSection.vue # Hero/intro section
│ ├── AboutSection.vue # About section
│ ├── ExperienceSection.vue # Work experience
│ └── ProjectsSection.vue # Portfolio projects
├── composables/ # Vue composables
│ └── useIntersectionObserver.ts # Scroll animations
├── views/ # Page views
│ └── HomeView.vue # Main page
├── assets/ # Static assets
│ ├── main.css # Main styles
│ └── base.css # Base styles and CSS variables
└── router/ # Vue Router configuration
└── index.ts # Router setup
The color scheme is defined in src/assets/base.css using CSS custom properties:
:root {
--color-background: #1A1D21;
--color-background-soft: #22252A;
--color-accent: #00D4FF;
--color-heading: #ffffff;
--color-text: #e0e0e0;
/* ... more colors */
}Update the content in each component:
- Personal Info: Edit
HeroSection.vuefor name and title - About Text: Modify
AboutSection.vue - Experience: Update the
experiencesarray inExperienceSection.vue - Projects: Modify the
projectsarray inProjectsSection.vue
Replace the profile picture URL in HeroSection.vue:
<img
src="your-image-url-here"
alt="Your Name"
class="profile-img"
/>- Code Splitting: Automatic code splitting with Vue Router
- Lazy Loading: Components are lazy-loaded when needed
- Optimized Images: Responsive images with proper sizing
- CSS Variables: Efficient theming with CSS custom properties
- Intersection Observer: Efficient scroll-based animations
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
This project is open source and available under the MIT License.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
For questions or suggestions, please open an issue on GitHub.