This portfolio has been refactored into a clean, modular structure for better maintainability and organization.
src/
├── app/
│ └── page.tsx # Main page (now clean and minimal)
├── components/
│ ├── layout/
│ │ ├── Navigation.tsx # Navigation bar component
│ │ └── Footer.tsx # Footer component
│ ├── sections/
│ │ ├── HeroSection.tsx # Hero/landing section
│ │ ├── AboutSection.tsx # About me section
│ │ ├── ProjectsSection.tsx # Projects showcase
│ │ ├── ExperienceSection.tsx # Work experience timeline
│ │ └── ContactSection.tsx # Contact information
│ └── ui/ # Reusable UI components (existing)
└── data/
├── constants.ts # Shared constants and personal info
├── projects.ts # Projects data and types
└── experience.ts # Experience data and types
- Modularity: Each section is a separate component, making it easy to modify individual parts
- Reusability: Components can be easily reused or moved around
- Maintainability: Data is separated from presentation logic
- Scalability: Easy to add new sections or modify existing ones
- Type Safety: TypeScript interfaces for all data structures
Edit src/data/constants.ts to update:
- Name, title, location
- Social media links
- Quick stats
Edit src/data/projects.ts to:
- Add new projects
- Update existing project details
- Modify project structure
Edit src/data/experience.ts to:
- Add new work experience
- Update job details and achievements
- Modify experience structure
Each component can be styled independently:
HeroSection.tsx- Landing page stylingAboutSection.tsx- About section stylingProjectsSection.tsx- Project cards stylingExperienceSection.tsx- Timeline stylingContactSection.tsx- Contact form styling
- Create a new component in
src/components/sections/ - Add it to the main page in
src/app/page.tsx - Update navigation if needed in
src/components/layout/Navigation.tsx
- Update Tailwind classes in individual components
- Modify the gradient backgrounds in
AboutSection.tsx - Adjust hover effects and animations
- Each section is self-contained and can be reordered
- Responsive design is handled within each component
- Grid layouts can be modified independently
All components are built with responsive design in mind:
- Mobile-first approach
- Breakpoint-specific layouts
- Touch-friendly interactions
- Components are lazy-loaded by default
- Images are optimized with Next.js Image component
- Minimal bundle size with efficient imports
- Local state is managed within components (e.g., expanded jobs in ExperienceSection)
- No external state management needed for current features
- Easy to add global state if needed in the future