This project implements a modern web application architecture with advanced features like route prefetching, intelligent resource loading, and progressive web app capabilities. It uses a component-based architecture with performance optimization at its core, including code splitting, lazy loading, and optimized asset delivery.
The application includes sophisticated animations, keyboard shortcuts, global search functionality, and a comprehensive theme system. It's built with accessibility in mind and includes analytics integration, cookie consent management, and performance monitoring.
Deployed on Vercel with automatic CI/CD from GitHub
.
βββ src/ # Source code directory
β βββ components/ # React components organized by feature
β β βββ home/ # Home page components (Hero, CTA, etc.)
β β βββ layout/ # Layout components (Header, Footer, etc.)
β β βββ ui/ # Reusable UI components
β βββ utils/ # Utility functions for performance, HTTP, etc.
β βββ hooks/ # Custom React hooks
β βββ pages/ # Page components
β βββ types/ # TypeScript type definitions
βββ public/ # Static assets and public files
βββ scripts/ # Build and optimization scripts
βββ docs/ # Documentation files
- Node.js (v14.0.0 or higher)
- npm (v6.0.0 or higher)
- Modern web browser with JavaScript enabled
# Clone the repository
git clone https://github.com/Vansh462/portfolio.git
cd portfolio
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview- React 18 - Modern component-based architecture
- TypeScript - Type safety and better developer experience
- Tailwind CSS - Utility-first CSS framework
- Framer Motion - Animations and transitions
- React Router - Client-side routing
- Lucide React - For beautiful icons
- Phosphor Icons - Social media icons and additional icon set
- ReactFlow - For interactive skills network visualization
- Formspree - Form handling for the contact form
- Vite - Next generation frontend tooling
- ESLint - Code linting
- PostCSS - CSS processing
- Modern React Architecture - Built with React 18, TypeScript, and Vite
- Advanced Performance Optimization - Code splitting, lazy loading, and optimized assets
- Interactive UI Components - Custom animations and transitions using Framer Motion
- Interactive Skills Visualization - Network graph showing relationships between skills
- Dark/Light Mode - Theme toggle with system preference detection
- Certifications Gallery - Interactive gallery to showcase certifications
- Global Search - Quick navigation with keyboard shortcuts
- Responsive Design - Fully responsive on all devices
- SEO Friendly - Proper metadata and semantic HTML
- Analytics Integration - Performance monitoring and user behavior tracking
- Configure your portfolio data:
// src/data/portfolio.ts
export const portfolioData = {
personal: {
name: "Your Name",
title: "Your Title",
// ...other personal info
},
// ...other portfolio sections
};- Add your assets:
- Place images in
public/directory - Update image references in
src/utils/assets.ts
- Start the development server:
npm run dev- Adding a new page:
// src/pages/NewPage.tsx
import { motion } from 'framer-motion';
import { Section } from '@/components/ui/Section';
export default function NewPage() {
return (
<Section>
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
>
{/* Your content here */}
</motion.div>
</Section>
);
}- Using the theme system:
import { useTheme } from '@/components/ThemeProvider';
function MyComponent() {
const { theme, setTheme } = useTheme();
return (
<button onClick={() => setTheme(theme === 'dark' ? 'light' : 'dark')}>
Toggle Theme
</button>
);
}- Build Issues
- Error: "Module not found"
# Clear node_modules and reinstall rm -rf node_modules npm install
- Performance Issues
- Enable debug mode in development:
// src/utils/performanceOptimizer.ts const DEBUG = true;
- Check browser console for Core Web Vitals metrics
- Animation Issues
- Check Framer Motion debug output:
import { motion, useIsomorphicLayoutEffect } from 'framer-motion'; motion.useDebugValue = true;
The application follows a unidirectional data flow pattern, with portfolio data as the single source of truth.
[Portfolio Data] β [React Components] β [UI Rendering]
β β β
[Data Layer] [Component Layer] [View Layer]
β β β
[Type System] [Props/State Flow] [Animations]
Key component interactions:
- Portfolio data is loaded and typed using TypeScript interfaces
- Components receive data through props
- Theme provider manages global theme state
- Page transitions are handled by AnimatePresence
- Performance optimizations are applied automatically
- Analytics events are tracked through utility functions
- Resource loading is optimized via prefetching and lazy loading
Vansh Oberoi - AI Engineer & ML Specialist
This project is open source and available under the MIT License.
Portfolio Content & Data Β© 2025 Vansh Oberoi. All rights reserved.
β Star this repo if you found it helpful! β

